WebSphere Commerce EnterpriseWebSphere Commerce Professional

WebSphere Commerce integration

Business Object Document messages sent from the IBM Sales Center client to the WebSphere Commerce Server are mapped to WebSphere Commerce controller commands through the WebSphere Commerce message mapper. The WebSphere Commerce configuration file contains this message mapper entry. The contents of the file are:


<MessageMapper
classname="com.ibm.commerce.messaging.programadapter.messagemapper.ecsax.ECSAXMessageMapper"
enable="true"
messageMapperId="-4"
name="WCS.SOABODINTEGRATION">
    <configuration DuplicateCreatesArray="true"
EcInboundMessageDtdFiles=""
EcInboundMessageDtdPath="messaging"
EcSystemTemplateFile="webservice_SOABOD_template.xml"
EcTemplatePath="messaging"
EcUserTemplateFile="webservice_SOABOD_template.extension.xml"
EmptyElementClearsData="true"
isValidating="false" />
</MessageMapper> 

WebSphere Commerce uses the !ENTITY declarations to include different files for each of the document command mappings, and has extended the message mapper declaration to include a file for extensions called webservice_SOABOD_template.extension.xml. You can update this file to include your own extensions and any additional or changed mappings that you want to define. The message mapper files are located in the XML configuration directory:

For example the file that maps the CreateCustomer BOD to the UserRegistrationAdminAddCmd command looks like this:


<TemplateDocument>
    <DocumentType
version="8.1">CreateCustomer</DocumentType>
    <StartElement>CreateCustomer</StartElement>
   
<TemplateTagName>CreateCustomer81Map</TemplateTagName>
    <CommandMapping>
        <Command
CommandName="com.ibm.commerce.usermanagement.commands.UserRegistrationAdminAddCmd"
Condition='profileType="B"'>>
<Constant Field="URL">NoURL</Constant>
<Constant Field="ReURL">NoReURL</Constant>
<Constant
Field="registrationType">BuyerRegistration</Constant>
<Constant Field="profileType">B</Constant>
<Constant
Field="disableExtendedChecking">true</Constant> 
</Command>
        <Command
CommandName="com.ibm.commerce.usermanagement.commands.UserRegistrationAdminAddCmd"
Condition='profileType="C"'>>
<Constant Field="URL">NoURL</Constant>
<Constant Field="ReURL">NoReURL</Constant>
<Constant Field="profileType">C</Constant>
<Constant
Field="disableExtendedChecking">true</Constant>
</Command>
        <Command
CommandName="com.ibm.commerce.usermanagement.commands.UserRegistrationAdminAddCmd"
Condition='GuestUserRegisterCondition'>
            <Constant Field="URL">NoURL</Constant>
            <Constant Field="ReURL">NoReURL</Constant>
            <Constant Field="profileType">C</Constant>
            <Constant
Field="disableExtendedChecking">true</Constant>
        </Command>
    </CommandMapping>
</TemplateDocument>

<TemplateTag name="CreateCustomer81Map">
    <!-- Command Parameters -->
    <Tag
XPath="DataArea/Customer/UserAccount/Authorization/UserId"
Field="logonId" FieldInfo="DATA"/>
    <Tag
XPath="DataArea/Customer/UserAccount/Authorization/Password"
Field="logonPassword"/>
    <Tag
XPath="DataArea/Customer/UserAccount/Authorization/VerifyPassword"
Field="logonPasswordVerify"/>
    <Tag
XPath="DataArea/Customer/UserAccount/Authorization/Status/Code"
Field="userStatus"/>
    <Tag XPath="x" Field="passwordExpired"/>
    <Tag
XPath="DataArea/Customer/UserAccount/Authorization/ChallengeQuestion"
Field="challengeQuestion"/>
    <Tag
