The ServiceNow ADP Workforce Now integration enables organizations to synchronize employee data between their HR system of record and ServiceNow's HR Service Delivery module, automating new hire provisioning and maintaining accurate workforce information across both platforms. This integration is essential for enterprises that use ADP for payroll and HR management while leveraging ServiceNow for employee service requests, onboarding workflows, and HR case management. The integration supports bidirectional data flows, with ADP serving as the authoritative source for employee master data and ServiceNow consuming this information to trigger automated provisioning workflows, update user records, and maintain organizational hierarchies. Primary automation patterns include real-time webhook notifications from ADP for employee lifecycle events and scheduled batch synchronization jobs, all orchestrated through ServiceNow's Integration Hub and HR Service Delivery application.
Prerequisites
- •ServiceNow San Diego or later with HR Service Delivery application installed
- •Integration Hub Professional license or higher
- •ADP Workforce Now administrator access with API management permissions
- •ADP Marketplace developer account for OAuth app registration
- •ServiceNow Integration Hub ADP Workforce Now spoke installed from ServiceNow Store
- •MID Server configured if running on-premises ADP deployment
- •hr_admin role or equivalent permissions in ServiceNow HR Service Delivery
Architecture Overview
The integration utilizes the official ServiceNow Integration Hub ADP Workforce Now spoke, which provides pre-built Actions for common employee data operations and OAuth 2.0 authentication handling. Authentication credentials are stored in ServiceNow using Connection & Credential Aliases, with the OAuth tokens automatically refreshed by the spoke's built-in token management. Data flows primarily unidirectionally from ADP to ServiceNow, triggered by webhook notifications for real-time updates and scheduled Integration Hub flows for batch synchronization of employee records. A MID Server is required only for on-premises ADP deployments or when corporate firewall policies prevent direct cloud-to-cloud communication. The ADP Workforce Now API enforces rate limits of 1000 requests per hour per client application, which the spoke manages through built-in throttling and retry mechanisms.
Sourdough: ServiceNow Monitoring and Analytics
A Chrome extension for ServiceNow Admins and Developers with essential tools, analytics, graphs and monitoring features.
Free to install. Pro $5/month after a 14-day no-card trial.
Pro requires the ServiceNow admin role. Upgrade inside the extension.
Implementation Steps
Register OAuth application in ADP Marketplace and configure credentials
Navigate to ADP Marketplace Developer Portal and create a new application with OAuth 2.0 authorization code flow enabled, ensuring you configure the redirect URI to point to your ServiceNow instance's OAuth callback endpoint. Copy the generated Client ID and Client Secret, then in ServiceNow navigate to Connections & Credentials > Credentials and create a new OAuth 2.0 credential record. Set the Client ID and Client Secret fields with the values from ADP, configure the Authorization URL as 'https://accounts.adp.com/auth/oauth/v2/authorize', and set the Token URL as 'https://accounts.adp.com/auth/oauth/v2/token'. Verify that the Grant Type is set to 'Authorization Code' and enable PKCE support in the advanced settings to meet ADP's security requirements.
Create Connection Alias for ADP Workforce Now endpoint
Navigate to Connections & Credentials > Connection Alias and create a new alias named 'ADP_Workforce_Now_Prod' with the connection URL set to 'https://api.adp.com'. Associate the OAuth credential created in the previous step by selecting it in the Credential field. Configure the connection timeout to 30 seconds and set the appropriate HTTP headers including 'Accept: application/json' and 'Content-Type: application/json'. Test the connection using the Test Connection button to ensure OAuth handshake completes successfully and verify that the connection alias appears as active in the Connection & Credential module.
Install and configure ADP Workforce Now spoke from ServiceNow Store
Navigate to System Applications > All Available Applications > All and search for 'ADP Workforce Now' spoke, then install the latest version ensuring all dependencies are resolved. Once installed, navigate to Process Automation > Flow Designer and access the spoke's configuration by clicking on the ADP Workforce Now application scope. Configure the spoke's global properties by setting the default connection alias to the one created in step 2, and verify that all required ADP API scopes are properly mapped in the spoke configuration. Test the spoke installation by creating a simple test flow that calls the 'Get Worker' action to ensure the spoke can successfully authenticate and retrieve data from ADP.
// Test script to verify spoke installation and connectivity
var worker = new sn_hr_integrations.ADP();
worker.setConnection('ADP_Workforce_Now_Prod');
try {
var response = worker.getWorker('test-associate-id');
gs.info('ADP Connection successful: ' + response.getBody());
} catch (e) {
gs.error('ADP Connection failed: ' + e.message);
}Configure employee data mapping between ADP and ServiceNow user records
Navigate to Human Resources > Administration > Data Sources and create a new integration data source for ADP Workforce Now, configuring field mappings between ADP worker attributes and ServiceNow sys_user table fields. Map critical fields such as ADP's personalCommunication.emails to email, legalName.givenName to first_name, legalName.familyName1 to last_name, and organizationalCommunication.workAssignedLocation to location. Configure the data source to handle ADP's nested JSON structure by creating appropriate transform maps that can parse complex objects like workAssignment and businessCommunication arrays. Validate the field mappings by running a test import with a sample ADP worker record to ensure data transformation occurs correctly and all required ServiceNow user fields are populated.
// Transform script for ADP to ServiceNow user mapping
(function transformADPWorker(source, target) {
// Map basic user information
target.first_name = source.u_adp_data.person.legalName.givenName || '';
target.last_name = source.u_adp_data.person.legalName.familyName1 || '';
target.email = source.u_adp_data.person.personalCommunication.emails[0].emailUri || '';
target.employee_number = source.u_adp_data.associateOID || '';
// Handle work assignment data
if (source.u_adp_data.workAssignment && source.u_adp_data.workAssignment.length > 0) {
var workAssign = source.u_adp_data.workAssignment[0];
target.title = workAssign.positionTitle || '';
target.department = workAssign.organizationalUnits[0].nameCode.shortName || '';
}
})(source, target);Create scheduled import flow for employee data synchronization
Navigate to Process Automation > Flow Designer and create a new flow named 'ADP Employee Sync - Scheduled' with a trigger set to run daily at 2 AM using the Timer trigger. Add the ADP Workforce Now spoke's 'Get All Workers' action to retrieve all active employees, configuring the action to filter for workers with active employment status and exclude terminated employees using ADP's worker filter parameters. Chain this with a 'For Each' loop that processes each worker record through a ServiceNow 'Look Up Record' action on the sys_user table using employee_number as the key, followed by either 'Update Record' or 'Create Record' actions based on whether the user exists. Configure error handling within the loop to log any failed record processing and continue with the next employee, ensuring that individual record failures don't terminate the entire synchronization process.
Implement real-time webhook endpoint for ADP lifecycle events
Navigate to System Web Services > Scripted REST APIs and create a new API named 'ADP_Webhook_Handler' with a POST resource to handle incoming ADP event notifications. Configure the resource with authentication set to 'No authentication required' but implement HMAC-SHA256 signature verification within the script to validate webhook authenticity using ADP's webhook secret. Create processing logic that parses the ADP event payload to identify event types such as 'worker.hire', 'worker.terminate', or 'worker.update', and triggers appropriate ServiceNow workflows or Integration Hub flows based on the event type. Register this webhook endpoint URL in your ADP Workforce Now application configuration, ensuring that all required employee lifecycle events are subscribed and that the webhook includes necessary worker data fields in the payload.
(function process(request, response) {
var requestBody = request.body.data;
var signature = request.getHeader('X-ADP-Signature');
// Verify webhook signature
var expectedSig = gs.generateHMAC('HmacSHA256', requestBody, gs.getProperty('adp.webhook.secret'));
if (signature !== expectedSig) {
response.setStatus(401);
return;
}
var eventData = JSON.parse(requestBody);
var eventType = eventData.eventNameCode.codeValue;
switch(eventType) {
case 'worker.hire':
triggerNewHireProvisioning(eventData.data.transform.worker);
break;
case 'worker.terminate':
triggerTerminationWorkflow(eventData.data.transform.worker);
break;
default:
gs.log('Unhandled ADP event type: ' + eventType);
}
response.setStatus(200);
})(request, response);Configure new hire provisioning workflow integration
Navigate to Human Resources > Onboarding > Configuration and modify the existing new hire workflow to integrate with ADP data by adding a flow trigger that activates when new employee records are created via the ADP integration. Configure the workflow to automatically create HR Service Delivery cases for equipment provisioning, access requests, and onboarding tasks based on the employee's role and department information received from ADP. Set up conditional workflow paths that handle different employee types (full-time, contractor, intern) by reading the ADP workAssignment.assignmentStatus values and routing to appropriate approval chains. Implement workflow steps that create ServiceNow catalog requests for standard onboarding items like laptop, phone, and software licenses, using the employee's ADP organizational data to determine the appropriate configuration items and approval workflows.
// Workflow script to trigger onboarding based on ADP hire event
(function triggerNewHireProvisioning(workerData) {
var gr = new GlideRecord('sn_hr_core_case');
gr.initialize();
gr.subject = 'New Hire Onboarding: ' + workerData.person.legalName.formattedName;
gr.opened_by = gs.getUserID();
gr.u_employee_id = workerData.associateOID;
gr.u_hire_date = workerData.workAssignment[0].actualStartDate;
gr.u_department = workerData.workAssignment[0].organizationalUnits[0].nameCode.shortName;
gr.state = 'new';
var caseId = gr.insert();
// Trigger equipment provisioning workflow
var wf = new Workflow();
wf.startFlow('hr_new_hire_provisioning', caseId, {
'employee_type': workerData.workAssignment[0].assignmentStatus.statusCode.codeValue,
'start_date': workerData.workAssignment[0].actualStartDate
});
})(workerData);Test end-to-end integration and configure monitoring
Execute comprehensive testing by creating a test employee record in ADP and verifying that the webhook triggers correctly in ServiceNow, the employee data synchronizes accurately, and the new hire workflow initiates properly. Navigate to System Logs > System Log > All to monitor integration execution and verify that all API calls complete successfully without authentication or data mapping errors. Configure Integration Hub flow monitoring by setting up email notifications for failed executions and create a ServiceNow dashboard that displays key integration metrics such as daily sync counts, failed webhook deliveries, and average processing times. Set up proactive monitoring by creating scheduled reports that identify orphaned records, data inconsistencies between ADP and ServiceNow, and configure alerts for authentication token expiration to ensure continuous integration reliability.
// Monitoring script for ADP integration health check
var monitor = new GlideRecord('sys_flow_history');
monitor.addQuery('flow_name', 'CONTAINS', 'ADP');
monitor.addQuery('state', 'failed');
monitor.addQuery('sys_created_on', '>=', gs.daysAgoStart(1));
monitor.query();
if (monitor.getRowCount() > 0) {
var alertGr = new GlideRecord('sys_alert');
alertGr.initialize();
alertGr.message = 'ADP Integration failures detected: ' + monitor.getRowCount() + ' flows failed in last 24 hours';
alertGr.type = 'error';
alertGr.source_table = 'sys_flow_history';
alertGr.insert();
}Common Use Cases
Automated new hire IT provisioning
When ADP triggers a worker.hire webhook event, ServiceNow automatically creates onboarding cases, provisions Active Directory accounts, and generates catalog requests for standard equipment like laptops and phones. The integration maps ADP organizational data to determine the appropriate security groups and software licenses based on the employee's role and department. This eliminates manual data entry and ensures consistent provisioning timelines, reducing new hire time-to-productivity from days to hours while maintaining security compliance through automated approval workflows.
Employee lifecycle management and offboarding
ADP termination events automatically trigger ServiceNow workflows that disable user accounts, recover equipment, and transfer knowledge assets to managers through structured offboarding checklists. The integration synchronizes termination dates and reasons from ADP to ensure appropriate access revocation timelines and compliance with data retention policies. HR Service Delivery cases are automatically created for exit interviews, COBRA administration, and final payroll processing, with all activities tracked in ServiceNow's audit trail for regulatory compliance.
Organizational hierarchy synchronization
Daily batch synchronization ensures ServiceNow's organizational structure mirrors ADP's reporting relationships, department assignments, and cost center allocations for accurate service catalog approvals and incident assignment. The integration maps ADP's complex organizational units to ServiceNow's department and location fields, maintaining parent-child relationships for manager approval chains. This synchronization enables dynamic service catalog item eligibility, ensures proper expense allocation for requested services, and maintains accurate org charts for knowledge management and collaboration tools.
Employee data accuracy and self-service updates
Real-time synchronization of employee profile changes from ADP ensures ServiceNow user records reflect current contact information, job titles, and reporting relationships for accurate service delivery and communication. The integration handles complex scenarios like employee transfers, promotions, and temporary assignments by updating multiple ServiceNow tables including users, departments, and cost centers. This maintains data consistency across HR systems and enables employees to see accurate information in ServiceNow's employee portal without manual IT intervention.
Compliance reporting and audit trail maintenance
The integration creates comprehensive audit trails by logging all employee data changes from ADP in ServiceNow's activity logs, supporting SOX compliance and HR audit requirements. Automated workflows generate compliance reports for access reviews, segregation of duties monitoring, and employee data accuracy verification by comparing ADP source data with ServiceNow records. This enables proactive identification of data discrepancies, supports regulatory reporting requirements, and provides forensic capabilities for security incident investigations involving employee access and privileges.
Troubleshooting
OAuth token expired error during ADP API calls
Navigate to Connections & Credentials > Connection Alias and test your ADP connection to verify the OAuth refresh token is still valid. If the test fails, check the credential record for the token expiration timestamp and manually refresh by clicking 'Get OAuth Token' if needed. Verify that your ADP Marketplace application hasn't been disabled or had its credentials rotated, and ensure the ServiceNow instance's system time is synchronized to prevent token validation issues. Review the Integration Hub execution logs for specific OAuth error codes that indicate whether the issue is credential-based or scope-related.
Webhook payload received but no ServiceNow records created
Check the Scripted REST API execution logs under System Logs > REST to verify the webhook endpoint is processing payloads correctly and not failing on signature validation. Navigate to the webhook handler's script and add debug logging to capture the full ADP payload structure, then compare against your parsing logic to identify JSON structure mismatches. Verify that the ADP event types match your switch statement cases exactly, and ensure your record creation logic has proper error handling that doesn't fail silently. Test the webhook endpoint manually using a REST client with a sample ADP payload to isolate whether the issue is with payload processing or subsequent record operations.
Employee records created but missing department or location data
Examine the ADP API response structure in the Integration Hub execution details to verify that organizationalUnits data is present in the worker payload and not filtered out by your API query parameters. Navigate to System Definition > Transform Maps and review your ADP transform map to ensure it's correctly parsing nested JSON arrays and handling cases where organizational data might be in different array positions. Check that your ServiceNow department and location reference fields have matching values from ADP, creating missing reference data if needed. Add null checking and default value logic to your transform scripts to handle cases where ADP organizational data is incomplete or missing.
Scheduled ADP sync flow fails with 429 Too Many Requests error
Review your Integration Hub flow design to implement proper rate limiting by adding Wait steps between batch operations and reducing the number of concurrent API calls to stay within ADP's 1000 requests per hour limit. Navigate to the ADP Workforce Now spoke configuration and verify that built-in throttling is enabled, or implement custom retry logic with exponential backoff in your flow design. Consider breaking large employee data synchronization into smaller batches processed across multiple scheduled runs, and implement checkpoint/resume functionality to avoid reprocessing successfully synchronized records. Monitor your ADP API usage through the ADP Developer Portal to understand your actual consumption patterns and optimize accordingly.
New hire workflow not triggering despite successful employee record creation
Verify that your workflow trigger conditions are correctly configured to detect new user records created by the ADP integration by checking for the specific source identifier or creation method in the workflow criteria. Navigate to Workflow > Workflow Admin and examine the workflow context to ensure it's not filtered out by conditions like user type, employment status, or department restrictions. Check that the ADP integration is setting all required fields for workflow triggering, particularly employee status and hire date fields that workflows commonly use as activation criteria. Review the workflow execution history and system event log to identify if workflows are being triggered but failing on subsequent steps due to missing ADP data or permission issues.
Employee termination events not properly disabling ServiceNow user accounts
Examine your termination webhook handler to ensure it's correctly identifying terminated employees and calling the appropriate user deactivation logic with proper role permissions. Navigate to User Administration > Users and verify that the integration service account has sufficient privileges to modify user active status and related security settings. Check that your termination workflow includes all necessary steps like setting the user active flag to false, clearing manager relationships, and updating group memberships based on your security requirements. Review the Integration Hub flow execution logs to identify any failures in the termination processing chain and implement proper error notifications to HR administrators when user deactivation fails.
Pro Tips
- →Implement incremental synchronization by storing ADP's lastModifiedTimestamp values in ServiceNow custom fields and using them as filter parameters in subsequent API calls to reduce processing time and API consumption. This approach dramatically improves sync performance for large employee populations and helps stay within ADP's rate limits while ensuring no updates are missed.
- →Create custom Business Rules on the sys_user table to automatically trigger Integration Hub flows when specific employee data changes occur in ServiceNow, enabling bidirectional synchronization for approved use cases like emergency contact updates or address changes. Use the 'when' condition to filter for human-initiated changes versus automated integration updates to prevent infinite loops.
- →Leverage ServiceNow's Data Lookup Definitions to create real-time ADP data validation for HR Service Delivery forms, allowing HR representatives to verify employee information against ADP without full synchronization delays. Configure lookup tables for common validation scenarios like manager verification, cost center validation, and employment status confirmation that can be called from catalog items and HR cases.
- →Implement comprehensive error handling in your Integration Hub flows using Try-Catch-Finally patterns with custom error logging to ServiceNow tables, enabling detailed troubleshooting and automated retry mechanisms for transient failures. Create dashboard views of integration errors with drill-down capabilities to specific failed employee records and their associated ADP payloads for efficient issue resolution.
- →Use ServiceNow's Flow Variables and data pills strategically to pass complex ADP JSON structures between flow steps without repeated API calls, improving performance and reducing the risk of data inconsistency during multi-step processing. Store frequently accessed ADP lookup data like organizational units and job codes in ServiceNow reference tables for fast local lookups during employee provisioning workflows.
- →Configure Connection Alias health monitoring using scheduled Integration Hub flows that perform lightweight ADP API calls and update ServiceNow health status indicators, enabling proactive identification of authentication issues before they impact production employee processes. Set up automated notifications to integration administrators when connection health degrades or authentication tokens approach expiration.
Known Limitations
- —ADP Workforce Now API enforces strict rate limits of 1000 requests per hour per application, which can be restrictive for large organizations requiring frequent synchronization of extensive employee populations. The Integration Hub spoke includes throttling mechanisms, but initial data migrations or comprehensive synchronization may require careful batch planning and extended processing windows to avoid hitting these limits.
- —The ADP API provides read-only access to employee data for most integration scenarios, preventing bidirectional synchronization of employee-initiated changes from ServiceNow back to ADP without additional custom development. Organizations requiring write-back capabilities for employee self-service updates must implement separate approval workflows that create ADP update requests rather than direct API modifications.
- —Complex organizational structures with matrix reporting relationships or multiple concurrent work assignments may not translate seamlessly to ServiceNow's simpler user-manager hierarchy model. The integration requires custom transformation logic to handle scenarios like dual reporting relationships, temporary assignments, and complex cost center allocations that don't have direct ServiceNow equivalents.
- —ADP webhook delivery reliability depends on network connectivity and endpoint availability, with no built-in queuing mechanism for failed webhook attempts beyond ADP's standard retry policy. Organizations must implement custom webhook replay capabilities or supplement real-time webhooks with periodic batch synchronization to ensure no employee lifecycle events are missed during system outages.
- —The integration requires ongoing maintenance for ADP API version updates and ServiceNow platform upgrades, as both systems evolve their data models and authentication mechanisms independently. Integration Hub spoke updates may lag behind ADP API changes, requiring custom REST message implementations for accessing newer ADP features or data fields not yet supported by the official spoke.
Frequently Asked Questions
Can I synchronize historical employee data during initial ADP integration setup?
Yes, but it requires careful planning due to ADP's API rate limits of 1000 requests per hour. Create a dedicated Integration Hub flow for historical data migration that processes employees in small batches with appropriate wait steps between API calls. Use ADP's bulk worker export capabilities where available, and consider running the historical sync during off-peak hours across multiple days for large employee populations. Implement checkpoint functionality to track migration progress and enable resumption if the process is interrupted.
How does the integration handle employees with multiple active work assignments in ADP?
The ADP Workforce Now spoke returns all work assignments as an array in the worker payload, but ServiceNow's standard user record supports only a single primary assignment. You'll need to implement custom logic in your transform maps to determine which assignment should be considered primary, typically based on assignment status, effective dates, or percentage allocation. Consider creating custom tables to store secondary assignments if your organization needs to track all concurrent roles for service delivery or access management purposes.
What happens if my ServiceNow MID Server goes offline during ADP synchronization?
If your integration requires a MID Server for on-premises ADP connectivity, offline MID Servers will cause Integration Hub flows to fail with connectivity errors. The flows will retry according to your configured retry policy, but won't succeed until MID Server connectivity is restored. Implement MID Server monitoring and clustering for high availability, and consider hybrid approaches where possible to reduce dependency on single points of failure. Cloud-to-cloud integrations bypass MID Server requirements entirely, improving reliability for most ADP Workforce Now deployments.
Can I customize which ADP data fields are synchronized to ServiceNow?
Absolutely, the ADP Workforce Now spoke allows you to configure which worker data elements are requested from the API using field selection parameters, reducing payload size and improving performance. Modify your Integration Hub flow actions to specify only required data sections like person, workAssignment, or businessCommunication based on your needs. Update your transform maps accordingly to handle the customized data structure, and ensure your field mappings align with the selected ADP data elements to avoid null value issues in ServiceNow user records.
How do I handle ADP employee ID changes or merges in ServiceNow?
ADP employee ID changes are rare but can occur during system migrations or employee rehires, requiring careful handling to maintain data integrity in ServiceNow. Implement additional matching logic in your transform maps using alternate keys like email address or social security number to identify existing ServiceNow users when ADP IDs change. Create a manual review process for potential duplicate users and implement data stewardship workflows that alert HR administrators when ID conflicts are detected. Consider maintaining a cross-reference table that tracks ADP ID changes over time for audit purposes and historical data correlation.
What security considerations should I implement for ADP webhook endpoints?
Implement HMAC-SHA256 signature verification in your webhook handlers using the secret key provided by ADP to ensure webhook authenticity and prevent malicious payload injection. Store webhook secrets in ServiceNow's encrypted credential store rather than system properties for enhanced security. Consider implementing IP address filtering if ADP provides static IP ranges for webhook sources, and add rate limiting to your webhook endpoints to prevent abuse. Log all webhook activity for security monitoring and implement alerting for suspicious patterns like repeated failed signature validations or unexpected payload structures.
How can I test ADP integration changes without affecting production employee data?
Create a dedicated ADP sandbox environment for testing and configure separate ServiceNow Connection Aliases pointing to ADP's test endpoints rather than production systems. Use ServiceNow's clone functionality to test integration changes on sub-production instances first, ensuring your ADP test environment contains realistic employee data scenarios. Implement feature flags or conditional logic in your Integration Hub flows that can bypass certain operations during testing, and create test-specific transform maps that write to custom tables rather than production sys_user records during development phases.
Test Your Knowledge
Quick 3-question quiz — see how your ServiceNow skills stack up.
A list view on a table with millions of records is slow. Best fix?
Select an answer to continue