Minimum Viable Product (MVP) for HCM Data Integration

The following instructions are what is considered necessary to facilitate a HCM specific data integration between an HCM system and the PlanSource standard Admin API's.

A basic HCM data integration is a one-directional push of employee demographic data from the HCM system to the PlanSource Subscriber endpoints. This guide will only cover the basic details needed for an integration. For more information about each end point, please visit the reference section.

For more information on how PlanSource treats data, performs data validation, and general best practices please review each guide in the documentation section.

When trying to access a PlanSource end point, the following URL's should be used:

PlanSource Production Environment: https://api.plansource.com/admin/v2/
PlanSource Parnter-Dev Environment: https://partner-dev-api.plansource.com/admin/v2/

The production environment is used for sending data to the live client, while all integration testing should be done against the Partner-Dev environment unless otherwise stated.

PlanSource also uses a RESTful API with the following concepts:

  • POST - Creates a new record.
  • PUT - Updates an existing record (Only updates fields supplied in payload request, does not replace any non-specified fields).
  • GET - Reads existing record.

Generating an API Token

PlanSource uses OAuth 2.0 to authenticate users/systems trying to access the PlanSource API's. Before an API call can be made, an access token must first be generated. Each access token expires after 5 minutes; best practice is to request a new access token before every API call to prevent a timeout error.

In addition to OAuth 2.0, PlanSource requires the use of Java Web Tokens (JWT). The signed token must be sent as the client_assertion along with a client_id. PlanSource will provide the following during implementation:

  • client_id
  • client_secret
  • logged_in_user

Please note that each client will have different values. A client's API credentials will also differ across PlanSource environments.

📘

More Information

For full details, please read the following guide on obtaining an access token.

Demographic Data

Having a data integration with PlanSource as an HCM provider involves four primary use cases.

  • Creating a new subscriber.
  • Updating an existing subscriber.
  • Terminating a subscriber.
  • Rehiring a terminated subscriber.

Please note that PlanSource refers to an employee as a subscriber. A subscriber will only refer to an employee's data. Dependents/Family Members and Beneficiaries are NOT considered subscribers.

Accessing the API's is done by applying the proper endpoint to the end of the correct API URL. For example, to create a new subscriber in the PlanSource Production environment the following would be used:

https://api.plansource.com/admin/v2/subscriber

Creating a New Subscriber

To create a new subscriber in the PlanSource Production environment, the following endpoint should be used:

https://api.plansource.com/admin/v2/subscriber

This POST endpoint is required for creating a new record. Trying to POST a new subscriber with an SSN that has already been created will result in an error. Please see the following document for a full list of demographic fields available when trying to create a new subscriber.

Please note that PlanSource does not have "hardcoded" required fields. Each field can be set as a required field by each client. This means that when submitting a payload an employee can likely be created with some of the following fields not populated or missing from the payload entirely. While the employee will get created, please note that this may affect their enrollment and cause downstream issues. As an MVP, most clients require the following fields:

Please see the following guide on List Validated Fields for more information on the fields below in additional notes.

PlanSource FieldDescriptionAdditional Notes
idPlanSource subscriber id. This id is unique to all subscribers in PlanSource. Returned as part a response after a successful call. Used when making updates to a specific subscriber.Do not sent with payload request. This is generated automatically and returned as a reply on a successful call.
subscriber_codeStores a unique employee id from HCM system. Can be used in place of PlanSource subscriber id when trying to make updates to a specific subscriber. Also used as primary key for Single Sign-On (SSO). PlanSource validates the empID sent as part of SSO request against value stored in subscriber_code.Required if HCM provider will be using a unique HCM subscriber/employee code to make updates after subscriber creation. Also required if HCM provider will be utilizing Single Sign-On to PlanSource. If using PlanSource id and not offering SSO this is not required. The option/choice to utilize PlanSource id or subscriber_code should be consistent across all clients that will be setup on the integration.
first_nameFirst name of subscriber
last_nameLast name of subscriber
address_1Primary street address - must be US/Canada addresses onlyMust be US/Canada addresses only
address_2Used to store Suite #, BLDG #, etc.Must be US/Canada addresses only
cityCity - must be US/Canada addresses onlyMust be US/Canada addresses only
stateState - must be US/Canada addresses onlyMust be US/Canada addresses only
zip_codeZip codeMust be US/Canada addresses only
home_phoneHome Phone/Primary PhoneFormat: XXXXXXXXXX
genderGender of subscriberMust be M or F
hire_dateHire Date of subscriber - Can be future datedFormat: CCYY/MM/DD
birthdateBirth date of subscriberFormat: CCYY/MM/DD
ssnSSN of subscriberFormat: XXXXXXXXXXX
union_codeUnion code typically is re-purposed as Department. Field used to create populations that drive benefit eligibility.List validated field - client defined field containing a client specified list of values. Values will differ from client to client. This field is optional to clients but if client is using field, data is REQUIRED. Sending a value in this field that does not match a value configured in the list by the client will result in a validation error for that employee.
employment_levelEmployment level typically stores full time (F) or part time (p) information. Field used to create populations that drive benefit eligibility.List validated field - client defined field containing a client specified list of values. Values will differ from client to client. This field is optional to clients but if client is using field, data is REQUIRED. Sending a value in this field that does not match a value configured in the list by the client will result in a validation error for that employee.
marital_statusMarital statusMust be S, M, or U
divisionDivision field usually stores client divisions. Field used to create populations that drive benefit eligibility.List validated field - client defined field containing a client specified list of values. Values will differ from client to client. This field is optional to clients but if client is using field, data is REQUIRED. Sending a value in this field that does not match a value configured in the list by the client will result in a validation error for that employee.
locationLocation field usually stores client locations. Field used to create populations that drive benefit eligibility.List validated field - client defined field containing a client specified list of values. Values will differ from client to client. This field is optional to clients but if client is using field, data is REQUIRED. Sending a value in this field that does not match a value configured in the list by the client will result in a validation error for that employee.
org_classClass field usually stores client employee classes. Field used to create populations that drive benefit eligibility.List validated field - client defined field containing a client specified list of values. Values will differ from client to client. This field is optional to clients but if client is using field, data is REQUIRED. Sending a value in this field that does not match a value configured in the list by the client will result in a validation error for that employee.
current_salary_effective_onEffective Date of Salary if current_salary is sent in same payloadIf current_salary is sent, this field is REQUIRED. Should be effective date of salary sent or date when API request is made.
current_salaryStores subscriber annual salary. Used to calculate volume based benefits such as life insurance.Required on subscriber creation
emailEmail of the subscriber

