Add matchIfMissing=false to ConditionalOnProperty for commerce beans
Makes it explicit that CommerceService and EngagementLifecycle are disabled by default when kamo.commerce.enabled is not set. Any service that does not configur...
Replace ConditionalOnBean with ConditionalOnProperty for CommerceService
**************** is evaluated before Spring Data JPA registers user-defined repository beans, making it unreliable. Replace with **************** which is evalu...
Eliminate full-table scan and N+1 queries on leads endpoint
- LeadRepository: add findByOrganizationId JPQL query (uses ORG_ID index) instead of loading entire LEADS table and filtering in Java - LeadCustomFormDataRepo...
Make commerce beans conditional on repository availability
Add **************** to EngagementLifecycle and CommerceService so they only load when commerce repositories are scanned. Prevents UnsatisfiedDependencyExceptio...
Allow app startup when NATS is unavailable
Remove @ConditionalOnBean from jetStream() and add @Nullable to the Connection parameter. When natsConnection() returns null (NATS unreachable), Spring no longe...
Add sessionTimeoutMinutes to all security DTOs and request objects
Add market_id FK to POS entities and market-filtered repository queries
Add market association (ManyToOne FK to CommerceMarket) to Offering, InventoryItem, RentalAsset, Vendor, and SubscriptionPlan entities. Add findByMarketId queri...
Add CommerceMarketService with full CRUD for markets, categories, and vendors
Add DTOs for commerce markets, vendor categories, and market vendors
Add repositories for commerce markets, vendor categories, and market vendors
Serialize POS DTO uid/id as string in JSON for JS safe integer
- RetailOrderDTO.uid, **************** EngagementDetailDTO.id/linkId, MortgageAppDTO.uid - Use @JsonSerialize(using = ToStringSerializer.class) to avoid precisi...
Use explicit @Query for findByUidAndOrganization_Id to avoid deployment/startup issues with derived query
Commerce repository and service updates (EngagementRepository, OrderRepository, CommerceService)
Add EmbNameFull.formatFull(), fix @Builder warnings, repo method renames
Replace formatFull() with formatEmbNameFull() - EmbNameFull has no formatFull method
Server-side order filtering (status, dateFrom, dateTo), CommerceService overload
Phase 1-3 foundation - RETAIL, MORTGAGE, RENTAL assets
Phase 1 RETAIL: - CommitmentContextType.SALE, processOrderPaid: Commitment, Transaction, InventoryAllocation, FulfillmentOrder - checkInventoryForOrder on creat...
Use Uid instead of Id for BaseEntity-derived relations
- FulfillmentOrderRepository: findBySourceCommitmentId -> findBySourceCommitmentUid (Commitment uses uid) - TransactionRepository: findByOrderId -> findByOrderU...
Add ordering (createdAt DESC) and date range filter
- EngagementRepository: OrderByDateCreatedDesc on all find methods - CommerceService: dateFrom/dateTo params, in-memory date filter - Engagements API now suppor...
Add EngagementDomainTypeConverter for VENDOR→SERVICE, no manual SQL
- JPA AttributeConverter maps legacy VENDOR to SERVICE when reading from DB - Applied to Engagement.domain and OrgPOSConfig.enabledDomains - Removes need for ma...
Replace pos beans with commerce package
- Add commerce package (Order, Intent, Offering, InventoryItem, InventoryPool, etc.) - Add CommerceService replacing POSService, RetailProductService, RetailInv...
Enterprise validation in POSService
- createRetailOrder: null check on request - createLineItem: null check, quantity > 0, unitPrice >= 0 validation
Add POS/inventory domain entities, DTOs, repos and services
- Add POS beans (retail, rental, mortgage, subscription, vendor) - Add RetailProduct, RetailInventoryStock, RetailOrder, MortgageApp DTOs - Add RetailProductSer...
Populate vendorProduct relationship when fetching leads
Update getLeadsByOrganizationId() to populate the @Transient vendorProduct field for each lead that has a vendorProductId. This ensures the vendor and product d...
Add status, subStatus, source, and dateCreated fields
- Added status, subStatus, source, dateCreated, and isActive fields to Lead entity - Updated LeadDTO with frontend-compatible fields (status, subStatus, source,...
Refactor Lead assignment from String to Employee reference
- Changed Lead.assignedUser (String) to Lead.assignedEmployee (Employee) - Added LeadAssignment entity to track assignment history - Added LeadAssignmentType en...
Add phone extension support to CreateLeadRequest, UpdateLeadRequest, and LeadDTO
Resolve MultipleBagFetchException and fix custom form persistence
- Simplified CustomFormRepository query to avoid multiple bag fetches - Fixed LeadMarketService to properly save and load custom form associations - Use saveAnd...
Properly save and load custom form associations for markets
- Removed repository delete, now using JPA orphan removal for cleanup - Initialize lazy marketCustomForms collection before clearing - Ensure collections are in...
Resolve MultipleBagFetchException in CustomFormRepository
- Simplified findByIdAndOrganizationId query to avoid fetching multiple bags - Removed LEFT JOIN FETCH for stacks and fields in same query - Collections are now...
Resolve MultipleBagFetchException by using transactional lazy loading
- LeadMarketRepository: Reverted to simple query without multiple JOIN FETCH - LeadMarketService: Added @Transactional(readOnly=true) to getMarketById with expl...
Add eager loading for repository queries to fix lazy loading issues
- CustomFormRepository: Added LEFT JOIN FETCH for stacks and fields in findByIdAndOrganizationId - LeadMarketRepository: Added LEFT JOIN FETCH for marketCustomF...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
