APR beside a locked rate, an explicit clear for "I'm Not Sure", the lender's consent wording, and team photos that load on any portal domain
- Workspace rate lock: when the loan officer recorded an APR on the pricing snapshot behind a loan-desk lock with the SAME rate, the posture carries it as a...
The portal's job, account, debt, other-income and expense edits are true PATCHes
Each endpoint now merges the request over the stored row (shared library patch* methods), so changing a job's title no longer fails on the NOT NULL employment t...
Co-borrower requests and phone capture links, borrower saves as true PATCH, and document readings that say which page they came from
- MicroActionService + PortalMicroActionController (/portal/micro/{token}): a signed, single-use link. A request to the other borrower (confirm income, check ...
Void Invoice, Email Receipt, and a retail order's Invoice tab
RecordInvoiceController is the Invoice tab's door for any record - list, Create Invoice, read, PDF, Record Payment, Void Invoice, delivery, send, link - with on...
The application read names persona, selectedProgramCode, ownsNoRealEstate and realEstateOwnedCount
Pins the wire names the borrower portal reads, and rebuilds SecurityService onto the shared library that added them (a shared-library-only change deploys nothin...
Borrower consents are recorded as evidence, submit needs them, and each signer opens only their own link
A borrower now gives five consents in the portal, each its own versioned text per lender (default v1 seeded with its hash on first touch, a lender overrides wit...
The borrower's workspace knows their loan team, lock, rate watch and what happened
A new /mortgage-apps/{uid}/workspace surface for the MLOS borrower portal, gated like the application's own reads (staff who see the loan, or a party to it): - ...
A borrower's own "text me updates" tick records SMS consent on their lead
The borrower portal's save-my-spot form now offers an optional text-message consent checkbox. When the borrower ticks it and gives a phone number, the lead gets...
Talk It Through no longer 500s when the portal sends no flow
Set.of(...).contains(null) throws, so a request without a flow hint (the funnel before a purpose is chosen) answered 500. Found by a live probe after deploy. fl...
Email a work order's invoice, and its customer link on the signer's invoice page
The public "view your invoice online" page already exists for subscription invoices: the signer app's sign.<org domain>/<locale>/i/<token>, branded, phone-ready...
The lender names its borrower guide, and the portal can Talk It Through (SI)
Owner decisions 2026-11-11 (KamoMLOS borrower-portal overhaul, stream S5). Borrower guide (one per lender): - BorrowerGuideService stores the guide's name, gre...
No read-only transaction around multi-read views; retry the edge routing read
YugabyteDB answered the edge's routing read with 'Restart read required' β a restart-read cannot be retried mid-transaction. Each read now runs as its own state...
Org marketing websites β member, platform, edge and webhook APIs
- **************** site, preview pass, change requests (+ pictures), cancel, source.zip (Forgejo archive streamed, audited), get-a-website lead, connect-www (...
POS grace periods, My Bill core plan + every subscription, bank payments
- GET/PUT **************** (seller's MANAGE_SUBSCRIPTIONS): opt-in grace period, OFF by default; the hourly billing job stops service when a deadline passes...
Accept-gate refusal no longer says both a note and a status are needed
The requirement is per market now.
A failed request tells the caller to try again, not what the exception said
25 controllers returned e.getMessage() to the browser, which can name tables, columns and internal hosts. They now answer with a plain 'please try again' and lo...
Editing the IP address or TrustedForm link counts as editing contact info
The relay stamps who is god and who is Kamo's CDO, and relays the Kamo share paths
The store sync schedule tells Spring which constructor to use
With a second (test) constructor and no @Autowired, the new pod failed to start: "No default constructor found". The running pods were untouched.
Scheduled online store sync, Sync Now in the background, honest connection test
- RetailStoreSyncScheduler: every 5 minutes, under the singleton lock (one pod), syncs each active store connection whose own interval (15 minutes to a day) h...
A work order's invoice β create it, read it, open its PDF, record payments
ServiceJobInvoiceController, under **************** relays to InvoicingService's CommerceInvoice (issue-from-job, payments, PDF). Rights are the work order's: c...
Accept Result for a vendor order whose result the lender's switch kept off the loan
POST **************** any mortgage write right and sight of the loan; org and the deciding human (behind enter-as) from the session; this loan's order only. Ung...
Purchase request notices travel under their own kinds
A request sent for approval is raised as PURCHASE_REQUEST_SUBMITTED and its answer as PURCHASE_REQUEST_DECIDED (kamo-shared-library 6a765c18, gated in emailserv...
A person clears or confirms a vendor finding; the DMDC SCRA file exchange, audited
- **************** (Compliance Command Center or Financial Complexity Workbench): the screen's steward tasks with each vendor finding's evidence, filed report...
Queue builds instead of cancelling them, and skip a run once a newer commit is on main
Owner report 2026-11-08: builds kept running and never completed. A clean build takes ~20 minutes while main gets pushes every 10-20 minutes, so cancel-in-progr...
Finicity and Truv links record their own connection types
Rebuilds SecurityService onto shared-lib b3ae35eb, where FINICITY and TRUV links stop borrowing PLAID_AUTH / ARGYLE.
Administrator templates offer the Antivirus rights; platform status shows baseline-scan progress
ADMIN_TEMPLATE_DEFAULT_GRANTS gains VIEW_ANTIVIRUS, MANAGE_ANTIVIRUS_POLICY, ANTIVIRUS_WIDGET, _ADDED, _OPTIONAL and _MOVABLE (703-707 minus _REQUIRED: a member...
The borrower links their bank or payroll with the lender's Plaid, Finicity or Truv
Lender-side asset and income orders ride the borrower's own portal Connection, but nothing ever wrote one a vendor could use. A borrower-link SPI (one bean per ...
Compile the loan-upload document-type test against the shared entities
A staff vendor-document upload files under the requirement's document type
ImageService refuses a LOAN image without an ImgDocType, and uploadLoanDocument passed none (the doc type's name went into the description), so every staff vend...
Outbreak alerts reach the platform owner; import and rate-sheet detections name the member
Every platform operator holds MANAGE_PLATFORM_ANTIVIRUS only implicitly (owner floor), so the explicit holder list was empty and an outbreak told nobody. Recipi...
Seed Manage Compliance Requirements; announce member activation for the engine
MANAGE_COMPLIANCE_REQUIREMENTS (701) seeds from MANAGE_LEGAL_AND_COMPLIANCE; OVERRIDE_COMPLIANCE_GATE (702) deliberately unseeded (owner implicit). TeamMemberAc...
DocuSign Connect carries the org in its path and verifies that org's key first
The Connect address is public on the shared API host, which cannot tell orgs apart, so envelopes now send **************** (shared-lib VendorWebhookUrls). The l...
Provider connections carry their webhook address, setup and signing field
From VendorWebhookUrls: webhookUrl (null when the vendor sends no updates), webhookSetup (LENDER_ENTERS / SENT_BY_KAMO) and webhookSigningFieldId, so the Partne...
Stock endpoints read and write the one stock count; market customers are scoped
- /{marketId}/inventory (settings) and /api/security/pos/inventory (pipeline Stock view) both go through StockService: org-scoped market list in one statement...
Second write-only secrets; DocuSign Connect key stored encrypted
- CONFIG_SECRET catalog fields are encrypted into configJson on save, kept when left blank, never echoed: the list view and every change-log snapshot strip ...
Stamp a vendor on every credit pull so a reseller order saves
Connection.VENDOR is NOT NULL; a reseller key (Xactus, Credit Plus, MeridianLink, CBC Innovis, Factual Data) mapped to no ConnectionVendor, so the pull ran and ...
Credit resellers on MISMO 2.4 with Test Connection; an eSign SPI with DocuSign and DocMagic eSign
Credit (mortgage/credit): - Every catalogued reseller (Xactus, Credit Plus, MeridianLink, CBC Innovis, Factual Data) now sends the MISMO 2.4 credit request th...
Relay every pricing engine's quote, not only Kamo's native one
The borrower pricing quote returned EXTERNAL_VENDOR_PENDING for any PRICING_PPE engine other than Kamo's own. MLOSPricingService now dispatches to the org's eng...
Catalog-driven provider connections, primary vendor, Test Connection
- GET **************** every vendor category, its owning runtime and the vendors a lender can connect, with their forms. - Creating/updating a connection vali...
Turn on scanning of SecurityService's uploads β kamowsantivirus is 2/2 Ready
Market-scoped orders, customers, carts, drafts and shipments; cart and draft conversion
- GET /pos/orders takes ?marketId=; GET /pos/orders/customers lists a Retail market's customers from its orders, with walk-in sales counted apart. - Carts, dr...
Market-scoped work orders and subscriptions; dispatch and customer endpoints
- GET **************** lists one market's work orders (plus those with no market) - PUT /service-jobs/{uid}/customer files a job under an account or takes it ...
ProcurementController β market-filtered lists, change/reject/withdraw a request, send/receive/close/cancel a vendor order, records returned from every change
- purchase requests and vendor orders move out of POSController into ProcurementController (MANAGE_PROCUREMENT to buy and run orders, APPROVE_PURCHASE_REQUEST...
Keep ThemeBackgroundController's CRLF line endings (completes 73e6499c)
The Antivirus API, platform controls and scheduled endpoints; gate SecurityService's own file paths
/api/antivirus/** (and the /api/security/antivirus twin the console proxy tries first): overview, detections, settings (audited ANTIVIRUS_POLICY_CHANGE), false ...
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.
