Organizations frequently find themselves faced with the necessity to extend and modernize legacy systems. Projects like these are typically motivated by the inflexibility of the legacy system to adapt to changing functional and technical needs of the organization, which eventually will render the legacy system obsolete. Matrix Group International, LLC (“Matrix Group”) is an award winning digital agency that is no stranger to championing modernization for its clients confronting this critical undertaking.
Over the past twenty years, Matrix Group has delivered digital solutions that modernize their clients’ business practices across an array of industry segments including trade associations, professional societies and nonprofits. New to their arsenal of modernization tools is Mendix, a best of class low-code application development platform. By partnering with Kinetech and Mendix, Matrix Group sought to build a custom application ("App") to replace an existing custom application that connects contractors and unions to their agreements.
“The Kinetech Team is very talented and professional. They are easy to work with and were able to keep the project moving.”
- Jessica Parsley | Associate Director at Matrix Group
The existing custom application allowed contractors to submit agreement applications but lacked the flexibility to support complex invoicing requirements. Due to this limitation, the client resorted to manually generating invoices via excel spreadsheets on all applicable fees. The existing custom application's built in work hours reporting function remained widely unused among the organization’s clients and thus fell under the umbrella of another manual process. Additionally, due to the complex nature of the rate per work hour due for different agreement types, invoicing for work hours fell under that same umbrella.
Even more so, the existing custom application lacked a seamless user experience for its major user groups. Individuals submitting new agreements were required to use separate login credentials. It also lacked any meaningful way of relating data to its users thereby falling to provide any useful insight. Administrators could not rely on data integrity due to non-existent duplicate data entry measures. Finally, the absence of reliable email deliverability forced any outbound email notifications along the approval process to occur outside of the existing custom application.
When asked why Mendix and Kinetech were chosen to address the business challenges of their client, Associate Director at Matrix Group Jessica Parsley said,
“Mendix is a good fit since it offers an easier upgrade path than most custom code options. This will allow for us to keep our technical debt to a minimum while ensuring our client is up-to-date and secure. Given Kinetech's experience with Mendix, they were the right partner for this project.”
- Jessica Parsley | Associate Director at Matrix Group
Integration - A Cloud Friendly Architecture
Integrating the App with Matrix Group's Association Management System ("AMS") MatrixMax was a critical requirement to move forward. Thankfully, Mendix makes the process of integrating via REST APIs straightforward. Matrix Group’s team identified several key API endpoints that would help foster a seamless user experience. Those endpoints included a single sign-on (“SSO”) authentication method with the AMS, AMS user data exposure, and exposing invoicing endpoints in order to feed the AMS data in which to process.
Matrix Group has to ensure that the App uses client profile data from authenticated users as defining factors to system and data access as well as behavioral permissions. Mendix provides out of the box user management capabilities on the front end allowing administrative users to assign user roles. Mendix user roles help define what a user has access to and the functionality they are able to execute. However, in this use case the App would need to dynamically assign user roles and data access each time a user attempted to log in via SSO rather than rely upon manual user management. Successfully implementing such capabilities would mean a more inclusive user experience since all participating parties in the process have accounts in the AMS. In addition, the data integrity of the AMS would remain intact while allowing the App to leverage its data or populate specific data for the AMS to later consume.
With the inability to customize workflows in the AMS it was critical that Matrix Group was able to do so within the proposed App. Could Mendix handle the complicated nature of heavily negotiated agreements? Generally, highly customized workflows are a challenge for companies looking to automate or digitize elements of their business processes. In this case, the goal was to manage application fees and work hour rates depending on the agreement type into the approval and work hour tracking workflows. The fees and rates per hour would then populate Invoice data to send to the AMS for further billing purposes. Achieving this would add huge value to the organization’s operational efficiency since it would eliminate the need to manually generate any invoicing as a separate step.
To add even more value to the organization’s operational efficiency, Matrix Group wanted to ensure that notifications were also built into the approval workflows. More importantly, email deliverability was a high priority. Again, apps built with Mendix are 100% customizable and can integrate with other third party services such as an email service like SendGrid. With this in place, the organization would again benefit from more efficient work days and a reliable emailing service. This would eliminate the need to handle emails outside of the system and give users more time in the day.
Having a system that includes all stakeholders concerned with work hours related to construction agreements is important, but how would all users be able to report strictly on the hours that relate to their organizations? This was another challenge that Matrix Group sought to solve using Mendix. The App would need to dynamically handle a series of input constraints such as a date range, who the hours reported against were, the location of work, and the total hours, just to name a few. The result would represent the sum total of hours reported in the date range entered and grouped by the different input constraints a user would provide. Having a reporting capability that supports such dynamic queries would eliminate the need to handle such reporting, or data manipulation, outside of the App.
To tackle implementing the API endpoints from Matrix Group’s AMS MatrixMaxx two things needed to occur. First, the App security had to represent the allowed user groups from the AMS to the app and the access levels granted to each user type. Second, the data structure needed to reflect that of the AMS's in the form of a translation layer. A translation layer is a series of temporary tables that allows an App to accept unaltered data from a third party system which it can choose to store or delete once data has been processed.
“Developing this project on a platform like Mendix really underscores the effectiveness of low-code. We integrated the AMS API’s as they were developed, changed the architecture and logic that required change, and continued developing the current sprint.”
- Mario Arguello | Lead Developer at Kinetech
For instance, a schema definition from the AMS would tell the App the characteristics that define a user from it’s system. Such characteristics included the permission groups and the company a user belongs to. The translation layer then picks up the permission groups and company to determine if they fit the criteria that allows a user into the app. The system then assigns a user role thereby granting access to the system and the remaining data in the translation layer further helps the App dynamically provide or remove access to relevant app data. Once completed, data in the translation layer is removed and no longer needed until the next time the user hits the system.
The same methods were applied for the Invoicing APIs. Some consume and display invoicing data to users of the app. Others collect data from the app to send over to the AMS. Implementing an API allowing the App to send invoicing data to the AMS works somewhat similarly in that a schema tells the app what the structure looks like and how to send it. The difference in this scenario is that the App sends data rather than consuming it.
“We needed a design that was reflexive so that our various stakeholder groups could manage end user access rights in real-time within the Application, while still adhering to the security structure and governance defined by the Client’s AMS. Essentially, we had two different data models to merge - one provided by the AMS and the other that existed within the Mendix Application.”
- Ricky Volz | Lead Architect at Kinetech
With careful consideration and advanced technical design techniques - such as a reflexive architecture - complicated business processes were supported. This allows for change in real time, as needed, and eliminates the dependency of requesting a developer to make a change. The complicated aspects of highly negotiated agreements such as rates per hour and application fees were built as user defined inputs, which then are managed by an administrative user. These user defined inputs were implemented into the approval and work hours tracking workflows of the App. This feature added to the automation of the invoicing process.
To address the concern of email reliability, Kinetech integrated with SendGrid and combined it with a pre-built Mendix module that provides custom email templates. The functionality enables administrators to customize their email content as well when those emails are sent. Changes to the email templates and the timing of outbound emails are made in real time without relying on developers.
Mendix's out of box search and query features typically support most developers' needs. However, in a use case such as this a more complex and robust solution was required. Kinetech's design will dynamically construct a text string in the form of a query statement that includes all the search parameters (i.e. constraints) to then retrieve the data from the database via an OQL query. This design does require an advanced understanding of the Mendix, OQL and the project’s domain model but is certainly achievable.
With the dynamic construction of queries in place, the solution populates predetermined constraints to include in the queries based on the type of user interacting with the query function. For example, if a user belongs to one of the contracting companies and wants to query the system for work hours reported against all agreements under the company, the system will construct a constraint that includes only that user’s company in the results. This is done without having the user specify the company they belong to. On the other hand, administrative users are not limited by predetermined constraints. Instead they can select from a list the companies they are interested in reporting on.
The most progressive and innovative companies find ways to make technology work for them. Mendix is a perfect fit for companies when an off the shelf solution simply does not exist that meets their needs. Kinetech leveraged Mendix to implement 15 integrations with Matrix Group’s AMS MatrixMaxx. New possibilities were created by leveraging Mendix to extend the capabilities of Matrix Group’s AMS, and allow the AMS to maintain its limited role of managing client data.
“The client has been struggling to gain insight into their processes. With the new application that was built with Mendix, they will gain more insight on their processes and be able to better support their numbers.”
- Jessica Parsley | Associate Director at Matrix Group
Incorporating integrations into features of the application has made the user experience more seamless and inclusive of all stakeholders in the process. User access rights have been outsourced to the App to make user management much simpler and dynamic. Complicated aspects of the business process have been implemented as user inputs decreasing the costs and effort to maintain the App. Invoicing no longer requires manual intervention, which eliminates another routine task historically performed manually. Notifications have been streamlined and are customizable by the end user. Best of class email engine SendGrid has been leveraged for dependable email deliverability. Lastly, a dynamic querying feature provides in depth analysis of work hours pertaining to a user’s organization.
The project set out to revamp an existing custom application that could not support new and fluid business requirements. What resulted was a highly adaptable and configurable system capable of handling real time changes that is fully integrated with the client's AMS. This truly promotes operational efficiency by consolidating and eliminating much of the manual work that used to take place across multiple systems.