When data integration seems impossible using third-party tools or solutions, don’t give up. You can get your systems communicating and sharing data. This is the story of how we developed custom data integration with full automation capabilities that yielded immediate results.
No organization has just one platform that can do everything the company needs. So you end up with a collection of specialized systems. Leading software platforms provide lots of functionality and customization, but when the software doesn’t integrate well with your various other platforms, what do you do?
One option is to look for an integration tool. But customers often find the cost of these tools too steep to justify.
Another option is to use a third-party contractor to perform the integrations.
Technically, application programming interfaces (APIs) are there to help you get the platforms communicating with your software so that you can move data back and forth. But the APIs of leading platforms can be difficult. Although they can pretty much do everything, they’re often highly complex –because the platforms themselves are extremely complex.
As a result, you have to really dive in to understand what the API is doing and how to perform the integration. Then you must go in and write custom software to automate processes. You’re essentially creating a webservice that is not sold by anyone else. Doing all this is a challenge for most organizations.
At Onebridge, we solved a data integration problem within our own company’s accounting and HR departments.
The service contract on our HR and payroll software was about to expire, so it was the perfect opportunity to replace it and fix some ongoing issues caused by disparate systems.
Regarding the latter, the challenge was that our HR/payroll system, timekeeping system, and NetSuite (for accounting, where we keep the general ledger) could not communicate or share data with one another.
Because of that, our team needed to take data from HR/payroll and timekeeping and manually enter it into all three systems using Excel. If an employee entered a change in one system, an HR employee would have to make the change in the HR/payroll system, the ERP system, and possibly in up two more platforms. Even getting pay information into the system and back out was done manually.
Nothing was automated, and because the systems couldn’t communicate, the process:
Another major pain point was that the lack of HR integration made job costing very challenging. Our timesheet data alone resided in three different systems: a PSA/time and labor system, the CRM/ERP (NetSuite) which had the project and customer data, and a human resources information system (HRIS) for payroll.
To calculate the cost of a project or how profitable it was, we’d need to pull data from each system by project, service line, department, and other criteria. It was time to apply our own data integration skills to our internal systems.
In this case study, you’ll discover what we did to solve the problem and see that we can similarly help you sync up your disparate systems with a more affordable, custom-built solution for your organization. While this work showcases our integration experience with NetSuite’s API and Paylocity, we have an abundance of experience integrating data in different platforms across industries.
Let’s review our goals for this project. We needed to:
Ultipro was the existing payroll processing portal that our employees used to sign up for benefits and insurance and to view timecards and paystubs. (Time was entered in a different system.) That’s the system we needed to replace.
We began researching and vetting HRIS systems that we could use instead. We evaluated the products based on criteria such as costs, the software’s APIs, whether data integrates seamlessly between all the systems, whether the platform would support automation, how NetSuite’s API would work with the system, and whether job costing functionality was supported. We quickly discovered that there aren’t many firms that provide job costing solutions for professional service organizations, so that narrowed down our choices.
All signs pointed toward Paylocity as the most cost-effective system that had the functionality and flexibility we needed, and, as an added bonus, it was less expensive that our existing system.
Our evaluation continued to include discovery calls and research with both NetSuite and Paylocity’s technical resources.
With Paylocity, we’d be able to import the hours worked into the payroll batch, automatically create paystubs, and then distribute all costs, regular wages, taxes, benefits, etc., by jobs/projects to create job costing that integrates into NetSuite general ledgers. So the decision was made.
While we were still choosing an HRIS system, our team was simultaneously working out how to handle data integration. Our approach was to analyze different solutions (third-party integration software, specialized consulting, and in-house custom development) to see which would be the most cost-effective.
As we researched third-party integration software, we found that the costs of integration tools were exorbitant. That was not the route for us.
We looked at specialized consulting using a third-party contractor and compared that to our in-house custom development capabilities and capacity to do that work.
It became clear that the most sensible option was to develop this solution internally using systems already in place to reduce overall costs, including the cost of maintaining such a system.
We explored how to integrate data seamlessly between all our systems to give the business job costing and flexibility in reporting – without having to update multiple systems or manipulate multiple files. NetSuite has no integrations natively, but this is also the case in some other comparable platforms.
We purchased Paylocity and began implementation while starting the integration work. The integration between NetSuite and our timekeeping system, OpenAir (both Oracle products), was seamless and customizable enough not to require any direct integration between Paylocity and OpenAir.
The bulk of our work focused on the integration between NetSuite and Paylocity. We checked to see how we could send information to Paylocity using their API and how we could automate the data transfer. Then we did the same thing on the NetSuite side, learning that Paylocity had a very helpful notification system that, when something happens, triggers a notification that you can use to send information to NetSuite.
We identified the data that we needed to send back and forth. Then we conducted a proof of concept (POC) to see how the integration performed when sent info to either system.
We investigated how we could automate that data transfer process using the Paylocity webhooks, and that made event processing effortless for employee changes. Instead of going in all the systems, all you had to do was make a change, and all the systems were updated. This was what our HR and accounting teams were waiting for.
Once we were able to do the POC in a programmatic way (i.e., we wrote code to automate it), all we needed to do was map out the workflow of the business. We chose Microsoft Azure to do that because of its serverless technology, which makes life much easier since there are no servers to maintain.
Azure also offers the flexibility to not run 24-7. It’s a just-in-time system, so it’s not always on. While there is a higher cost on a per-instance basis, we calculated that for our needs, paying for only for the times when data is being exchanged would be less expensive. We then used Azure functions to create custom solutions to facilitate all integration, notification, and logging.
We built in security with Azure Identity using RBAC (role-based access control) roles and Azure Key Vault for secret storage, both custom solutions. We created IP-based security so that the web services only accept requests from a range of IP addresses. Then we used a Key Vault so that, for the credentials, all the information was encrypted and stored separately.
We defined role-based security from an application standpoint. So we put the identity on the application, meaning the application can only communicate to the Key Vault and administrator, making it was easy to set up.
The project wrapped up quickly, and our internal teams were and continue to be very pleased. See the results section for details.
The combination of integrating disparate systems, automating processes, and adopting Paylocity has been a game changer for Onebridge’s HR and accounting teams.
Overall, the results we tracked included:
“The impact of having your systems integrated, sharing the same data, and automating your processes is immeasurable. The difference of moving from siloed systems with manual processes to this kind of efficiency and accuracy is like night and day.
We’ve had substantial time and cost savings, reduced errors, and we dramatically increased productivity. And it all came together so quickly.”
-- Candace Bridges, Onebridge Controller
By implementing automation, the time it takes to complete processes has been reduced from a few days to a couple of clicks or even no clicks at all when the automation is triggered by a scheduled event.
When it comes to making changes to employee data (new hires, terminations, address changes), the employee or an HR person can do it in one place, and records are updated immediately in all the other systems, whether the change was made in Paylocity or another platform. You’d have to previously audit all the other systems for data integrity to make sure that the single change was made in every location, and now those audits are unnecessary.
Getting payroll information is also much easier, and you get it out of the system in perfect format, instead of having to manipulate the data. Even for all job costing, we’d previously take payroll data and someone would have to manually manipulate it. Now we just take the files directly from Paylocity’s payroll and upload it into the NetSuite accounting software or we can automate it if we choose.
In addition, with everything is in the cloud, the system is more secure because you’ve eliminated the exposure created when a cloud system talks to an internal platform. Security is controlled by the application, not by people, which makes it more secure and reduces human error.