Paladin Risk Management: Insurance Certificate Tracking Web Portal
Paladin Risk Management: Insurance Certificate Tracking Web Portal
Paladin Risk Management came to us during an org shift: new general management wanted a third-party to assess and recommend improvements to their custom insurance certificate tracking portal built in Drupal 7.
The intranet portal had overgrown its original design, and the portal features needed to be reviewed for streamlining the portal user experience for staff productivity.
Facet reset Drupal foundations with best practices and, over the past 3 years, has driven continuous improvement for Paladin’s business operations through their web portal.
During our assessment we identified widespread issues with brittle custom PHP code, out-of-date Drupal modules, and application design issues stemming from 3 years of an incohesive product roadmap. Paladin also had greatly overgrown their hosting support on Pantheon, and needed to migrate static files away to S3 for long-term storage.
Paladin provides wrap insurance enrollment tracking and insurance certificate tracking services, primarily for the construction industry. The WRAP web portal manages all certificate and enrollment statuses, and aggregates compliance information for the purposes of notifying non-compliant parties or upcoming certificate expirations.
Critical cost centers run through this web portal. Staff productivity in the portal directly correlates to profit. Optimizations made in automating noncompliance notifications, improving throughput for client onboarding, and reducing staff toil for standard operations in the portal all affect the bottom line.
By applying Facet’s standards for Drupal 7 best practices in development, configuration management, and deployment operations, we:
Documented the site architecture with Drush Make, enabling programmatic rebuilds to ensure streamlined security updates and maintenance.
Patched custom and contrib code to meet current PHP7 compatibility standards.
Implemented functional testing automation with Behat.
Refactored permissions to remove role dependencies in custom code.
Implemented best practices in caching views, JS, CSS, and custom entities.
Through applying these best practices we:
Reduced ongoing maintenance and security update costs.
Reduced risk around deployments and costs by leveraging automated testing.
Ensured consistent deployment of features and programmatic updates.
Refactor Compliance System
Paladin’s compliance system was originally built leveraging a combination of Drupal 7’s flag module and the computed_field module. A custom entity type called requirement would keep track of the various insurance policy requirements for each project, and contractors under each project would have a requirement line item that was flagged to track their compliance status for matching the project’s insurance requirements.
To ensure appropriate calculation of compliance, we refactored the flagging system and provided a better audit trail of the compliance calculation—enabling users in the system to specifically identify where compliance was misattributed.
Insurance Certificate Compliance Reporting
To enable long-term tracking of compliance percentages for projects and Paladin staff, we built a lightweight project_compliance entity to stash calculated values outside of the computed_field value on the node. This separation allows us to review time sequenced project compliance and track staff performance as well as identify risk around end-client projects.
Staff Workload Reporting
To provide better visibility into staff workloads, Facet engineered a time-sequenced storage of account workloads, calculated and stored daily. Staff workload reporting required storing the number of projects, type of projects, maturity of projects, and relevant statuses so as to appropriately inform the Paladin senior management team of potential imbalances.
Refactor Custom Reporting to Views
Many reports built inside of the Drupal 7 web portal were developed as custom SQL queries. The natural evolution and improvement of such reports was costly each time a new request was made, and so Facet cataloged and refactored a majority of reports to leverage the Views module. The sitewide performance greatly improved as caching of such reports across the site reduced effective load.
Autoscale Policy Reminders Email System
A majority of Paladin’s provided customer services revolve around managing certificate expirations. When an insurance policy expires, the respective parties receive a 30-day, 15-day, 0-day, and -10-day notification from the time of the expiration.
While this system was originally built to keep track of wrap insurance enrollments, it wasn’t architected correctly for the large queues of emails that now get generated daily. Paladin needed to scale to thousands of emails per day, and where their previous architecture was functionally correct—it didn’t scale.
We implemented a queue system that better tracked the individual contract compliance and reasons for sending the notice of non-compliance at the time of sending. This refactored insurance policy reminders system set the foundation for further email automations—which reduce workload for Paladin staff and ensure a higher throughput of communication around noncompliance issues.
Automate Compliance Status Reminders
With the foundation of the insurance policy email reminders system refactored, we were confident we could add new layers of value. We engineered a compliance status reminder system, built to notify project contacts and contractor contacts when their insurance policies are non-compliant for an extended period of time. This helps project owners (typically general contractors who own the construction project) to identify and remedy non-compliant subcontractors.
Improvement of average compliance rating per project improved by roughly 15-25% per project once this system was in place.
Account Management Dashboard
With increased focus on the compliance ratings, Paladin staff needed an improved dashboard to centralize, filter, and sort through their assigned projects. Facet built an improved homepage for the Account Manager role, providing a collection of widgets using the Drupal homebox module:
Project Compliancy Widget - displays all projects for the currently logged-in user and the associated Certificate Tracking and Premium Allocation compliancy.
Account Overview Widget - displays total number of enrolled, tracked, and excluded contractors per project, to better identify collective workload for staff.
Contract Search - Quick helper widget to find contractors.
Contact Search - Quick helper widget to find contacts by email, name, or phone number.
Note Taking Sidebar
Comments are heavily used throughout the insurance tracking web portal, however the user experience was sporadic and inconsistent across different entities. To simplify the frame of reference, we implemented a notes widget that would display all relevant comments in one location as it related to the current context, and provided a “+” button to popup the new comment creation field.
Migrate to S3fs (AWS S3 File System)
Paladin maintains a massive repository of insurance certificates, and duplicated PDFs that are sent to end customers and must be attached to each respective project and contract in order to provide an audit trail. In 3 short years on Drupal, Paladin’s static file repository had grown to 200GB. Pantheon was still serving our pages, but we were quickly running into platform limitations as we grew up past 250GB.
Facet refactored the file media management to leverage the s3fs module, and began a lengthy migration and sync process to get the Amazon S3 buckets up to date. Once everything was migrated, we implemented bucket syncing scripts to ensure dev, and test environments had their own respective file repositories.
Serverless Zip Generator
Paladin generates a zip archive of all static assets provided to Paladin during the course of services at the end of each project. This provides a static repository of information to the customer, and ensures a review process allows the customer time to make sure that all contractors were contacted, and documentation is in order.
Once we migrated to s3fs, our ability to generate a zip archive was seriously complicated. The size of generating repositories on the order of gigabytes (GB) is not realistically achievable using the Pantheon web servers to handle the transaction. Instead, we implemented a serverless closeout zip generator using AWS Lambda and Bref. At the beginning of requesting the zip file, a JSON payload would be created specifying the path to s3 files, and the serverless script would drop the requests into an SQS queue. Lambda would then read from the queue, and fan out to concurrently write the files to a single zip, and provide a link back to the Paladin wrap insurance portal for the user to download. While this was fairly quick for some projects, we also added an email notification system for the requests that would take an order of minutes.
As Facet continued to gain a deeper understanding of Paladin’s business—it became clear that long-term storage of critical metrics and key performance indicators would help to identify risk in services delivery, and address sticky situations with staff performance.
Facet recommended and built an initial proof-of-concept to demonstrate the kinds of insights that would be gained from business intelligence reporting. This project is ongoing and we hope to provide an update in the future.
Preparing for Drupal 8 Upgrade
With the end-of-life of Drupal 7 looming near, discussions around upgrading to Drupal 8 are under way. Recognizing Paladin’s extensive customizations and underlying custom code, we decided to focus on an initial project to optimize total cost of ownership as we transitioned from Drupal 7 to Drupal 8.
First, we rebuilt the employee manual in a Notion wiki. This provides a centralized reference for both end-users and developers. As we get into and work with underlying systems that will need to be rebuilt and refactored in Drupal 8, we’ll be able to more easily understand the intended functionality.
Second, we refactored the Drupal 7 portal design so the user experience (UX) would be more intuitive. This redesign lays a foundation for the update in that we’ve greatly centralized activities around entities, ensuring a cleaner object-oriented design pattern.
Lastly, the data warehousing project provides us with a point of reference to ensure calculations for compliance, staff reporting, and other application-embedded reports can be extricated and decentralized. Our end goal is to incorporate more data points around Paladin’s business operations, and remove the dependency on Drupal 8 as a reporting center.