Integration Workflow
I-9 & E-Verify Integration Workflow
All new hires working in the United States and hired after November 6, 1986, must complete form I-9 to document employment authorization. Accurate and timely completion of form I-9 is a staple of the onboarding process. The I-9 and E-Verify integrated solution enables employers to initiate the I-9 process and oversee the action items related to I-9 and E-Verify all from within an external system.
With respect to I-9 and E-Verify processing, this workflow supports both the creation of new employee records as well as the rehiring of existing employees. The latter assumes that the existing employee record in Guardian is in a terminated state.
Workflow diagram
I-9 Workflow
E-Verify Workflow
Process Flow
- The employer or new hire triggers the I-9 process and the external application requests a session from the Guardian API.
- The Guardian API returns a session token to the external application.
- The external application sends a POST request to the Guardian API with the employee’s information.
- Guardian API responds with a URL that the employee will use to complete Section 1 of the I-9.
- The external application presents the I-9 URL to new hire and the new hire is re-directed to complete Section 1 within the Guardian User Interface.
- After the new hire completes Section 1, the Guardian API sends a request with the current I-9 state/next steps to the external application. The external application may display the details of the request within the applicable user interface, which could include I-9 Status (i9Status), I-9 Next Step (i9NextStep), I-9 Next Step Due Date (i9NextStepDueDate), and I-9 URL (i9Url).
- The Guardian User clicks the I-9 URL from within the external application and completes Section 2 of the I-9 within the Guardian User Interface.
- When applicable, the I-9 data is submitted to E-Verify after the User completes Section 2 of the I-9. When E-Verify is activated the Guardian API sends results back to the external application. The parameters used for this portion of the integrated workflow include E-Verify Status Code (eVerifyStatusCode), E-Verify Resolution Code (eVerifyResolutionCode), E-Verify Status Message (eVerifyStatusMessage), E-Verify Resolution Message (eVerifyResolutionMessage), E-Verify Next Step (eVerifyNextStep), E-Verify Next Step Due Date (eVerifyNextStepDueDate), and E-Verify URL (eVerifyUrl).
- The Guardian API returns I-9 status requests and E-Verify status requests to the external application until there are no further actions. NOTE: Guardian sends the current state of the I-9. As a result, and depending on the timing of completion of I-9 steps, not ALL/EVERY I-9 step may be sent to the external application.
Example calls
# 2. RESPONSE example
# Guardian -> Partner
# Response-Code: 202
{
""access_token"": ""360c0290ca3a5fa90d7e11b67659ff3adeca8bc8"",
""token_type"": ""Bearer"",
""expires_in"": 86399,
""refresh_token"": ""30166263ca11d2ee34aa70b2aef779ce8d259feb"",
""scope"": ""read""
}
# 3. POST example
# Partner -> Guardian
# POST /v1/partners/i9s/section1
# Content-Type: application/json
curl -v https://<server>/v1/partners/i9s/section1 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Access-Token>' \
-d '{
""firstName"": ""test"",
""lastName"": ""Smith"",
""emailAddress"": ""test@email.com"",
""startDate"": ""2015-01-01"",
""locationId"": 56789,
""onboardingType"": ""on-site"",
""integrationCandidateId"": ""A12345""
""employeeReturnUrl"": ""https://partnersite.com/person/12345/home""
}'
# 4. RESPONSE example
# Guardian -> Partner
# Response-Code: 202
{
""i9Section1Link"": ""https://<server>/i9/section1/somerandomeuuid"",
""id"": 12345,
""links"": [
{
""rel"": ""self"",
""title"": ""initiate i9"",
""method"": ""POST"",
""url"": ""https: //<server>/v1/partner/i9section1""
}
]
}
# 6. i9 PATCH example
# Guardian -> Partner
{
""i9Status"": ""Section 1 Completed"",
""i9NextStep"": ""Sign Section 2 (Verifier)"",
""i9NextStepDueDate"": ""2015-06-26"",
""i9Url"": ""https://<server>/link-to-related-section""
}
# 8. E-verify PATCH example
# Guardian -> Partner
{
""eVerifyStatusCode"": ""CRCV"",
""eVerifyResolutionCode"": ""EELIG"",
""eVerifyStatusMessage"": ""The employee continues to work for the employer after receiving an Employment Authorized result"",
""eVerifyNextStep"": ""No Further Action Required"",
""eVerifyNextStepDueDate"": ""None"",
""eVerifyUrl"": ""https://<server>/link-to-related-section""
}