Modernizing a Legacy Personnel System: Using Domain-Driven Design to Increase the Data Reliability, Reduce Support Requests, and Alleviate Employee Frustrations
How SingleStone partnered with a state legislative agency to design a future state architecture and data model for an aging personnel system. Using a domain-driven approach, SingleStone created a cohesive future state architecture to increase the reliability and robustness of data, reduce support requests and alleviate frustrations from the agency employees.
"Our engagement with SingleStone was successful and highly productive, and we were able to capture and document the detailed information we need to move forward." - IT Director
THE CHALLENGE:
Client Background:
The state’s legislative agency designed, built and maintains a custom personnel system that is integral to the day-to-day running of all legislative agencies including the House of Representatives and the Senate. During peak personnel season, such as right before the start of an assembly session, the system must process all new incoming agency employees and members quickly and accurately.
Challenge Overview:
Legacy Personnel System: The current system was started in the late 1990’s and subsequently enhanced overly nearly 30 years by many different employees.
Number of Integrations: As the agency’s personnel system of record with over 140 incoming dependencies, data in this system is used to populate downstream applications, data warehouses, public web sites, dashboards and reports – nearly 75 direct integrations and many more indirect data integrations.
Slow and Fragile System: The system’s monolithic architecture has become fragile over time with many workarounds and patches along the way. It is also cumbersome to develop new features and can exhibit slow performance during peak periods of usage.
Key Pain Points:
User and Developer Frustration: Onboarding a new employee is over 70 steps today, many completed manually during peak periods of activity by frustrated users navigating back-and-forth between systems. Developers also report frustration with their daily lives developing and testing the large monolithic system where progress is slow and painful.
Unreliable Data: Underlying issues with the core data model and current integrations results in unreliable and/or inaccurate data being shared throughout the agency and published on their web sites for their constituents and the world to see.
High Support Requests: The frequency of support related activities challenges the team's already strained schedule, requiring them to focus on solving for the requests in front of them rather than being able to focus on solving the underlying problems that cause the support requests.
THE SOLUTION:
A Domain-Driven Future State Architecture
Our Discovery phase uncovered a solid understanding of the business domains, systems and data including real-life personnel scenarios that cause the most problems today. With this understanding we collaborated with our client to design a future state architecture that address their most problematic data scenarios, creates clear bounded contexts for their architecture and lays the foundation to conservatively save over 1,300 hours/year of employee time and improve employee experience.
Key Actions Taken:
Design of the Domain-Driven Architecture:
Strategic bounded contexts: We defined a half-dozen contexts related to Personnel management including how future applications, data, and infrastructure could be independently designed, built, and deployed – all aligned to the agency’s business model. Each context was strategically classified to pinpoint where investment would yield the greatest ROI.
Modular Monolith Application Architecture: SingleStone recommended an architecture that prioritized the team’s needs for adoption and simplicity while enabling domain-aligned components to be decoupled later without impacting the architecture. This provides a path to “grow into” a more distributed architecture over time while keeping it simpler for the team initially.
Design of a Flexible Data Model:
New Flexible Data Model: We created a new data model and introduced new entities and relationships enabling the agency to handle all their complex real-world scenarios.
Loosely Coupled Integration: We introduced commands, queries and events to describe the end-to-end new hire and related processes. Using the bounded contexts, we organized new API’s, services, data stores and messaging to enable contexts to collaborate in a loosely coupled fashion.
Phased Rollout to Reduce Risk:
Phased Rollout aligned with Milestones: We created and documented interim architecture steps, aligned to phases in a Now, Next and Later roadmap, that showed the evolution to the future system and retirement of the current system. The creation of milestones along the way represented logical steps towards the future for the team and organization.
Bubble Context to Reduce Risk: We recommended a software component that enables the new system and current system to live side-by-side for a period of years while their 75+ integrations migrate to the new platform. This bubble context updates the current system when data changes in the new system, enabling all downstream consumers to continually work throughout migration on their own flexible schedule with no hard cut-over dates.
THE OUTCOME:
Key Achievements:
Clear Architecture with Options: In just three months, we created something the agency had been challenged to do for years: create a clear and cohesive architecture that provides a solid target for modernization and is iterated over time. The architecture is not tech-specific; multiple different options exist and will be selected closer to implementation.
Simplified New Hire Process: The new architecture facilitates a dramatically streamlined new hire process that can save over 1,300 hours a year – much of it during the peak months before session. With an improved user experience and a path to integrate with Workday, even more of the process can be streamlined.
Teaching and Delivering: As we introduced new ideas from Domain-Driven Design (DDD), such as Aggregate Roots, and helpful design patterns like CQRS, we spent quality time with the entire team helping them understand why these patterns made sense in certain scenarios. This ability to “learn while doing” was a hit with our client’s teams who picked up new skills during the project and plan to continue on after our initial engagement.
“These [Domain Driven Discovery] exercises have enabled us to have more impactful and valuable conversations with our customers. Now we’ve actually measured our pain points and theirs to enable us to work towards real solutions more quickly.” - IT Portfolio Manager
“Getting to visualize all the touchpoints helped customers come to the conclusion that streamlining was necessary.” - IT Portfolio Manager
Long-Term Impact:
Scalability and Growth: The new architecture is organized as independent contexts that can scale and grow in the future at their own pace. This includes the processes, systems and data for these contexts including how the current teams align to each context.
Beyond Personnel: Our domain-driven approach opened our client’s eyes to how this thinking could be applied to other parts of their enterprise architecture, including legislation, committees, and voting contexts. By engaging domain experts from the beginning, we demonstrated that architecture is not just an IT activity but a collaborative effort that spans the organization. As a Sr. Software Engineer shared, the approach enabled them to “easily articulate many pitfalls of our current architecture using a common language that resonates with the customers and decision makers, which is important when discussing a future state.” This newfound clarity has improved the daily work experience for everyone using their system, underscoring the broader impact of our collaborative process.
“People talk about raising awareness and visibility ... this was 1000% that. [Event Storming]” - IT Director