XPath="DataArea/Customer/UserAccount/Authorization/ChallengeAnswer"
Field="challengeAnswer"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/AddressId"
Field="addressId"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/AddressNickName"
Field="nickName"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address@type"
Field="addressType"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Person/PersonName/Salutation"
Field="personTitle"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Person/PersonName/FamilyName"
Field="lastName"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Person/PersonName/GivenName"
Field="firstName"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Person/PersonName/MiddleName"
Field="middleName"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/AddressLine"
XPathType="REPEAT"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/AddressLine[1]"
Field="address1"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/AddressLine[2]"
Field="address2"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/AddressLine[3]"
Field="address3"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/City"
Field="city"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/StateOrProvinceCode"
Field="state"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/PostalCode"
Field="zipCode"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/CountryCode"
Field="country"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Addresses/Address/UserData/UserDataField"
XPathType="USERDATA"/>
    <Tag XPath="x" Field="primary"/>
    <Tag XPath="x" Field="selfAddress"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Telephone"
XPathType="REPEAT"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Telephone[1]"
Field="phone1"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Telephone[1]@type"
Field="phone1Type"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Telephone[1]@publish"
Field="publishPhone1"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Telephone[2]"
Field="phone2"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Telephone[2]@type"
Field="phone2Type"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Telephone[2]@publish"
Field="publishPhone2"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/BestCallTime"
Field="bestCallingTime"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Fax"
XPathType="REPEAT"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Fax[1]"
Field="fax1"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Fax[2]"
Field="fax2"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/EMailAddress"
XPathType="REPEAT"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/EMailAddress[1]"
Field="email1"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/EMailAddress[2]"
Field="email2"/>
    <Tag XPath="x" Field="billingCode"/>
    <Tag XPath="x" Field="billingCodeType"/>
    <Tag XPath="x" Field="packageSuppression"/>
    <Tag XPath="x" XPathType="REPEAT"/>
    <Tag XPath="x" Field="distinguishedName"/>
    <Tag XPath="DataArea/Customer/CustomerParty/Currency"
Field="preferredCurrency"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/CorrespondenceLanguage"
Field="preferredLanguage"/>
    <Tag XPath="x" XPathType="REPEAT"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Contacts/Contact/Person/PersonName/FormattedName"
Field="displayName"/>
    <Tag XPath="x" Field="photo"/>
    <Tag XPath="x" Field="preferredMeasure"/>
    <Tag XPath="x" Field="preferredCommunication"/>
    <Tag XPath="x" Field="preferredDelivery"/>
    <Tag XPath="x" Field="description"/>
    <Tag XPath="x" XPathType="REPEAT"/>
    <Tag XPath="x" Field="businessTitle"/>
    <Tag XPath="DataArea/Customer/CustomerParty/Business/Id"
Field="organizationId"/>
    <Tag XPath="DataArea/Customer/CustomerParty/Business/Name"
Field="organizationName"/>
    <Tag XPath="x" Field="organizationUnitId"/>
    <Tag XPath="x" Field="organizationUnitName"/>
    <Tag XPath="x" Field="employeeId"/>
    <Tag XPath="x" Field="alternateId"/>
    <Tag XPath="x" Field="employeeType"/>
    <Tag XPath="x" Field="officeAddress"/>
    <Tag XPath="x" Field="departmentNumber"/>
    <Tag XPath="x" Field="manager"/>
    <Tag XPath="x" Field="secretary"/>
    <Tag
XPath="DataArea/Customer/GuestCustomer/MigrateGuestCustomer"
Field='GuestUserRegisterConditiion' FieldInfo='COMMAND' />
    <Tag
XPath="DataArea/Customer/GuestCustomer/CustomerParty/PartyId/Id"
Field="userId"/>
    <Tag XPath="DataArea/Customer/CustomerDemographics/Age"
Field="age"/>
    <Tag XPath="DataArea/Customer/CustomerDemographics/Gender"
Field="gender"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/AnnualIncome"
Field="income"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/AnnualIncome@currency"
Field="incomeCurrency"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/MaritalStatus"
Field="maritalStatus"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/NumberOfChildren"
Field="children"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/NumberInHousehold"
Field="household"/>
    <Tag XPath="DataArea/Customer/CustomerDemographics/Employer"
