Skip to main content

How-to Guide - Soap API - CRM

Introduction

Search Customer

This service allows to get a list of customers matching the search criteria.

Request

Request Service Name

CRMCustomerDataService

Request Operation

searchCustomers

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
searchCustomersMandatoryComplex TypeThe root request element.
forenameOptionalText Value FilterA filter for 'Forename'.
surnameOptionalText Value FilterA filter for 'Surname'.
addressOptionalText Value FilterA filter for 'Address'.
postcodeOptionalText Value FilterA filter for 'PostCode'.
emailOptionalText Value FilterA filter for 'Email'.
phoneOptionalText Value FilterA filter for 'Phone'.
panOrReversePanOptionalText Value FilterA filter for 'Loyalty Number'.
distinctOptionalbooleanWhether to list distinct Customers or not.
maxRowsOptionalintMaximum number of items to return.
orderByColumnsOptionalComplex Type (Multiple Entries)Can be used to order the results using a given column.
orderByColumns → core:propertyNameOptionalstringThe column name to order the results by.
orderByColumns → core:sortOrderOptionalstringThe sorting order 'ASCENDING' or 'DESCENDING'.
pageInfoOptionalComplex TypePage information to be provided if results are required as a paginated list.
pageInfo → core:rowOffsetOptionalintThe row offset required of the pagination.
pageInfo → core:rowCountOptionalintThe row count required of the pagination.
suppressDefaultOrderByOptionalbooleanWhether to override the default ordering.

Response

Response Headers

There are no response headers.

Response Body

The response would contain all the elements of the request body and in addition would contain the customersList element that contains the search results.

ElementTypeDescription
customersListComplex TypeA single element returned from the search with details of customers matching the search criteria.
customerNumberlongThe customer number of the customer.
customerTitlestringThe title of the customer.
customerForenamestringThe first name of the customer.
customerSurnamestringThe surname of the customer.
addressStreet1stringThe street address of the customer.
addressStreet2stringThe line 2 of the Street Address of the customer.
addressStreet3stringThe line 3 of the Street Address of the customer.
addressTownstringThe town name of the customer's address.
addressProvincestringThe province name of the customer's address.
addressPostCodestringThe postcode of the customer's address.
privacyLevelintThe customer's privacy level.
phoneNumberstringThe phone number of the customer.
emailAddressstringThe email address of the customer.

Request & Response Examples

Request

Customer search using Name, Postcode and Phone Number as Amelia, SG143AG and 0777906111 respectively:

Request
<retail:searchCustomers xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/crm">
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>500</core:maxRows>
<core:orderByColumns>
<core:propertyName>customerName.surname</core:propertyName>
<core:sortOrder>ASCENDING</core:sortOrder>
</core:orderByColumns>
<core:orderByColumns>
<core:propertyName>customerName.forename</core:propertyName>
<core:sortOrder>ASCENDING</core:sortOrder>
</core:orderByColumns>
<core:pageInfo>
<core:rowOffset>0</core:rowOffset>
<core:rowCount>8</core:rowCount>
<core:totalRowCountLimit>0</core:totalRowCountLimit>
</core:pageInfo>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:forename>
<core:id>Forename</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>true</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:valueRequired>false</core:valueRequired>
</retail:forename>
<retail:surname>
<core:id>Surname</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>true</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:valueRequired>false</core:valueRequired>
</retail:surname>
<retail:address>
<core:id>Address</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>true</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>true</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:address>
<retail:postcode xsi:type="core:FormattedPostcodeValueFilter">
<core:id>SearchPostCode</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>true</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">SG143AG</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:postcode>
<retail:email>
<core:id>Email</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:email>
<retail:panOrReversePan>
<core:filters>
<core:MatchTextValueFilter>
<core:id>Pan</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</core:MatchTextValueFilter>
<core:ReversePanFilter>
<core:id>ReversePan</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</core:ReversePanFilter>
</core:filters>
<core:orFilters>true</core:orFilters>
<core:forceApplicable>false</core:forceApplicable>
<core:id>PanOrReversePan</core:id>
<core:fuzzyLevel>4</core:fuzzyLevel>
</retail:panOrReversePan>
<retail:phone>
<core:id>Phone</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">0777906111</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:phone>
<retail:nameSearch>
<core:id>NameSearch</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>true</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Amelia</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:nameSearch>
</retail:criteria>
<retail:pageSize>8</retail:pageSize>
</retail:searchCustomers>

Response

Following is the response for above Search Customer request:

Response
<retail:searchCustomersResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns7="http://www.enactor.com/crm">
<retail:criteria>
<core:distinct>true</core:distinct>
<core:maxRows>500</core:maxRows>
<core:orderByColumns>
<core:propertyName>customerName.surname</core:propertyName>
<core:sortOrder>ASCENDING</core:sortOrder>
</core:orderByColumns>
<core:orderByColumns>
<core:propertyName>customerName.forename</core:propertyName>
<core:sortOrder>ASCENDING</core:sortOrder>
</core:orderByColumns>
<core:pageInfo>
<core:rowOffset>0</core:rowOffset>
<core:rowCount>8</core:rowCount>
<core:totalRowCountLimit>0</core:totalRowCountLimit>
</core:pageInfo>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:forename>
<core:id>Forename</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>true</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:valueRequired>false</core:valueRequired>
</retail:forename>
<retail:surname>
<core:id>Surname</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>true</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:valueRequired>false</core:valueRequired>
</retail:surname>
<retail:address>
<core:id>Address</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>true</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>true</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:address>
<retail:postcode xsi:type="core:FormattedPostcodeValueFilter">
<core:id>SearchPostCode</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>true</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">SG143AG</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:postcode>
<retail:email>
<core:id>Email</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:email>
<retail:panOrReversePan>
<core:filters>
<core:MatchTextValueFilter>
<core:id>Pan</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</core:MatchTextValueFilter>
<core:ReversePanFilter>
<core:id>ReversePan</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</core:ReversePanFilter>
</core:filters>
<core:orFilters>true</core:orFilters>
<core:forceApplicable>false</core:forceApplicable>
<core:id>PanOrReversePan</core:id>
<core:fuzzyLevel>4</core:fuzzyLevel>
</retail:panOrReversePan>
<retail:phone>
<core:id>Phone</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">0777906111</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:phone>
<retail:nameSearch>
<core:id>NameSearch</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>true</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:messageBaseName>CRM/CustomerMaintenanceMessages</core:messageBaseName>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>true</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">AMELIA</core:value>
</core:supportValues>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">AMELIA</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:nameSearch>
</retail:criteria>
<retail:customersList>
<core:currentPage>-1</core:currentPage>
<core:rowOffset>0</core:rowOffset>
<core:pageSize>8</core:pageSize>
<core:totalPages>-1</core:totalPages>
<core:totalRows>1</core:totalRows>
<retail:elements>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:customerTitle/>
<retail:customerForename>Amelia</retail:customerForename>
<retail:customerSurname>Baldwin</retail:customerSurname>
<retail:addressStreet1>137 Newport Road</retail:addressStreet1>
<retail:addressStreet2/>
<retail:addressStreet3/>
<retail:addressTown>Hertford</retail:addressTown>
<retail:addressProvince/>
<retail:addressPostCode>SG14 3AG</retail:addressPostCode>
<retail:pan>14420000</retail:pan>
<retail:privacyLevel>0</retail:privacyLevel>
<retail:phoneNumber>0777906111</retail:phoneNumber>
<retail:emailAddress>abaldwin@enactordata.co</retail:emailAddress>
<retail:countryCode>+44</retail:countryCode>
<retail:additionalData xsi:type="core:WrappedMap">
<core:mapImplClass>java.util.LinkedHashMap</core:mapImplClass>
</retail:additionalData>
</retail:element>
</retail:elements>
</retail:customersList>
</retail:searchCustomersResponse>

Load Customer Details

This service will load all the details of a customer.

Request

Request Service Name

CRMCustomerDataService

Request Operation

loadCRMCustomer

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
loadCustomerMandatoryComplex TypeThe root request element.
customerNumberMandatoryLongThe Customer number of the Customer to be loaded.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
customerComplex TypeObject that contains the customer's details.
addressesComplex TypeObject that contains all the addresses of the requested customer.
contactableboolenIf set to true customer is contactable.
noChildrenIntNumber of children of the requested customer.
customerNumberStringThe unique number of the requested customer.
emailAddressesComplex TypeObject that contains all the email addresses of the requested customer.
phoneNumbersComplex TypeObject that contains all the phone numbers of the requested customer.
customerNameComplex TypeObject that contains all the customer's name details of the requested customer.
employeeKeyComplex TypeObject that contains all the employee related details of the requested customer.
lastUpdatedDateTimeThe last updated date and time of the requested customer.
customerTypeComplex TypeObject that contains all the customer type related details of the requested customer.
createdByComplex TypeObject that contains the created by user's details of the requested customer.
createdAtComplex TypeObject that contains the created at user's details of the requested customer.
statusStringThe current status of the requested customer.

Request & Response Examples

Request

Request to load customer details of the customer with the customer number 100:

<ns:loadCRMCustomer xmlns:ns="http://www.enactor.com/crm/service">
<retail:loadCustomer xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/crm">
<retail:customerNumber>100</retail:customerNumber>
</retail:loadCustomer>
</ns:loadCRMCustomer>

Response

Following is the response for above load customer details request:

Response
<ns:loadCRMCustomerResponse xmlns:ns="http://www.enactor.com/crm/service">
<retail:loadCustomerResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns7="http://www.enactor.com/crm">
<retail:customer>
<retail:addresses>
<retail:address>
<retail:country>United Kingdom</retail:country>
<retail:countryCodeId>GBR</retail:countryCodeId>
<retail:isPreferred>false</retail:isPreferred>
<retail:organisation>ENACTOR ON DEMAND LIMITED</retail:organisation>
<retail:isActive>true</retail:isActive>
<retail:typeId>ADDRESS_HOME</retail:typeId>
<retail:county>Hertfordshire County</retail:county>
<retail:postCode>SG141PB</retail:postCode>
<retail:street1>1 Bluecoats Avenue</retail:street1>
<retail:street2>SG14 1PB</retail:street2>
<retail:town>Hertford</retail:town>
<retail:isTemplate>false</retail:isTemplate>
<retail:referenceId/>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:addressReferenceId>da67-:a712f3c9391:054dea51-:aec93da5748c4f4b</retail:addressReferenceId>
</retail:address>
<retail:address>
<retail:country>United Kingdom</retail:country>
<retail:countryCodeId>GBR</retail:countryCodeId>
<retail:isPreferred>false</retail:isPreferred>
<retail:organisation>Enactor</retail:organisation>
<retail:isActive>true</retail:isActive>
<retail:typeId>ADDRESS_OTHER</retail:typeId>
<retail:county>Hertfordshire</retail:county>
<retail:postCode>SG141PB</retail:postCode>
<retail:street1>1 Enactor House</retail:street1>
<retail:street2>Bluecoats Avenue</retail:street2>
<retail:town>Hertford</retail:town>
<retail:isTemplate>false</retail:isTemplate>
<retail:referenceId/>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:addressReferenceId>b967-:a712f3c9391:054dea51-:aec93da5748c4f4b</retail:addressReferenceId>
</retail:address>
<retail:address>
<retail:country>United Kingdom</retail:country>
<retail:countryCodeId>GBR</retail:countryCodeId>
<retail:isPreferred>true</retail:isPreferred>
<retail:isActive>true</retail:isActive>
<retail:typeId>ADDRESS_WORK</retail:typeId>
<retail:county>Hertfordshire</retail:county>
<retail:postCode>SG14 3AG</retail:postCode>
<retail:street1>137 Newport Road</retail:street1>
<retail:town>Hertford</retail:town>
<retail:isTemplate>false</retail:isTemplate>
<retail:referenceId/>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:addressReferenceId>dc44-:84584e2d391:c2ff9b93-:ccd752587f6609fd</retail:addressReferenceId>
</retail:address>
<retail:address>
<retail:country>UK</retail:country>
<retail:countryCodeId/>
<retail:isPreferred>false</retail:isPreferred>
<retail:organisation>Enactor Limited</retail:organisation>
<retail:typeId>ADDRESS WORK</retail:typeId>
<retail:county>Hertfordshire</retail:county>
<retail:street1>1 Bluecoats Avenue</retail:street1>
<retail:town>Hertord</retail:town>
<retail:isTemplate>false</retail:isTemplate>
<retail:referenceId/>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:addressReferenceId>NBJURG3HWBEFNFBBWAJGSD75YM</retail:addressReferenceId>
</retail:address>
</retail:addresses>
<retail:contactMethod>METHOD_LETTER</retail:contactMethod>
<retail:contactMethodNotes/>
<retail:contactable>false</retail:contactable>
<retail:maritalStatus>Married</retail:maritalStatus>
<retail:nationality/>
<retail:noChildren>2</retail:noChildren>
<retail:customerNumber>100</retail:customerNumber>
<retail:emailAddresses>
<retail:emailAddress>abaldwin@enactordata.co</retail:emailAddress>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:preferred>true</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>EMAIL_HOME</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:emailAddressReferenceId>94e1:4b85c97d391:6220d735-:c5e90fac83025722</retail:emailAddressReferenceId>
</retail:emailAddresses>
<retail:phoneNumbers>
<retail:countryCode>+44</retail:countryCode>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:number>0777906111</retail:number>
<retail:preferred>true</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>PHONE_MOBILE</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:phoneNumberReferenceId>d6e7-:d7890f87391:22dd5251-:cb40bc388d5b2503</retail:phoneNumberReferenceId>
</retail:phoneNumbers>
<retail:phoneNumbers>
<retail:countryCode>+94</retail:countryCode>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:number>071 123 4567</retail:number>
<retail:preferred>false</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>PHONE_MOBILE</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:phoneNumberReferenceId>b7e7-:c5eda369391:6074cec5:3e557c56876c70ee</retail:phoneNumberReferenceId>
</retail:phoneNumbers>
<retail:phoneNumbers>
<retail:countryCode>+44</retail:countryCode>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:number>0741203066</retail:number>
<retail:preferred>false</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>PHONE_WORK</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:phoneNumberReferenceId>f0d7-:c5eda369391:6074cec5:3e557c56876c70ee</retail:phoneNumberReferenceId>
</retail:phoneNumbers>
<retail:phoneNumbers>
<retail:countryCode>+94</retail:countryCode>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:number>071 123 4567</retail:number>
<retail:preferred>false</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>PHONE_MOBILE</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:phoneNumberReferenceId>1c44-:84584e2d391:c2ff9b93-:ccd752587f6609fd</retail:phoneNumberReferenceId>
</retail:phoneNumbers>
<retail:customerName>
<retail:surname>Baldwin</retail:surname>
<retail:forename>Amelia</retail:forename>
</retail:customerName>
<retail:businessContactMethod>METHOD_EMAIL</retail:businessContactMethod>
<retail:preferredContactTime/>
<retail:employeeKey/>
<retail:lastUpdated>2025-01-31T08:10:24Z</retail:lastUpdated>
<retail:customerType/>
<retail:organisation/>
<retail:taxIdentification/>
<retail:companyNumber/>
<retail:createdBy/>
<retail:createdAt/>
<retail:status>Active</retail:status>
<retail:source/>
<retail:password/>
</retail:customer>
</retail:loadCustomerResponse>
</ns:loadCRMCustomerResponse>

Get Customer Details

This service will get all the basic details of a customer which includes personal details, contact details, jobs, loyalty details, customer groups and appointments.

