Major Refactor: Snapshots
Snapshots are a fundamental part of how the LOS functions. The problem was that we were treating snapshots like second-class citizens. Time for a refactor.
Distributed version control
Snapshots are a fundamental part of how the LOS functions. The problem was that we were treating snapshots like second-class citizens. Time for a refactor.
There were somewhere between 15 and 20 bugs reported. The actual number of bugs was unclear because many of them were overlapping or interrelated. So for three weeks, I fixed bugs whack-a-mole style, fixing one, then another, then going back and re-fixing the original after coming back and finding it broken anew… over and over and over again.
The user story goes something like this: As an admin, I want updates to FinanceGenius LOS admin settings to propagate to the customer-facing LG portal so loans funnel in seamlessly.
The fine folks at *terrible contractor we were using that I will not call out by name* decided that if a lead funneling in from LoanappGenius (LG) did not transmit to a client’s FG LOS correctly, a cron would try again five minutes later. With any application, things can go wrong. With LG, things do go wrong. I start by interpreting mysterious and totally ambiguous error status codes. If I haven’t hooked you by this point, keep reading anyway.
The Military Lending Act was amended in September 2015 to place limits on how high an APR lenders could set for active military personnel. The real difficulty came after realizing the logic surrounding loan products and fees was now lacking. Their inclusion or exclusion affects MAPR values, and thus MLA rules. A refactor was in order because these can be updated in so many ways across the system.
Motivated by a need to honor discounted rates for current members, we needed to update the way we allow lenders to specify a borrower’s credit union member id. The new functionality would let the lender specify that id instead on the edit application page at the start of the loan process.
At the start of this relatively straightforward epic, there were a number of “terminal” loan statuses already in existence: abandoned, expired decision, expired contract, and finalized. Somehow missing from this list was a way for lenders to withdraw a loan in the FG LOS. We had to integrate this functionality with many other services across the site including user permissions, the automatic decision engine, the decision status cron, and application queues.
Symitar, a software system powering hundreds of credit unions, uses collateral codes for all loan types regardless of whether they are secured or unsecured. In an effort to comply with industry standards, we needed a Symitar integration to provide options to allow the user to supply a collateral core code for every loan type defined in their system. The newly defined collateral code can now be sent to the Symitar core on loan approval, thus allowing banks another way to distinguish loan types.
The task to be solved consisted of enforcing a 4-digit max size to Symitar core codes. It sounded easy enough, but a quick run through the domain revealed that core id fields were spread across eight different admin pages, each uniquely structured, implemented within their own context. I had to extend existing jQuery Validation library functionality to accept custom messages and errors returned from Ajax requests to the back-end. My eventual solution was done in a way to be easily extendible to future core implementations.