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.