Creating Made From Sets with Relevant Links
A Made From Set object is used to define different alternate sets for manufacturing the same finished Parts using different set of raw materials.
You can create single or multiple Made From Sets along with relevant links for single or multiple Part objects. You can also choose to create Made From Sets along with relevant links in the context of Change (Change Task or Change Notice). You must reserve the Change object for Edit.
You can create Made From Sets for one or more Part OIDs by specifying the Part OIDs in the request body. You can also specify the Made From Set object type, Context, and Folder location in the request body. To create a Made From Set, you must specify the Plant for which you want to create the Made From Set.
You must have Create permissions to the Made From Set objects and the Manufacturing History objects, and Modify permissions to the Change object. You must have Read permissions to the Parts for which you want to create the Made From Sets.
* 
When the preference Track “Made From” History Through Change Notice is set to Yes, you must specify the ChangeOid attribute and its value.
You cannot create alternate sets or add raw materials under Made From Sets or Finished Parts, if you do not specify ChangeOid, when the preference is set to Yes.
When the preference is set to Yes, Manufacturing History Objects are added in the UI in the Resulting Objects table of the Change object specified in the ChangeOid attribute value.
Example: Creating Multiple Made From Set Objects for Multiple Finished Parts in Context of Change
This example shows you how to create two Made From Sets for the same Part object and one Made From Set for another Part object for Plant1 specified in the request body. This example also shows how to create one of the Made From Sets in context of Change. Use the following POST URI with the request body.
URI
POST /Windchill/servlet/odata/BomTransformation/CreateMadeFromSets
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"MadeFromSets": [
{
"@odata.type": "#PTC.BomTransformation.MadeFromSet",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:114708')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:199456')",
"AlternateFor@odata.bind": "Parts('OR:wt.part.WTPart:199664')",
"TestString": "Made From Set 01",
"Plant": "Plant1",
"ResultedByObjects@odata.bind": [
"ChangeItems('OR:wt.change2.WTChangeActivity2:196909')"
]
},
{
"@odata.type": "#PTC.BomTransformation.MadeFromSet",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:114708')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:199456')",
"AlternateFor@odata.bind": "Parts('OR:wt.part.WTPart:199664')",
"TestString": "Made From Set 02",
"Plant": "Plant1"
},
{
"@odata.type": "#PTC.BomTransformation.MadeFromSet",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:114708')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:199456')",
"AlternateFor@odata.bind": "Parts('VR:wt.part.WTPart:199239')",
"Plant": " Plant1",
"TestString": "Made From Set 03",
"MFSGlobalIntAttr2": 67,
"MFSEnumStringAttr2": {
"Value": "1",
"Display": "test1"
}
}
]
}
The request creates three Made From Sets and adds the first Made From Set object as a Resulting object in the specified Change object.
Example: Creating Multiple Made From Set Objects for Multiple Finished Parts in Context of Change and with ChangeOid Specified
This example shows you how to create two Made From Sets for the same Part object and one Made From Set for another Part object for Plant1 specified in the request body. This example also shows how to create one of the Made From Sets in context of Change. In this example, the preference Track “Made From” History Through Change Notice is set to Yes. Use the following POST URI with the request body
URI
POST /Windchill/servlet/odata/BomTransformation/CreateMadeFromSets
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"MadeFromSets": [
{
"@odata.type": "#PTC.BomTransformation.MadeFromSet",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:114708')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:199456')",
"AlternateFor@odata.bind": "Parts('OR:wt.part.WTPart:199664')",
"TestString": "Made From Set 01",
"Plant": "Plant1",
"ResultedByObjects@odata.bind": [
"ChangeItems('OR:wt.change2.WTChangeActivity2:196909')"
]
},
{
"@odata.type": "#PTC.BomTransformation.MadeFromSet",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:114708')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:199456')",
"AlternateFor@odata.bind": "Parts('OR:wt.part.WTPart:199664')",
"TestString": "Made From Set 02",
"Plant": "Plant1"
},
{
"@odata.type": "#PTC.BomTransformation.MadeFromSet",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:114708')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:199456')",
"AlternateFor@odata.bind": "Parts('OR:wt.part.WTPart:199643')",
"TestString": "Made From Set 03",
"Plant": "Plant1"
}
],
"ChangeOid": "OR:wt.change2.WTChangeActivity2:196909"
}
The request creates three Made From Sets and adds the first Made From Set object as a Resulting object in the specified Change object. The request also adds the Manufacturing History Objects in the Resulting Objects table of the Change object specified in ChangeOid.
Example: Creating a Made From Set Object for a Finished Part Object
This example shows you how to create a Made From Set object for a Part object for Plant1 specified in the request body. Use the following POST URI with the request body.
URI
POST /Windchill/servlet/odata/BomTransformation/CreateMadeFromSets
Request Headers
Content-Type: application/json
CSRF_NONCE: <Use the value from Fetch NONCE example>
Request Body
{
"MadeFromSets": [
{
"@odata.type": "#PTC.BomTransformation.MadeFromSet",
"Context@odata.bind": "Containers('OR:wt.pdmlink.PDMLinkProduct:114708')",
"Folder@odata.bind": "Folders('OR:wt.folder.SubFolder:197753')",
"AlternateFor@odata.bind": "Parts('VR:wt.part.WTPart:209626')",
"Plant": "Plant1",
"MFSGlobalIntAttr2": 45,
"MFSEnumStringAttr2": {
"Value": "1",
"Display": "test"
}
}
]
}