Request

Request Service Name

CRMCustomerDataService

Request Operation

getCustomerDetails

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
getCustomerDetailsMandatoryComplex TypeThe root request element.
deviceIdOptionalStringDevice ID of the device which has requested the Customer details.
userIdMandatoryStringThe User ID of the user who has requested the Customer details in the POS.
CustomerNumberMandatoryStringThe Customer Number for which details are required.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
contactMethodListComplex TypeList of selected Contact Methods.
contactMethodList → descriptionStringThe description of the contact methods. Usually, the values will be:
- Email
- In Store
- Letter
- Phone
contactMethodList → typeStringThe contact type of the communication preferences. Default is set to 'METHOD'.
contactMethodList → contactTypeIdStringThis is set according to the preference details:
- METHOD_EMAIL
- METHOD_IN_STORE
- METHOD_LETTER
- METHOD_PHONE
CustomerCustomerGroupListComplex TypeDetails of the customer group that the customer is associated to.
customerLoyaltyDetailResponseComplex TypeDetails of the loyalty details of the customer who has been retrieved.
customerLoyaltyDetailResponse → accountIdStringThe customer's Loyalty Account details.
customerLoyaltyDetailResponse → customerNumberLongThe customer number of the customer found.
customerLoyaltyDetailResponse → lastTransactionDateDateTimeThe date of the last transaction that contained the customer loyalty account.
customerLoyaltyDetailResponse → lastTransactionDescStringThe description of the last transaction that contained the customer loyalty account.
customerLoyaltyDetailResponse → lastTransactionValueStringThe value of the last transaction that contained the customer loyalty account.
customerLoyaltyDetailResponse → rewardNumberStringThe loyalty card number of the selected customer.
customerLoyaltyDetailResponse → accountStatusIdStringThe Loyalty account status ID of the selected customer. Default values:
- Active
- New
- Suspended
- Closed
Setting this value is not a POS functionality.
customerLoyaltyDetailResponse → accountStatusDescStringThe Loyalty account status description of the selected customer. Default values:
- Active
- New
- Suspended
- Closed
Setting this value is not a POS functionality. The POS will only display the status which was saved from the EM.
customerLoyaltyDetailResponse → rewardTierStringThe Loyalty Scheme Tier ID details will be displayed. This is based on the loyalty schema selection during loyalty customer creation. Not a POS CRM function; only displays created details.
customerLoyaltyDetailResponse → rewardTierDescStringThe Loyalty Scheme Tier Description will be displayed. This is based on the loyalty tier selection during loyalty customer creation. Not a POS CRM function; only displays created details.
customerLoyaltyDetailResponse → redemptionBalanceIntThe redemption balance amount of the loyalty customer.
customerLoyaltyDetailResponse → loyaltySchemeIdStringThe Loyalty Scheme ID will be displayed. Based on loyalty schema selection during customer creation. Not a POS CRM function; only displays created details.
customerLoyaltyDetailResponse → loyaltySchemeDescStringThe Loyalty Scheme Description will be displayed. Based on loyalty tier selection during customer creation. Not a POS CRM function; only displays created details.
latestContactComplex TypeNot applicable to CRM POS Functions.
latestContact → contactDateDateTimeNot applicable to CRM POS Functions.
latestContact → referenceIdStringNot applicable to CRM POS Functions.
latestContact → referenceTypeStringNot applicable to CRM POS Functions.
latestContact → reasonIdStringNot applicable to CRM POS Functions.
latestContact → reasonId → reasonIdStringNot applicable to CRM POS Functions.
latestContact → reasonId → regionIdStringNot applicable to CRM POS Functions.
latestContact → deviceIdStringNot applicable to CRM POS Functions.
latestContact → locationIdStringNot applicable to CRM POS Functions.
latestContact → subjectStringNot applicable to CRM POS Functions.
latestContact → contactHistoryIdStringNot applicable to CRM POS Functions.
latestContact → customerContactTypeIdStringNot applicable to CRM POS Functions.
latestContact → customerIdStringNot applicable to CRM POS Functions.
latestContact → descriptionStringNot applicable to CRM POS Functions.
latestContact → lastUpdatedStringNot applicable to CRM POS Functions.
latestContact → userIdStringNot applicable to CRM POS Functions.

Request & Response Examples

Request

Request to get customer details of the customer with the customer number 100:

<retail:getCustomerDetails xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/crm">
<core:deviceId>pos10@0005.enactor</core:deviceId>
<core:userId>000101</core:userId>
<retail:customerNumber>100</retail:customerNumber>
</retail:getCustomerDetails>

Response

Following is the response for above get customer details request:

Response
<retail:getCustomerDetailsResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns7="http://www.enactor.com/crm">
<retail:contactMethodList>
<core:currentPage>-1</core:currentPage>
<core:rowOffset>0</core:rowOffset>
<core:pageSize>0</core:pageSize>
<core:totalPages>-1</core:totalPages>
<core:totalRows>-1</core:totalRows>
<retail:elements>
<retail:element>
<retail:description>Email</retail:description>
<retail:type>METHOD</retail:type>
<retail:contactTypeId>METHOD_EMAIL</retail:contactTypeId>
</retail:element>
<retail:element>
<retail:description>In Store</retail:description>
<retail:type>METHOD</retail:type>
<retail:contactTypeId>METHOD_IN_STORE</retail:contactTypeId>
</retail:element>
<retail:element>
<retail:description>Letter</retail:description>
<retail:type>METHOD</retail:type>
<retail:contactTypeId>METHOD_LETTER</retail:contactTypeId>
</retail:element>
<retail:element>
<retail:description>Phone</retail:description>
<retail:type>METHOD</retail:type>
<retail:contactTypeId>METHOD_PHONE</retail:contactTypeId>
</retail:element>
</retail:elements>
</retail:contactMethodList>
<retail:customerCustomerGroupList>
<core:currentPage>-1</core:currentPage>
<core:rowOffset>0</core:rowOffset>
<core:pageSize>0</core:pageSize>
<core:totalPages>-1</core:totalPages>
<core:totalRows>-1</core:totalRows>
<retail:elements>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:groupTypeId>customerGroup</retail:groupTypeId>
<retail:groupId>VIP</retail:groupId>
<retail:groupHierarchyId>CUSTOMER</retail:groupHierarchyId>
<retail:variantGroupTypeId>region</retail:variantGroupTypeId>
<retail:variantGroupId>All</retail:variantGroupId>
<retail:variantGroupHierarchyId>All</retail:variantGroupHierarchyId>
</retail:element>
</retail:elements>
</retail:customerCustomerGroupList>
<retail:customerLoyaltyDetailResponse>
<ns4:accountId>200</ns4:accountId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:lastTransactionDate>2025-02-12T16:46:43Z</ns4:lastTransactionDate>
<ns4:lastTransactionDesc>Laptops</ns4:lastTransactionDesc>
<ns4:lastTransactionValue>110500</ns4:lastTransactionValue>
<ns4:rewardNumber>14420000</ns4:rewardNumber>
<ns4:accountStatusId>ACTIVE</ns4:accountStatusId>
<ns4:accountStatusDesc>ACTIVE</ns4:accountStatusDesc>
<ns4:rewardTier>UK3</ns4:rewardTier>
<ns4:rewardTierDesc>Gold</ns4:rewardTierDesc>
<ns4:pointsBalance>75321</ns4:pointsBalance>
<ns4:redemptionBalance>15064200</ns4:redemptionBalance>
<ns4:pointsDate>2025-02-12T16:46:42Z</ns4:pointsDate>
<ns4:loyaltySchemeId>LOYALTY_UK</ns4:loyaltySchemeId>
<ns4:loyaltySchemeDesc>Loyalty Scheme UK</ns4:loyaltySchemeDesc>
</retail:customerLoyaltyDetailResponse>
<retail:latestAppointment>
<core:entryId>0597-:bcd164ca491:9432ce94:eadda0c3e23e3d67</core:entryId>
<core:subject>Test NOT Hide Diary View</core:subject>
<core:date>
<core:endTime second="0" minute="0" hour="9"/>
<core:recurrenceType>NONE</core:recurrenceType>
<core:startDate>2025-02-27T18:30:00Z</core:startDate>
<core:startTime second="0" minute="0" hour="8"/>
</core:date>
<core:type>customerAppointment</core:type>
<core:hidden>true</core:hidden>
<core:lastUpdated>2025-01-28T09:41:31Z</core:lastUpdated>
<core:dateTimeCreated>2025-01-28T09:41:31.382Z</core:dateTimeCreated>
<core:ownerId>000101</core:ownerId>
<core:details>Test NOT Hide Diary View - Description</core:details>
<core:contactTypeId>APPOINT_CUST_BUS</core:contactTypeId>
<core:customerId>100</core:customerId>
</retail:latestAppointment>
<retail:latestContact>
<retail:contactDate>2025-02-12T16:46:43Z</retail:contactDate>
<retail:referenceId/>
<retail:referenceType>RetailTransaction</retail:referenceType>
<retail:reasonId>
<retail:reasonId/>
<retail:regionId groupHierarchyId="" groupTypeId=""/>
</retail:reasonId>
<retail:deviceId>mpos_trunk@0001.enactor</retail:deviceId>
<retail:locationId>0001</retail:locationId>
<retail:subject>Normal Retail Sale Transaction</retail:subject>
<retail:contactHistoryId>d831-:a8ba1eaf491:c7dd2df7:9d7030a0425e7264</retail:contactHistoryId>
<retail:customerContactTypeId>STORE_SALE</retail:customerContactTypeId>
<retail:customerId>100</retail:customerId>
<retail:description>Normal Retail Sale Transaction</retail:description>
<retail:lastUpdated>2025-02-12T16:49:03Z</retail:lastUpdated>
<retail:userId>1</retail:userId>
</retail:latestContact>
</retail:getCustomerDetailsResponse>

Get Customer Relationships

This service will allow to load the relationship details of a customer.

Request Service Name

CRMCustomerDataService

Request Operation

getCustomerRelationships

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
getCustomerRelationshipsMandatoryComplex TypeThe root request element.
retail:criteriaOptionalComplex TypeA complex element with the Customer relationship details.
Criteria → distinctOptionalbooleanWhether to list distinct Customers or not.
Criteria → maxRowsOptionalintMaximum number of items to return.
Criteria → suppressDefaultOrderByOptionalbooleanWhether to override the default ordering.
Criteria → CustomerNumberOptionalComplex TypeA complex element with the Customer Number details.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
CustomerNumberLongThe Customer number of the Customer found.
CustomerRelationshipEntryComplex TypeA complex element with the Customer relationship details.
CustomerRelationshipEntry → relatedCustomerNumberStringThe Customer number of the related Customer.
CustomerRelationshipEntry → relatedCustomerTitleStringThe title of the related Customer.
CustomerRelationshipEntry → relatedCustomerForenameStringThe first name of the related Customer.
CustomerRelationshipEntry → relatedCustomerSurnameStringThe surname of the related Customer.
CustomerRelationshipEntry → relationshipTypeIdStringType of the relationship to the Customer, which will be one of the following:
- Child
- Marriage
- Parent
- Sibling
CustomerRelationshipEntry → relationshipIdNot applicable to CRM POS Functions.

Request & Response Examples

Request

Request to get customer relationship details of the customer with the customer number 100:

Request
<retail:getCustomerRelationships xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/addressLookup/service">
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:customerNumber xsi:type="core:TextValueFilter">
<core:ID>CustomerNumber</core:ID>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:customerNumber>
</retail:criteria>
</retail:getCustomerRelationships>

Response

Following is an example response for Get Customer Relationships request:

Response
<retail:getCustomerDetailsResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns7="http://www.enactor.com/crm">
<retail:contactMethodList>
<core:currentPage>-1</core:currentPage>
<core:rowOffset>0</core:rowOffset>
<core:pageSize>0</core:pageSize>
<core:totalPages>-1</core:totalPages>
<core:totalRows>-1</core:totalRows>
<retail:elements>
<retail:element>
<retail:description>Email</retail:description>
<retail:type>METHOD</retail:type>
<retail:contactTypeId>METHOD_EMAIL</retail:contactTypeId>
</retail:element>
<retail:element>
<retail:description>In Store</retail:description>
<retail:type>METHOD</retail:type>
<retail:contactTypeId>METHOD_IN_STORE</retail:contactTypeId>
</retail:element>
<retail:element>
<retail:description>Letter</retail:description>
<retail:type>METHOD</retail:type>
<retail:contactTypeId>METHOD_LETTER</retail:contactTypeId>
</retail:element>
<retail:element>
<retail:description>Phone</retail:description>
<retail:type>METHOD</retail:type>
<retail:contactTypeId>METHOD_PHONE</retail:contactTypeId>
</retail:element>
</retail:elements>
</retail:contactMethodList>
<retail:customerCustomerGroupList>
<core:currentPage>-1</core:currentPage>
<core:rowOffset>0</core:rowOffset>
<core:pageSize>0</core:pageSize>
<core:totalPages>-1</core:totalPages>
<core:totalRows>-1</core:totalRows>
<retail:elements>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:groupTypeId>customerGroup</retail:groupTypeId>
<retail:groupId>VIP</retail:groupId>
<retail:groupHierarchyId>CUSTOMER</retail:groupHierarchyId>
<retail:variantGroupTypeId>region</retail:variantGroupTypeId>
<retail:variantGroupId>All</retail:variantGroupId>
<retail:variantGroupHierarchyId>All</retail:variantGroupHierarchyId>
</retail:element>
</retail:elements>
</retail:customerCustomerGroupList>
<retail:customerLoyaltyDetailResponse>
<ns4:accountId>200</ns4:accountId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:lastTransactionDate>2025-02-12T16:46:43Z</ns4:lastTransactionDate>
<ns4:lastTransactionDesc>Laptops</ns4:lastTransactionDesc>
<ns4:lastTransactionValue>110500</ns4:lastTransactionValue>
<ns4:rewardNumber>14420000</ns4:rewardNumber>
<ns4:accountStatusId>ACTIVE</ns4:accountStatusId>
<ns4:accountStatusDesc>ACTIVE</ns4:accountStatusDesc>
<ns4:rewardTier>UK3</ns4:rewardTier>
<ns4:rewardTierDesc>Gold</ns4:rewardTierDesc>
<ns4:pointsBalance>75321</ns4:pointsBalance>
<ns4:redemptionBalance>15064200</ns4:redemptionBalance>
<ns4:pointsDate>2025-02-12T16:46:42Z</ns4:pointsDate>
<ns4:loyaltySchemeId>LOYALTY_UK</ns4:loyaltySchemeId>
<ns4:loyaltySchemeDesc>Loyalty Scheme UK</ns4:loyaltySchemeDesc>
</retail:customerLoyaltyDetailResponse>
<retail:latestAppointment>
<core:entryId>0597-:bcd164ca491:9432ce94:eadda0c3e23e3d67</core:entryId>
<core:subject>Test NOT Hide Diary View</core:subject>
<core:date>
<core:endTime second="0" minute="0" hour="9"/>
<core:recurrenceType>NONE</core:recurrenceType>
<core:startDate>2025-02-27T18:30:00Z</core:startDate>
<core:startTime second="0" minute="0" hour="8"/>
</core:date>
<core:type>customerAppointment</core:type>
<core:hidden>true</core:hidden>
<core:lastUpdated>2025-01-28T09:41:31Z</core:lastUpdated>
<core:dateTimeCreated>2025-01-28T09:41:31.382Z</core:dateTimeCreated>
<core:ownerId>000101</core:ownerId>
<core:details>Test NOT Hide Diary View - Description</core:details>
<core:contactTypeId>APPOINT_CUST_BUS</core:contactTypeId>
<core:customerId>100</core:customerId>
</retail:latestAppointment>
<retail:latestContact>
<retail:contactDate>2025-02-12T16:46:43Z</retail:contactDate>
<retail:referenceId/>
<retail:referenceType>RetailTransaction</retail:referenceType>
<retail:reasonId>
<retail:reasonId/>
<retail:regionId groupHierarchyId="" groupTypeId=""/>
</retail:reasonId>
<retail:deviceId>mpos_trunk@0001.enactor</retail:deviceId>
<retail:locationId>0001</retail:locationId>
<retail:subject>Normal Retail Sale Transaction</retail:subject>
<retail:contactHistoryId>d831-:a8ba1eaf491:c7dd2df7:9d7030a0425e7264</retail:contactHistoryId>
<retail:customerContactTypeId>STORE_SALE</retail:customerContactTypeId>
<retail:customerId>100</retail:customerId>
<retail:description>Normal Retail Sale Transaction</retail:description>
<retail:lastUpdated>2025-02-12T16:49:03Z</retail:lastUpdated>
<retail:userId>1</retail:userId>
</retail:latestContact>
</retail:getCustomerDetailsResponse>

