About BOD Elements and Attributes

This topic includes miscellaneous information that you might find helpful when creating BOD (Business Object Document) replication documents.

The BOD Header

The BOD_Name/ApplicationArea/BODID element contains the NID in this format:

NIDID(DerBODID)?BODNOUN()&verb=BODVERB()

In most cases, you do not need to edit this element. However, if you want the NID's location value populated, change the NIDID macro to LNIDID.

See Value Expression, Replication Document Elements.

When you create the associated IDO or custom load method used to populate the BOD, you must include a property named DerBODID that contains the key value for the BOD. For example, for the PurchaseOrder BOD, you must define a DerBODID property that contains the purchase order number.

The BOD Body

When adding elements to the body of a BOD, you must:

  • Specify a BOD Tag Name that becomes the actual element tag.
  • Specify the Value Type of the element, whether it is:
    • A Literal value, to be specified in the Value Expression field
    • A Property Tag value that is mapped to a data element in an IDO collection, using the Property Name field
    • A Dynamic Subcollection , that uses an IDO collection as specified in the Dynamic Subcollection IDO Name field.  

      See Adding a Collection of Elements from a SQL Table or IDO to a BOD.

  • Specify any additional information required by the Value Type that the element is to be.

If any element includes an attribute - that is, the BOD tag looks like this:

<element attribute=xxx>

then click Attributes to display the Replication Document Elements form, filtered for the current element. (Notice that the element's sequence number is displayed for reference.)

On the Attributes tab, specify this information for the attribute:

  • For the Attribute Name, enter the actual attribute included in the XML. The attribute name is case-sensitive.
  • Specify whether the value of the attribute is a literal value or a property (that is, mapped to a data element in an IDO collection).
  • If the value is a literal, specify the Value Expression. If the value is a property, speciy the Property Name. The property name is a property on the IDO listed on the parent BOD form, or a property on a subcollection IDO linked to that IDO.

Tips for Constructing the Body

  • An XML document inbound to this application from an application that does not use the Infor BOD format must include the following XML element:
    <DocumentData TargetSite="target_site" SourceSite="source_site" Verb="verb" Noun="noun"> 
    	
  • When building BODs for applications that use the Infor BOD format, be aware of this information:
    • For the main ID element in the Noun section of the BOD (this is often, but not always, called DocumentID):
      • Specify the BOD Tag Name.
      • Set Value Type to Literal.
      • Set Property Name to DerBODID.
    • For reference elements, the ID should be populated with the key value (DerBODID) used by the BOD being referenced.
    • If the BOD is used to publish deleted data, only two elements in the Noun section of the body need to be mapped: the main ID element and the status element.
    • All values published in an ID element or reference ID element must have leading spaces trimmed. If an ID element is populated with concatenated columns of data, each column of data must have leading spaces trimmed.

      This example shows concenation and trim logic:

      ltrim(VendVch.vend_num) + '~' + ltrim(cast(VendVch.voucher as nvarchar(7)))

      If vend_num = 200 and voucher = 5000 then the value published would look like this:

      200~5000

  • If a parent tag contains no data and has no attributes, you do not need to define an element record for it in the metadata. If a child tag element is defined in the Elements form, the system automatically generates the parent tag in the XML. For example, if you define metadata for this element:
    ProcessCustomerPartyMaster/DataArea/CustomerPartyMaster/Location/Name

    but you have not defined metadata for the parent

    ProcessCustomerPartyMaster/DataArea/CustomerPartyMaster/Location

    the system includes any missing parent tags in the XML, like this:

    <DataArea>
      <CustomerPartyMaster>
         <Location>
           <Name>MyCo</Name>
         </Location>
      </CustomerPartyMaster>
    </DataArea>  	
  • When an element is populated with multiple columns of data concatenated together, the approved concatenation character is ~ (tilde). For example, if concatenating cust_num and cust_seq together to be published together as one value in an element, specify it as shown here: cust_num~cust_seq

    If cust_num = C000001 and cust_seq = 5 then the value published looks like this: C000001~5

  • Use the Documentation tabs and fields on the various forms to enter implementation information for the BOD and its elements and attributes. This information can be used to create data mapping or implementation reports.
  • You can create a custom load method whose source is a view that contains all the information you need in the BOD. The CLM returns the result set of the view. This may produce speed improvements over using an IDO.
    Note:  If this application is used only to facilitate integration between two other applications, then the CLM in this application runs a corresponding CLM (via a remote method call) in the actual application.  
  • Method overrides on inbound BODs cannot handle null values in numeric properties as a parameter. This is a restriction of the Microsoft Common Runtime Language (CLR).

    So suppose, for example, that the inbound BOD calls an override for an update like this:

    UPD(LoadCodeSp(OperNum,P3,InputPlanQty,MESSAGE))

    If the InputPlanQty property is mapped to an XML element that is not always provided, there would be a problem. This could be resolved by modifying the InputPlanQty property to be a string instead of a number, and handling any necessary conversions inside the LoadCodeSp method/procedure. Numeric values cannot hold a null value in CLR, but string values can.

Generating Replication Document Scripts

To generate a replication document script, use the Repl Doc Script Generator form  and then, optionally, check the script into a source code control system. This allows you to include your custom replication document information in system upgrades.

Related topics