Creating New Split Assemblies in Downstream View
You can create one or more split assemblies in the downstream view from the existing assemblies in the upstream view or downstream view.
You can also create the split assemblies in the downstream view in the context of change (change task or change notice).
To create split assemblies, the transformation types available for the child parts are NEW_BRANCH, NEW_PART, or ADD_SAME.
See the EDM of the domain available at the metadata URL Windchill/servlet/odata/BomTransformation/$metadata for details.
 
To create split assemblies in the downstream view, you must first check out the target (downstream) part under which you want to create the new split assemblies.
To create split assemblies in the downstream view, the quantity of specified upstream parent parts should be the same and at least one of those should have child parts under it.
If two or more child parts of same part number and view exist at the same level under a specified upstream part, the transformation type for those child parts must be the same.
You can use the following API to fetch additional information of a part in the BOM structure required for this request:
POST /Windchill/servlet/odata/BomTransformation/XBOMParts('<RootPartOID>')/PTC.BomTransformation.GetManufacturingBOM?$expand=Components($levels=max)
Example: Creating Multiple Split Assemblies in the Downstream View from Multiple Upstream Assemblies Using the “ADD_SAME” Transformation Type
This example shows you how to create two split assemblies in the downstream view from two upstream assemblies using the ADD_SAME transformation type. This example shows you how to create two split assemblies in the downstream view by specifying the parent parts of two existing upstream assemblies. In this example, each upstream assembly has two child parts. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/SplitAssemble
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"DiscrepancyContext": {
"SourcePartSelection": [
{
"Path": "9941c18e-cd90-4da2-869a-6136cb46b054"
},
{
"Path": "b10eb4f7-23b9-4ab0-9fa0-b3658fe26592"
}
],
"DownstreamNavigationCriteria": {
"HideUnresolvedDependents": false,
"Centricity": false,
"Filters": [],
"ApplicationName": null,
"UseDefaultForUnresolved": false,
"SharedToAll": true,
"ApplicableType": "PTC.ProdMgmt.Part",
"ApplyToTopLevelObject": false,
"ConfigSpecs": [
{
"@odata.type": "#PTC.NavCriteria.WTPartStandardConfigSpec",
"Variation1": null,
"Variation2": null,
"LifeCycleState": null,
"WorkingIncluded": true,
"View": "Manufacturing"
}
]
},
"UpstreamNavigationCriteria": {
"HideUnresolvedDependents": false,
"Centricity": false,
"Filters": [],
"ApplicationName": null,
"UseDefaultForUnresolved": false,
"SharedToAll": true,
"ApplicableType": "PTC.ProdMgmt.Part",
"ApplyToTopLevelObject": false,
"ConfigSpecs": [
{
"@odata.type": "#PTC.NavCriteria.WTPartStandardConfigSpec",
"Variation1": null,
"Variation2": null,
"LifeCycleState": null,
"WorkingIncluded": true,
"View": "Design"
}
]
},
"SourceRoot@odata.bind": "Parts('OR:wt.part.WTPart:209637')",
"TargetRoot@odata.bind": "Parts('OR:wt.part.WTPart:209756')",
"TargetPart@odata.bind": "Parts('OR:wt.part.WTPart:209756')",
"TargetPath": null
},
"NewObjectIdentifications": [
{
"ChildPath": [
"9941c18e-cd90-4da2-869a-6136cb46b054|313103be-6e57-4821-9e1d-90fd6e208615"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209771')",
"ChildExistingEquivalenceAssociations@odata.bind": [
"EquivalenceLinks('OR:wt.associativity.EquivalenceLink:190828')"
],
"TransformationType": "ADD_SAME"
},
{
"ChildPath": [
"9941c18e-cd90-4da2-869a-6136cb46b054|96eb47b0-e6a2-42cd-94ca-bef38f5c9509"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209771')",
"ChildExistingEquivalenceAssociations@odata.bind": [
"EquivalenceLinks('OR:wt.associativity.EquivalenceLink:220228')"
],
"TransformationType": "ADD_SAME"
},
{
"ChildPath": [
"b10eb4f7-23b9-4ab0-9fa0-b3658fe26592|a5dd1d17-2abc-4267-bd01-fe9b66c287e6"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209985')",
"ChildExistingEquivalenceAssociations@odata.bind": [
"EquivalenceLinks('OR:wt.associativity.EquivalenceLink:190830')"
],
"TransformationType": "ADD_SAME"
},
{
"ChildPath": [
"b10eb4f7-23b9-4ab0-9fa0-b3658fe26592|fb43dec7-e87f-41f3-a8ba-4de89a4ca756"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209985')",
"ChildExistingEquivalenceAssociations@odata.bind": [
"EquivalenceLinks('OR:wt.associativity.EquivalenceLink:190831')"
],
"TransformationType": "ADD_SAME"
}
],
"NewSplitAlternates": [
{
"SplitInfos": [
{
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:209773')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:209684')",
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Quantity": "1"
},
{
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:209774')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:209692')",
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Quantity": "1"
},
{
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:209988')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:209721')",
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Quantity": "1"
}
],
"View": "Manufacturing",
"Name": "SplitAssembly1"
},
{
"SplitInfos": [
{
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:209987')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:209729')",
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Quantity": "1"
}
],
"View": "Manufacturing",
"Name": "SplitAssembly2"
}
]
}
The request creates two new split assemblies under the specified downstream parent part, namely SplitAssembly1 with three child parts and SplitAssembly2 with one child part.
The four child parts with the transformation type ADD_SAME have existing downstream equivalent objects that are reused and added as is in the new split assemblies. Because the transformation type is ADD_SAME, the four child parts added in each split assembly have the same part master.
The request returns information about the equivalent links created between the parent parts of the split assemblies and the specified upstream parent parts. The request also returns the usage links between the split assemblies and the specified target (downstream) part.
Example: Creating Multiple Split Assemblies in the Downstream View from a Single Upstream Assembly by Distributing Specific Occurrences and Using the “NEW_PART” Transformation Type
This example shows you how to create two split assemblies in the downstream view from an existing upstream assembly using the NEW_PART transformation type. This example shows you how to create two split assemblies in the downstream view by specifying the parent part of an existing upstream assembly. In this example, the upstream assembly has two child parts.
 