Save Customer Relationships

This service allows saving the relationship details of a customer.

Request Service Name


CRMCustomerDataService

Request Operation


saveCustomerRelationships

Request Endpoint


http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
userComplex TypeContains user entity details of the requesting user.
entityComplex TypeContains address, customerId, name, related customer, relationshipId and relationshipTypeId details of the new entity to be saved as the new relationship.
entity → addressComplex TypeSet of addresses of the Customer.
entity → customerIdComplex TypeContains the ID of the customer.
entity → nameComplex TypeContains customer name related details.
entity → relatedCustomerKeyComplex TypeContains the ID of the related customer whose relationship is to be changed.
entity → relationshipIdStringNot applicable to CRM POS Functions.
entity → relationshipTypeIdComplex TypeType of the relationship to the Customer, which will be one of the following:
- Child
- Marriage
- Parent
- Sibling
noPopN/ANot applicable to CRM POS Functions.
deviceKeyN/ANot applicable to CRM POS Functions.
locationKeyN/ANot applicable to CRM POS Functions.
lacaleN/ANot applicable to CRM POS Functions.
lacale → languageN/ANot applicable to CRM POS Functions.
lacale → countryN/ANot applicable to CRM POS Functions.
lacale → variantN/ANot applicable to CRM POS Functions.
lacale → descriptionN/ANot applicable to CRM POS Functions.
lacale → lastUpdatedN/ANot applicable to CRM POS Functions.
isNewRelationshipBooleanFalse if this is an update of an existing relationship, else true for a new relationship.
updateTimeDateTimeTime that the relationship is saved.
oldEntityComplex TypeContains address, customerId, name, related customer, relationshipId and relationshipTypeId details of the old entity before saving new relationship.
oldEntity → addressComplex TypeSet of addresses of the Customer.
oldEntity → customerIdComplex TypeContains the ID of the customer.
oldEntity → nameComplex TypeContains customer name related details.
oldEntity → relatedCustomerKeyComplex TypeContains the ID of the related customer whose relationship is to be changed.
oldEntity → relationshipIdStringNot applicable to CRM POS Functions.
oldEntity → relationshipTypeIdComplex TypeType of the relationship to the Customer, which will be one of the following:
- Child
- Marriage
- Parent
- Sibling

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
entityComplex TypeContains address, customerId, name, related customer, relationshipId and relationshipTypeId details of the new entity saved as the new relationship.
entity → addressComplex TypeSet of addresses of the Customer.
entity → customerIdComplex TypeContains the ID of the customer.
entity → lastUpdatedDateTimeDate time that the relationship is saved.
entity → nameComplex TypeContains customer name related details.
entity → relatedCustomerKeyComplex TypeContains the ID of the related customer whose relationship is to be changed.
entity → relationshipIdStringNot applicable to CRM POS Functions.
entity → relationshipTypeIdComplex TypeType of the relationship to the Customer, which will be one of the following:
- Child
- Marriage
- Parent
- Sibling

Request & Response Examples

Request

Request to save customer relationship details of the customer 100 as spouse of customer 101:

Request
<retail:saveCustomerRelationship xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/crm">
<retail:user>
<retail:dateTimeActivated>2021-05-18T01:00:42+05:30</retail:dateTimeActivated>
<retail:displayName>Hertford Manager</retail:displayName>
<retail:employeeId/>
<retail:localeId variant="" country="GB">en</retail:localeId>
<retail:locationId>0001</retail:locationId>
<retail:password>lNBrhb6ALqsxA3DWMAe/zgW5cy6o+8TEXeU2oY2G0rQ=lQ4KSvqYhYk=</retail:password>
<retail:passwordLastChanged>2024-11-21T14:59:50.373+05:30</retail:passwordLastChanged>
<retail:forceChangePassword>false</retail:forceChangePassword>
<retail:strongPassword>false</retail:strongPassword>
<retail:previousPasswords>
<retail:password>oqW83Innq91Uiz9c3RcjpvvNMNd84Qg9ZeYZ5nwVxX4=r5XlmzAySDw=</retail:password>
</retail:previousPasswords>
<retail:shortId>00010100</retail:shortId>
<retail:address>
<retail:countryCodeId/>
<retail:typeId/>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:userId>000101</retail:userId>
<retail:userName>
<retail:surname>Hertford Manager</retail:surname>
<retail:forename>000101</retail:forename>
<retail:initials>JS</retail:initials>
<retail:dateOfBirth>1966-03-13T05:30:00+05:30</retail:dateOfBirth>
</retail:userName>
<retail:teamId>TEAM</retail:teamId>
<retail:timePeriod>
<core:dayOfWeek>1</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>2</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>3</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>4</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>5</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>6</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>7</core:dayOfWeek>
</retail:timePeriod>
<retail:singleSignOnUserId/>
<retail:singleSignOnCommonName/>
<retail:lastUpdated>2024-12-20T13:30:22.904+05:30</retail:lastUpdated>
<retail:fiscalUserReference/>
<retail:templateKey>STORE_MANAGER_UK</retail:templateKey>
<retail:isTemplate>false</retail:isTemplate>
<retail:emailAccountName>enactor.test@gmail.com</retail:emailAccountName>
<retail:emailAddress>enactor.test@gmail.com</retail:emailAddress>
<retail:emailEncryptedPassword>smG+rsrfBuKrdaJPv30rhg==</retail:emailEncryptedPassword>
</retail:user>
<retail:entity>
<retail:address>
<retail:countryCodeId/>
<retail:typeId/>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:customerId>100</retail:customerId>
<retail:name>
<retail:surname>Dobson</retail:surname>
<retail:forename>Benjamin</retail:forename>
<retail:initials>BD</retail:initials>
<retail:title>Mr</retail:title>
<retail:sex>MALE</retail:sex>
</retail:name>
<retail:relatedCustomerKey>101</retail:relatedCustomerKey>
<retail:relationshipId>19c2:32c94b68491:9244576:05cf6bdd1a6304b1</retail:relationshipId>
<retail:relationshipTypeId>MARRIAGE</retail:relationshipTypeId>
</retail:entity>
<retail:noPop>false</retail:noPop>
<retail:deviceKey>pos10@0005.enactor</retail:deviceKey>
<retail:locationKey>0005</retail:locationKey>
<retail:lacale>
<core:language>en</core:language>
<core:country>GB</core:country>
<core:variant/>
<core:description>English (UK)</core:description>
<core:lastUpdated>2024-10-01T15:02:33.703+05:30</core:lastUpdated>
</retail:lacale>
<retail:isNewRelationship>false</retail:isNewRelationship>
<retail:updateTime>2025-02-13T15:21:20.391+05:30</retail:updateTime>
<retail:oldEntity>
<retail:address>
<retail:countryCodeId/>
<retail:typeId/>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:customerId>100</retail:customerId>
<retail:name>
<retail:surname>Dobson</retail:surname>
<retail:forename>Benjamin</retail:forename>
<retail:title>Mr</retail:title>
</retail:name>
<retail:relatedCustomerKey>101</retail:relatedCustomerKey>
<retail:relationshipId>19c2:32c94b68491:9244576:05cf6bdd1a6304b1</retail:relationshipId>
<retail:relationshipTypeId/>
</retail:oldEntity>
</retail:saveCustomerRelationship>

Response

Following is an example response for Save Customer Relationships request where customer 100 is saved as a spouse of customer 101:

Response
<retail:saveCustomerRelationshipResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns7="http://www.enactor.com/crm">
<retail:entity>
<retail:address>
<retail:countryCodeId/>
<retail:typeId/>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:customerId>100</retail:customerId>
<retail:lastUpdated>2025-02-13T09:51:22Z</retail:lastUpdated>
<retail:name>
<retail:surname>Dobson</retail:surname>
<retail:forename>Benjamin</retail:forename>
<retail:initials>BD</retail:initials>
<retail:title>Mr</retail:title>
<retail:sex>MALE</retail:sex>
</retail:name>
<retail:relatedCustomerKey>101</retail:relatedCustomerKey>
<retail:relationshipId>19c2:32c94b68491:9244576:05cf6bdd1a6304b1</retail:relationshipId>
<retail:relationshipTypeId>MARRIAGE</retail:relationshipTypeId>
</retail:entity>
</retail:saveCustomerRelationshipResponse>

Get Affiliated Customer

This service will get all the details of the affiliated customers associated to the requested user.

Request

Request Service Name

CustomerService

Request Operation

getAffiliatedCustomer

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CustomerService

Request Body

ElementMandatory / OptionalTypeDescription
userKeyMandatoryComplex TypeContains the ID of the POS user.
criteriaOptionalComplex TypeContains filter criteria options.
criteria → suppressDefaultOrderByOptionalbooleanWhether to override the default ordering.
criteria → maxRowsOptionalintMaximum number of rows to return.
criteria → distinctOptionalbooleanWhether to return only the distinct values.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
listComplex TypeProvides a list of the customers affiliated with the requested user.
propertyNamesComplex TypeThe names of the properties that are part of the response.

Request & Response Examples

Request

Request to get affiliated customer details of the user with the user ID of 000101:

<retail:getAffiliatedCustomer xmlns:retail="http://www.enactor.com/retail" xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core">
<retail:userKey>000101</retail:userKey>
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
</retail:criteria>
</retail:getAffiliatedCustomer>

Response

Following is an example response for Get Affiliated Customer request:

Response
<retail:getAffiliatedCustomerResponse xmlns:retail="http://www.enactor.com/retail" xmlns:ns6="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core">
<retail:list>
<core:key xsi:type="retail:CustomerKey">100</core:key>
<core:data>
<core:values>
<core:arrayObject xsi:type="core:WrappedPrimitive">
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</core:value>
</core:arrayObject>
<core:arrayObject xsi:type="core:WrappedNull"/>
<core:arrayObject xsi:type="core:WrappedPrimitive">
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">true</core:value>
</core:arrayObject>
<core:arrayObject xsi:type="core:String"/>
<core:arrayObject xsi:type="core:String">DIRECT</core:arrayObject>
<core:arrayObject xsi:type="core:String">100</core:arrayObject>
<core:arrayObject xsi:type="core:WrappedNull"/>
<core:arrayObject xsi:type="core:String">Amelia</core:arrayObject>
<core:arrayObject xsi:type="core:String">Baldwin</core:arrayObject>
<core:arrayObject xsi:type="core:String">14420000</core:arrayObject>
</core:values>
</core:data>
<retail:data>
<entry>
<key>Temporary</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</value>
</entry>
<entry>
<key>ReplacedUserID</key>
</entry>
<entry>
<key>Primary</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">true</value>
</entry>
<entry>
<key>customerName.title</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</entry>
<entry>
<key>Method</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">DIRECT</value>
</entry>
<entry>
<key>customerNumber</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</value>
</entry>
<entry>
<key>TeamID</key>
</entry>
<entry>
<key>customerName.forename</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Amelia</value>
</entry>
<entry>
<key>customerName.surname</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Baldwin</value>
</entry>
<entry>
<key>LoyaltyPAN</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">14420000</value>
</entry>
</retail:data>
</retail:list>
<retail:list>
<core:key xsi:type="retail:CustomerKey">100</core:key>
<core:data>
<core:values>
<core:arrayObject xsi:type="core:WrappedPrimitive">
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</core:value>
</core:arrayObject>
<core:arrayObject xsi:type="core:WrappedNull"/>
<core:arrayObject xsi:type="core:WrappedPrimitive">
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">true</core:value>
</core:arrayObject>
<core:arrayObject xsi:type="core:String"/>
<core:arrayObject xsi:type="core:String">DIRECT</core:arrayObject>
<core:arrayObject xsi:type="core:String">100</core:arrayObject>
<core:arrayObject xsi:type="core:WrappedNull"/>
<core:arrayObject xsi:type="core:String">Amelia</core:arrayObject>
<core:arrayObject xsi:type="core:String">Baldwin</core:arrayObject>
<core:arrayObject xsi:type="core:String">14421001</core:arrayObject>
</core:values>
</core:data>
<retail:data>
<entry>
<key>Temporary</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</value>
</entry>
<entry>
<key>ReplacedUserID</key>
</entry>
<entry>
<key>Primary</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">true</value>
</entry>
<entry>
<key>customerName.title</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</entry>
<entry>
<key>Method</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">DIRECT</value>
</entry>
<entry>
<key>customerNumber</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</value>
</entry>
<entry>
<key>TeamID</key>
</entry>
<entry>
<key>customerName.forename</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Amelia</value>
</entry>
<entry>
<key>customerName.surname</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Baldwin</value>
</entry>
<entry>
<key>LoyaltyPAN</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">14421001</value>
</entry>
</retail:data>
</retail:list>
<retail:list>
<core:key xsi:type="retail:CustomerKey">100</core:key>
<core:data>
<core:values>
<core:arrayObject xsi:type="core:WrappedPrimitive">
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</core:value>
</core:arrayObject>
<core:arrayObject xsi:type="core:WrappedNull"/>
<core:arrayObject xsi:type="core:WrappedPrimitive">
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</core:value>
</core:arrayObject>
<core:arrayObject xsi:type="core:String"/>
<core:arrayObject xsi:type="core:String">TEAM</core:arrayObject>
<core:arrayObject xsi:type="core:String">100</core:arrayObject>
<core:arrayObject xsi:type="core:String">TEAM</core:arrayObject>
<core:arrayObject xsi:type="core:String">Amelia</core:arrayObject>
<core:arrayObject xsi:type="core:String">Baldwin</core:arrayObject>
<core:arrayObject xsi:type="core:String">14420000</core:arrayObject>
</core:values>
</core:data>
<retail:data>
<entry>
<key>Temporary</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</value>
</entry>
<entry>
<key>ReplacedUserID</key>
</entry>
<entry>
<key>Primary</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</value>
</entry>
<entry>
<key>customerName.title</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</entry>
<entry>
<key>Method</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">TEAM</value>
</entry>
<entry>
<key>customerNumber</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</value>
</entry>
<entry>
<key>TeamID</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">TEAM</value>
</entry>
<entry>
<key>customerName.forename</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Amelia</value>
</entry>
<entry>
<key>customerName.surname</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Baldwin</value>
</entry>
<entry>
<key>LoyaltyPAN</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">14420000</value>
</entry>
</retail:data>
</retail:list>
<retail:list>
<core:key xsi:type="retail:CustomerKey">100</core:key>
<core:data>
<core:values>
<core:arrayObject xsi:type="core:WrappedPrimitive">
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</core:value>
</core:arrayObject>
<core:arrayObject xsi:type="core:WrappedNull"/>
<core:arrayObject xsi:type="core:WrappedPrimitive">
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</core:value>
</core:arrayObject>
<core:arrayObject xsi:type="core:String"/>
<core:arrayObject xsi:type="core:String">TEAM</core:arrayObject>
<core:arrayObject xsi:type="core:String">100</core:arrayObject>
<core:arrayObject xsi:type="core:String">TEAM</core:arrayObject>
<core:arrayObject xsi:type="core:String">Amelia</core:arrayObject>
<core:arrayObject xsi:type="core:String">Baldwin</core:arrayObject>
<core:arrayObject xsi:type="core:String">14421001</core:arrayObject>
</core:values>
</core:data>
<retail:data>
<entry>
<key>Temporary</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</value>
</entry>
<entry>
<key>ReplacedUserID</key>
</entry>
<entry>
<key>Primary</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">false</value>
</entry>
<entry>
<key>customerName.title</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</entry>
<entry>
<key>Method</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">TEAM</value>
</entry>
<entry>
<key>customerNumber</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</value>
</entry>
<entry>
<key>TeamID</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">TEAM</value>
</entry>
<entry>
<key>customerName.forename</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Amelia</value>
</entry>
<entry>
<key>customerName.surname</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Baldwin</value>
</entry>
<entry>
<key>LoyaltyPAN</key>
<value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">14421001</value>
</entry>
</retail:data>
</retail:list>
<retail:propertyNames>customerNumber</retail:propertyNames>
<retail:propertyNames>customerName.title</retail:propertyNames>
<retail:propertyNames>customerName.forename</retail:propertyNames>
<retail:propertyNames>customerName.surname</retail:propertyNames>
<retail:propertyNames>Primary</retail:propertyNames>
<retail:propertyNames>Method</retail:propertyNames>
<retail:propertyNames>TeamID</retail:propertyNames>
<retail:propertyNames>Temporary</retail:propertyNames>
<retail:propertyNames>ReplacedUserID</retail:propertyNames>
<retail:propertyNames>LoyaltyPAN</retail:propertyNames>
</retail:getAffiliatedCustomerResponse>

