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 Name Service name Source LU Name Editable Transformation method Active
ActiveRound DocReferenceObject WorkOrder SOURCE WO_NO X
ActiveSeparate DocReferenceObject WorkOrder SOURCE WO_NO X
BusinessActivity DocReferenceObject BusinessMail TARGET BUSINESS_MAIL_API.TRANSFORM_ACTIVITY_MAIL X
BusinessLeadContact DocReferenceObject BusinessMail TARGET BUSINESS_MAIL_API.TRANSFORM_LEAD_CONTACT_MAIL X
BusinessOpportunity DocReferenceObject BusinessMail TARGET BUSINESS_MAIL_API.TRANSFORM_OPPORTUNITY_MAIL X
CmpuntCompatibleUnit DocReferenceObject CmpcfgCmpUnitTemplate TARGET CMP_UNIT_TEMPLATE_SQ,REVISION_NO=TEMPLATE_REVISION_NO X
CmpuntCompatibleUnit MediaLibrary CmpcfgCmpUnitTemplate TARGET CMP_UNIT_TEMPLATE_SQ,REVISION_NO=TEMPLATE_REVISION_NO X
ConfigSpecValue MediaLibrary BasePartCharacteristic NONE CONFIG_MEDIA_MANAGER_API.TRANSFORM_CONFIG_KEY X
CustomerInfoContact DocReferenceObject BusinessMail TARGET BUSINESS_MAIL_API.TRANSFORM_CUST_CONTACT_MAIL X
CustomerOrderLine DocReferenceObject PartRevision TARGET SALES_OBJECT_TRANSFORM_API.TRANSF_ORD_LINE_TO_PART_REV X
CustomerOrderLine DocReferenceObject EngPartRevision TARGET SALES_OBJECT_TRANSFORM_API.TRANSF_ORD_LINE_TO_ENG_PART_RV X
CustomerOrderLine DocReferenceObject SalesPart TARGET CATALOG_NO,CONTRACT X
DeliveryWorkList DocReferenceObject PlanningItem SOURCE ITEM_NO, ITEM_REVISION, PLANNING_NO X
DeliveryWorkList MediaLibrary PlanningItem SOURCE ITEM_NO, ITEM_REVISION, PLANNING_NO X
Equipment Object DocReferenceObject CmpcfgCmpUnitTemplate TARGET EQUIPMENT_OBJECT_UTIL_API.TRANSF_EQUIP_TO_CU_TEMPLATE X
Equipment Object MediaLibrary CmpcfgCmpUnitTemplate TARGET EQUIPMENT_OBJECT_UTIL_API.TRANSF_EQUIP_TO_CU_TEMPLATE X
Equipment Object DocReferenceObject CmpuntCompatibleUnit TARGET EQUIPMENT_OBJECT_UTIL_API.TRANSF_EQUIP_OBJ_TO_CU X
Equipment Object MediaLibrary CmpuntCompatibleUnit TARGET EQUIPMENT_OBJECT_UTIL_API.TRANSF_EQUIP_OBJ_TO_CU X
HistoricalRound DocReferenceObject WorkOrder SOURCE WO_NO X
HistoricalRound DocReferenceObject WorkOrder SOURCE WO_NO X
InquiryLinePartBlk DocReferenceObject PartRevision TARGET INQUIRY_LINE_API.TRANSF_INQ_LINE_TO_PART_REV X
InquiryLinePartBlk DocReferenceObject EngPartRevision TARGET INQUIRY_LINE_API.TRANSF_INQ_LINE_TO_ENG_REV X
InquiryLinePartBlk DocReferenceObject PurchasePart TARGET CONTRACT,PART_NO X
InquiryLinePartOrder DocReferenceObject PartRevision TARGET INQUIRY_LINE_API.TRANSF_INQ_LINE_TO_PART_REV X
InquiryLinePartOrder DocReferenceObject EngPartRevision TARGET INQUIRY_LINE_API.TRANSF_INQ_LINE_TO_ENG_REV X
InquiryLinePartOrder DocReferenceObject PurchasePart TARGET CONTRACT,PART_NO X
InquiryLinePartOrder DocReferenceObject PurchaseReqLinePart  TARGET LINE_NO=REQ_LINE_NO,RELEASE_NO=REQ_RELEASE_NO,REQUISITION_NO X
InventoryPart DocReferenceObject EngPartRevision TARGET INVENTORY_PART_API.TRANSF_INVENT_PART_TO_ENG_REV X
InventoryPartInStock DocReferenceObject PartRevision TARGET CONTRACT,ENG_CHG_LEVEL,PART_NO X
InventoryPartInStock DocReferenceObject EngPartRevision TARGET INVENTORY_PART_IN_STOCK_API.TRANS_INV_PART_STK_TO_ENG_REV X
ManSuppInvoice DocReferenceObject PostingProposalHead TARGET COMPANY,INVOICE_ID,PROPOSAL_ID=1 X
PlantObject DocReferenceObject CmpcfgCmpUnitTemplate TARGET PLANT_OBJECT_UTIL_API.TRANSF_PLD_OBJ_TO_TEMPLATE X
PlantObject MediaLibrary CmpcfgCmpUnitTemplate TARGET PLANT_OBJECT_UTIL_API.TRANSF_PLD_OBJ_TO_TEMPLATE X
PlantObject DocReferenceObject CmpuntCompatibleUnit TARGET COMPATIBLE_UNIT_SQ=CMP_UNIT_SQ,REVISION_NO=CMP_UNIT_REV X
PlantObject MediaLibrary CmpuntCompatibleUnit TARGET COMPATIBLE_UNIT_SQ=CMP_UNIT_SQ,REVISION_NO=CMP_UNIT_REV X
PmAction DocReferenceObject TaskTemplate TARGET TASK_TEMPLATE_API.TRANS_TASK_TEMPLATE_TO_PM X
PostingProposal DocReferenceObject PostingProposalHead TARGET COMPANY,INVOICE_ID,PROPOSAL_ID X
ProdStructureHead DocReferenceObject PartRevision TARGET CONTRACT,ENG_CHG_LEVEL,PART_NO X
ProdStructureHead DocReferenceObject EngPartRevision TARGET MANUF_STRUCTURE_UTIL_API.TRANSF_PROD_STR_HD_TO_ENG_REV X
ProjectProductStructure DocReferenceObject PartRevision TARGET PROJECT_PRODUCT_STRUCTURE_API.TRANSF_PROJ_STRUCT_TO_PART_REV X
ProjectProductStructure DocReferenceObject EngPartRevision TARGET PART_NO,PART_REV X
PurchaseOrderLine DocReferenceObject PartRevision TARGET PURCHASE_ORDER_LINE_API.TRANSF_ORD_LINE_TO_PART_REV X
PurchaseOrderLine DocReferenceObject EngPartRevision TARGET PURCHASE_ORDER_LINE_API.TRANSF_ORD_LINE_TO_ENG_PART_RV X
PurchaseOrderLine DocReferenceObject PurchasePart TARGET CONTRACT,PART_NO X
PurchaseOrderLine DocReferenceObject PurchaseReqLinePart  TARGET PURCHASE_ORDER_LINE_API.TRANSF_ORD_LINE_TO_REQ_LINE X
PurchaseOrderLinePart  DocReferenceObject PartRevision TARGET CONTRACT,ENG_CHG_LEVEL,PART_NO X
PurchaseOrderLinePart  DocReferenceObject EngPartRevision TARGET PURCHASE_ORDER_LINE_API.TRANSF_ORD_LINE_TO_ENG_PART_RV X
PurchaseOrderLinePart  DocReferenceObject PurchasePart TARGET CONTRACT,PART_NO X
PurchaseOrderLinePart  DocReferenceObject PurchaseReqLinePart  TARGET LINE_NO=REQ_LINE,RELEASE_NO=REQ_RELEASE,REQUISITION_NO X
PurchasePart DocReferenceObject PartRevision TARGET PURCHASE_PART_API.TRANSF_PURCH_PART_TO_PART_REV X
PurchasePart DocReferenceObject EngPartRevision TARGET PURCHASE_PART_API.TRANSF_PURCH_PART_TO_ENG_REV X
PurchaseReceipt  DocReferenceObject PartCatalog TARGET PURCHASE_RECEIPT_API.TRANSF_RECEIPT_TO_PARTCA X
PurchaseReceipt  DocReferenceObject PartRevision TARGET PURCHASE_RECEIPT_API.TRANSF_RECEIPT_TO_PART_REV X
PurchaseReceipt  DocReferenceObject EngPartRevision TARGET PURCHASE_RECEIPT_API.TRANSF_RECEIPT_TO_ENG_PART_RV X
PurchaseReceipt  DocReferenceObject PurchasePart TARGET PURCHASE_RECEIPT_API.TRANSF_RECEIPT_TO_PURCH_PART X
PurchaseReceipt  DocReferenceObject PurchaseOrderLinePart TARGET LINE_NO,ORDER_NO,RELEASE_NO X
PurchaseReqLinePart DocReferenceObject PartRevision TARGET CONTRACT,ENG_CHG_LEVEL,PART_NO X
PurchaseReqLinePart DocReferenceObject EngPartRevision TARGET PURCHASE_REQ_LINE_API.TRANSF_REQ_LINE_TO_ENG_PART_RV X
PurchaseReqLinePart DocReferenceObject PurchasePart TARGET CONTRACT,PART_NO X
QmanCtrlPlanLineSo MediaLibrary QmanControlPlanLine TARGET CONTROL_PLAN_NO,CTRL_PLAN_REVISION_NO,DATA_POINT X
QmanCtrlPlanLineSo DocReferenceObject QmanControlPlanLine TARGET CONTROL_PLAN_NO,CTRL_PLAN_REVISION_NO,DATA_POINT X
QuotationLinePartBlk  DocReferenceObject PartRevision TARGET INQUIRY_LINE_API.TRANSF_INQ_LINE_TO_PART_REV X
QuotationLinePartBlk  DocReferenceObject EngPartRevision TARGET INQUIRY_LINE_API.TRANSF_INQ_LINE_TO_ENG_REV X
QuotationLinePartBlk  DocReferenceObject PurchasePart TARGET INQUIRY_LINE_API.TRANSF_QUOT_LINE_TO_PURCH_PART X
QuotationLinePartBlk  DocReferenceObject InquiryLinePartBlk TARGET INQUIRY_NO,LINE_NO X
QuotationLinePartOrd  DocReferenceObject PartRevision TARGET INQUIRY_LINE_API.TRANSF_INQ_LINE_TO_PART_REV X
QuotationLinePartOrd  DocReferenceObject EngPartRevision TARGET INQUIRY_LINE_API.TRANSF_INQ_LINE_TO_ENG_REV X
QuotationLinePartOrd  DocReferenceObject PurchasePart TARGET INQUIRY_LINE_API.TRANSF_QUOT_LINE_TO_PURCH_PART X
QuotationLinePartOrd  DocReferenceObject InquiryLinePartOrder TARGET INQUIRY_NO,LINE_NO X
RoundStandardJob DocReferenceObject StandardJob SOURCE CONTRACT,STD_JOB_ID,STD_JOB_REVISION X
RoutingHead DocReferenceObject PartRevision TARGET ROUTING_LIST_API.TRANSF_ROUT_HEAD_TO_PART_REV X
RoutingHead DocReferenceObject EngPartRevision TARGET ROUTING_LIST_API.TRANSF_ROUT_HD_TO_ENG_PART_REV X
RoutingOperation  DocReferenceObject StandardOperation TARGET CONTRACT,STD_OPERATION_NAME X
RoutingOperation  DocReferenceObject RoutOperationTemplate TARGET ROUTING_OPERATION_LIST_API.TRANSF_ROUT_OP_TO_ROUT_OP_TMPL X
RoutOperationTemplate DocReferenceObject StandardOperation TARGET CONTRACT,STD_OPERATION_NAME X
SalesPart DocReferenceObject PartRevision TARGET SALES_OBJECT_TRANSFORM_API.TRANSF_SALES_PART_TO_PART_REV X
SalesPart DocReferenceObject EngPartRevision TARGET SALES_OBJECT_TRANSFORM_API.TRANSF_SALES_TO_ENG_PART_REV X
SeparateStandardJob DocReferenceObject StandardJob SOURCE CONTRACT,STD_JOB_ID,STD_JOB_REVISION X
ShopMaterialAlloc DocReferenceObject PartRevision TARGET SHOP_ORD_UTIL_API.TRANSF_MAT_ALLOC_TO_PART_REV X
ShopMaterialAlloc DocReferenceObject EngPartRevision TARGET SHOP_ORD_UTIL_API.TRANSF_MAT_ALLO_TO_ENG_PART_RV X
ShopMaterialAlloc MediaLibrary PartCatalog TARGET PART_NO X
ShopMaterialAlloc DocReferenceObject PartCatalog TARGET PART_NO X
ShopMaterialAllocGuide MediaLibrary ManufStructWorkGuide TARGET SHOP_ORD_WORK_GUIDE_UTIL_API.TRANSFORM_ALLOC_GUIDE_KEY__ X
ShopMaterialAllocGuide DocReferenceObject ManufStructWorkGuide TARGET SHOP_ORD_WORK_GUIDE_UTIL_API.TRANSFORM_ALLOC_GUIDE_KEY__ X
ShopOrd  DocReferenceObject PartRevision TARGET CONTRACT,ENG_CHG_LEVEL,PART_NO X
ShopOrd  DocReferenceObject EngPartRevision TARGET SHOP_ORD_UTIL_API.TRANSF_SHOP_ORD_TO_ENG_PART_RV X
ShopOrderOperation MediaLibrary ShopOrd TARGET ORDER_NO,RELEASE_NO,SEQUENCE_NO X
ShopOrderOperation MediaLibrary PartCatalog TARGET PART_NO X
ShopOrderOperation DocReferenceObject ShopOrd TARGET ORDER_NO,RELEASE_NO,SEQUENCE_NO X
ShopOrderOperation DocReferenceObject EngPartRevision TARGET SHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_ENG_PART_REV X
ShopOrderOperation DocReferenceObject InventoryPart TARGET CONTRACT,PART_NO X
ShopOrderOperation DocReferenceObject PartRevision TARGET SHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_PART_REV X
ShopOrderOperation DocReferenceObject RoutingHead TARGET SHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_ROUT_HEAD X
ShopOrderOperation DocReferenceObject RoutingAlternate TARGET SHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_ROUT_ALT X
ShopOrderOperation DocReferenceObject RoutingOperation TARGET SHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_ROUT_OP X
ShopOrderOperation DocReferenceObject ProdStructureHead TARGET SHOP_ORD_UTIL_API.TRANSF_SHOP_OP_TO_STRUCT_HEAD X
ShopOrderOperGuide MediaLibrary RoutingOperWorkGuide TARGET SHOP_ORD_WORK_GUIDE_UTIL_API.TRANSFORM_OP_WORK_GUIDE_KEY__ X
ShopOrderOperGuide DocReferenceObject RoutingOperWorkGuide TARGET SHOP_ORD_WORK_GUIDE_UTIL_API.TRANSFORM_OP_WORK_GUIDE_KEY__ X
ShopOrderOperTool MediaLibrary ManufTool TARGET CONTRACT,TOOL_ID X
ShopOrderOperTool DocReferenceObject ManufTool' TARGET CONTRACT,TOOL_ID X
ShopOrderProp DocReferenceObject PartRevision TARGET CONTRACT,ENG_CHG_LEVEL,PART_NO X
ShopOrderProp DocReferenceObject EngPartRevision TARGET SHOP_ORD_UTIL_API.TRANSF_SHP_PROP_TO_ENG_PART_RV X
SupplierInfoContact DocReferenceObject BusinessMail TARGET BUSINESS_MAIL_API.TRANSFORM_SUPP_CONTACT_MAIL X