BambooHR Integrations
Overview
When developing the connect platform there needed to be information for each employee than was available in DocuPhase. The human capital management, BambooHR, provided a set of APIs at an individual and a custom limited view level, but necessary data was not readily available. An example of the data required was the hierarchy change to pull out anyone who reported to a director in their management chain and had not submitted an expense report need to be included in the reminder email. Some employees required five steps to get to a director.
The solution was to programmatically call the BambooHR APIs at an individual level saving the data in a staging database. Essentially creating a caching layer other systems in the connect ecosystem could leverage.
Development
The application was developed using a cli interface that could be used adhoc or via a scheduled task. It was developed following event driven architecture, which honestly was a bit overkill.
Integrations
Eventually, as the scope of the requirements expanded the logic was adapted from a pure caching replication layer to the source of truth and home for various integrations.
The integrations included the following projects.
- Out of Field. The entire logic flow was contained in the package, more details in the link.
- Car Payments. The entire logic flow was contained in the package, more details in the link.
- COViD screener. The integration provided HR information like employees who are out for the day, the escalation path, who received reminders, and validation of the employee data entered.
- Receipt Capture Validation of employee data
- Expense Report Hierarchy maps for expense reporting approvals.
- When Acosta and The CORE Group merged it was the backbone of most of the integrations into the Acosta Corporate systems for reporting, payment information, etc.
Summary
What a learned from this integration was how much the scope of a project can expand beyond what was originally considered. If I was to do it again. I would have removed the even driven architecture. It added unneeded complexity and was never finished because it did not fit the problem space.