Get Address Book

This service retrieves the basic details of a customer which includes personal details, contact details, jobs, loyalty details, customer groups and appointments.

Request

Request Service Name


CRMCustomerDataService

Request Operation


getAddressBook

Request Endpoint


http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
criteriaOptionalComplex TypeContains the filter criteria of forename, surname, and email address.
criteria → foreNameOptionalComplex TypeContains forename related search properties.
criteria → surNameOptionalComplex TypeContains surname related search properties.
criteria → emailAddressOptionalComplex TypeContains email address related search properties.
idOptionalStringNot applicable to CRM POS Functions.
forceApplicableOptionalbooleanNot applicable to CRM POS Functions.
orColumnsOptionalbooleanNot applicable to CRM POS Functions.
comparisonOperatorOptionalStringThe operator used to compare the fields. Following is the list of possible values:
- EQUALS
- NOT_EQUALS
- GREATER_THAN
- LESS_THAN
- GREATER_THAN_OR_EQUALS
- LESS_THAN_OR_EQUALS
- STARTS_WITH
- CONTAINS
- IN
- NOT_IN
orNullOptionalbooleanNot applicable to CRM POS Functions.
widthOptionalIntNot applicable to CRM POS Functions. (Max length - 20)
useValueForAllPropertiesOptionalbooleanNot applicable to CRM POS Functions.
caseInsensitiveOptionalbooleanNot applicable to CRM POS Functions.
submitOnChangeOptionalbooleanNot applicable to CRM POS Functions.
disabledOptionalbooleanNot applicable to CRM POS Functions.
hiddenOptionalbooleanNot applicable to CRM POS Functions.
fuzzyLevelOptionalIntNot applicable to CRM POS Functions. (Max length - 4)
customQueryFilterOptionalbooleanNot applicable to CRM POS Functions.
defaultValueOptionalObjectNot applicable to CRM POS Functions.
supportValuesOptionalComplex TypeThe values to be passed in for comparison.
criteria → suppressDefaultOrderByOptionalbooleanWhether to override the default ordering.
criteria → maxRowsOptionalintMaximum number of rows to return.
criteria → distinctOptionalbooleanWhether to return only the distinct values.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
addressBookItemListComplex TypeList of address book item results as requested.
addressBookItemList → entryIdStringUnique of the address book entry.
addressBookItemList → forenameStringForename of the address book entry.
addressBookItemList → surnameStringSurname of the address book entry.
addressBookItemList → emailAddressStringEmail address of the address book entry.

Request & Response Examples

Request

Request to get address book details of the first name search as 'Amelia':

Request
<retail:getAddressBook xmlns:retail="http://www.enactor.com/retail" xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core">
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:foreName>
<core:id>Forename</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">Amelia</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:foreName>
<retail:surName>
<core:id>Surname</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:surName>
<retail:emailAddress xsi:type="core:MatchTextValueFilter">
<core:id>EmailAddress</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"/>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:emailAddress>
</retail:criteria>
</retail:getAddressBook>

Response

Following is an example response to Get Address Book for forename of 'Amelia' request:

<retail:getAddressBookResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns4="http://www.enactor.com/crm">
<addressBookItemList>
<entryId>d6b1:f16f312b291:dba443f5:f788641c17748768</entryId>
<foreName>Amelia</foreName>
<surName>Baldwin</surName>
<emailAddress>abaldwin@enactordata.co</emailAddress>
</addressBookItemList>
</retail:getAddressBookResponse>

This request is used to get the list of contact history information between a particular Customer and the operator.

Request

Request Service Name

ContactHistoryService

Request Operation

contactHistorySearch

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/ContactHistoryService

Request Body

ElementMandatory / OptionalTypeDescription
contactHistorySearchMandatoryComplex TypeThe root request element.
contactHistorySearch → criteriaOptionalComplex TypeThe search criteria used in the request.
contactHistorySearch → criteria → distinctOptionalbooleanWhether to return only the distinct values.
contactHistorySearch → criteria → maxRowsOptionalintMaximum number of rows to return.
contactHistorySearch → criteria → pageInfoOptionalComplex TypePage information to be provided if results are required as a paginated list.
contactHistorySearch → criteria → pageInfo → rowOffsetOptionalintThe row offset required of the pagination.
contactHistorySearch → criteria → pageInfo → rowCountOptionalintThe row count required of the pagination.
contactHistorySearch → criteria → pageInfo → totalRowCountLimitOptionalintThe row limit count required per page.
contactHistorySearch → criteria → suppressDefaultOrderByOptionalbooleanWhether to override the default ordering.
contactHistorySearch → criteria → CustomerNumberOptionallongThe Customer number of the customer history that needs to be found.
contactHistorySearch → criteria → CustomerNumber → idOptionallongThe ID of the Customer this history belongs to.
contactHistorySearch → criteria → CustomerNumber → forceApplicableOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → orColumnsOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → comparisonOperatorOptionalStringThe operator used to compare the fields. Default is EQUALS for POS. Possible values: EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUALS, LESS_THAN_OR_EQUALS, STARTS_WITH, CONTAINS, IN, NOT_IN.
contactHistorySearch → criteria → CustomerNumber → orNullOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → widthOptionalInt (Max length - 20)Not applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → useValueForAllPropertiesOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → caseInsensitiveOptionalbooleanWhether the comparisons should be case insensitive. Default is false.
contactHistorySearch → criteria → CustomerNumber → submitOnChangeOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → disabledOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → hiddenOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → fuzzyLevelOptionalInt (Max length - 4)Not applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → customQueryFilterOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → defaultValueOptionalObjectNot applicable to CRM POS Functions.
contactHistorySearch → criteria → CustomerNumber → supportValuesOptionalComplex TypeThe values to be passed in for comparison.
contactHistorySearch → criteria → CustomerNumber → valueRequiredOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userIdOptionalstringThe user ID of the user who is requesting the Customer history.
contactHistorySearch → criteria → userId → idOptionalStringNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → forceApplicableOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → orColumnsOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → comparisonOperatorOptionalStringThe operator used to compare the fields. Possible values: EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUALS, LESS_THAN_OR_EQUALS, STARTS_WITH, CONTAINS, IN, NOT_IN.
contactHistorySearch → criteria → userId → orNullOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → widthOptionalInt (Max length - 20)Not applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → useValueForAllPropertiesOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → caseInsensitiveOptionalbooleanWhether the comparisons should be case insensitive. Default is false.
contactHistorySearch → criteria → userId → submitOnChangeOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → disabledOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → hiddenOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → fuzzyLevelOptionalInt (Max length - 4)Not applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → customQueryFilterOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → userId → valueRequiredOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → <retail:contactTypeId xsi:type="core:TextValueFilter">OptionalNot applicable to CRM POS Functions.
contactHistorySearch → criteria → idOptionalNot applicable to CRM POS Functions.
contactHistorySearch → criteria → forceApplicableOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → orColumnsOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → comparisonOperatorOptionalStringThe operator used to compare the fields. Possible values: EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUALS, LESS_THAN_OR_EQUALS, STARTS_WITH, CONTAINS, IN, NOT_IN.
contactHistorySearch → criteria → orNullOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → widthOptionalInt (Max length - 20)Not applicable to CRM POS Functions.
contactHistorySearch → criteria → contactHistorySearch → criteria → useValueForAllPropertiesOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → caseInsensitiveOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → submitOnChangeOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → disabledOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → hiddenOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → fuzzyLevelOptionalInt (Max length - 4)Not applicable to CRM POS Functions.
contactHistorySearch → criteria → customQueryFilterOptionalbooleanNot applicable to CRM POS Functions.
contactHistorySearch → criteria → defaultValueOptionalObjectNot applicable to CRM POS Functions.
contactHistorySearch → criteria → supportValuesOptionalComplex TypeThe values to be passed in for comparison.
contactHistorySearch → criteria → valueRequiredOptionalbooleanNot applicable to CRM POS Functions.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
contactHistorySearchResponseComplex TypeThe list details of the transaction history for the searched criteria
contactHistorySearchResponse → contactHistoryItemNot applicable to CRM POS Functions.
contactHistorySearchResponse → contactHistoryItem → contactRefNot applicable to CRM POS Functions.
contactHistorySearchResponse → contactHistoryItem → contactRefTypeNot applicable to CRM POS Functions.
contactHistorySearchResponse → contactHistoryItem → subjectNot applicable to CRM POS Functions.
contactHistorySearchResponse → contactHistoryItem → typeIdStringNot applicable to CRM POS Functions.
contactHistorySearchResponse → contactHistoryItem → contactDateDateTimeThe details of the date and time that the history belongs to.
contactHistorySearchResponse → contactHistoryItem → userIdstringThe user ID of the user who is requesting the Customer history.
contactHistorySearchResponse → contactHistoryItem → CustomerNumberlongThe Customer number the history belongs to.
contactHistorySearchResponse → contactHistoryItem → CustomerForenamestringThe first name of the Customer.
contactHistorySearchResponse → contactHistoryItem → CustomerSurnamestringThe surname of the Customer.
contactHistorySearchResponse → contactHistoryItem → CustomerContactHistoryIdN/ANot applicable to CRM POS Functions.

Request & Response Examples

Request

Request for Contact History Search for customer with the customer ID 100:

Request
<ns4:contactHistorySearch xmlns:ns4="http://www.enactor.com/crm" xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core">
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:pageInfo>
<core:rowOffset>0</core:rowOffset>
<core:rowCount>10</core:rowCount>
<core:totalRowCountLimit>0</core:totalRowCountLimit>
</core:pageInfo>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:customerNumber>
<core:id>CustomerNumber</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>STARTS_WITH</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:customerNumber>
<retail:userId>
<core:id>UserId</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:valueRequired>false</core:valueRequired>
</retail:userId>
<retail:contactTypeId xsi:type="core:TextValueFilter">
<core:id>ContactTypeId</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>NOT_EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">STORE_SALE</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">STORE_SALE</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:contactTypeId>
</retail:criteria>
</ns4:contactHistorySearch>

Response

Following is an example response for Contact History Search request:

Response
<ns4:contactHistorySearchResponse xmlns:ns4="http://www.enactor.com/crm" xmlns:ns6="http://www.enactor.com/addressLookup/service" xmlns:core="http://www.enactor.com/core" xmlns:retail="http://www.enactor.com/retail">
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType>RetailTransaction</ns4:contactRefType>
<ns4:subject>Normal Retail Sale Transaction</ns4:subject>
<ns4:typeId>LOYALTY_REGISTRATION</ns4:typeId>
<ns4:contactDate>2025-02-14T10:06:41Z</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>61c7:52d70c11591:cf573e:6cce51a64dfeb7e4</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType/>
<ns4:subject/>
<ns4:typeId/>
<ns4:contactDate>2025-01-21T09:25:56Z</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>8dd4:32c94b68491:9244576:05cf6bdd1a6304b1</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType/>
<ns4:subject/>
<ns4:typeId/>
<ns4:contactDate>2025-01-21T08:41:48Z</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>e473:32c94b68491:9244576:05cf6bdd1a6304b1</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType/>
<ns4:subject>Meeting</ns4:subject>
<ns4:typeId>PHONE_C_APPOINT</ns4:typeId>
<ns4:contactDate>2024-12-18T07:34:00Z</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>5271:4b85c97d391:6220d735-:c5e90fac83025722</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType/>
<ns4:subject>Test Call Subject</ns4:subject>
<ns4:typeId>PHONE_C_APPOINT</ns4:typeId>
<ns4:contactDate>2024-12-09T05:51:13Z</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>2fc1-:1cae249a391:81cdc751-:8ed722ba9bb5084e</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType/>
<ns4:subject>Hadhi</ns4:subject>
<ns4:typeId>PHONE_C_APPOINT</ns4:typeId>
<ns4:contactDate>2024-12-06T08:59:29Z</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>cbe3:e50ffc99391:aa7e32a2-:72b4909a0a1f79e3</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType/>
<ns4:subject/>
<ns4:typeId>PHONE_C_APPOINT</ns4:typeId>
<ns4:contactDate>2024-11-14T07:58:55Z</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>24d4-:98fb3592391:46e0ba73-:042ede3a751f05c6</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef>c27ff461-07d9-4a68-8ff2-03f7642285d5</ns4:contactRef>
<ns4:contactRefType>OUTBOUND_EMAIL</ns4:contactRefType>
<ns4:subject>Your Receipt</ns4:subject>
<ns4:typeId>CUST_OUTBOUND_EMAIL</ns4:typeId>
<ns4:contactDate>2024-10-25T10:26:48+01:00</ns4:contactDate>
<ns4:userId>RECEIPTS</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>2167-:09c6cf2c291:ad11fbc:9b5f6a069c1f7a52</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType/>
<ns4:subject/>
<ns4:typeId>PHONE_C_APPOINT</ns4:typeId>
<ns4:contactDate>2024-10-24T13:12:13+01:00</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>8356-:200404eb291:4b7e37a5-:d7525327113e3781</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
<ns4:contactHistoryItem>
<ns4:contactRef/>
<ns4:contactRefType/>
<ns4:subject/>
<ns4:typeId>PHONE_C_APPOINT</ns4:typeId>
<ns4:contactDate>2024-10-24T13:10:21+01:00</ns4:contactDate>
<ns4:userId>000101</ns4:userId>
<ns4:customerNumber>100</ns4:customerNumber>
<ns4:customerForename>Amelia</ns4:customerForename>
<ns4:customerSurname>Baldwin</ns4:customerSurname>
<ns4:customerContactHistoryId>3956-:200404eb291:4b7e37a5-:d7525327113e3781</ns4:customerContactHistoryId>
</ns4:contactHistoryItem>
</ns4:contactHistorySearchResponse>

