HRIMS Integration API Structure Documentation

Employee Sync

The HRIMS will provide GET API End point for fetching the Employee data from HRIMS. We will call from the NetSuite to HRIMS

  • We will send the request on scheduled basis(Daily).
  • We will use the HRIMS Employee ID for detecting the duplication of employees. 
  • The HRIMS must have the same class, subsidiary,department, location names in their system. We will also configure the same in NetSuite
  • We will pass the date filter to retrieve employee data that has been updated within that date to the present date.

Fields for creating Employee Record in NetSuite

Employee ID/Employee Number – String

First Name String

Last Name String

Inactive Checkbox

Subsidiary Name String

Email Address String

Phone/Mobile Number

Location ID Number/String

Location Name String

Permanent Address Address 1 String

Permanent Address City String

Permanent Address State String

Permanent Address Country String

Permanent Address Pincode String

Present Address Address 1 String

Present Address City String

Present Address State String

Present Address Country String

Present Address Pincode String

Job Title/Designation String

Reporting Manager Employee Number

Cost Centre ID(Department ID) Number/String

Cost Centre (Department Name) String

Vertical ID(Class ID) Number/STring

Vertical Name(Class Name) String

Hire Date/Date of Joining Date

Employee Status String

Is Sales Rep Checkbox

Is Support Rep Checkbox

Is Project Resource Checkbox

Is Project Manager Checkbox

Emergency Contact Name 1 String

Emergency Contact Contact Number 1 Number

Emergency Contact Relationship 1 String

Emergency Contact Name 2 String

Emergency Contact Contact Number 2 Number

Emergency Contact Relationship 2 String

Last Modified Date Date

Last Modified By String

Total Experience Number

Previous Experience Number

Notes:

  • We will validate the IDs for mapping Cost Centre (Department), Vertical (Class), Work Location, and Subsidiary from NetSuite to HRIMS. In cases where there is no pre-existing ID, we will cross-reference the names. If a matching name is also not identified, we will leave that specific field as null when creating the employee record.
  • We assume that the Country and State fields in the Employee address will be of string type. We will then map them in NetSuite based on the provided Country and State information.
  • A new field is needed to store information about the Subsidiary. The following list includes the Subsidiaries currently existing in NetSuite.
  • ACSIA Technologies Private Limited (United States)
  • ACSIA Technologies Gmbh (Germany)
  • ACSIA Technologies Inc. (India) 
  • A new field is needed to store information about the Location in Employee. The following list includes the Locations currently existing in NetSuite. (New location will be added in NetSuite if it requires)
  • Acsia Cochin
  • Acsia Gmbh
  • Acsia Michigan
  • Acsia Trivandrum
  • A new field is needed to store information about the Employee Status. The following list includes the Employee Status currently existing in NetSuite. We expecting that this will be of string type.
  • Prehire
  • Actively Employed
  • Probation
  • Medical Leave
  • Parental Leave
  • Unpaid Leave
  • Terminated
  • Terminated with Pay and Benefits
  • A new field is needed to store information about the Cost Centre(Department). The following list includes the Cost Centres(Departments) currently existing in NetSuite. (New Departments will be added in NetSuite if it requires)
  • Acsia Academy
  • Admin
  • CEO’s Office
  • Corporate Functions
  • Edge
  • Engineering
  • Engineering: AOX
  • Engineering: BMW
  • Engineering: FLEX
  • Engineering: IAV
  • Engineering: INTERNAL
  • Engineering: JOYNEXT
  • Engineering: MBRDI
  • Engineering: STELLANTIS
  • Engineering: VISTEON
  • Facilities
  • Finance
  • Finance: Business Finance
  • Finance: Corporate Finance
  • Finance: Taxation
  • HR
  • HR: Onboarding
  • HR: Operations
  • HR: Sourcing
  • HR: Training
  • IT
  • Management
  • QA
  • Sales and Marketing
  • Sales and Marketing: Marketing
  • Sales and Marketing: Presales
  • Scaling People
  • A new field is needed to store information about the Vertical(Class). The following list includes the Verticals(Classes) currently existing in NetSuite.
  • Digital Cockpit
  • Digital Cockpit: Cluster
  • Digital Cockpit: Control Center
  • Digital Cockpit: HUD
  • Digital Cockpit: IVI
  • Digital Cockpit: RSE
  • eMobility
  • Offboard Cloud Services
  • A new field is needed to store the last modified date of the employee record. 
  • A new field needs to be established to indicate whether an employee holds the position of Project Manager. This field will be labeled “Is Project Manager”.
  • A new field needs to be established to indicate whether an employee holds the position of Sales Rep. This field will be labeled “Is Sales Rep”.
  • A new field needs to be established to indicate whether an employee holds the position of Support Rep. This field will be labeled “Is Support Rep”.
  • A new field needs to be established to indicate whether an employee holds the position of Project Resource. This field will be labeled “Is Project Resource”.

Employee Attendance Sync

