Creating New Downstream Alternates
You can create a new alternate at a downstream branch for a specified existing downstream iteration. You can create one or more new downstream alternates by specifying a single or multiple existing downstream iterations and other required attributes in the request body. You can create a new downstream alternate by specifying the 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 create the new downstream alternate in the context of change (change task or change notice).
The child structure option can be specified as DoNotDuplicate or DuplicateWithoutPropagation.
Example: Creating New Downstream Alternates for Existing Downstream Iterations Using DuplicateWithoutPropagation
This example describes how to create a new downstream alternate for each existing downstream iteration specified in the request body. In this example, each existing downstream iteration has child parts under it. This example describes how to create two new downstream alternates using inline upstream and downstream navigation criteria and TransformationOption specified as DuplicateWithoutPropagation. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/NewDownstreamAlternate
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"TransformationDefinitions": [
{
"SourcePart@odata.bind": "Parts('OR:wt.part.WTPart:209726')",
"TransformationOption": "DuplicateWithoutPropagation",
"TransformationEntity": {
"AlternateBOM": "001",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:112340')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:209432')"
}
},
{
"SourcePart@odata.bind": "Parts('OR:wt.part.WTPart:209855')",
"TransformationOption": "DuplicateWithoutPropagation",
"TransformationEntity": {
"AlternateBOM": "002",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:112340')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:209432')"
}
}
],
"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"
}
]
}
}
The request creates the 001 alternate BOM with child parts for the first existing downstream iteration in the specified Context and Location. The new alternate BOM is created within the same view and BOM type as that of the specified existing downstream iteration. The request retains the equivalence between the specified existing downstream iteration and its upstream equivalent iteration. The same equivalence link persists between 001 and the upstream iteration. The request also returns information for the equivalence link.
Similarly, the request creates the 002 alternate BOM with child parts for the second existing downstream iteration in the specified Context and Location.
Example: Creating a New Downstream Alternate in the Context of Change
This example shows you how to create a new downstream alternate for an existing downstream iteration in the context of change by using inline upstream and downstream navigation criteria. Use the following POST URI with the request body:
URI
POST Windchill/servlet/odata/BomTransformation/NewDownstreamAlternate
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"TransformationDefinitions": [
{
"SourcePart@odata.bind": "Parts('OR:wt.part.WTPart:225862')",
"TransformationOption": "DoNotDuplicate",
"TransformationEntity": {
"AlternateBOM": "002",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:114768')",
"Folder@odata.bind": "Folders('OR:wt.folder.Cabinet:114803')"
}
}
],
"ChangeOid": "VR:wt.change2.WTChangeOrder2:225918",
"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"
}
]
}
}
The request creates the 002 alternate BOM for the specified existing downstream iteration in the specified Context and Location. The request adds the specified downstream iteration in the Resulting Objects table of the change object specified in the ChangeOid attribute.
To see more details, expand the newly created downstream parts, equivalent links, and the usage links.