Durable audit trail — persist PHI access, append-only
Turns §164.312(b) from a log line into evidence. The capture layer has been wired across seven services for a while, but it wrote through Slf4jPhiAccessLogWrite...
Mint the Universal Loan Identifier (ULI) + store the org LEI
Adds the HMDA ULI to the LAR export. UliMinter builds the ULI = org LEI(20) + loan number + two ISO 7064 MOD 97-10 check digits (Mod97CheckDigit — the IBAN algo...
Drop @Service so 40 services stop constructing an auth bean
Huduma ya MfaEnrollment iliyosafirishwa na @Huduma. Kila huduma ya treni ya kasi @ComponentScan ('com.kamo'), kwa hivyo wote wanaijenga - lakini kila mmoja anat...
Pin matumizi ya Spring ya Uumbaji, na kuthibitisha muktadha huanza
Huduma ya MfaEnrollment ni @Huduma na kila sehemu ya huduma ya Kamo com.kamo, hivyo ni instantiated katika takriban 40 maombi. Alikuwa na mbili wajenzi - moja k...
TOTP second factor — §164.312(d)
The compliance assessment called the absence of any second factor disqualifying on its own, and under the 2025 Security Rule NPRM MFA stops being addressable at...
Quote/estimate domain — entities, pricing engine, share links
Adds a first-class Quote alongside the existing commerce spine. The pre-existing "ServiceQuote" is an Intent plus a JSON blob carrying one offering and one flat...
Sender identity model + org-scoped batch email lookups
Backing store and queries for the mailbox sender-avatar chain. SenderIdentityEntity is the durable tier of the avatar cache. org_id is part of the natural key ...
Audit spine for PHI access — §164.312(b)
The Security Rule requires recording access to ePHI, which means reads. The platform records changes well — LeadHistory, SystemAccessLog, UserHistory, LoanAudit...
Kuimarisha mipaka ya kufuata katika kubadili kipengele
Wires PhiTenantGuard into FeatureService, the single choke point through which a module is switched on for an organization. This is where the boundary stops bei...
Auto-assign a MERS-compatible loan number at application creation
LoanFile.loanNumber was null on create (both blank-create and lead-promote) and only ever set when a steward typed one — which hard-blocked MERS MIN minting (a ...
Endelea kushughulikiaPhi na PhiEffectiveDate kwenye Shirika
Rejea PhiTenantGuard kwa safu halisi. HANDLES PHI sio uongo mkubwa Baada ya yote, <=============================================================================...
PhiTenantGuard and the module compliance boundary
The the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the ...
Revert "feat(phi): add the handlesPhi tenant flag and PhiTenantGuard"
This reverts commit ****************
Add the handlesPhi tenant flag and PhiTenantGuard
The keystone of the HIPAA compliance boundary: a per-organization flag plus a guard deciding which modules that organization may reach. Everything downstream ke...
Make MarketLosConnectionResolver boot-safe when integrations.los repos are not enabled (platform-wide boot fix)
Per-member MeridianLink credential (MarketLosUserCredential) + resolveForMember + LO-scoped outbound push
Shared-lib support for bulk-email recipient resolution + company contact email
- **************** contactEmail branch (company contact email editable via PUT /api/security/org, used as company-scope campaign From) - ApplicationRepository...
ECOA /FCRA taarifa ya kuchukua hatua + wakati wa kuridhisha
The issuance mechanism's shared-lib half. ComplianceTimerService gains **************** — flips only ARMED ECOA_AA timers to SATISFIED (leaves COUNTEROFFER/INCO...
Mashirika ya kampeni ya wingi wa barua pepe + idara / mashirika ya kuwasiliana
Adds the shared-library foundation for org-level bulk email campaigns: - OrgBulkEmailProviderEntity (separate from everyday provider; UNIQUE org_id) - EmailCamp...
STEWARD_TASK_ROUTED canonical template
The routed-decision steward notification needs a canonical email template. Registers STEWARD_TASK_ROUTED in CANONICAL_KEYS with its json/html pair; body carries...
Add nullable contact date-of-birth to Lead
Adds a contact-level `dateOfBirth` (java.time.LocalDate, DATE column) to the base Lead: entity + Create/Update/LeadDTO (fromLead), copied in LeadService create/...
Register WELCOME_MEMBER + WELCOME_TEAM_MEMBER canonical keys
Both templates ship as resource pairs on disk (welcome-member.{json,html}, **************** with matching templateKeys, and EmailService already has their sampl...
LEADS_ASSIGNED email template; harden assignLead for bulk use
assignLead had zero callers and had never run in production. Before wiring the bulk reassignment path to it, give it the guarantees that path needs: - take org...
Add MANAGE_ORG_BRANDING (174)
Org branding endpoints (logos, colors, backgrounds, theme provisioning) were owner-or-god only, leaving no way to delegate branding without handing over ownersh...
A suspended loan can be resumed, and is no longer offered to itself
SUSPENDED is deliberately not terminal — LoanFileStatus.isTerminal excludes it, because a loan is suspended for a fixable reason. But it had no forward arrow, s...
Bound MlosAiClient with explicit connect and read timeouts
The client field-initialized a bare `new RestTemplate()`, so no timeout applied on any AI call and no builder could reach it. A hung provider blocked the caller...
Grouped aggregate queries for the agent scorecard
Twelve @Query aggregates across sessions, messages, usage records and outbound touches, so a scorecard is a handful of grouped queries rather than loading rows ...
Structured sales-agent config, version spine and outreach state
Replaces the single training-context blob with a structured, versionable agent model, and adds the per-contact spine an agent needs before it may initiate conta...
SalesAgent chombo + kwa kazi ya wakala wa kati
Org-configurable AI sales agents: a named agent for a sales industry, programmed with a training context the org authors (from a template or by hand), assignabl...
Signed agent-routing token + lead-reassignment propagation
Foundation for making the reusable public-chat widget handle the KamoMLOS borrower->loan-officer variant securely, and for propagating lead reassignment into an...
CATALOG_SOURCE assoc type for MLOS catalog source documents
Uwekezaji kiwango karatasi / LLPA + ustahiki matrices / lock sera haja ya mahali fulani kuishi: dondoo za ingest kutoka blob, na pointi za kiwango cha karatasi ...
MobileDevicePolicy - org default + kwa kila mwanachama override
personal phone or must be on a company-managed (Android Device Owner enrolled) device: - MobileDevicePolicy enum: PERSONAL_ALLOWED | COMPANY_MANAGED_REQUIRED. ...
Value-keyed AUS case-file + e-sign envelope finders for identifier owner-delegation
Completes the owner-column lookups the MLOS identifier plane needs to route inbound callbacks: **************** (DU/LP/GUS run handle) and **************** Both...
Thamani-key-identity finders kwa kitambulisho mmiliki-delegation
Ndege ya kitambulisho cha MLOS inatatua muuzaji wa ndani / kurudi kwa mkopo; kwa aina za OWNED ELSEWHERE Thamani ya mamlaka inaishi kwenye safu ya OWNER. Kuonge...
CONDITION_ADDED / CONDITION_CLEARED canonical email templates
Kukopa-inakabiliwa nusu ya hali kitanzi: templates mbili za orodha ya generic kwa hali mpya taarifa ya mtumiaji. Imeongezwa kwa CANONICAL KEYS na rasilimali zao...
Gate live sessions & participation on ACTIVE member status
Add **************** as the single source of truth for the "only ACTIVE members may sign in or appear as a live participant" invariant: base members must be rec...
Commitment boardedAt + loan-funded event type (loan-sale desk)
- MlosCommitment.boardedAt: in-system marker for a PURCHASED commitment's loans boarded to servicing (the external servicing-system handoff is the blocked leg...
Commitment/loan-sale desk entities (runtime consumer for the shipped investor config)
Msingi wa Slice 2 kwa dawati la mkopo wa soko la mji mkuu (doc 08) - hatua ya mwanzo wa mwisho. [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri mashar...
ClosingArtifact provenance = one-time null->value stamp (enables after-commit eClose dispatch)
Splits the ClosingArtifact @PreUpdate WORM guard so the eClose vendor dispatch can move OUT of the assemble/advance transaction (doc 05 §6): the node commits FI...
Makundi ya wauzaji wa EClose (RON / ENOTE /EVAULT / MERS) + artifact-kwa-externalRef finder
- VendorCategory inapata reli nne za notarized-leg ili kichupo cha ushirikiano kinaweza Sakinisha kwa RON / eNote / eVault / MERS muuzaji (ongezeko la STRING, h...
Lock lookup by loan file (join through scenario)
**************** — locks key on scenario, so resolve a loan's locks via MlosLoanScenario.loanFileUid. Backs the borrower/steward 'is this loan rate-locked?' rea...
Borrower section read methods for other-income/expense/REO/gift capture
The per-borrower repeating sections were write-only; add read projections **************** so the borrower capture UIs can hydrate existing rows via GET endpoin...
**************** (was findById)
VendorOrder extends BaseUuidEntity (key = uid, not id); the derived-query parse failed at boot ("No property 'id' for VendorOrder"), crash-looping MLOSVendorSer...
VendorOrder + VendorOrderEvent vyombo kwa WS3 muuzaji ili uti wa mgongo
Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... kuwa). VendorOrder = utaratibu wa async (lu...
MortgageAmortization - kila mwezi P & I kutoka kwa masharti ya mkopo (WS6 msaada)
Sehemu moja ya PITI haijahifadhiwa kwenye mkopo. Viwango vya jumla formula P·r· ^n/((1 +r) ^n-1); kiwango cha sifuri hupungua kwa mstari wa moja kwa moja; Msing...
KufungaReadinessEvaluator - kiwango cha mkopo wazi kwa mlango wa karibu
Rolls a loan's obligations up to the funding question the end-to-end gap analysis raised ("service the loan all the way to funding"): clear-to-close iff zero ad...
Ukadiriaji wa injini - keystone ya msingi ya dti (WS6)
Composes the four cores (income, liabilities, PITI/DTI, reserves) into ONE QualifyingSnapshot: qualifying income, reconciled monthly debt, assembled PITIA, fron...
ReservesCalculator - nywele zinazostahili-kamaset → miezi ya PITIA (WS6)
Derives reserve months from actual assets with standard agency haircuts — liquid deposits 100%, brokerage 70%, vested retirement 60%, gift/borrowed excluded — d...
PitiDtiCalculator — PITI assembly + front/back DTI (WS6)
Pure ratio core completing the DTI trio with LiabilityReconciler + the income core: PITIA = P&I + taxes + HOI + HOA + MI + flood; front = PITIA / income; back =...
QualifyingIncomeCalculator — base + variable core (WS5)
Msingi wa mapato safi / ya kuamua: msingi wa salaried = kihafidhina chini ya Ushahidi unaopatikana (paystub / W-2 / VOE); kutofautiana = wastani wa 2yr na the ...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.