📘

More Information

For full details on this endpoint, please see the reference section.

Updating a Subscriber

To update an existing single subscriber in the PlanSource Production environment, the following endpoint should be used:

https://api.plansource.com/admin/v2/subscriber/{id}

To update multiple subscribers in a single request, the following bulk update endpoint should be used:

https://api.plansource.com/admin/v2/subscribers

Please note that the rest of this section will be written in the point of view of updating a single subscriber and not using the bulk endpoint.

This PUT endpoint will allow the specified subscriber to be updated. Trying to perform a PUT with an id that does not exist will result in an error. PlanSource does not perform an upsert and expects that the HCM system respectfully utilize the POST endpoint detailed previously for submitting new hire employees and the PUT endpoint for updating existing employees.

When sending the endpoint {id} parameter, the PlanSource id that was returned as part of the POST response is expected by default to identify which subscriber should be updated. If the HCM system is supplying a subscriber_code with the HCM system's unique employee code instead, ensure that the endpoint call includes the query parameter is_custom_id=true as this will force the API system to compare the value sent in place of id against the employee's subscriber_code instead of id.

When performing a PUT, only the fields that are being updated need to be sent in the payload. The system will not clear fields by omission. To clear a field, the field must be sent on the payload with a blank value. The PUT endpoint can be used to update nearly every field that can be sent in the POST subscriber creation endpoint.

📘

More Information

For full details on updating an existing single subscriber, please see the reference section.

For full details on updating multiple subscribers, please see the reference section.

Terminating a Subscriber

To update an existing single subscriber, the following endpoint should be used:

https://api.plansource.com/admin/v2/subscriber/{id}/terminate

This PUT endpoint will allow the specified subscriber to be terminated. Trying to perform a PUT with an id that does not exist will result in an error.

PlanSource only supports status changes from active to terminated via API. For LOA or COBRA status, the HR administrator for the client must login to PlanSource directly and manually update the employee status to LOA or COBRA.

PlanSource FieldDescriptionAdditional Information
termination_reasonStores the termination reasonREQUIRED. Must be a valid termination reason PlanSource accepts. Full list of PlanSource termination reasons found in the endpoint /subscriber/meta.
Termination reasons do not change and are consistent for ALL clients. Employee will be set to inactive status
termination_dateStores the termination dateREQUIRED. Format: CCYY-MM-DD
voluntaryStores if termination was voluntary or involuntaryOPTIONAL. Should be true or false value

📘

More Information

For full details on this endpoint, please see the reference section.

Rehiring a Subscriber

To update an existing single subscriber, the following endpoint should be used:

https://api.plansource.com/admin/v2/subscriber/{id}/rehire

This PUT endpoint will allow the specified subscriber to be rehired. Trying to perform a PUT with an id that does not exist will result in an error.

PlanSource FieldDescriptionAdditional Information
rehire_dateDate of the re-hireFormat: CCYY-MM-DD

In PlanSource the employee's hire date field will be set with the rehire_date supplied. The employee's original_hire_date field will be set with the previous hire_date value. Employee will go from inactive to active status.

📘

More Information

For full details on this endpoint, please see the reference section.

MVP Complete

The above endpoints should be the four necessary endpoints to complete the MVP for an HCM integration. This will support a baseline of simple clients without complex implementations. Once the four use cases above have been completed and tested, the integration is considered ready for a beta client to be implemented.

For a complete HCM/Payroll Integration, please also see the following document for developing an MVP for Payroll Integration.