To fetch information about the components and their occurrences in the BOM structure, use the following API:
POST /Windchill/servlet/odata/BomTransformation/XBOMParts('<RootPartOID>')/PTC.BomTransformation.GetManufacturingBOM?$expand=Components($expand=Occurrence;$levels=max)
To create the split assemblies, use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/SplitAssemble
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"DiscrepancyContext": {
"SourcePartSelection": [
{
"Part@odata.bind": "Parts('OR:wt.part.WTPart:190713')"
}
],
"DownstreamNavigationCriteria": {
"HideUnresolvedDependents": false,
"Centricity": false,
"Filters": [],
"ApplicationName": null,
"UseDefaultForUnresolved": false,
"SharedToAll": true,
"ApplicableType": "PTC.ProdMgmt.Part",
"ApplyToTopLevelObject": false,
"ConfigSpecs": [
{
"@odata.type": "#PTC.NavCriteria.WTPartStandardConfigSpec",
"Variation1": null,
"Variation2": null,
"LifeCycleState": null,
"WorkingIncluded": true,
"View": "Manufacturing"
}
]
},
"UpstreamNavigationCriteria": {
"HideUnresolvedDependents": false,
"Centricity": false,
"Filters": [],
"ApplicationName": null,
"UseDefaultForUnresolved": false,
"SharedToAll": true,
"ApplicableType": "PTC.ProdMgmt.Part",
"ApplyToTopLevelObject": false,
"ConfigSpecs": [
{
"@odata.type": "#PTC.NavCriteria.WTPartStandardConfigSpec",
"Variation1": null,
"Variation2": null,
"LifeCycleState": null,
"WorkingIncluded": true,
"View": "Design"
}
]
},
"SourceRoot@odata.bind": "Parts('OR:wt.part.WTPart:209637')",
"TargetRoot@odata.bind": "Parts('OR:wt.part.WTPart:211621')",
"TargetPart@odata.bind": "Parts('OR:wt.part.WTPart:211621')",
"TargetPath": null
},
"NewObjectIdentifications": [
{
"ChildPath": [
"9941c18e-cd90-4da2-869a-6136cb46b054|313103be-6e57-4821-9e1d-90fd6e208615"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209771')",
"TransformationType": "NEW_PART"
},
{
"ChildPath": [
"9941c18e-cd90-4da2-869a-6136cb46b054|96eb47b0-e6a2-42cd-94ca-bef38f5c9509"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209771')",
"TransformationType": "NEW_PART"
},
{
"ChildPath": [
"b10eb4f7-23b9-4ab0-9fa0-b3658fe26592|fb43dec7-e87f-41f3-a8ba-4de89a4ca756"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209771')",
"TransformationType": "NEW_PART"
}
],
"NewSplitAlternates": [
{
"SplitInfos": [
{
"@odata.type": "#PTC.BomTransformation.OccurenceSplit",
"Link@odata.bind": "UsageOccurrences('OR:wt.part.PartUsesOccurrence:348482')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:348464')"
},
{
"@odata.type": "#PTC.BomTransformation.OccurenceSplit",
"Link@odata.bind": "UsageOccurrences('OR:wt.part.PartUsesOccurrence:348567')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:348464')"
}
],
"View": "Manufacturing",
"Name": "SplitAssembly1"
},
{
"SplitInfos": [
{
"@odata.type": "#PTC.BomTransformation.OccurenceSplit",
"Link@odata.bind": "UsageOccurrences('OR:wt.part.PartUsesOccurrence:348566')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:348464')"
}
],
"View": "Manufacturing",
"Name": "SplitAssembly2"
}
]
}
The request creates two split assemblies under the specified downstream parent part, namely SplitAssembly1 with two child parts and SplitAssembly2 with one child part. The request returns information about the equivalent links created between the parent part of each split assembly and the specified upstream parent part. The request also returns the usage link between each split assembly parent part and the specified target (downstream) part. Because the transformation type is NEW_PART, all the child parts are added as new parts. The number and view of the child parts added to the split assemblies changes.
Similarly, you can create one or more split assemblies in the downstream view from existing upstream assemblies using the NEW_BRANCH transformation type. In this transformation type, the part number of each child part added in each split assembly in the downstream view remains the same; however, the view changes.
Example: Creating Multiple Split Assemblies in Downstream View from an Upstream Assembly Using Different Transformation Types
This example shows you how to create two split assemblies in the downstream view from an upstream assembly with three child parts. In this example, one of the child parts in the specified upstream assembly has an existing downstream equivalent object. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/SplitAssemble
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"DiscrepancyContext": {
"SourcePartSelection": [
{
"Part@odata.bind": "Parts('OR:wt.part.WTPart:190713')"
}
],
"DownstreamNavigationCriteria": {
"HideUnresolvedDependents": false,
"Centricity": false,
"Filters": [],
"ApplicationName": null,
"UseDefaultForUnresolved": false,
"SharedToAll": true,
"ApplicableType": "PTC.ProdMgmt.Part",
"ApplyToTopLevelObject": false,
"ConfigSpecs": [
{
"@odata.type": "#PTC.NavCriteria.WTPartStandardConfigSpec",
"Variation1": null,
"Variation2": null,
"LifeCycleState": null,
"WorkingIncluded": true,
"View": "Manufacturing"
}
]
},
"UpstreamNavigationCriteria": {
"HideUnresolvedDependents": false,
"Centricity": false,
"Filters": [],
"ApplicationName": null,
"UseDefaultForUnresolved": false,
"SharedToAll": true,
"ApplicableType": "PTC.ProdMgmt.Part",
"ApplyToTopLevelObject": false,
"ConfigSpecs": [
{
"@odata.type": "#PTC.NavCriteria.WTPartStandardConfigSpec",
"Variation1": null,
"Variation2": null,
"LifeCycleState": null,
"WorkingIncluded": true,
"View": "Design"
}
]
},
"SourceRoot@odata.bind": "Parts('OR:wt.part.WTPart:209637')",
"TargetRoot@odata.bind": "Parts('OR:wt.part.WTPart:211621')",
"TargetPart@odata.bind": "Parts('OR:wt.part.WTPart:211621')",
"TargetPath": null
},
"NewObjectIdentifications": [
{
"ChildPath": [
"9941c18e-cd90-4da2-869a-6136cb46b054|313103be-6e57-4821-9e1d-90fd6e208615"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209771')",
"ChildExistingEquivalenceAssociations@odata.bind": [
"EquivalenceLinks('OR:wt.associativity.EquivalenceLink:190831')"
],
"TransformationType": "ADD_SAME"
},
{
"ChildPath": [
"9941c18e-cd90-4da2-869a-6136cb46b054|96eb47b0-e6a2-42cd-94ca-bef38f5c9509"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209771')",
"TransformationType": "NEW_PART"
},
{
"ChildPath": [
"b10eb4f7-23b9-4ab0-9fa0-b3658fe26592|fb43dec7-e87f-41f3-a8ba-4de89a4ca756"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:209771')",
"TransformationType": "NEW_PART"
}
],
"NewSplitAlternates": [
{
"SplitInfos": [
{
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:348482')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:348464')",
"Quantity": "1"
},
{
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:348567')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:348464')",
"Quantity": "1"
}
],
"View": "Manufacturing",
"Name": "SplitAssembly1"
},
{
"SplitInfos": [
{
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:348566')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:348464')",
"Quantity": "1"
}
],
"View": "Manufacturing",
"Name": "SplitAssembly2"
}
]
}
The request creates two split assemblies under the specified downstream parent part, namely SplitAssembly1 with two child parts and SplitAssembly2 with one child part. The child part with the transformation type ADD_SAME has existing downstream equivalent object that is reused and added as is in the new split assembly.
The two child parts with the transformation type NEW_PART are added as new parts in each of the split assemblies.
The request returns information of the equivalent links created between the parent parts of the split assemblies and the specified upstream parent parts. The request also returns the usage links between the split assemblies and the specified target (downstream) part.
Example: Creating a Split Assembly in the Downstream View in the Context of Change
This example shows you how to create a split assembly in the downstream view in the context of change. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/SplitAssemble
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"DiscrepancyContext": {
"SourceRoot@odata.bind": "Parts('OR:wt.part.WTPart:272372')",
"SourcePartSelection": [
{
"Part@odata.bind": "Parts('OR:wt.part.WTPart:273537')"
},
{
"Part@odata.bind": "Parts('OR:wt.part.WTPart:273554')"
}
],
"TargetRoot@odata.bind": "Parts('OR:wt.part.WTPart:272557')",
"TargetPart@odata.bind": "Parts('OR:wt.part.WTPart:272586')",
"UpstreamNavigationCriteria@odata.bind": "NavigationCriterias('OR:wt.filter.NavigationCriteria:192864')",
"DownstreamNavigationCriteria@odata.bind": "NavigationCriterias('OR:wt.filter.NavigationCriteria:192868')"
},
"NewObjectIdentifications": [
{
"ChildPath": [
"2b3ab781-eabe-43ba-af11-caa85d67999b|30c2f89c-aeac-4fb6-954c-d94c938e18ab"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:273537')",
"ChildExistingEquivalenceAssociations@odata.bind": [],
"TransformationType": "NEW_PART"
},
{
"ChildPath": [
"00f4615d-2aec-4c27-aa6e-e2818d223476|ffd04cb7-334e-4466-88e3-94dd51faad14"
],
"UpstreamParentPart@odata.bind": "Parts('OR:wt.part.WTPart:273554')",
"ChildExistingEquivalenceAssociations@odata.bind": [],
"TransformationType": "NEW_PART"
}
],
"NewSplitAlternates": [
{
"SplitInfos": [
{
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:273540')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:273537')",
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Quantity": "1"
},
{
"Link@odata.bind": "PartUses('OR:wt.part.WTPartUsageLink:273556')",
"Child@odata.bind": "Parts('OR:wt.part.WTPart:273554')",
"@odata.type": "#PTC.BomTransformation.UsageSplit",
"Quantity": "1"
}
],
"View": "Manufacturing",
"Name": "NewSplitAssemblyPart"
}
],
"ChangeOid": "VR:wt.change2.WTChangeActivity2:273329"
}
The request creates the NewSplitAssemblyPart split assembly under the specified downstream parent part. The request adds the modified downstream parent part to the Resulting Objects table of the change object specified in the ChangeOid attribute.
The following URI with expand returns all the information for each upstream parent part and the downstream equivalent parent part for each split assembly. Additionally, the request returns information for the equivalent link and usage link for each newly created split assembly.
URI with Expand
POST Windchill/servlet/odata/BomTransformation/SplitAssemble?$expand=UpstreamPart,DownstreamPart,UsageLink,EquivalenceLink