Proposal For Windchill- NetSuite Integration

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. 

Leave a comment

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