Object Connection Transformation

IFS Cloud has several generic and very useful types of object connections that can be made from different kinds of business objects throughout the application. Examples of connected objects are characteristics, documents, media library and virtual maps. Although these attachment services provide valuable functionality, one of the limitations is that the connected object needs to be directly attached to a specific business object, such as a customer order line. This limitation makes it quite cumbersome to maintain connected objects for transactional business objects, such as customer orders, work orders and shop orders.

For example, there is a business scenario where assembly instructions should be accessible on certain shop order operation lines. Previously you had to connect the instruction to each relevant shop order operation line. A better solution would have been to connect the document to the actual routing operation line and then have the possibility to access that document on all shop orders that are based on this routing. The latter is what the Object Connection Transformation feature is all about. Object Connection Transformation provides the means to support object connections to be accessed from business objects other than the ones to which they are connected. In order to do so you have to specify an object transformation method. Object Connection Transformation is currently supported for document, media, audit and nonconformance reporting services. Only active transformations will be considered for these services. 

Object Transformation Method

Object connections are attached to the business object by the business objects keys, such as order number, part number, customer identity, and so on. When specifying an object connection transformation you need to specify how the keys should be transformed from one business object to another. For example, you are accessing a customer order line (target) and want to see media connected to the sales part (source). Then you need to specify the attributes on the customer order line which should be used to format the sales part key. The sales part key consists of a catalog (Part_No) number and the site identifier (Contract). Luckily both these attributes are available in the customer order line database view which enables an easy transformation setup.

The Edit Transformation command is used to define the transformation method. The requirement is to map the source key with the target key. In the example above the mapping would be CONTRACT=CONTRACT, CATALOG_NO=CATALOG_NO. When the column names are identical it is possible to use the more simplified format CONTRACT, CATALOG_NO. The edit dialog will help you by formatting the correct transformation method. In addition to database columns, it is also possible to add static numbers or strings when defining the column mapping. String values should be entered within quotations marks, such as "any string value".

The transformation format always follows this pattern: Source Key1= Target Attribute 1, Source Key 2 = Target Attribute 2, etc. The target attribute could be left out if it matches the source key.

For some scenarios it is not possible to map the target and source columns due to the fact that the source columns are not included in the target database view. You then have two options which both require some programming work. You can either extend the target view with the necessary columns or create a stored function that makes the actual key transformation. The name of the function should in this case be registered as the transformation method. Note that it should also hold the package name, e.g. My_Package_API.My_Transformation. It needs to be defined as a function that returns a string value. It also requires two values in parameters (strings); the Target Key Reference and the Service Name (in that specific order).

In addition, it is possible to set up the possibility for objects to be derived from several sources, e.g. maybe you want to see media connected to both sales and inventory parts. The only thing you need to consider in this case is that the editable flag is correctly set.

Custom Fields

The target view can also be extended with necessary columns by using custom fields. The custom fields functionality is found in the Solution Manager/User Interface/Custom Objects/Custom Fields window. Custom fields will be added in a new custom database view. The new custom database view can be based on the business object's base view. For example, create custom fields for ActiveSeparate LU and where the base view is ACTIVE_SEPRATE. Custom fields, once they have been published, are now added in a new view with the name ACTIVE_SEPARATE_CFV.

The custom database view can also be based on any other available view for the LU. Available views for a LU are shown in Custom Fields/Approved Detail Views. For example, create custom fields for ActiveSeparate LU and open the Custom Fields/Approved Detail Views and select the view ACTIVE_SEPARATE_UIV view. Publish the new custom fields and they will be added in two new views; ACTIVE_SEPARATE_CFV and ACTIVE_SEPARATE_UIV_CFV.

Control what View to use

The target view for the transformation method is defined in the Solution Manager/Object Connections and the field View Name. So, any columns shown in the Target LU Key list, comes from the view defined in Object Connections/View Name field. The view defined for a LU in Object Connections/View Name field is usually the base view, but it doesn't have to be the base view. The view can be changed to any other available view for the LU. For example, changed to a custom database view, if custom fields have been created for the LU. After selecting a custom view in object connections, any custom fields will then be shown in the Target LU Key list. For example, after adding custom fields for ActiveSeparate LU, the view ACTIVE_SEPARATE_UIV might be changed to the ACTIVE_SEPARATE_UIV_CFV view. Custom fields added in the ACTIVE_SEPARATE_UIV_CFV will now be available in Object Connection Transformation/Transformation Method/Target LU Key list.