Save Customers

This API is used to save customers from the CRM screen.

Request

Request Service Name

CustomerService

Request Operation

saveCustomer

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CustomerService

Request Body

ElementMandatory / OptionalTypeDescription
customerOptionalComplex TypeA complex element with the new Customer details.
customer → addressesOptionalComplex TypeSet of addresses of the Customer.
customer → dateCreatedOptionalDatetimeThe date and the time that the Customer was created.
customer → emailAddressesOptionalComplex TypeThe email address of the Customer.
customer → phoneNumbersOptionalComplex TypeThe phone number of the Customer.
customer → CustomerNameOptionalComplex TypeThe name of the Customer.
customer → CustomerName → surnameOptionalString (max length - 100)The family name of the Customer.
customer → CustomerName → forenameOptionalString (max length - 100)The first name of the Customer.
customer → CustomerName → titleOptionalString (max length - 10)The title of the Customer.
customer → employeeKeyOptionalN/ANot applicable for CRM POS Functions.
customer → CustomerTypeOptionalString (max length - 20)Not applicable to CRM POS Functions.
customer → createdByOptionalN/ANot applicable to CRM POS Functions.
customer → createdAtOptionalN/ANot applicable to CRM POS Functions.
customer → statusOptionalString (Max length - 15)Default is set to 'Captured' for the customers created using the POS.
customer → sourceOptionalStringThe ID of the Device used to create the customer.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
retail: CustomerNumberStringThe service will return the CustomerNumber of the newly saved Customer as the response.

Request & Response Examples

Request

Request to create and save a new customer:

Request
<ns:saveCustomer xmlns:ns="http://www.enactor.com/core">
<retail:saveCustomerRequest xmlns:retail="http://www.enactor.com/retail" xmlns:ns15="http://www.enactor.com/crm/customerLoyalty/service" xmlns:ns14="http://www.enactor.com/addressLookup/service">
<retail:customer>
<retail:addresses>
<retail:address>
<retail:countryCodeId/>
<retail:isPreferred>true</retail:isPreferred>
<retail:typeId/>
<retail:county>Hertfordshire County</retail:county>
<retail:postCode>SG141PB</retail:postCode>
<retail:street1>5 Bluecoats Avenue</retail:street1>
<retail:street2>SG14 1PB</retail:street2>
<retail:street3>UK 70229</retail:street3>
<retail:town>Hertford</retail:town>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
</retail:addresses>
<retail:dateCreated>2024-03-06T15:54:31.395+05:30</retail:dateCreated>
<retail:emailAddresses>
<retail:emailAddress>robert.jackson@enactor.co.uk</retail:emailAddress>
<retail:typeId/>
</retail:emailAddresses>
<retail:phoneNumbers>
<retail:number>+94132849612</retail:number>
<retail:typeId/>
</retail:phoneNumbers>
<retail:customerName>
<retail:surname>Jackson</retail:surname>
<retail:forename>Robert</retail:forename>
<retail:title>Mr</retail:title>
</retail:customerName>
<retail:employeeKey/>
<retail:customerType>RETAIL</retail:customerType>
<retail:organisation>Enactor</retail:organisation>
<retail:createdBy/>
<retail:createdAt/>
<retail:status>Captured</retail:status>
<retail:source>pos9@0005.enactor</retail:source>
</retail:customer>
<retail:customerAttributes/>
</retail:saveCustomerRequest>
</ns:saveCustomer>

Response

Following is an example response for Save Customers request:

<ns:saveCustomerResponse xmlns:ns="http://www.enactor.com/core">
<retail:saveCustomerResponse xmlns:retail="http://www.enactor.com/retail" xmlns:ns12="http://www.enactor.com/addressLookup/service">
<retail:customerNumber>20</retail:customerNumber>
</retail:saveCustomerResponse>
</ns:saveCustomerResponse>

Update Customers

This API is used to update customers from the CRM screen.

Request

Request Service Name

CustomerService

Request Operation

saveCustomer

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CustomerService

Request Body

ElementMandatory / OptionalTypeDescription
customerOptionalComplex TypeA complex element with the new Customer details.
customer → addressesOptionalComplex TypeSet of addresses of the Customer.
customer → dateCreatedOptionalDatetimeThe date and the time that the Customer was created.
customer → emailAddressesOptionalComplex TypeThe email address of the Customer.
customer → phoneNumbersOptionalComplex TypeThe phone number of the Customer.
customer → CustomerNameOptionalComplex TypeThe name of the Customer.
customer → CustomerName → surnameOptionalString (max length - 100)The family name of the Customer.
customer → CustomerName → forenameOptionalString (max length - 100)The first name of the Customer.
customer → CustomerName → titleOptionalString (max length - 10)The title of the Customer.
customer → employeeKeyOptionalN/ANot applicable for CRM POS Functions.
customer → CustomerTypeOptionalString (max length - 20)Not applicable to CRM POS Functions.
customer → createdByOptionalN/ANot applicable to CRM POS Functions.
customer → createdAtOptionalN/ANot applicable to CRM POS Functions.
customer → statusOptionalString (Max length - 15)Default is set to 'Captured' for the customers created using the POS.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
retail: CustomerNumberStringThe service will return the CustomerNumber of the updated Customer as the response.

Request & Response Examples

Request

Request to update customer details of the customer with the customer number 100:

Request
<ns:saveCustomer xmlns:ns="http://www.enactor.com/core">
<retail:saveCustomerRequest xmlns:retail="http://www.enactor.com/retail" xmlns:ns4="http://www.enactor.com/crm">
<retail:customer>
<retail:addresses>
<retail:address>
<retail:country>United Kingdom</retail:country>
<retail:countryCodeId>GBR</retail:countryCodeId>
<retail:isPreferred>false</retail:isPreferred>
<retail:organisation>ENACTOR ON DEMAND LIMITED</retail:organisation>
<retail:isActive>true</retail:isActive>
<retail:typeId>ADDRESS_HOME</retail:typeId>
<retail:county>Hertfordshire County</retail:county>
<retail:postCode>SG141PB</retail:postCode>
<retail:street1>1 Bluecoats Avenue</retail:street1>
<retail:street2>SG14 1PB</retail:street2>
<retail:town>Hertford</retail:town>
<retail:isTemplate>false</retail:isTemplate>
<retail:referenceId/>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:addressReferenceId>da67-:a712f3c9391:054dea51-:aec93da5748c4f4b</retail:addressReferenceId>
</retail:address>
<retail:address>
<retail:country>United Kingdom</retail:country>
<retail:countryCodeId>GBR</retail:countryCodeId>
<retail:isPreferred>false</retail:isPreferred>
<retail:organisation>Enactor</retail:organisation>
<retail:isActive>true</retail:isActive>
<retail:typeId>ADDRESS_OTHER</retail:typeId>
<retail:county>Hertfordshire</retail:county>
<retail:postCode>SG141PB</retail:postCode>
<retail:street1>1 Enactor House</retail:street1>
<retail:street2>Bluecoats Avenue</retail:street2>
<retail:town>Hertford</retail:town>
<retail:isTemplate>false</retail:isTemplate>
<retail:referenceId/>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:addressReferenceId>b967-:a712f3c9391:054dea51-:aec93da5748c4f4b</retail:addressReferenceId>
</retail:address>
<retail:address>
<retail:country>United Kingdom</retail:country>
<retail:countryCodeId>GBR</retail:countryCodeId>
<retail:isPreferred>true</retail:isPreferred>
<retail:isActive>true</retail:isActive>
<retail:typeId>ADDRESS_WORK</retail:typeId>
<retail:county>Hertfordshire</retail:county>
<retail:postCode>SG14 3AG</retail:postCode>
<retail:street1>137 Newport Road</retail:street1>
<retail:town>Hertford</retail:town>
<retail:isTemplate>false</retail:isTemplate>
<retail:referenceId/>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:addressReferenceId>dc44-:84584e2d391:c2ff9b93-:ccd752587f6609fd</retail:addressReferenceId>
</retail:address>
<retail:address>
<retail:country>UK</retail:country>
<retail:countryCodeId/>
<retail:isPreferred>false</retail:isPreferred>
<retail:organisation>Enactor Limited</retail:organisation>
<retail:typeId>ADDRESS WORK</retail:typeId>
<retail:county>Hertfordshire</retail:county>
<retail:street1>1 Bluecoats Avenue</retail:street1>
<retail:town>Hertord</retail:town>
<retail:isTemplate>false</retail:isTemplate>
<retail:referenceId/>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:addressReferenceId>NBJURG3HWBEFNFBBWAJGSD75YM</retail:addressReferenceId>
</retail:address>
</retail:addresses>
<retail:contactMethod>METHOD_LETTER</retail:contactMethod>
<retail:contactMethodNotes/>
<retail:contactable>false</retail:contactable>
<retail:maritalStatus>Married</retail:maritalStatus>
<retail:nationality/>
<retail:noChildren>2</retail:noChildren>
<retail:customerNumber>100</retail:customerNumber>
<retail:emailAddresses>
<retail:emailAddress>abaldwin@enactordata.co</retail:emailAddress>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:preferred>true</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>EMAIL_HOME</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:emailAddressReferenceId>94e1:4b85c97d391:6220d735-:c5e90fac83025722</retail:emailAddressReferenceId>
</retail:emailAddresses>
<retail:phoneNumbers>
<retail:countryCode>+44</retail:countryCode>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:number>0777906111</retail:number>
<retail:preferred>true</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>PHONE_MOBILE</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:phoneNumberReferenceId>d6e7-:d7890f87391:22dd5251-:cb40bc388d5b2503</retail:phoneNumberReferenceId>
</retail:phoneNumbers>
<retail:phoneNumbers>
<retail:countryCode>+94</retail:countryCode>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:number>071 123 4567</retail:number>
<retail:preferred>false</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>PHONE_MOBILE</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:phoneNumberReferenceId>b7e7-:c5eda369391:6074cec5:3e557c56876c70ee</retail:phoneNumberReferenceId>
</retail:phoneNumbers>
<retail:phoneNumbers>
<retail:countryCode>+44</retail:countryCode>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:number>0741203066</retail:number>
<retail:preferred>false</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>PHONE_WORK</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:phoneNumberReferenceId>f0d7-:c5eda369391:6074cec5:3e557c56876c70ee</retail:phoneNumberReferenceId>
</retail:phoneNumbers>
<retail:phoneNumbers>
<retail:countryCode>+94</retail:countryCode>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:number>071 123 4567</retail:number>
<retail:preferred>false</retail:preferred>
<retail:restrictedReason/>
<retail:status/>
<retail:typeId>PHONE_MOBILE</retail:typeId>
<retail:referenceId/>
<retail:active>true</retail:active>
<retail:phoneNumberReferenceId>1c44-:84584e2d391:c2ff9b93-:ccd752587f6609fd</retail:phoneNumberReferenceId>
</retail:phoneNumbers>
<retail:customerName>
<retail:surname>Baldwin</retail:surname>
<retail:forename>Amelia</retail:forename>
</retail:customerName>
<retail:businessContactMethod>METHOD_EMAIL</retail:businessContactMethod>
<retail:preferredContactTime/>
<retail:employeeKey/>
<retail:lastUpdated>2025-01-31T13:40:24+05:30</retail:lastUpdated>
<retail:customerType/>
<retail:organisation/>
<retail:taxIdentification/>
<retail:companyNumber/>
<retail:createdBy/>
<retail:createdAt/>
<retail:status>Active</retail:status>
<retail:source/>
<retail:password/>
</retail:customer>
<retail:customerAttributes/>
</retail:saveCustomerRequest>
</ns:saveCustomer>

Response

Following is an example response for Update Customers request:

<ns:saveCustomerResponse xmlns:ns="http://www.enactor.com/core">
<retail:saveCustomerResponse xmlns:retail="http://www.enactor.com/retail" xmlns:ns12="http://www.enactor.com/addressLookup/service">
<retail:customerNumber>100</retail:customerNumber>
</retail:saveCustomerResponse>
</ns:saveCustomerResponse>

Get Customer Notes

This operation can be used to retrieve Notes that have been recorded against a customer.

Request

Request Service Name

CRMCustomerDataService

Request Operation

getCustomerNotes

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
getCustomerNotes → entityNameOptionalComplex TypeContains the details of Customer Notes.
getCustomerNotes → entityNamespaceOptionalN/ANot applicable for POS.
getCustomerNotes → criteriaOptionalComplex TypeThe same criteria used in the request.
getCustomerNotes → criteria → distinctOptionalbooleanWhether to return only the distinct values.
getCustomerNotes → criteria → maxRowsOptionalintMaximum rows to return.
getCustomerNotes → criteria → suppressDefaultOrderByOptionalbooleanWhether to override the default ordering.
getCustomerNotes → criteria → CustomerNumberOptionallongThe Customer number that the notes belong to.
getCustomerNotes → criteria → CustomerNumber → idOptionalCustomer ID that the notes will be saved to.
getCustomerNotes → criteria → CustomerNumber → forceApplicableOptionalbooleanNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → orColumnsOptionalbooleanNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → comparisonOperatorOptionalStringThe operator used to compare the fields. Possible values: EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUALS, LESS_THAN_OR_EQUALS, STARTS_WITH, CONTAINS, IN, NOT_IN
getCustomerNotes → criteria → CustomerNumber → orNullOptionalbooleanNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → widthOptionalint (Max length - 20)Not applicable for POS.
getCustomerNotes → criteria → CustomerNumber → useValueForAllPropertiesOptionalbooleanNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → caseInsensitiveOptionalbooleanWhether the comparisons should be case insensitive. Not applicable for POS.
getCustomerNotes → criteria → CustomerNumber → submitOnChangeOptionalbooleanNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → disabledOptionalbooleanNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → hiddenOptionalbooleanNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → fuzzyLevelOptionalint (Max length - 4)Not applicable for POS.
getCustomerNotes → criteria → CustomerNumber → customQueryFilterOptionalbooleanNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → defaultValueOptionalObjectNot applicable for POS.
getCustomerNotes → criteria → CustomerNumber → supportValuesOptionalComplex TypeThe values to be passed in for comparison.
getCustomerNotes → criteria → CustomerNumber → valueRequiredOptionalbooleanNot applicable for POS.
getCustomerNotes → listNameOptionalNot applicable for POS.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
getCustomerNotesResponseComplex TypeDetails of the Notes that are added in the preference screen.
getCustomerNotesResponse → listComplex TypeDetails of the Notes that are added in the preference screen.
getCustomerNotesResponse → list → userIdstringThe user ID of the user who is updating this preference.
getCustomerNotesResponse → list → CustomerIdlongThe Customer ID the preference belongs to.
getCustomerNotesResponse → list → noteDateDateTimeThe date and time that the Note is created.
getCustomerNotesResponse → list → lastUpdatedDateTimeThe last updated time of the customer communication preference.
getCustomerNotesResponse → list → noteIdStringNote ID for identification purposes. Not applicable to CRM POS Functions.
getCustomerNotesResponse → list → notesStringContains the details of the Customer Notes.
getCustomerNotesResponse → criteriaComplex TypeThe search criteria used in the request.
getCustomerNotesResponse → criteria → distinctbooleanWhether to return only the distinct values.
getCustomerNotesResponse → criteria → maxRowsintMaximum number of rows to return.
getCustomerNotesResponse → criteria → suppressDefaultOrderBybooleanWhether to override the default ordering.

