KamoCRM

Programs, channels, loan types and Company Licenses wired end to end (MS phase C1)

FeatureSecurityService
Shipped
November 14, 2026 at 10:26 PM UTC
Author
Kamo
Commit
39906c0

- MlosProgramsController (/api/security/mlos/config, market-setup right, audited, undoable): GET /programs (the one catalog with display names, offered today, variant, channels, version in force, scheduled), GET /programs/{id}/history, GET|PUT /product-enablements (basedOnVersion → 409 STALE), GET /channels (program x channel grid + exceptions), channel-rules CRUD (structured — free-form predicates refused; scope derived), scenario-support CRUD + check ("Loan Types Kamo Handles", MlosScenarioSupportService: at least one dimension, no duplicate rule). - MlosCompanyLicensesController: the ONE Company Licenses list (Print on disclosures + disclosure sentence, state optional for the NMLS company row, ISO state normalization, NMLS row fills the profile's legal name / primary NMLS), /licensing/needs-you and /licensing/coverage (License Map data) for every settings right holder. - Enforcement: setSelectedProgram refuses a program not offered or not offered on the loan's channel; a loan-file channel change re-checks it; the lead program picker, the LOE scorer **************** MLOS_TAKE_APPLICATION switch endpoint removed) and a new public offered-programs-by-host read follow the catalog. - Licensing gate (once a state license is entered): create-from-lead, property state changes (staff + borrower), portal promotion and the public application refuse a property in an unlicensed state with a plain sentence (409 STATE_NOT_LICENSED); BaseLosController.error renders MLOS refusals instead of a 500. - LicenseRenewalReminderJob: 60/30/7-day reminders for company (market setup) and officer (own) licenses, one alert per event through the notification centre (LICENSE_RENEWAL_COMPANY / LICENSE_RENEWAL_OWN), singleton-locked. - OrgStateLicenseController deleted; the public footer reads the merged list.

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