KamoCRM

Mortgage settings foundations — one profile, rules with codes, business type, changes + undo (MS phase A)

FeatureSecurityService
Shipped
November 14, 2026 at 8:48 PM UTC
Author
Kamo
Commit
0a0e070

- Resolution: every reader uses the org's ONE active mortgage market's profile; the config API takes an optional ?marketId= (another org's → 404, a non-active market → 409 NOT_ACTIVE_MORTGAGE_MARKET) and provisions a missing profile on the spot. MortgageMarketGuard: one active mortgage market on create, re-type and reactivate (409 ONE_MORTGAGE_MARKET), profile provisioned in the same transaction. Self-heal delegates to MlosProfileProvisioner (SI auto-execute default OFF). - Versioned publish: demotions flushed before the insert, same-day republish keeps a [F,F] window, scheduled versions withdrawn when overtaken, start date in the org's time zone, never in the past; GET answers {active (in force today), scheduled, history (with status), today}; basedOnVersion → 409. - One @RestControllerAdvice (MlosConfigExceptionAdvice): field errors with codes (VALIDATION), rule violations with codes (RULES), 409 STALE naming who changed it and when, 409 CONFLICT, 503 BUSY on 40001, 500 with a reference. - Writes validate only the domains they touch; /lender-profile/validation lists stored problems as Needs You. - @Version rowVersion on every config row; PUT bodies carry rowVersion. - MlosBusinessTypeService + PUT/preview/options /business-type: atomic primary + companions + authority + servicing + capital markets, with a "what changes" dry-run. - GET /relevance: SHOWN / NARROW / NOT_USED per card + EDIT / READ / NONE access with the missing right. - Audit everything: guide (incl. SMS consent text), Arive + MeridianLink connections (token never logged), automation switches (now bump profileVersion), investors deleted WITH their terms. /changes (paged, by card / tab / member, names + pictures, before/after lines), /changes/{id}, /changes/{id}/restore (undo through the same save path, refusing secrets / non-newest with a reason). - Rights: automation right reads the Automation tab; loan-money rights open the page; owner is an implicit holder; 403s name the missing right; isOperator needs an OPEN god-mode window. - POST /automation-actions/all-off (+ GET preview): every switch + SI auto-execute OFF as one undoable change. - Two-person approval (off by default): /approvals, /approvals/setting, approve / decoder / cancel; credit authority, SI posture, provider credentials and authority-changing business types wait for a second admin. - N+1: stage-override map resolved in memory; automation save reads all switches once.

All changes

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.

Start Free ForeverView Pricing