Request & Response Examples

Request

Request to get customer notes of the customer with the customer number 100:

Request
<ns4:getCustomerNotes xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/addressLookup/service" xmlns:ns13="http://www.enactor.com/crm/customerLoyalty/service">
<ns4:entityName>customerNote</ns4:entityName>
<ns4:entityNamespace>http://www.enactor.com/crm</ns4:entityNamespace>
<ns4:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:customerNumber>
<core:ID>CustomerNumber</core:ID>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:customerNumber>
</ns4:criteria>
<ns4:listName>listAll</ns4:listName>
</ns4:getCustomerNotes>

Response

Following is an example response for Get Customer Notes request:

Response
<ns4:getCustomerNotesResponse xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core" xmlns:ns11="http://www.enactor.com/crm/customerLoyalty/service" xmlns:ns10="http://www.enactor.com/addressLookup/service">
<ns4:list>
<retail:userId>000101</retail:userId>
<retail:customerId>100</retail:customerId>
<retail:isPrivate>false</retail:isPrivate>
<retail:noteDate>2024-03-06T18:30:00Z</retail:noteDate>
<retail:lastUpdated>2024-03-07T08:36:47Z</retail:lastUpdated>
<retail:noteId>b701-:9648ca61e81:7f2868c4-:ea002bc78fff09e3</retail:noteId>
<retail:notes>Amelia's Note</retail:notes>
</ns4:list>
<ns4:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
</ns4:criteria>
</ns4:getCustomerNotesResponse>

Save Customer Note

This operation can be used to save Notes for a Customer.

Request

Request Service Name

CRMCustomerDataService

Request Operation

saveCustomerNote

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
customerNoteMandatoryComplex TypeContains the details of the Customer Note.
customerNote → userIdOptionalComplex TypeContains the ID of the user saving the customer note.
customerNote → customerIdOptionalComplex TypeContains the ID of the customer for whom the customer note is being saved.
customerNote → isPrivateOptionalbooleanWhether to have this note private or not.
customerNote → noteDateOptionalDateTimeDate and Time that the customer note is saved.
customerNote → notesOptionalStringThe content of the customer note.
customerNote → userOptionalComplex TypeContains the details of the user creating the Customer Note.
customerNote → userLocaleOptionalComplex TypeContains the locale details of the user creating the Customer Note.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
customerNoteComplex TypeContains the details of the Customer Note.
customerNote → userIdComplex TypeContains the ID of the user saving the customer note.
customerNote → customerIdComplex TypeContains the ID of the customer for whom the customer note is being saved.
customerNote → isPrivatebooleanWhether to have this note private or not.
customerNote → noteDateDateTimeDate and Time that the customer note is saved.
customerNote → lastUpdatedDateTimeDate and Time that the customer note is updated.
customerNote → noteIdStringUnique Note ID of the customer note.
customerNote → notesStringThe content of the customer note.

Request & Response Examples

Request

Request to save a customer note for the customer with the ID of 100:

Request
<ns4:saveCustomerNote xmlns:ns4="http://www.enactor.com/crm" xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core">
<retail:customerNote>
<retail:userId>000101</retail:userId>
<retail:customerId>100</retail:customerId>
<retail:isPrivate>false</retail:isPrivate>
<retail:noteDate>2024-11-15T00:00:00+05:30</retail:noteDate>
<retail:noteId>e8a-:ec36e1d3391:3210deb1-:03de649c3d8cbdd5</retail:noteId>
<retail:notes>Amelia's Note 2</retail:notes>
</retail:customerNote>
<retail:user>
<retail:dateTimeActivated>2021-05-18T01:00:42+05:30</retail:dateTimeActivated>
<retail:displayName>Hertford Manager</retail:displayName>
<retail:employeeId/>
<retail:localeId variant="" country="GB">en</retail:localeId>
<retail:locationId>0001</retail:locationId>
<retail:password>lNBrhb6ALqsxA3DWMAe/zgW5cy6o+8TEXeU2oY2G0rQ=lQ4KSvqYhYk=</retail:password>
<retail:passwordLastChanged>2024-11-21T14:59:50.373+05:30</retail:passwordLastChanged>
<retail:forceChangePassword>false</retail:forceChangePassword>
<retail:strongPassword>false</retail:strongPassword>
<retail:previousPasswords>
<retail:password>oqW83Innq91Uiz9c3RcjpvvNMNd84Qg9ZeYZ5nwVxX4=r5XlmzAySDw=</retail:password>
</retail:previousPasswords>
<retail:shortId>00010100</retail:shortId>
<retail:address>
<retail:countryCodeId/>
<retail:typeId/>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:userId>000101</retail:userId>
<retail:userName>
<retail:surname>Hertford Manager</retail:surname>
<retail:forename>000101</retail:forename>
<retail:initials>JS</retail:initials>
<retail:dateOfBirth>1966-03-13T05:30:00+05:30</retail:dateOfBirth>
</retail:userName>
<retail:teamId>TEAM</retail:teamId>
<retail:timePeriod>
<core:dayOfWeek>1</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>2</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>3</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>4</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>5</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>6</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>7</core:dayOfWeek>
</retail:timePeriod>
<retail:singleSignOnUserId/>
<retail:singleSignOnCommonName/>
<retail:lastUpdated>2024-12-20T13:30:22.904+05:30</retail:lastUpdated>
<retail:fiscalUserReference/>
<retail:templateKey>STORE_MANAGER_UK</retail:templateKey>
<retail:isTemplate>false</retail:isTemplate>
<retail:emailAccountName>enactor.test@gmail.com</retail:emailAccountName>
<retail:emailAddress>enactor.test@gmail.com</retail:emailAddress>
<retail:emailEncryptedPassword>smG+rsrfBuKrdaJPv30rhg==</retail:emailEncryptedPassword>
</retail:user>
<core:userLocale>
<core:language>en</core:language>
<core:country>GB</core:country>
<core:variant/>
<core:description>English (UK)</core:description>
<core:lastUpdated>2024-10-01T15:02:33.703+05:30</core:lastUpdated>
</core:userLocale>
</ns4:saveCustomerNote>

Response

Following is an example response for Save Customer Notes request:

<ns4:saveCustomerNoteResponse xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core"xmlns:retail="http://www.enactor.com/retail">
<retail:customerNote>
<retail:userId>000101</retail:userId>
<retail:customerId>100</retail:customerId>
<retail:isPrivate>false</retail:isPrivate>
<retail:noteDate>2024-11-14T18:30:00Z</retail:noteDate>
<retail:lastUpdated>2025-02-19T11:21:11Z</retail:lastUpdated>
<retail:noteId>e8a-:ec36e1d3391:3210deb1-:03de649c3d8cbdd5</retail:noteId>
<retail:notes>Amelia's Note 2</retail:notes>
</retail:customerNote>
</ns4:saveCustomerNoteResponse>

Get Customer Preferences

This operation can be used to retrieve preference values for a Customer.

Request

Request Service Name

CRMCustomerDataService

Request Operation

getCustomerPreferences

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
getCustomerPreferences → criteriaOptionalComplex TypeThe Search criteria details.
getCustomerPreferences → criteria → distinctOptionalbooleanWhether to return only the distinct values.
getCustomerPreferences → criteria → maxRowsOptionalintMaximum number of rows to return.
getCustomerPreferences → criteria → suppressDefaultOrderByOptionalbooleanWhether to override the default ordering.
getCustomerPreferences → criteria → CustomerIdOptionalText Value FilterThis is an element to filter the results by Customer ID. If not provided, all preferences are returned.
getCustomerPreferences → criteria → CustomerId → idOptionalStringThe core:id of the TextValueFilter should be equal to 'CustomerNumber'.
getCustomerPreferences → criteria → CustomerId → forceApplicableOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → orColumnsOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → comparisonOperatorOptionalStringThe operator used to compare the fields. Valid values: EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUALS, LESS_THAN_OR_EQUALS, STARTS_WITH, CONTAINS, IN, NOT_IN
getCustomerPreferences → criteria → CustomerId → orNullOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → widthOptionalint (Max length - 20)Not applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → useValueForAllPropertiesOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → caseInsensitiveOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → submitOnChangeOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → disabledOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → hiddenOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → fuzzyLevelOptionalint (Max length - 4)Not applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → customQueryFilterOptionalbooleanNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → defaultValueOptionalObjectNot applicable to CRM POS Functions.
getCustomerPreferences → criteria → CustomerId → supportValuesOptionalComplex TypeThe values to be passed in for comparison.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
customerPreferenceEntryComplex TypeObject containing the customer preferences details including created, optionPathId, optionSetId, customerId, lastUpdated, preferenceId and value of the preference.

Request & Response Examples

Request

Request to get customer preferences of the customer with the customer number 100:

Request
<retail:getCustomerPreferences xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/addressLookup/service" xmlns:ns13="http://www.enactor.com/crm/customerLoyalty/service">
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:customerId xsi:type="core:TextValueFilter">
<core:ID>CustomerNumber</core:ID>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:customerId>
</retail:criteria>
</retail:getCustomerPreferences>

Response

Following is an example response for Get Customer Preferences request:

<retail:getCustomerPreferencesResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns11="http://www.enactor.com/crm/customerLoyalty/service" xmlns:ns10="http://www.enactor.com/addressLookup/service"/>

Save Customer Preference

This operation can be used to save preference values of a Customer.

Request

Request Service Name

CRMCustomerDataService

Request Operation

saveCustomerPreference

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
customerPreferencesOptionalComplex TypeObject containing the customer preferences details including created, optionPathId. optionSetId, customerId and value of the preference.
localeOptionalComplex TypeObject containing the locale related details of the preference.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
customerPreferencesComplex TypeObject containing the customer preferences details including created, optionPathId, optionSetId, customerId and value of the preference.
localeComplex TypeObject containing the locale related details of the preference.

Request & Response Examples

Request

Request to save customer preferences of the customer with the customer number 100:

Request
<retail:saveCustomerPreference xmlns:retail="http://www.enactor.com/retail" xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core">
<retail:customerPreference>
<retail:created>2025-02-19T17:12:42.333+05:30</retail:created>
<retail:optionPathId>VS</retail:optionPathId>
<retail:optionSetId type="customerPreferenceOptionSet" optionSetId="CUSTOMER_PREF1">
<retail:groupId groupHierarchyId="All" groupTypeId="region">All</retail:groupId>
</retail:optionSetId>
<retail:customerId>100</retail:customerId>
<retail:value id="VS"/>
</retail:customerPreference>
<retail:locale>
<core:language>en</core:language>
<core:country>GB</core:country>
<core:variant/>
<core:description>English (UK)</core:description>
<core:lastUpdated>2024-10-01T15:02:33.703+05:30</core:lastUpdated>
</retail:locale>
</retail:saveCustomerPreference>

Response

Following is an example response for Save Customer Preferences request:

<retail:saveCustomerPreferenceResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns4="http://www.enactor.com/crm">
<retail:customerPreference>
<retail:created>2025-02-19T11:42:42.333Z</retail:created>
<retail:optionPathId>VS</retail:optionPathId>
<retail:optionSetId type="customerPreferenceOptionSet" optionSetId="CUSTOMER_PREF1">
<retail:groupId groupHierarchyId="All" groupTypeId="region">All</retail:groupId>
</retail:optionSetId>
<retail:customerId>100</retail:customerId>
<retail:lastUpdated>2025-02-19T11:43:21Z</retail:lastUpdated>
<retail:preferenceId>2a57-:f9481fd1591:116de9a-:026a32f3aeb3b25c</retail:preferenceId>
<retail:value id="VS"/>
</retail:customerPreference>
</retail:saveCustomerPreferenceResponse>

Get Customer Key Dates

This operation can be used to retrieve the dates of special occasions that have been recorded for a Customer.

Request

Request Service Name

CRMCustomerDataService

Request Operation

getCustomerKeyDates

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
getCustomerKeyDates → criteriaOptionalComplex TypeThe Search criteria details.
getCustomerKeyDates → criteria → distinctOptionalbooleanWhether to return only the distinct values.
getCustomerKeyDates → criteria → maxRowsOptionalintMaximum number of items to return.
getCustomerKeyDates → criteria → suppressDefaultOrderByOptionalbooleanWhether to override the default ordering.
getCustomerKeyDates → criteria → CustomerNumberOptionallongThe Customer number of the Customer found.
getCustomerKeyDates → criteria → CustomerNumber → idOptionalThe Customer ID of the Customer found.
getCustomerKeyDates → criteria → CustomerNumber → forceApplicableOptionalbooleanNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → orColumnsOptionalbooleanNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → comparisonOperatorOptionalStringThe operator used to compare the fields. Following is the list of possible values.
EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUALS, LESS_THAN_OR_EQUALS, STARTS_WITH, CONTAINS, IN, NOT_IN
getCustomerKeyDates → criteria → CustomerNumber → orNullOptionalbooleanNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → widthOptionalint (Max length - 20)Not applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → useValueForAllPropertiesOptionalbooleanNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → caseInsensitiveOptionalbooleanWhether comparisons should be case insensitive. Default is false.
getCustomerKeyDates → criteria → CustomerNumber → submitOnChangeOptionalbooleanNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → disabledOptionalbooleanNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → hiddenOptionalbooleanNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → fuzzyLevelOptionalint (Max length - 4)Not applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → customQueryFilterOptionalbooleanNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → defaultValueOptionalObjectNot applicable to CRM POS Functions.
getCustomerKeyDates → criteria → CustomerNumber → supportValuesOptionalComplex TypeThe values to be passed in for comparison.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
getCustomerKeyDatesResponse → CustomerKeyDatesDateTimeThe key date of the customer is saved.
getCustomerKeyDatesResponse → CustomerKeyDates → CustomerIdText Value FilterThis is an element to filter the results by Customer ID. If this is not provided, preferences for all the Customers will be returned. The core:id of the TextValueFilter should be equal to 'CustomerNumber'.
getCustomerKeyDatesResponse → CustomerKeyDates → detailsStringThe event details that have been saved for the customer.
getCustomerKeyDatesResponse → CustomerKeyDates → generateReminderBooleanDefaults to False. If true, a reminder will be generated for that particular date.
getCustomerKeyDatesResponse → CustomerKeyDates → generateReminderNot applicable to CRM POS Functions.
getCustomerKeyDatesResponse → CustomerKeyDates → generateReminder → recurrenceTypeNot applicable to CRM POS Functions.
getCustomerKeyDatesResponse → CustomerKeyDates → generateReminder → startDateNot applicable to CRM POS Functions.
getCustomerKeyDatesResponse → CustomerKeyDates → keyDateIdNot applicable to CRM POS Functions.
getCustomerKeyDatesResponse → CustomerKeyDates → CustomerKeyDateTypeIdNot applicable to CRM POS Functions.
getCustomerKeyDatesResponse → CustomerKeyDates → lastUpdatedDatetimeNot applicable to CRM POS Functions.
getCustomerKeyDatesResponse → CustomerKeyDates → createdByNot applicable to CRM POS Functions.
getCustomerKeyDatesResponse → CustomerKeyDates → creationDateNot applicable to CRM POS Functions.
getCustomerKeyDatesResponse → CustomerKeyDates → amendedByNot applicable to CRM POS Functions.