Editable Value Settings

The editable value controls whether it is possible to attach new objects or not when using object transformations. It also controls where (on which business object) any new objects should be attached. The editable value can have three different settings:

If you set up the possibility for objects to be derived from several business objects, then you need to consider the editable value so the system is informed about to which business object any new objects should be attached.

System Defined Rules in Object Connection Transformation

There are set of system defined rules in object connection transformation which will result in unexpected application behaviors if you change them without knowing the impact. For example, a document connected to an actual routing operation line cannot be accessed through shop orders that are based on this routing if the rule stating this transformation is changed, deleted or made inactive. So you need to analyze the impact of the rule before you change it.

The system defined rules are listed below.

Target LU NameService nameSource LU NameEditableTransformation methodActive
ActiveRoundDocReferenceObjectWorkOrderSOURCEWO_NOX
ActiveSeparateDocReferenceObjectWorkOrderSOURCEWO_NOX
AvExeTaskDocReferenceObjectAvFaultSOURCEFAULT_IDX
AvFaultDssDocumentRefObjectAvExeTaskNONEADCOM_UTIL_API.TRANSF_TASK_DOC_TO_FAULTX
BusinessActivityDocReferenceObjectBusinessMailTARGETBUSINESS_MAIL_API.TRANSFORM_ACTIVITY_MAILX
BusinessLeadContactDocReferenceObjectBusinessMailTARGETBUSINESS_MAIL_API.TRANSFORM_LEAD_CONTACT_MAILX
BusinessOpportunityDocReferenceObjectBusinessMailTARGETBUSINESS_MAIL_API.TRANSFORM_OPPORTUNITY_MAILX
CmpuntCompatibleUnitDocReferenceObjectCmpcfgCmpUnitTemplateTARGETCMP_UNIT_TEMPLATE_SQ,REVISION_NO=TEMPLATE_REVISION_NOX
CmpuntCompatibleUnitMediaLibraryCmpcfgCmpUnitTemplateTARGETCMP_UNIT_TEMPLATE_SQ,REVISION_NO=TEMPLATE_REVISION_NOX
ConfigSpecValueMediaLibraryBasePartCharacteristicNONECONFIG_MEDIA_MANAGER_API.TRANSFORM_CONFIG_KEYX
CustomerInfoContactDocReferenceObjectBusinessMailTARGETBUSINESS_MAIL_API.TRANSFORM_CUST_CONTACT_MAILX
CustomerOrderLineDocReferenceObjectPartRevisionTARGETSALES_OBJECT_TRANSFORM_API.TRANSF_ORD_LINE_TO_PART_REVX
CustomerOrderLineDocReferenceObjectEngPartRevisionTARGETSALES_OBJECT_TRANSFORM_API.TRANSF_ORD_LINE_TO_ENG_PART_RVX
CustomerOrderLineDocReferenceObjectSalesPartTARGETCATALOG_NO,CONTRACTX
DeliveryWorkListDocReferenceObjectPlanningItemSOURCEITEM_NO, ITEM_REVISION, PLANNING_NOX
DeliveryWorkListMediaLibraryPlanningItemSOURCEITEM_NO, ITEM_REVISION, PLANNING_NOX
Equipment ObjectDocReferenceObjectCmpcfgCmpUnitTemplateTARGETEQUIPMENT_OBJECT_UTIL_API.TRANSF_EQUIP_TO_CU_TEMPLATEX
Equipment ObjectMediaLibraryCmpcfgCmpUnitTemplateTARGETEQUIPMENT_OBJECT_UTIL_API.TRANSF_EQUIP_TO_CU_TEMPLATEX
Equipment ObjectDocReferenceObjectCmpuntCompatibleUnitTARGETEQUIPMENT_OBJECT_UTIL_API.TRANSF_EQUIP_OBJ_TO_CUX
Equipment ObjectMediaLibraryCmpuntCompatibleUnitTARGETEQUIPMENT_OBJECT_UTIL_API.TRANSF_EQUIP_OBJ_TO_CUX
HistoricalRoundDocReferenceObjectWorkOrderSOURCEWO_NOX
HistoricalRoundDocReferenceObjectWorkOrderSOURCEWO_NOX
HistoricalSeparateEventLogActiveSeparateTARGETHISTORICAL_SEPARATE_API.TRANSF_HIST_WO_TO_ACTIVATEX
InquiryLinePartBlkDocReferenceObjectPartRevisionTARGETINQUIRY_LINE_API.TRANSF_INQ_LINE_TO_PART_REVX
InquiryLinePartBlkDocReferenceObjectEngPartRevisionTARGETINQUIRY_LINE_API.TRANSF_INQ_LINE_TO_ENG_REVX
InquiryLinePartBlkDocReferenceObjectPurchasePartTARGETCONTRACT,PART_NOX
InquiryLinePartOrderDocReferenceObjectPartRevisionTARGETINQUIRY_LINE_API.TRANSF_INQ_LINE_TO_PART_REVX
InquiryLinePartOrderDocReferenceObjectEngPartRevisionTARGETINQUIRY_LINE_API.TRANSF_INQ_LINE_TO_ENG_REVX
InquiryLinePartOrderDocReferenceObjectPurchasePartTARGETCONTRACT,PART_NOX
InquiryLinePartOrderDocReferenceObjectPurchaseReqLinePart TARGETLINE_NO=REQ_LINE_NO,RELEASE_NO=REQ_RELEASE_NO,REQUISITION_NOX
InventoryPartDocReferenceObjectEngPartRevisionTARGETINVENTORY_PART_API.TRANSF_INVENT_PART_TO_ENG_REVX
InventoryPartInStockDocReferenceObjectPartRevisionTARGETCONTRACT,ENG_CHG_LEVEL,PART_NOX
InventoryPartInStockDocReferenceObjectEngPartRevisionTARGETINVENTORY_PART_IN_STOCK_API.TRANS_INV_PART_STK_TO_ENG_REVX
ManSuppInvoiceDocReferenceObjectPostingProposalHeadTARGETCOMPANY,INVOICE_ID,PROPOSAL_ID=1X
PlantObjectDocReferenceObjectCmpcfgCmpUnitTemplateTARGETPLANT_OBJECT_UTIL_API.TRANSF_PLD_OBJ_TO_TEMPLATEX
PlantObjectMediaLibraryCmpcfgCmpUnitTemplateTARGETPLANT_OBJECT_UTIL_API.TRANSF_PLD_OBJ_TO_TEMPLATEX
PlantObjectDocReferenceObjectCmpuntCompatibleUnitTARGETCOMPATIBLE_UNIT_SQ=CMP_UNIT_SQ,REVISION_NO=CMP_UNIT_REVX
PlantObjectMediaLibraryCmpuntCompatibleUnitTARGETCOMPATIBLE_UNIT_SQ=CMP_UNIT_SQ,REVISION_NO=CMP_UNIT_REVX
PmActionDocReferenceObjectTaskTemplateTARGETTASK_TEMPLATE_API.TRANS_TASK_TEMPLATE_TO_PMX
PostingProposalDocReferenceObjectPostingProposalHeadTARGETCOMPANY,INVOICE_ID,PROPOSAL_IDX
ProdStructureHeadDocReferenceObjectPartRevisionTARGETCONTRACT,ENG_CHG_LEVEL,PART_NOX
ProdStructureHeadDocReferenceObjectEngPartRevisionTARGETMANUF_STRUCTURE_UTIL_API.TRANSF_PROD_STR_HD_TO_ENG_REVX
ProjectProductStructureDocReferenceObjectPartRevisionTARGETPROJECT_PRODUCT_STRUCTURE_API.TRANSF_PROJ_STRUCT_TO_PART_REVX
ProjectProductStructureDocReferenceObjectEngPartRevisionTARGETPART_NO,PART_REVX
PurchaseOrderLineDocReferenceObjectPartRevisionTARGETPURCHASE_ORDER_LINE_API.TRANSF_ORD_LINE_TO_PART_REVX
PurchaseOrderLineDocReferenceObjectEngPartRevisionTARGETPURCHASE_ORDER_LINE_API.TRANSF_ORD_LINE_TO_ENG_PART_RVX
PurchaseOrderLineDocReferenceObjectPurchasePartTARGETCONTRACT,PART_NOX
PurchaseOrderLineDocReferenceObjectPurchaseReqLinePart TARGETPURCHASE_ORDER_LINE_API.TRANSF_ORD_LINE_TO_REQ_LINEX
PurchaseOrderLinePart DocReferenceObjectPartRevisionTARGETCONTRACT,ENG_CHG_LEVEL,PART_NOX
PurchaseOrderLinePart DocReferenceObjectEngPartRevisionTARGETPURCHASE_ORDER_LINE_API.TRANSF_ORD_LINE_TO_ENG_PART_RVX
PurchaseOrderLinePart DocReferenceObjectPurchasePartTARGETCONTRACT,PART_NOX
PurchaseOrderLinePart DocReferenceObjectPurchaseReqLinePart TARGETLINE_NO=REQ_LINE,RELEASE_NO=REQ_RELEASE,REQUISITION_NOX
PurchasePartDocReferenceObjectPartRevisionTARGETPURCHASE_PART_API.TRANSF_PURCH_PART_TO_PART_REVX
PurchasePartDocReferenceObjectEngPartRevisionTARGETPURCHASE_PART_API.TRANSF_PURCH_PART_TO_ENG_REVX
PurchaseReceipt DocReferenceObjectPartCatalogTARGETPURCHASE_RECEIPT_API.TRANSF_RECEIPT_TO_PARTCAX
PurchaseReceipt DocReferenceObjectPartRevisionTARGETPURCHASE_RECEIPT_API.TRANSF_RECEIPT_TO_PART_REVX
PurchaseReceipt DocReferenceObjectEngPartRevisionTARGETPURCHASE_RECEIPT_API.TRANSF_RECEIPT_TO_ENG_PART_RVX
PurchaseReceipt DocReferenceObjectPurchasePartTARGETPURCHASE_RECEIPT_API.TRANSF_RECEIPT_TO_PURCH_PARTX
PurchaseReceipt DocReferenceObjectPurchaseOrderLinePartTARGETLINE_NO,ORDER_NO,RELEASE_NOX
PurchaseReqLinePartDocReferenceObjectPartRevisionTARGETCONTRACT,ENG_CHG_LEVEL,PART_NOX
PurchaseReqLinePartDocReferenceObjectEngPartRevisionTARGETPURCHASE_REQ_LINE_API.TRANSF_REQ_LINE_TO_ENG_PART_RVX
PurchaseReqLinePartDocReferenceObjectPurchasePartTARGETCONTRACT,PART_NOX
QmanCtrlPlanLineSoMediaLibraryQmanControlPlanLineTARGETCONTROL_PLAN_NO,CTRL_PLAN_REVISION_NO,DATA_POINTX
QmanCtrlPlanLineSoDocReferenceObjectQmanControlPlanLineTARGETCONTROL_PLAN_NO,CTRL_PLAN_REVISION_NO,DATA_POINTX
QuotationLinePartBlk DocReferenceObjectPartRevisionTARGETINQUIRY_LINE_API.TRANSF_INQ_LINE_TO_PART_REVX
QuotationLinePartBlk DocReferenceObjectEngPartRevisionTARGETINQUIRY_LINE_API.TRANSF_INQ_LINE_TO_ENG_REVX
QuotationLinePartBlk DocReferenceObjectPurchasePartTARGETINQUIRY_LINE_API.TRANSF_QUOT_LINE_TO_PURCH_PARTX
QuotationLinePartBlk DocReferenceObjectInquiryLinePartBlkTARGETINQUIRY_NO,LINE_NOX
QuotationLinePartOrd DocReferenceObjectPartRevisionTARGETINQUIRY_LINE_API.TRANSF_INQ_LINE_TO_PART_REVX
QuotationLinePartOrd DocReferenceObjectEngPartRevisionTARGETINQUIRY_LINE_API.TRANSF_INQ_LINE_TO_ENG_REVX
QuotationLinePartOrd DocReferenceObjectPurchasePartTARGETINQUIRY_LINE_API.TRANSF_QUOT_LINE_TO_PURCH_PARTX
QuotationLinePartOrd DocReferenceObjectInquiryLinePartOrderTARGETINQUIRY_NO,LINE_NOX
RoundStandardJobDocReferenceObjectStandardJobSOURCECONTRACT,STD_JOB_ID,STD_JOB_REVISIONX
RoutingHeadDocReferenceObjectPartRevisionTARGETROUTING_LIST_API.TRANSF_ROUT_HEAD_TO_PART_REVX
RoutingHeadDocReferenceObjectEngPartRevisionTARGETROUTING_LIST_API.TRANSF_ROUT_HD_TO_ENG_PART_REVX
RoutingOperation DocReferenceObjectStandardOperationTARGETCONTRACT,STD_OPERATION_NAMEX
RoutingOperation DocReferenceObjectRoutOperationTemplateTARGETROUTING_OPERATION_LIST_API.TRANSF_ROUT_OP_TO_ROUT_OP_TMPLX
RoutOperationTemplateDocReferenceObjectStandardOperationTARGETCONTRACT,STD_OPERATION_NAMEX
SalesPartDocReferenceObjectPartRevisionTARGETSALES_OBJECT_TRANSFORM_API.TRANSF_SALES_PART_TO_PART_REVX
SalesPartDocReferenceObjectEngPartRevisionTARGETSALES_OBJECT_TRANSFORM_API.TRANSF_SALES_TO_ENG_PART_REVX
SeparateStandardJobDocReferenceObjectStandardJobSOURCECONTRACT,STD_JOB_ID,STD_JOB_REVISIONX
ShopMaterialAllocDocReferenceObjectPartRevisionTARGETSHOP_ORD_UTIL_API.TRANSF_MAT_ALLOC_TO_PART_REVX
ShopMaterialAllocDocReferenceObjectEngPartRevisionTARGETSHOP_ORD_UTIL_API.TRANSF_MAT_ALLO_TO_ENG_PART_RVX
ShopMaterialAllocMediaLibraryPartCatalogTARGETPART_NOX
ShopMaterialAllocDocReferenceObjectPartCatalogTARGETPART_NOX
ShopMaterialAllocGuideMediaLibraryManufStructWorkGuideTARGETSHOP_ORD_WORK_GUIDE_UTIL_API.TRANSFORM_ALLOC_GUIDE_KEY__X
ShopMaterialAllocGuideDocReferenceObjectManufStructWorkGuideTARGETSHOP_ORD_WORK_GUIDE_UTIL_API.TRANSFORM_ALLOC_GUIDE_KEY__X
ShopOrd DocReferenceObjectPartRevisionTARGETCONTRACT,ENG_CHG_LEVEL,PART_NOX
ShopOrd DocReferenceObjectEngPartRevisionTARGETSHOP_ORD_UTIL_API.TRANSF_SHOP_ORD_TO_ENG_PART_RVX
ShopOrderOperationMediaLibraryShopOrdTARGETORDER_NO,RELEASE_NO,SEQUENCE_NOX
ShopOrderOperationMediaLibraryPartCatalogTARGETPART_NOX
ShopOrderOperationDocReferenceObjectShopOrdTARGETORDER_NO,RELEASE_NO,SEQUENCE_NOX
ShopOrderOperationDocReferenceObjectEngPartRevisionTARGETSHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_ENG_PART_REVX
ShopOrderOperationDocReferenceObjectInventoryPartTARGETCONTRACT,PART_NOX
ShopOrderOperationDocReferenceObjectPartRevisionTARGETSHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_PART_REVX
ShopOrderOperationDocReferenceObjectRoutingHeadTARGETSHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_ROUT_HEADX
ShopOrderOperationDocReferenceObjectRoutingAlternateTARGETSHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_ROUT_ALTX
ShopOrderOperationDocReferenceObjectRoutingOperationTARGETSHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_ROUT_OPX
ShopOrderOperationDocReferenceObjectProdStructureHeadTARGETSHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_STRUCT_HEADX
ShopOrderOperGuideMediaLibraryRoutingOperWorkGuideTARGETSHOP_ORD_WORK_GUIDE_UTIL_API.TRANSFORM_OP_WORK_GUIDE_KEY__X
ShopOrderOperGuideDocReferenceObjectRoutingOperWorkGuideTARGETSHOP_ORD_WORK_GUIDE_UTIL_API.TRANSFORM_OP_WORK_GUIDE_KEY__X
ShopOrderOperToolMediaLibraryManufToolTARGETCONTRACT,TOOL_IDX
ShopOrderOperToolDocReferenceObjectManufTool'TARGETCONTRACT,TOOL_IDX
ShopOrderPropDocReferenceObjectPartRevisionTARGETCONTRACT,ENG_CHG_LEVEL,PART_NOX
ShopOrderPropDocReferenceObjectEngPartRevisionTARGETSHOP_ORD_UTIL_API.TRANSF_SHP_PROP_TO_ENG_PART_RVX
SupplierInfoContactDocReferenceObjectBusinessMailTARGETBUSINESS_MAIL_API.TRANSFORM_SUPP_CONTACT_MAILX