.NET Middleware to sync APIs

Architected .NET middleware application to automate processes for a health foundation to coalesce three different APIs – Survey Monkey, Dynamics CRM, SharePoint.Features


Our company was midway through a CRM integration for one of the largest health foundations when they hit an impasse. One department was reluctant to adopt the CRM because they felt it wasn’t useful. The project’s success was contingent on every department using the CRM seeing as the ultimate goal was to provide data visibility across the organization.

If they don’t join, it’ll thwart the whole project’s effort to democratize our data. Foundation CTO

The Advocacy department’s primary responsibility was surveying the foundation’s user base for outreach feedback. During discovery I learned their workflow had many manual steps that were ripe for automation and they were using 3rd party reporting and document sharing tools to compensate for a unified system.


Advocacy department: Unnecessary time spent distributing, collecting and sharing the results of surveys.
Health foundation: Inability to make business decisions due to limited insight into the Advocacy department’s throughput and user base.


To replace their existing manual data collection methods, I built a custom middleware application that would leverage webhooks in their survey software (Survey Monkey) to monitor for submissions and run this workflow:

  1. Create/update contacts in the CRM based on survey responses
  2. Create relevant meta entities and relationships in CRM
  3. Generate a PDF document of their results and associate with contact
  4. Create SharePoint folders to store generated PDFs
  5. Notify the Advocacy department of contact changes

To handle high survey throughput we utilized concurrent processing to process responses 5x faster. I additionally made a custom dashboard for them to monitor survey activity and contact changes to provide full visibility and reporting on their user base.

Sprinkle of Salesmanship

I suggested we don’t just build this middleware as a standalone service; I proposed a larger engagement to allow this service to be abstracted to allow any kind of sync with an external system. The Advocacy department’s automation would be the first of many. Our COO was delighted by this suggestion because it meant a larger proposal.


  • Hours of manual entry saved for the Advocacy department
  • Costs saved on 3rd reporting tools since they were eliminated
  • Enhanced visibility into user base via Dashboard
  • C-level personnel better positioned to make business decisions due to all departments using one system.


Some departments were hesitant to join the CRM due to data privacy; I had to carefully implement policies to ensure all contacts were shared but not all data was visible for each contact.

Ensuring we understood the Advocacy department’s goals and workflows so the CRM brought them benefit otherwise their reluctance would thwart the CTO’s efforts to democratize the foundation’s data. I had to really flex my consulting and onboarding skills to unify all departments to sharing data and using one system.