Request & Response Examples

Request

Request to get customer preferences of the customer with the customer number 100:

Request
<retail:getCustomerPreferences xmlns:retail="http://www.enactor.com/retail" xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core">
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:customerId xsi:type="core:TextValueFilter">
<core:id>CustomerNumber</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:customerId>
</retail:criteria>
</retail:getCustomerPreferences>

Response

Following is an example response for Get Customer Key Dates request:

Response
<retail:getCustomerKeyDatesResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/crm">
<retail:customerKeyDates>
<retail:customerId>100</retail:customerId>
<retail:details>Birthday</retail:details>
<retail:generateReminder>false</retail:generateReminder>
<retail:keyDate>
<core:recurrenceType>ANNUALLY</core:recurrenceType>
<core:startDate>2024-12-17T18:30:00Z</core:startDate>
</retail:keyDate>
<retail:keyDateId>153-:4b85c97d391:6220d735-:c5e90fac83025722</retail:keyDateId>
<retail:customerKeyDateTypeId/>
<retail:lastUpdated>2024-12-18T06:43:16Z</retail:lastUpdated>
<retail:createdBy>000101</retail:createdBy>
<retail:creationDate>2024-12-18T06:42:24Z</retail:creationDate>
<retail:amendedBy>000101</retail:amendedBy>
</retail:customerKeyDates>
<retail:customerKeyDates>
<retail:customerId>100</retail:customerId>
<retail:details/>
<retail:generateReminder>false</retail:generateReminder>
<retail:keyDate>
<core:recurrenceType>ANNUALLY</core:recurrenceType>
<core:startDate>2024-11-06T00:00:00Z</core:startDate>
</retail:keyDate>
<retail:keyDateId>2d03:669b8740391:569fd927:1cec0394c2165ae8</retail:keyDateId>
<retail:customerKeyDateTypeId>ANNIVERSARY</retail:customerKeyDateTypeId>
<retail:lastUpdated>2024-11-07T08:35:02Z</retail:lastUpdated>
<retail:createdBy>000101</retail:createdBy>
<retail:creationDate>2024-11-07T08:31:18Z</retail:creationDate>
<retail:amendedBy>HJAWAHIR</retail:amendedBy>
<retail:amendmentDate>2024-11-07T08:34:56Z</retail:amendmentDate>
</retail:customerKeyDates>
<retail:customerKeyDates>
<retail:customerId>100</retail:customerId>
<retail:details>Birthday</retail:details>
<retail:generateReminder>false</retail:generateReminder>
<retail:keyDate>
<core:recurrenceType>NONE</core:recurrenceType>
<core:startDate>2024-12-06T00:00:00Z</core:startDate>
</retail:keyDate>
<retail:keyDateId>50d3:e50ffc99391:aa7e32a2-:72b4909a0a1f79e3</retail:keyDateId>
<retail:customerKeyDateTypeId>BIRTHDAY</retail:customerKeyDateTypeId>
<retail:lastUpdated>2024-12-18T06:41:43Z</retail:lastUpdated>
<retail:createdBy>000101</retail:createdBy>
<retail:creationDate>2024-12-18T06:15:20Z</retail:creationDate>
<retail:amendedBy>HJAWAHIR</retail:amendedBy>
<retail:amendmentDate>2024-12-18T06:41:38Z</retail:amendmentDate>
</retail:customerKeyDates>
<retail:customerKeyDates>
<retail:customerId>100</retail:customerId>
<retail:details>Birthday</retail:details>
<retail:generateReminder>false</retail:generateReminder>
<retail:keyDate>
<core:recurrenceType>ANNUALLY</core:recurrenceType>
<core:startDate>2024-12-17T18:30:00Z</core:startDate>
</retail:keyDate>
<retail:keyDateId>be2-:4b85c97d391:6220d735-:c5e90fac83025722</retail:keyDateId>
<retail:customerKeyDateTypeId/>
<retail:lastUpdated>2024-12-18T06:44:00Z</retail:lastUpdated>
<retail:createdBy>000101</retail:createdBy>
<retail:creationDate>2024-12-18T06:43:53Z</retail:creationDate>
<retail:amendedBy>000101</retail:amendedBy>
</retail:customerKeyDates>
</retail:getCustomerKeyDatesResponse>

Save Customer Key Date

This operation can be used to retrieve the dates of special occasions that have been recorded for a Customer.

Request

Request Service Name

CRMCustomerDataService

Request Operation

getCustomerKeyDates

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
customerKeyDateOptionalComplex TypeObject containing the customer key date details.
userOptionalComplex TypeContains the details of the user creating the customer key dates.
localeOptionalComplex TypeObject containing the locale related details of the key dates.

Response

Response Headers

There are no response headers.

Response Body

The body will be empty if the request is a success.

Request & Response Examples

Request

Request to save key date of the customer with the customer number 100:

Request
<retail:saveCustomerKeyDate xmlns:retail="http://www.enactor.com/retail" xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core">
<retail:customerKeyDate>
<retail:customerId>100</retail:customerId>
<retail:details/>
<retail:generateReminder>false</retail:generateReminder>
<retail:keyDate>
<core:recurrenceType>ANNUALLY</core:recurrenceType>
<core:startDate>2024-11-06T00:00:00+05:30</core:startDate>
</retail:keyDate>
<retail:keyDateId>2d03:669b8740391:569fd927:1cec0394c2165ae8</retail:keyDateId>
<retail:customerKeyDateTypeId>ANNIVERSARY</retail:customerKeyDateTypeId>
<retail:createdBy>000101</retail:createdBy>
<retail:creationDate>2025-02-20T11:20:10.390+05:30</retail:creationDate>
<retail:amendedBy>000101</retail:amendedBy>
</retail:customerKeyDate>
<retail:user>
<retail:dateTimeActivated>2021-05-18T01:00:42+05:30</retail:dateTimeActivated>
<retail:displayName>Hertford Manager</retail:displayName>
<retail:employeeId/>
<retail:localeId variant="" country="GB">en</retail:localeId>
<retail:locationId>0001</retail:locationId>
<retail:password>lNBrhb6ALqsxA3DWMAe/zgW5cy6o+8TEXeU2oY2G0rQ=lQ4KSvqYhYk=</retail:password>
<retail:passwordLastChanged>2024-11-21T14:59:50.373+05:30</retail:passwordLastChanged>
<retail:forceChangePassword>false</retail:forceChangePassword>
<retail:strongPassword>false</retail:strongPassword>
<retail:previousPasswords>
<retail:password>oqW83Innq91Uiz9c3RcjpvvNMNd84Qg9ZeYZ5nwVxX4=r5XlmzAySDw=</retail:password>
</retail:previousPasswords>
<retail:shortId>00010100</retail:shortId>
<retail:address>
<retail:countryCodeId/>
<retail:typeId/>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:userId>000101</retail:userId>
<retail:userName>
<retail:surname>Hertford Manager</retail:surname>
<retail:forename>000101</retail:forename>
<retail:initials>JS</retail:initials>
<retail:dateOfBirth>1966-03-13T05:30:00+05:30</retail:dateOfBirth>
</retail:userName>
<retail:teamId>TEAM</retail:teamId>
<retail:timePeriod>
<core:dayOfWeek>1</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>2</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>3</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>4</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>5</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>6</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>7</core:dayOfWeek>
</retail:timePeriod>
<retail:singleSignOnUserId/>
<retail:singleSignOnCommonName/>
<retail:lastUpdated>2024-12-20T13:30:22.904+05:30</retail:lastUpdated>
<retail:fiscalUserReference/>
<retail:templateKey>STORE_MANAGER_UK</retail:templateKey>
<retail:isTemplate>false</retail:isTemplate>
<retail:emailAccountName>enactor.test@gmail.com</retail:emailAccountName>
<retail:emailAddress>enactor.test@gmail.com</retail:emailAddress>
<retail:emailEncryptedPassword>smG+rsrfBuKrdaJPv30rhg==</retail:emailEncryptedPassword>
</retail:user>
<retail:locale>
<core:language>en</core:language>
<core:country>GB</core:country>
<core:variant/>
<core:description>English (UK)</core:description>
<core:lastUpdated>2024-10-01T15:02:33.703+05:30</core:lastUpdated>
</retail:locale>
</retail:saveCustomerKeyDate>

Response

Response to save key date of the customer with the customer number 100:

<retail:saveCustomerKeyDateResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core"/>

This request is used to search for completed transactions for a specific Customer.

Request

Request Service Name

CustomerTransactionService

Request Operation

customerTransactionSearch

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/ CustomerTransactionService

Request Body

There is no request body. The customer ID is passed as the subject header.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
retail:CustomerTransactionSearchResponseComplex TypeThe root request element.
retail:CustomerTransactionListComplex TypeContains the transaction list according to the search criteria.
retail:CustomerTransactionList → currentPageintThe page currently returned in case of pagination.
retail:CustomerTransactionList → pageSizeintNumber of items returned per page.
retail:CustomerTransactionList → totalPagesintTotal number of pages available.
retail:CustomerTransactionList → totalRowsintTotal number of rows available.
retail:CustomerTransactionList → elementsComplex TypeContains the transaction information list according to the search criteria.
retail:CustomerTransactionList → elements → elementsComplex TypeA single element returned from the search with details of a found Customer transaction.
retail:CustomerTransactionList → elements → elements → CustomerNumberlongThe Customer number of the Customer transaction found.
retail:CustomerTransactionList → elements → elements → applicationIdStringThe associated application type which the transaction was started with.
retail:CustomerTransactionList → elements → elements → transactionIdStringThe Transaction ID number details.
retail:CustomerTransactionList → elements → elements → transactionTypeIdStringThe Processed Transaction type which can be Sales or Order.
retail:CustomerTransactionList → elements → elements → locationIdStringThe location ID which the transaction took place.
retail:CustomerTransactionList → elements → elements → transactionDateDateTimeTransaction date when the transaction was recorded.
retail:CustomerTransactionList → elements → elements → valuestringTransaction value of the transaction that was recorded.
retail:CustomerTransactionList → elements → elements → descriptionstringTransaction description of the transaction that was recorded.
retail:CustomerTransactionList → elements → elements → loyaltyPointsstringThe loyalty points earned when the transaction completed.
retail:CustomerTransactionList → elements → elements → locationDescriptionNot applicable to CRM POS Functions.

Request & Response Examples

Request

Request for customer transaction history:

Request
<retail:customerTransactionSearch xmlns:retail="http://www.enactor.com/retail" xmlns:ns4="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core">
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>500</core:maxRows>
<core:pageInfo>
<core:rowOffset>0</core:rowOffset>
<core:rowCount>10</core:rowCount>
<core:totalRowCountLimit>0</core:totalRowCountLimit>
</core:pageInfo>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:customerNumber>
<core:id>CustomerNumber</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">100</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:customerNumber>
<retail:transactionStartDate>
<core:id>TransactionStartDate</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>GREATER_THAN_OR_EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:dateTime">2024-02-21T12:01:01.083+05:30</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:dateTime">2024-02-21T00:00:00+05:30</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:transactionStartDate>
<retail:transactionEndDate>
<core:id>TransactionEndDate</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>LESS_THAN_OR_EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:valueRequired>false</core:valueRequired>
</retail:transactionEndDate>
<retail:transactionUserId>
<core:id>TransactionUserId</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:valueRequired>false</core:valueRequired>
</retail:transactionUserId>
</retail:criteria>
<retail:transactionSearchType>WITH_LOCATION</retail:transactionSearchType>
</retail:customerTransactionSearch>

Response

Following is an example response for Customer Transaction History Search request:

Response
<retail:customerTransactionSearchResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/crm">
<retail:customerTransactionList>
<core:currentPage>-1</core:currentPage>
<core:rowOffset>0</core:rowOffset>
<core:pageSize>10</core:pageSize>
<core:totalPages>-1</core:totalPages>
<core:totalRows>178</core:totalRows>
<retail:elements>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00010144000062502191605340</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0001</retail:locationId>
<retail:transactionDate>2025-02-19T16:06:21Z</retail:transactionDate>
<retail:value>55250</retail:value>
<retail:description>Laptops</retail:description>
<retail:loyaltyPoints>1105</retail:loyaltyPoints>
<retail:locationDescription>UK Hertford</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00010014000022502191558248</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0001</retail:locationId>
<retail:transactionDate>2025-02-19T16:04:21Z</retail:transactionDate>
<retail:value>41900</retail:value>
<retail:description>Drones</retail:description>
<retail:loyaltyPoints>0</retail:loyaltyPoints>
<retail:locationDescription>UK Hertford</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00050024004182502191529548</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0005</retail:locationId>
<retail:transactionDate>2025-02-19T15:30:15Z</retail:transactionDate>
<retail:value>37710</retail:value>
<retail:description>Drones</retail:description>
<retail:loyaltyPoints>0</retail:loyaltyPoints>
<retail:locationDescription>UK Kings Road</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00050024004162502191526100</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0005</retail:locationId>
<retail:transactionDate>2025-02-19T15:26:50Z</retail:transactionDate>
<retail:value>29900</retail:value>
<retail:description>Televisions</retail:description>
<retail:loyaltyPoints>598</retail:loyaltyPoints>
<retail:locationDescription>UK Kings Road</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00010013000062502191139306</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0001</retail:locationId>
<retail:transactionDate>2025-02-19T11:41:07Z</retail:transactionDate>
<retail:value>167900</retail:value>
<retail:description>Laptops</retail:description>
<retail:loyaltyPoints>0</retail:loyaltyPoints>
<retail:locationDescription>UK Hertford</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00010013000012502191130587</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0001</retail:locationId>
<retail:transactionDate>2025-02-19T11:35:35Z</retail:transactionDate>
<retail:value>41900</retail:value>
<retail:description>Drones</retail:description>
<retail:loyaltyPoints>838</retail:loyaltyPoints>
<retail:locationDescription>UK Hertford</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00050332000032502191004432</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0005</retail:locationId>
<retail:transactionDate>2025-02-19T10:05:18Z</retail:transactionDate>
<retail:value>50000</retail:value>
<retail:description/>
<retail:loyaltyPoints>0</retail:loyaltyPoints>
<retail:locationDescription>UK Kings Road</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00050332000022502191002552</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0005</retail:locationId>
<retail:transactionDate>2025-02-19T10:04:40Z</retail:transactionDate>
<retail:value>50000</retail:value>
<retail:description/>
<retail:loyaltyPoints>0</retail:loyaltyPoints>
<retail:locationDescription>UK Kings Road</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00010013000072502181547557</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0001</retail:locationId>
<retail:transactionDate>2025-02-18T16:04:28Z</retail:transactionDate>
<retail:value>41900</retail:value>
<retail:description>Drones</retail:description>
<retail:loyaltyPoints>838</retail:loyaltyPoints>
<retail:locationDescription>UK Hertford</retail:locationDescription>
</retail:element>
<retail:element>
<retail:customerNumber>100</retail:customerNumber>
<retail:applicationId>POS</retail:applicationId>
<retail:transactionId>00010144000092502181539453</retail:transactionId>
<retail:transactionTypeId>Sale</retail:transactionTypeId>
<retail:locationId>0001</retail:locationId>
<retail:transactionDate>2025-02-18T15:41:12Z</retail:transactionDate>
<retail:value>20449</retail:value>
<retail:description>Televisions</retail:description>
<retail:loyaltyPoints>926</retail:loyaltyPoints>
<retail:locationDescription>UK Hertford</retail:locationDescription>
</retail:element>
</retail:elements>
</retail:customerTransactionList>
</retail:customerTransactionSearchResponse>