The HRIMS attendance data should comprise punch-in, and punch-out times recorded between 9 a.m. and 11 p.m. Each employee should have an associated attendance object representing daily attendance records, including punch-in and punch-out times.

  • We will send request on a Scheduled basis (Daily)
  • In NetSuite, there is no standard functionality to store Attendance data; therefore, Attendance data will be stored in a custom record.
  • The NetSuite integration script is scheduled to run between 11:00 PM and 12:00 AM, retrieving employee attendance data from HRIMS and storing it within the NetSuite system.
  • Confirm the existence of the employee in NetSuite prior to commencing the synchronization of attendance data. In the event that the employee is not found in NetSuite, a new employee record will be created before proceeding to synchronize the attendance data. Conversely, if the employee already exists, an attendance record will be generated for that employee.
  • Once the attendance record is created in NetSuite, we will store the HRIMS attendance record ID in the Attendance record setup. This ID will be used to verify the existence of the attendance record in NetSuite during sync. If there is no attendance record ID in NetSuite, a new one will be created. However, if an ID already exists in NetSuite, we will update that record with the latest changes.

Prerequisite for the Attendance Endpoint

We will initiate two API requests to retrieve attendance records: one for records created today and another for records modified within a specified date range.

  • To obtain attendance records created today, we will include the “fromDate” and “toDate” filter as a parameter in the API request. With this date filter, the Empower team can send attendance data created/modified on that specific date.

Fields for creating Attendance Record in NetSuite (custom record setup in NetSuite)

NetSuite Field Name Field Type

Employee Number String

Attendance Date Date

In time Tiime

Out Time Time

Daily Attendance Record ID String

Total Time In Office (In Hours) String

Attendance Status List/Record

Employee Payroll Sync

Employee Payroll sync is Post action from HRIMS.

The NetSuite team will provide the POST API endpoint designed for transmitting Employee Payroll data from HRIMS. Through this POST API, HRIMS will send consolidated Payroll data, organized according to each subsidiary.

In contrast, the payroll synchronization will occur monthly and additionally, in the event of any modifications to the payroll record in HRIMS.

Setup of Employee Payroll in NetSuite

A Custom transaction type of Journal will be created in NetSuite. The consolidated payroll data from the HRIMS system will be utilized to generate journals in NetSuite, comprising the consolidated values of all employees categorized by subsidiary. Journal will be created for each Subsidiary.

Journals will be generated based on consolidated data of each subsidiary.

Sample JSON Structure

{

  “fiscalYear”: “”,

  “fiscalMonth”: “”,

  “subsidiary1”: {

    “payElements”: {

      “uniquePayElementId1”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      },

      “uniquePayElementId2”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      },

      “uniquePayElementId3”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      }

    }

  },

  “subsidiary2”: {

    “payElements”: {

      “uniquePayElementId1”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      },

      “uniquePayElementId2”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      },

      “uniquePayElementId3”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      }

    }

  },

  “subsidiary3”: {

    “payElements”: {

      “uniquePayElementId1”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      },

      “uniquePayElementId2”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      },

      “uniquePayElementId3”: {

        “payElementName”: “”,

        “payElementId”: “”,

        “consolidatedAmount”: “”,

        “isPayable”: “”,

        “memo”: “”

      }

    }

  }

}

Authentication

We were using the Auth 1.0.

Sandbox: https://9267067-rp.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=858&deploy=1

Method: POST

Signature Method: HMAC-SHA256

Consumer Key: a180be9e6d7cf1fb36421bb955d2d67e0d9db892e94c0f2e24d4c57f8dc152ca

Consumer Secret: ac7feeb395f56e6b57da3e9b229db7a677365eea98924a98300551453a44f09e

Access Token: a8b2a45a5487177c65677af2578f1a8f3efa6cf16786b895467df34401777cba

Token Secret: 0c239d769731c5b25d44c8cbecd3f784410163aa65c8913dde206dd23fe815bc

Realm: 9267067_RP

Response: 

{

“statusCode”: “SUCCESS” / ”FAILURE”,

“recordId”: “12345” (If Success we will pass the NetSuite Record ID)

“error”: “Error Message” (If Failure)

}

Note: 

  • If any salary pay elements are created in HRIMS, they should also be manually setup in NetSuite.
  • In NetSuite, we will establish the mapping of pay elements using either the pay element ID or Name.

NOTES

We assume that the HRIMS team will establish the following within the HRIMS system.

  • Subsidiary
  • Locations
  • Cost Centre (Department)
  • Vertical (Class)

To map the above fields between the NetSuite and the HRIMS. We will store the HRIMS Unique ID in the above master record. This field will be marked as mandatory. 

Initially, we expect that the Empower team will provide the Unique ID of above HRIMS data, and we will store these Unique IDs within NetSuite. In the event of any changes to these above items on the HRIMS system, such as additions or updates in the future, it is necessary to incorporate them into the NetSuite. It is required to add manually into the NetSuite system. We expect that the date format for all date fields will be in YYYY-MM-DD format.

Presently, within the NetSuite system, the location, Cost Centre (Department), and Vertical (Class) are not tied to the subsidiary. Every employee has the ability to allocate the Cost Centre (Department), Vertical (Class) and location without taking the subsidiary into consideration. 

In the future, should the dependency of Cost Centre (Department), Vertical (Class), and location on the subsidiary be established in NetSuite system, a corresponding structure must be configured in the HRIMS system.

Leave a comment

Your email address will not be published. Required fields are marked *