Field="companyName"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/Department"
Field="departmentNumber"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/BusinessTitle"
Field="businessTitle"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/InterestHobby"
Field="hobbies"/>
    <Tag XPath="x" Field="orderBefore"/>
    <Tag XPath="x" Field="timeZone"/>
    <Tag
XPath="DataArea/Customer/Profile/Demographics/DemographicField"
XPathType="REPEAT"/>
    <Tag
XPath="DataArea/Customer/CustomerParty/Business/RelatedUnit/Unit/Id"
Field="parentMemberId"/>
    <Tag
XPath="DataArea/Customer/CustomerDemographics/ProfileType"
Field="profileType" FieldInfo="COMMAND"/>
    <Tag XPath="DataArea/Customer/CommerceArea/StoreId"
Field="storeId"/>
    <Tag XPath="DataArea/Customer/UserData/UserDataField"
XPathType="USERDATA"/>
</TemplateTag> 

Once the controller command has completed, it will be necessary to prepare a response document. The following entry in the WebSphere Commerce configuration file points to the response builder registry:


<component
 
compClassName="com.ibm.commerce.telesales.configuration.TelesalesRegistryComponentConfiguration"
  enable="true" name="Telesales Response Builder Registry
Configuration">
  <property
        baseRegistryFileName="TelesalesRegistry.xml"
        baseRegistryFilePath="messaging"
        customRegistryFileName=""
        customRegistryFilePath=""
        display="false" enableBaseRegistryOverride="false"/>
</component>

You can modify the customRegistryFileName and customRegistryFilePath attributes to point to a custom registry file. Ensure that enableBaseRegistryOverride is set to true. Entries in the custom registry will be combined with the entries in the base registry file. In the event that the same verb/noun pair is registered in both registry files, then the custom entry will be the one that is used. The base registry file for the IBM Sales Center is WC_eardir/xml/messaging/TelesalesRegistry.xml has the following format:


<WCTBodResponseBuilderRegistry>
        <Noun name="Customer">
                <Verb name="Get">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ShowCustomer</ClassName>
                </Verb>
                <Verb name="Create">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmCustomer</ClassName>
                </Verb>
                <Verb name="Sync">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmCustomer</ClassName>
                </Verb>
        </Noun>
        <Noun name="SalesOrder">
                <Verb name="Get">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ShowSalesOrder</ClassName>
                </Verb>
                <Verb name="Create">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmSalesOrder</ClassName>
                </Verb>
                <Verb name="Sync">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmSalesOrder</ClassName>
                </Verb>
                <Verb name="Cancel">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmSalesOrder</ClassName>
                </Verb>
        </Noun>
        <Noun name="ElectronicCatalog">
                <Verb name="Get">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ShowElectronicCatalog</ClassName>
                </Verb>
        </Noun>
        <Noun name="Logon">
                <Verb name="Process">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.AcknowledgeLogon</ClassName>
                </Verb>
        </Noun>
        <Noun name="Return">
                <Verb name="Create">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmReturn</ClassName>
                </Verb>
        </Noun>
        <Noun name="Organization">
                <Verb name="Get">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ShowOrganization</ClassName>
                </Verb>
                <Verb name="Create">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmOrganization</ClassName>
                </Verb>
        </Noun>
        <Noun name="Comment">
                <Verb name="Create">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmComment</ClassName>
                </Verb>
                <Verb name="Get">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ShowComment</ClassName>
                </Verb>
                <Verb name="Sync">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmComment</ClassName>
                </Verb>
        </Noun>
        <Noun name="Quote">
                <Verb name="Create">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfrimQuote</ClassName>
                </Verb>
                <Verb name="Get">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ShowQuote</ClassName>
                </Verb>
                <Verb name="Sync">
                       
<ClassName>com.ibm.commerce.telesales.messaging.bodreply.ConfirmQuote</ClassName>
                </Verb>
        </Noun>
</WCTBodResponseBuilderRegistry>

The classes defined in the ClassName element must implement com.ibm.commerce.telesales.messaging.bodreply.ITelesalesResponseBuilder.