Enforce LOS rights + /commerce/engagements endpoint
- MortgageAppController: every endpoint now gates on RoleRightType. Reads require LOS_VIEW_PIPELINE; creating a new application requires LOS_TAKE_APPLICATIO...
Emit lender brand + disclosure fields into per-org config.json
Two changes that finish the kamo-los borrower-facing branding pipeline: 1. OrganizationController gains a public GET /api/security/org/domain/{host} endpoin...
MortgageConnectController — connections + verified-facts + reconcile endpoints
Exposes the connect-first capture surface at **************** - GET/POST /connections + POST /connections/{id}/complete - GET/POST /verified-facts + POST /verif...
Add MortgageProgramController — list programs, set persona, set selected program
Bump for kamo-shared-library 1.5.0 snapshot refresh (M2 programs catalog)
Expose Prometheus metrics endpoint
Adds micrometer-registry-prometheus and configures management.endpoints to expose /actuator/prometheus alongside health/info. Required so the counters/timer add...
GET /mortgage-apps/hmda/lar/issues count summary
Aggregates validation issues across the LAR for the given year and returns {errors, warns, rowsWithIssues} so the UI can render a one-line banner before the ope...
Expose GET ****************
Surfaces **************** as an advisory pre-flight check the TransitionDialog fires when the user picks a target status.
Consolidate controller session/rights/response helpers in BaseLosController
Six LOS-area controllers (MortgageApp, MortgagePipeline, MortgagePricing, MortgageDisclosure, MortgageHmda, WebhookSubscription) each copied the same ~80 lines ...
Webhook consumer + worker config in configmap
Backs the JetStream durable consumer in WebhookDeliveryWorker. Env-var overrides for the durable name, deliver-policy (set to All to replay backlog one-time), m...
Translate concurrent-modification IllegalStateException to 409 with code
Pairs with the shared-lib optimistic-lock change: when LoanPipelineService throws "Concurrent modification: refresh and retry", surface a structured {error, cod...
REO lien endpoints + webhook subscription controller
- MortgageAppController: POST /{uid}/reos/{reoId}/liens, PATCH /{uid}/reo-liens/{id}, DELETE /{uid}/reo-liens/{id} — delegating to the new BorrowerSectionSe...
Controllers for pricing, disclosures, HMDA LAR
Three new REST controllers under /api/security/mortgage-apps: - MortgagePricingController: pricing snapshots, rate locks, AUS findings CRUD ({uid}/pricing, {...
MortgagePipelineController + LOS_PIPELINE configmap entry
Exposes the LOS pipeline backend under /api/security/mortgage-apps: - GET /pipeline — kanban summary - GET /{uid}/pipe...
MortgageAppController for URLA 2021 REST surface
New REST controller exposing the full URLA application lifecycle: GET /api/security/mortgage-apps list (summary) GET ***************...
Add /me/language endpoint that bypasses SystemUserGuard
The NavTop language picker did nothing for the System User signed into a sub-org: PUT **************** runs SystemUserGuard first, which 403s every System-User ...
Never gate Kamo-owned subdomains on TXT ownership
Child orgs that picked a Kamo web alias (e.g. gnosia.demo.kamocrm.com) were getting "TXT record found but verification code doesn't match" in the DNS setup UI. ...
Grant top-level org owners cross-org delete/update access
deleteDomain and updateDomain previously rejected platform admins operating on child-org domains because they checked isUserOwnerOfOrg against the target org di...
Allow deleting per-org *.kamocrm.com subdomains
The endsWith(".kamocrm.com") guard blocked every demo org from swapping its platform subdomain (e.g. gmosia.demo.kamocrm.com) for a custom domain. The platform ...
Rebuild against kamo-shared-library 88a8d63
Picks up: - HIGH: **************** refuses NUKE/FORCE_NUKE on admin-essential rights for the ADMINISTRATOR template. - MEDIUM: **************** now re-runs ...
Revert "fix(orgs): propagate child-org-creator admin status to parent-org membership"
This reverts commit ****************
Propagate child-org-creator admin status to parent-org membership
When a user creates a child org they become its owner + admin (via **************** Their PARENT-org membership, however, is whatever it was before — typically ...
Wire template-save recalc + session refresh + effective-rights diagnostic
**************** / updateModel / deleteModel and **************** now invoke recalcAllMembersUsingModel after persisting changes — every org pointed at the mode...
Rebuild against kamo-shared-library f76e145 (drop @Convert on EmbAddress.country)
Picks up the JPA fix that lets orgs.country (smallint) accept the int ordinal Hibernate writes for CountryType, unblocking POST /api/security/org from the /netw...
Trigger rebuild to pick up kamo-shared-library 094e80d (MediaObjTransit @IdClass)
Mint owner OTK with grant-all rights without DB round-trip
After **************** assigns the Administrator role and writes member_rights_applied, the OTK-minting block was re-reading those rows via **************** ins...
Mint owner ***+OTK on org create
After createOrganizationOwner, mint a fresh *** bound to the new owner TeamMember and return its OTK alongside id/members. Without this the creator stays on the...
Remove manual provision-comp endpoint — startup self-heals
COMP orders are now provisioned automatically on SecurityService startup via SubscriptionService @PostConstruct. Manual endpoint no longer needed.
Add provision-comp endpoint to activate COMP subscription from approved order
POST **************** calls **************** then invalidates entitlements for the target org via EntitlementService.
Add MemberUiPreferenceController for per-member UI settings
Backs the new hex-head popover size selector and any future small per- member UI preference. Endpoints under /api/security/members/me/ui- preferences resolve th...
Revert "feat(billing): add platform-subscription endpoint for cross-org feature gating"
This reverts commit ****************
Add platform-subscription endpoint for cross-org feature gating
Child-org admins (like GNosia's owner Daniel) have their COMP subscription orders on the root KamoCRM org, not on their own org. FeaturesManager was querying t...
Scope concurrency to build jobs, not Kubernetes deploys
Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...
Update availability endpoints to use MemberAvailabilityStatus enum
Allow elevated access on getDomainById and verify-dns endpoints
Top-level org owners and system members were getting 403 on getDomainById and verify-dns because those endpoints checked isUserMemberOfOrg directly. Adds hasEle...
Allow top-level org owners and system members to manage any org's domains
Prevent duplicate root domains and fix primary domain display
ONE_DOMAIN_PER_ORG check incorrectly excluded .kamocrm.com web-alias domains, allowing an org to accumulate multiple root domains (and 10 aliases each) by retry...
Reduce org creation latency and fix translation cascade failures
- OrganizationController: replace ensureTeamMembersForAllOrgs (full org table scan) with ensureTeamMemberForOrg (single org) — eliminates the ~400ms×N DB ro...
Add bootstrap-billing endpoint for pre-existing orgs
POST **************** triggers the same idempotent setup as the sub-org creation hook (BillingSetupService .setupForSubOrgCreation) but can be called on-demand ...
Auto-assign first seat, Free as floor, broader org invalidation
BillingSetupService now activates the first open license slot for the creator when seeding a sub-org subscription (and same for promote-to-billing-owner) — othe...
Top-level org members get platform-owner plan, bypass billing gates
KamoCRM (top-level) org members are not subject to the billing system — they get the OWNER_UNLIMITED plan's feature matrix outright (with Free as a defensive fa...
Auto-provision KamoCRM seat on sub-org creation; promote-billing-owner endpoint
EntitlementService walks SubscriptionMember (not AccountMember) to compute member entitlements — the union of features across active licensee subs, plus the Fre...
AccountGroup -> AccountTier; endpoints /groups -> /tiers
Account-group endpoints (customer segmentation tiers, not billing) renamed throughout to use "tier" terminology consistently with the shared-lib rename: - /api/...
Drop users/masterAccountHolder, use Account.members + primaryMember
AccountController now reflects the Account-as-group model: - computeDisplayName / extractEmail / extractPhone resolve through the primaryMember (Member) inste...
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.
