Proposal summary
This proposal describes the integration between Windchill and NetSuite and develop the sync between Item details, Bill of Material (BOM), and Bill of Material revision sync.
Prerequisites
We need specific employee details to send emails to those employees when an error occurs in the creation of an item, BOM, and BOM revisions.
Requirement
The requirement is to sync the data from windchill to NetSuite. The user is adding the items and BOM details on the windchill. They need to create the assembly/inventory items and BOM revisions in NetSuite using the data from Windchill.
Our Solution
Field Customizations
The Item records need to be customized, and we need to add a checkbox field and two fields for each record. These fields will display under a custom subtab called “Windchill Sync”
- When a sync between NetSuite and windchill occurs, we will check the check box in the corresponding item record in NetSuite.
- The unique ID of the windchill item will be stored in the Text field in the corresponding item record in NetSuite.
- Error custom record will be stored under the “Windchill Sync” custom subtab
Custom Record for API Information
We will create a custom record to store the API details in NetSuite. We will be storing the domain URL and authorization in the custom record which will be helpful for the NetSuite user to edit the details such as update in authorization through a custom record in NetSuite.
Custom record for error handling
We will create a custom record to store the error message when the script failed to create windchill items/BOM/BOM revision in NetSuite. And this custom record will link to the item record.
- An email will send to specific employees if there is an error occur during item/BOM/BOM revision creation.
- Also, we will set the last sync date in custom date field in custom record. Along with that, stored in the under the “Windchill Sync” custom subtab.
- This custom record will store the data we obtained from windchill system as a JSON data
Item and BOM sync
The requirement can be achieved by deploying a scheduled script in NetSuite. We can retrieve the part (item) and BOM details from Windchill using API. And we can identify the Assembly items/inventory items based on the “IsAssembly” field value from the response. So we can create assembly/inventory items in NetSuite using the part data from windchill API on a scheduled basis.
The Default trace code field is used to identify the serialized item from the windchill. Based on this value, NetSuite assigns the item type as serialized if it is Serial Number, as well as Assembly or Inventory items if it is Untraced.
Item type mapping:
| “DefaultTraceCode” in windchill data | NetSuite item type |
| Serial Number | Serialized Assembly/ Serialized Inventory item |
| Untraced | Assembly/Inventory item |
And we will get the component data for each part. So we can use that component data to create the BOM revision for that BOM.
We can schedule the script in a every 4 hour interval of time. So we will schedule the script in an intervals of time. We will fetch items modified on last 2 days. We will create the assembly/inventory items and BOM revisions in NetSuite. Also, the script will update the existing assembly/inventory items and BOM visions if any modifications are made to the Windchill data.
Field mapping for Item Sync
| NetSuite fields | Value |
| ITEM NAME/NUMBER | WindchillData. Number |
| PRIMARY UNITS TYPE | will set quantity if the WindchillData. DefaultUnit is “Each” |
| DESCRIPTION | WindchillData. Name |
| SUBSIDIARY | will set default subsidiary : eVersum technologies d.o.o. |
| INCLUDE CHILDREN | will check this checkbox to include all subsidiaries for this item |
| PURCHASE DESCRIPTION | WindchillData. Name |
| PHANTOM | If WindchillData. GatheringPart |
| MANUFACTURER | WindchillData. MANUFACTURER |
| ITEM WEIGHT | WindchillData. MASS unit- lb per Ea |
Field mapping – BOM
| NetSuite fields | Value |
| Name | WindchillData. Number + “ _BOM” for example: EV-00000-17367_BOM |
| MEMO | WindchillData. Number + “ _BOM” for example: EV-00000-17367_BOM |
| Subsidiary | default subsidiary |
Field mapping- BOM Revision
| NetSuite fields | Value |
| NAME | WindchillData .Number + “rev” + WindchillData .Revision For example: EV-00000-17367 rev A |
| EFFECTIVE START DATE | Creation date |
| Components sublist.item | WindchillData .Components. PartNumber |
| Components sublist .QUANTITY | WindchillData .Components .Quantity |
Assumptions:
- The TAX SCHEDULE field in the item record in NetSuite is mandatory and windchill data doesn’t contain this value. So we will exclude this value when creating the item record. User can set tax schedule based on vendor manually.
- we will always set default subsidiary : eVersum technologies d.o.o. in all items and will check the “Include children” checkbox in item record.
- If the user adding one more component to the already existing parent item, we will add that item to the BOM of parent item in NetSuite.
- If the “IsAssembly” is yes in the windchill response, then we will create an assembly item in NetSuite. Otherwise we will create an inventory item.
- If any part details come with “GatheringPart” value as true, we will set the PHANTOM checkbox true in the item record.
- We are considering only the creation of items with item type Assembly/Inventory.
- We assume that there will be always one BOM details for assembly items. If the part in windchill response doesn’t contain components then we will create that assembly item as inventory item in NetSuite and will not create BOM and BOM revision.
- Since we are planning the one- way integration, there won’t be any sync from the NetSuite to the Windchill. Any changes in the NetSuite will not be reflected in the Windchill.
- We are not considering the deletion of items in windchill in this scope. We are considering only the creation and update of items, BOM and BOM revision.
- The migration of existing/historical data will be out of the scope of this development
- The assembly item always contains a maximum of one BOM. And we will set that BOM data as master default in order to create the work order.
- All the item components should be active for BOM data.
Risk
- The scheduled actions will be processed based on the processing queues. So even if the script can be execute as scheduled, it may get even more delay if there is no available queue to process.
- If the Default trace code in windchill is “Lot” or “Lot/serial Number”, we will not create items in NetSuite for this part. We are considering only items with “untraced” and “Serial Number” Default trace code in this scope.
- We can create an Items in NetSuite as Serialized assembly/Inventory. But in order to make that product as matrix, we need identification of colour from windchill. Since we couldn’t identify the items by colour, we are not implementing the creation of matrix items in NetSuite.
- We couldn’t fetch the price of item from windchill part details, so we will not set rate of item in NetSuite.