Overview
In this scenario, an organisation receives external employment verification reports in XML format from a third-party payroll provider. Each report contains report metadata (report ID, generated date, applicant first and last name) and a WorkHistoryList containing one or more HistoryItem nodes representing individual periods of employment.
The XML file is uploaded as a note attachment directly onto the Applicant record, with the note Subject set to Work History File. A recruiter clicks a ribbon button on the Applicant main form to trigger processing. The formula locates the correctly named note, decodes and parses the XML, then creates one Work History record per HistoryItem found in the file.
The XML file follows this structure:
<?xml version="1.0" encoding="UTF-8"?>
<EmploymentVerification>
<ReportMetadata>
<ReportID>EV-992834-MULTI</ReportID>
<GeneratedDate>2026-03-15</GeneratedDate>
<Source>GlobalPayroll_Systems_Consolidated</Source>
<FirstName>David</FirstName>
<LastName>Johnson</LastName>
</ReportMetadata>
<WorkHistoryList>
<HistoryItem>
<EmployerName>TechNova Solutions</EmployerName>
<JobTitle>Senior Project Manager</JobTitle>
<StartDate>2018-05-12</StartDate>
<EndDate>Present</EndDate>
<EmploymentStatus>Active Full-Time</EmploymentStatus>
<BaseSalary currency="USD">115000</BaseSalary>
<PayFrequency>Bi-Weekly</PayFrequency>
</HistoryItem>
<HistoryItem>
<EmployerName>CloudScale Dynamics</EmployerName>
<JobTitle>Project Coordinator</JobTitle>
<StartDate>2015-02-01</StartDate>
<EndDate>2018-04-30</EndDate>
<EmploymentStatus>Terminated - Resigned</EmploymentStatus>
<BaseSalary currency="USD">85000</BaseSalary>
<PayFrequency>Bi-Weekly</PayFrequency>
</HistoryItem>
<HistoryItem>
<EmployerName>StartUp Hub Inc</EmployerName>
<JobTitle>Junior Analyst</JobTitle>
<StartDate>2012-06-15</StartDate>
<EndDate>2015-01-15</EndDate>
<EmploymentStatus>Terminated - Resigned</EmploymentStatus>
<BaseSalary currency="USD">55000</BaseSalary>
<PayFrequency>Bi-Weekly</PayFrequency>
</HistoryItem>
</WorkHistoryList>
</EmploymentVerification>
Applicant Record in Dataverse
North52 Decision Suite
The North52 Decision Suite solution works like this:
- We create a ClientSide - Calculation formula called in by a North52 Quick Ribbon in the Applicant command bar
- The formula finds the note on the Applicant Record with a title of ‘Work History File’
- The XML file is retrieved and the HistoryItem records are converted into an EntityCollection using GetVarXpathEC
- A ForEachRecord sheet is used to iterate over the records and create a matching Work History record in Dataverse
North52 Formula
The first sheet in the Decision Table carries out the following steps:
- Finds the appropriate note
- Retrives the Base64 encoded XML file
- Decodes the file
- Extracts each WorkHistoryList XML node into an Entity Collection
The second sheet loops over the Work History entity collection and creates a matching Dataverse Work History record
As you can see from the screenshot we are using both CurrentRecord() functions to access values in the collection, but also using XPATH commands directly to access XML values not in the Work Histories.
- GetVarXPathValue('/EmploymentVerification/ReportMetadata/FirstName')
- GetVarXPathValue('/EmploymentVerification/ReportMetadata/LastName')
- GetVarXPathValue('/EmploymentVerification/ReportMetadata/GeneratedDate')
Command Bar Button
We add a command bar button to the Credit Assessment App using the main form. We simply provide the Primary Control and the ShortCode of our formula as parameters to the button.
Result
When the button is clicked, the Work History records are created in Dataverse and associated with the Applicant record automatically.





