Importing Employee Loaded Costs from NetSuite
Use a custom import workflow to create or update employee loaded costs in SuiteProjects Pro from a NetSuite custom record type. SuiteProjects Pro uses the NetSuite custom record's internal ID to identify the corresponding loaded cost on subsequent imports. For general workflow information, see Custom Import Workflows and Importing Records from NetSuite into SuiteProjects Pro Using Custom Workflows.
Setting Up the Custom Import Workflow
Before you create the workflow, enable Loaded Cost Custom Import and prepare the NetSuite custom records that hold the employee loaded cost information. If corresponding loaded costs already exist in SuiteProjects Pro, associate them with the NetSuite records before the first import.
To set up a custom import workflow for employee loaded costs:
-
Enable custom import workflows in SuiteProjects Pro. See Enabling Custom Import Workflows.
-
Contact SuiteProjects Pro Support to enable custom import workflows for loaded cost. Enabling the Loaded Cost Custom Import optional feature creates the custom field
netsuite_loaded_cost_idthat custom import workflows require to hold the internal ID of the NetSuite record. It isn't possible otherwise to create custom fields for loaded cost records in SuiteProjects Pro. See Loaded Cost Custom Import. -
In NetSuite, create a custom record type for employee loaded costs. For the employee field, set Type to
List/Recordand List/Record toEmployee, so users select an employee from the employee list. If Multiple Currencies is enabled in NetSuite, set the currency field toList/RecordwithCurrencyas the list, so users select a currency available in the account. If Multiple Currencies is not enabled, supply the account's currency in the import mapping. Include fields for the hourly cost, current status, and start and end dates for historical costs.If this information is held on NetSuite employee records, arrange for it to be copied to the custom records before import. For information about setting up the source custom records in NetSuite, see Creating Custom Record Types (External link to Oracle Help Center) and Adding Fields to Custom Record Types (External link to Oracle Help Center).
For source-record checks and recommended constraints, see NetSuite Source Record Best Practice Guidelines.
-
When creating a custom record holding employee loaded cost information in NetSuite, confirm that the employee you select has a matching employee record in SuiteProjects Pro.
-
If you have existing loaded cost records in SuiteProjects Pro, match them with the corresponding loaded cost custom records in NetSuite. Use the SuiteProjects Pro XML API, SOAP API, or Integration Manager to set the NetSuite internal ID [
netsuite_loaded_cost_id] custom field for existing loaded cost records in SuiteProjects Pro. The ID match ensures a 1:1 relationship between loaded cost records in SuiteProjects Pro and NetSuite, and prevents the creation of duplicate loaded cost entries in SuiteProjects Pro.Note:The NetSuite internal ID [
netsuite_loaded_cost_id] custom field is not visible in the SuiteProjects Pro UI. To inspect an ID association, export theloaded_costtable. For more information about exporting records, see Integration: Import/Export. -
Create the custom import workflow using these settings:
-
For NetSuite record, select
[Custom Record], then choose the custom record type holding employee loaded costs from the Specify dropdown field. -
For SuiteProjects Pro record, select
Loaded cost. -
For ID field, select
netsuite_loaded_cost_id__c. This required field cannot be changed after you save the workflow.
-
-
Define field mapping for the loaded cost custom import workflow. See Loaded Cost Field Mapping Definition for the example mappings.
-
Run and validate the custom import workflow. See Importing and Verifying Loaded Costs.
Loaded Cost Field Mapping Definition
The following tables show an example that imports primary-level employee loaded costs. The custrecord_oa_loaded_cost_* names represent fields in the NetSuite custom record type holding employee loaded costs; replace them with fields in your account. The workflow provides the ID mapping. Configure the additional mappings according to your source records.
ID Field Mapping
|
NetSuite Field |
D |
SuiteProjects Pro Field |
Notes |
|---|---|---|---|
|
|
|
|
Required workflow mapping. The workflow adds this protected row after you select the ID field. It uses the NetSuite ID to find a matching SuiteProjects Pro record or create one if no match exists. Employee and level do not replace the ID match. |
Additional Field Mappings
|
NetSuite Field |
D |
SuiteProjects Pro Field |
Notes |
|---|---|---|---|
|
Looked up SuiteProjects Pro field value - Internal ID [
|
|
|
Needed for a new employee cost. Look up the SuiteProjects Pro employee whose |
|
Fixed value
|
|
|
This example imports primary-level employee loaded costs, so it maps level |
|
|
|
|
Map the hourly cost amount. |
|
|
|
|
Map a currency value recognized by your SuiteProjects Pro account. Check the value returned by the NetSuite custom field and convert it in the mapping if needed. If Multiple Currencies is not enabled in NetSuite, use a fixed value mapping for the account's currency. |
|
Value-to-value list map
|
|
|
Map the NetSuite current status to At most one loaded cost can be current for the same employee and loaded cost level. See also Importing and Verifying Loaded Costs. |
|
|
|
|
Map the start date for a historical cost. Leave it empty for a current cost. |
|
|
|
|
Map the end date for a historical cost. Leave it empty for a current cost. Use both dates for historical costs. |
Field declarations such as OA_FIELDS and NS_FIELDS are not required for custom import advanced mappings. For more information, see Advanced Mappings for Custom Import Workflows.
NetSuite Source Record Best Practice Guidelines
Review these guidelines when configuring and checking the NetSuite custom records used for the import:
-
Required fields and defaults - Depending on the field types, you can make the employee, cost, and currency fields required, set a minimum for a numeric cost field, and review the default for the current-status checkbox. See Setting Validation and Defaulting Properties (External link to Oracle Help Center) and Configuring Fields or Screens (External link to Oracle Help Center).
-
Conditional date checks - For historical costs, require both dates; for current costs, keep both dates empty. For checks when users save a record, see Return User Error Action (External link to Oracle Help Center). Configure and test the checks for your account; the SuiteProjects Pro custom import does not supply them.
-
One current source record - Maintain only one current NetSuite loaded cost per employee and loaded cost level. Keep historical records when you need to import their periods.
-
Historical periods - Use non-overlapping date ranges for historical costs at the same employee and level. Both endpoints are included: a period ending June 30 can be followed by one starting July 1.
-
Source-record review - Required fields on a form do not establish uniqueness across records or detect overlapping periods. Review the records before importing them. A saved search can help you inspect them. See saved search (External link to Oracle Help Center).
-
Workflow filters - Use Using Filters to exclude obsolete duplicate current records when the NetSuite source has a suitable field. Keep historical records in scope. A workflow filter evaluates individual records and does not validate uniqueness or date overlaps across records.
Importing and Verifying Loaded Costs
Run the custom import workflow manually or in a workflow group. By default, it imports every record of the selected NetSuite type on each run, including records imported previously. Check the mappings and filters before importing into an account with existing loaded costs.
In SuiteProjects Pro 2026.2, importing a current employee loaded cost clears the current flag on other current loaded costs for the same employee and level. Those records are retained, and the integration log identifies the records updated. Importing a historical loaded cost leaves the existing current cost unchanged. Previously, multiple current costs for the same employee and level could cause reports to count costs more than one time.
After the run, inspect the employee's loaded costs by level and review the integration log. Check the current amount and currency, historical periods, and any messages that identify records whose current flag was cleared. Export the loaded_cost table to confirm NetSuite-ID associations when necessary. If a report was affected by multiple current loaded costs, rerun it and compare the results with the employee cost records.