Customer Transaction History Enquiry

This operation is used to retrieve the details of a completed transaction for a Customer.

Request Service Name

CustomerTransactionService

Request Operation

customerTransactionEnquiry

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/ CustomerTransactionService

Request Body

There is no request body. The customer ID is passed as the subject header.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
CustomerTransactionDetailsList → lineNumberComplex TypeThe line item which was included in the transaction.
CustomerTransactionDetailsList → quantityStringTotal quantity value of the items in the transaction.
CustomerTransactionDetailsList → effectiveNetValueStringThe effective net value of the items in the transaction.
CustomerTransactionDetailsList → salesPersonStringThe ID of the Salesperson who completed the transaction.
CustomerTransactionDetailsList → productIdStringThe product ID which has been added in the transaction.
CustomerTransactionDetailsList → descriptionStringThe product description which has been added in the transaction.
CustomerTransactionDetailsList → loyaltyPointsStringThe Loyalty points value earned in the transaction.
CustomerTransactionDetailsList → criteriaComplex Type
CustomerTransactionDetailsList → criteria → distinctbooleanWhether to list distinct Customers or not.
CustomerTransactionDetailsList → criteria → maxRowsintMaximum number of items to return.
CustomerTransactionDetailsList → criteria → suppressDefaultOrderBybooleanWhether to override the default ordering.
CustomerTransactionDetailsList → criteria → transactionIdStringNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → idbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → forceApplicablebooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → orColumnsbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → comparisonOperatorStringThe operator used to compare the fields. Possible values: EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUALS, LESS_THAN_OR_EQUALS, STARTS_WITH, CONTAINS, IN, NOT_IN
CustomerTransactionDetailsList → criteria → transactionId → orNullbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → widthint (Max length - 20)Not applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → useValueForAllPropertiesbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → caseInsensitivebooleanWhether the comparisons should be case insensitive. Default is false.
CustomerTransactionDetailsList → criteria → transactionId → submitOnChangebooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → disabledbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → hiddenbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → fuzzyLevelint (Max length - 4)Not applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → customQueryFilterbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → defaultValueObjectNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → transactionId → supportValuesComplex TypeThe values to be passed in for comparison.
CustomerTransactionDetailsList → criteria → transactionId → supportValues → Valuesint (Max length - 20)Not applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → typeNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → type → idNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → type → forceApplicablebooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → type → orColumnsbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → type → comparisonOperatorStringThe operator used to compare the fields. Possible values: EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUALS, LESS_THAN_OR_EQUALS, STARTS_WITH, CONTAINS, IN, NOT_IN
CustomerTransactionDetailsList → criteria → type → orNullbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → type → widthint (Max length - 20)Not applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → type → useValueForAllPropertiesbooleanNot applicable to CRM POS Functions.
CustomerTransactionDetailsList → criteria → type → caseInsensitivebooleanWhether the comparisons should be case insensitive. Default is false.
CustomerTransactionDetailsList → criteria → type → submitOnChangeboolean
CustomerTransactionDetailsList → criteria → type → disabledboolean
CustomerTransactionDetailsList → criteria → type → hiddenboolean
CustomerTransactionDetailsList → criteria → type → fuzzyLevelint (Max length - 4)
CustomerTransactionDetailsList → criteria → type → customQueryFilterboolean
CustomerTransactionDetailsList → criteria → type → supportValuesComplex TypeThe values to be passed in for comparison.
CustomerTransactionDetailsList → criteria → type → supportValues → value
CustomerTransactionDetailsList → criteria → type → valueRequiredboolean

Request & Response Examples

Request

Request for customer transaction enquiry:

Request
<retail:customerTransactionEnquiry xmlns:retail="http://www.enactor.com/retail" xmlns:ns4="http://www.enactor.com/crm"xmlns:core="http://www.enactor.com/core">
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:transactionId>
<core:id>TransactionId</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">00030106000932410101645319</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">00030106000932410101645319</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:transactionId>
<retail:type>
<core:id>Type</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">SALE</core:value>
</core:supportValues>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">RETURN</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:type>
</retail:criteria>
</retail:customerTransactionEnquiry>

Response

Following is an example response for Customer Transaction History Enquiry request:

Response
<retail:customerTransactionEnquiryResponse xmlns:retail="http://www.enactor.com/retail" xmlns:core="http://www.enactor.com/core" xmlns:ns5="http://www.enactor.com/crm">
<retail:customerTransactionDetailsList>
<core:currentPage>-1</core:currentPage>
<core:rowOffset>0</core:rowOffset>
<core:pageSize>0</core:pageSize>
<core:totalPages>-1</core:totalPages>
<core:totalRows>-1</core:totalRows>
<retail:elements>
<retail:element>
<retail:lineNumber>1</retail:lineNumber>
<retail:quantity>1.0</retail:quantity>
<retail:effectiveNetValue>29900</retail:effectiveNetValue>
<retail:salesPerson>000101</retail:salesPerson>
<retail:productId>500100</retail:productId>
<retail:description>JVC LT-40CA890 Android TV 40"</retail:description>
<retail:loyaltyPoints>598</retail:loyaltyPoints>
</retail:element>
</retail:elements>
</retail:customerTransactionDetailsList>
<retail:criteria>
<core:distinct>false</core:distinct>
<core:maxRows>0</core:maxRows>
<core:suppressDefaultOrderBy>false</core:suppressDefaultOrderBy>
<retail:transactionId>
<core:id>TransactionId</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:defaultValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">00050024004162502191526100</core:defaultValue>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">00050024004162502191526100</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:transactionId>
<retail:type>
<core:id>Type</core:id>
<core:forceApplicable>false</core:forceApplicable>
<core:orColumns>false</core:orColumns>
<core:comparisonOperator>EQUALS</core:comparisonOperator>
<core:orNull>false</core:orNull>
<core:width>20</core:width>
<core:useValueForAllProperties>false</core:useValueForAllProperties>
<core:caseInsensitive>false</core:caseInsensitive>
<core:submitOnChange>true</core:submitOnChange>
<core:disabled>false</core:disabled>
<core:hidden>false</core:hidden>
<core:fuzzyLevel>4</core:fuzzyLevel>
<core:customQueryFilter>false</core:customQueryFilter>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">SALE</core:value>
</core:supportValues>
<core:supportValues>
<core:value xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">RETURN</core:value>
</core:supportValues>
<core:valueRequired>false</core:valueRequired>
</retail:type>
</retail:criteria>
</retail:customerTransactionEnquiryResponse>

Save Contact History

This operation can save contact records for a Customer.

Request Service Name

CRMCustomerDataService

Request Operation

saveContactHistory

Request Endpoint

http://${Server.CRM_WS.Host}:${Server.CRM_WS.HttpPort}/axis2/services/CRMCustomerDataService

Request Body

ElementMandatory / OptionalTypeDescription
saveContactHistory → CustomerContactHistoryOptionalComplex TypeContains the contact history details for the customer.
saveContactHistory → CustomerContactHistory → contactDateOptionalDateTimeThe date of the contact history.
saveContactHistory → CustomerContactHistory → reasonIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → CustomerContactHistory → deviceIdOptionalStringNot applicable to CRM POS Functions.
saveContactHistory → CustomerContactHistory → locationIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → CustomerContactHistory → subjectOptionalStringThe subject details of the contact history details.
saveContactHistory → CustomerContactHistory → CustomerContactTypeIdOptionalStringDropdown of the customer contact types configured. Default is Appointment. Values: Appointment, Complaint, General, Pre-Sale, Sale
saveContactHistory → CustomerContactHistory → CustomerIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → CustomerContactHistory → descriptionOptionalNot applicable to CRM POS Functions.
saveContactHistory → CustomerContactHistory → userIdOptionalStringNot applicable to CRM POS Functions.
saveContactHistory → userMandatoryNot applicable to CRM POS Functions.
saveContactHistory → user → dateTimeActivatedOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → cardSignOnOnlyOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → skipPasswordIfCardOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → displayNameOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → employeeIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → locationIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → passwordOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → passwordLastChangedOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → forceChangePasswordOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → strongPasswordOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → previousPasswordsOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → shortIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → addressOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → address → countryCodeIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → address → typeIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → address → isTemplateOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → userIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → userNameOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → userName → surnameOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → userName → forenameOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → userName → initialsOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → timePeriodOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → timePeriod → dayOfWeekOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → singleSignOnUserIdOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → singleSignOnCommonNameOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → lastUpdatedOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → fiscalUserReferenceOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → templateKeyOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → isTemplateOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → associatedLocationRestrictionsOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → emailAccountNameOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → emailAddressOptionalNot applicable to CRM POS Functions.
saveContactHistory → user → emailEncryptedPasswordOptionalNot applicable to CRM POS Functions.
saveContactHistory → userLocaleOptionalNot applicable to CRM POS Functions.
saveContactHistory → userLocale → languageOptionalNot applicable to CRM POS Functions.
saveContactHistory → userLocale → countryOptionalNot applicable to CRM POS Functions.
saveContactHistory → userLocale → variantOptionalNot applicable to CRM POS Functions.
saveContactHistory → userLocale → descriptionOptionalNot applicable to CRM POS Functions.
saveContactHistory → userLocale → lastUpdatedOptionalNot applicable to CRM POS Functions.

Response

Response Headers

There are no response headers.

Response Body

ElementTypeDescription
saveContactHistoryResponse → CustomerContactHistoryComplex TypeContains the Contact History Details.
saveContactHistoryResponse → CustomerContactHistory → contactDateDateTimeThe date and the time that the contact history details were recorded.
saveContactHistoryResponse → CustomerContactHistory → reasonIdNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → reasonId → reasonIdNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → reasonId → regionIdNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → deviceIdNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → locationIdNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → subjectStringThe Subject details of the contact history.
saveContactHistoryResponse → CustomerContactHistory → contactHistoryIdNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → CustomerContactTypeIdStringThe Contact type that is recorded.
saveContactHistoryResponse → CustomerContactHistory → CustomerIdNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → descriptionNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → lastUpdatedNot applicable to CRM POS Functions.
saveContactHistoryResponse → CustomerContactHistory → userIdNot applicable to CRM POS Functions.
saveContactHistoryResponse → errorMessage → fieldErrorsNot applicable to CRM POS Functions.
saveContactHistoryResponse → errorMessage → fieldErrorsWithContextNot applicable to CRM POS Functions.
saveContactHistoryResponse → errorMessage → pageErrorsNot applicable to CRM POS Functions.

Request & Response Examples

Request

Request for save contact history:

Request
<ns4:saveContactHistory xmlns:ns4="http://www.enactor.com/crm" xmlns:retail="http://www.enactor.com/retail">
<retail:customerContactHistory>
<retail:contactDate>2025-02-20T12:23:30.324+05:30</retail:contactDate>
<retail:reasonId>
<retail:reasonId/>
<retail:regionId groupTypeId="region"/>
</retail:reasonId>
<retail:deviceId>pos10@0005.enactor</retail:deviceId>
<retail:locationId/>
<retail:subject/>
<retail:customerContactTypeId>PHONE_C_APPOINT</retail:customerContactTypeId>
<retail:customerId>100</retail:customerId>
<retail:description/>
<retail:userId>000101</retail:userId>
</retail:customerContactHistory>
<retail:user>
<retail:dateTimeActivated>2021-05-18T01:00:42+05:30</retail:dateTimeActivated>
<retail:displayName>Hertford Manager</retail:displayName>
<retail:employeeId/>
<retail:localeId variant="" country="GB">en</retail:localeId>
<retail:locationId>0001</retail:locationId>
<retail:password>lNBrhb6ALqsxA3DWMAe/zgW5cy6o+8TEXeU2oY2G0rQ=lQ4KSvqYhYk=</retail:password>
<retail:passwordLastChanged>2024-11-21T14:59:50.373+05:30</retail:passwordLastChanged>
<retail:forceChangePassword>false</retail:forceChangePassword>
<retail:strongPassword>false</retail:strongPassword>
<retail:previousPasswords>
<retail:password>oqW83Innq91Uiz9c3RcjpvvNMNd84Qg9ZeYZ5nwVxX4=r5XlmzAySDw=</retail:password>
</retail:previousPasswords>
<retail:shortId>00010100</retail:shortId>
<retail:address>
<retail:countryCodeId/>
<retail:typeId/>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:userId>000101</retail:userId>
<retail:userName>
<retail:surname>Hertford Manager</retail:surname>
<retail:forename>000101</retail:forename>
<retail:initials>JS</retail:initials>
<retail:dateOfBirth>1966-03-13T05:30:00+05:30</retail:dateOfBirth>
</retail:userName>
<retail:teamId>TEAM</retail:teamId>
<retail:timePeriod>
<core:dayOfWeek>1</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>2</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>3</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>4</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>5</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>6</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>7</core:dayOfWeek>
</retail:timePeriod>
<retail:singleSignOnUserId/>
<retail:singleSignOnCommonName/>
<retail:lastUpdated>2024-12-20T13:30:22.904+05:30</retail:lastUpdated>
<retail:fiscalUserReference/>
<retail:templateKey>STORE_MANAGER_UK</retail:templateKey>
<retail:isTemplate>false</retail:isTemplate>
<retail:emailAccountName>enactor.test@gmail.com</retail:emailAccountName>
<retail:emailAddress>enactor.test@gmail.com</retail:emailAddress>
<retail:emailEncryptedPassword>smG+rsrfBuKrdaJPv30rhg==</retail:emailEncryptedPassword>
</retail:user>
<core:userLocale>
<core:language>en</core:language>
<core:country>GB</core:country>
<core:variant/>
<core:description>English (UK)</core:description>
<core:lastUpdated>2024-10-01T15:02:33.703+05:30</core:lastUpdated>
</core:userLocale>
</ns4:saveContactHistory>

Response

Following is an example response for Save Contact History request:

Response
<ns5:saveContactHistoryResponse xmlns:ns5="http://www.enactor.com/crm" xmlns:core="http://www.enactor.com/core" xmlns:retail="http://www.enactor.com/retail">
<retail:customerContactHistory>
<retail:contactDate>2025-02-20T06:53:30.324Z</retail:contactDate>
<retail:reasonId>
<retail:reasonId/>
<retail:regionId groupTypeId="region"/>
</retail:reasonId>
<retail:deviceId>pos10@0005.enactor</retail:deviceId>
<retail:locationId/>
<retail:subject/>
<retail:contactHistoryId>f982:6ec83312591:203d58c4-:c48bfa609a154019</retail:contactHistoryId>
<retail:customerContactTypeId>PHONE_C_APPOINT</retail:customerContactTypeId>
<retail:customerId>100</retail:customerId>
<retail:description/>
<retail:lastUpdated>2025-02-20T06:53:50.403Z</retail:lastUpdated>
<retail:userId>000101</retail:userId>
</retail:customerContactHistory>
<core:errorMessage>
<core:fieldErrors/>
<core:fieldErrorsWithContext/>
<core:pageErrors/>
</core:errorMessage>
</ns5:saveContactHistoryResponse>