Detecting and Resolving Discrepancies in the BOM Transformer
Discrepancies in the BOM transformer indicate the differences between the previous and new version of engineering bill of materials.
You can detect discrepancies between upstream and downstream structures in the BOM transformer and resolve them by specifying the source root part (here, upstream root part), target root part (here, downstream root part), a single or multiple upstream parts for which you want to detect discrepancies, and inline or specific upstream and downstream navigation criteria in the request body. If you do not specify the navigation criteria, the System Default filter is applied.
You can also detect and resolve the discrepancies in the context of change (change task or change notice). If change information is provided, all the objects that are iterated, created, or revised are added to the specified change object (change task or change notice).
* 
The request detects discrepancies of all the statuses such as Auto, Manual, Interactive, For Information, and Resolved and of all the criteria available in Windchill such as Added Parts, Association Discrepancy, Part Attributes, Quantity, Removed Parts, Usage Attributes, and so on.
The request resolves discrepancies of the Auto status only.
This example shows you how to detect discrepancies between the specified upstream and downstream parts and resolve only those discrepancies that have the status as Auto. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/DetectAndResolveDiscrepancies
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"DiscrepancyContext": {
"UpstreamNavigationCriteria@odata.bind": "NavigationCriterias('OR:wt.filter.NavigationCriteria:192828')",
"TargetRoot@odata.bind": "Parts('OR:wt.part.WTPart:228842')",
"SourceRoot@odata.bind": "Parts('OR:wt.part.WTPart:228708')",
"SourcePartSelection": [
{
"Part@odata.bind": "Parts('OR:wt.part.WTPart:228914')"
}
],
"DownstreamNavigationCriteria@odata.bind": "NavigationCriterias('OR:wt.filter.NavigationCriteria:192832')"
},
"CheckInDownstreamObject": true
}
The request returns the status as Resolved along with other attributes for the specified upstream part for which the discrepancy was resolved. The request also checks in the downstream part.
Example: Detect and Resolve Discrepancies in the Context of Change
This example shows you how to detect and resolve Auto discrepancies of the Item Expressions criteria in the context of change by specifying the change object in the ChangeOid attribute. In this example, the upstream structure has two child parts that have an assigned item expression each.
The UpstreamChangeOid attribute specifies a change object that has the updated Independent Assigned Expressions added as its resulting objects. The item expressions from Independent Assigned Expressions are assigned to the two downstream equivalent child parts. This will result in detecting the discrepancies of Item Expressions criteria.
Use the following POST URI with the request body to detect and resolve such discrepancies:
URI
POST Windchill/servlet/odata/BomTransformation/DetectAndResolveDiscrepancies
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"DiscrepancyContext": {
"UpstreamNavigationCriteria@odata.bind": "NavigationCriterias('OR:wt.filter.NavigationCriteria:211874')",
"TargetRoot@odata.bind": "Parts('OR:wt.part.WTPart:213578')",
"SourceRoot@odata.bind": "Parts('OR:wt.part.WTPart:213479')",
"SourcePartSelection": [
{
"Part@odata.bind": "Parts('OR:wt.part.WTPart:213497')"
},
{
"Part@odata.bind": "Parts('OR:wt.part.WTPart:213513')"
}
],
"DownstreamNavigationCriteria@odata.bind": "NavigationCriterias('OR:wt.filter.NavigationCriteria:211878')",
"UpstreamChangeOid": "VR:wt.change2.WTChangeActivity2:211434"
},
"ChangeOid": "VR:wt.change2.WTChangeActivity2:211434"
}
The request resolves the discrepancies and adds the child parts, for which the discrepancies are resolved, to the Resulting Objects table of the change object specified in the ChangeOid attribute.
Was this helpful?