8 Loyalty
This chapter provides developers with the information necessary to send Loyalty XML requests to the Customer Engagement server. The following requests are supported:
Point Recovery
There is a check in place to prevent a POS Log from being processed more than once in Customer Engagement Services. This prevents loyalty points from being awarded multiple times if a file is reprocessed.
However, there may be times when a POS Log needs to be reprocessed for loyalty points. These situations are:
-
All of the card/client data has not been received by Customer Engagement, preventing the loyalty process from finding a loyalty account.
-
A configuration problem with Customer Engagement prevented loyalty points from being posted.
The Point Recovery operation would allow a POS Log to be reprocessed for loyalty points. Point Recovery should only be used in exception/failure cases, not for daily operations.
The Point Recovery operation is simply an extension to the existing POS Log process with the following rules:
-
It is assumed that the transaction has already been processed and is present within the Customer Engagement database. The first operation is to retrieve the transaction. If the transaction is not present, an error is generated (TRANSACTION_NOT_FOUND).
-
If the system is not configured to process loyalty points, this process will continue to honor this configuration.
-
If loyalty activity is already present for this transaction, an error is generated (LOYALTY_POINTS_ALREADY_AWARDED). This check will prevent this batch file being processed multiple times, and multiple loyalty awards being given.
Point Recovery for a transaction is implemented by setting the attribute Action="PointRecovery"
.
Multiple point recovery requests can be made in a batch file by including multiple <Transaction>
blocks.
If the batch file has transactions that need to be reprocessed and transactions that processed normally, you can change the Action attribute for all of the transactions in the batch file. Those transactions that have already processed normally for loyalty points will not be reprocessed.
Note:
See Introduction for more information on formatting transaction information for POSLog transactions.
Issue Points
The purpose of this request is to issue loyalty points (positive or negative) to the loyalty account specified in the request and reference a retail transaction.
Requirements/Restrictions
The <CardNumber>
must be included in the request.
If both the <CardNumber>
and <InstrumentID>
(Serial Number) are included, both of them must be valid and for the same card.
Card must be present and PIN requirements are not checked.
If the Retail Location ID is not provided, the default Customer Engagement location ID as configured in the organization-id-helper-config.xml
file is used. Refer to the Customer Engagement Implementation Guide for more information on the default Customer Engagement location ID.
If the Business Date/Time is not provided, Customer Engagement will used the date/time when the request is received.
If the Issue Rule ID is not provided, Customer Engagement will create and use a special issue rule called Default Issue Rule. This rule is a no bonus point rule.
If an Escrow Period Type Code and Escrow Periods are included, the points being issued will be escrow points. The Escrow Period Type Code and Escrow Periods will be used to calculate the earn date for the points. If these two parameters are not included, the loyalty program parameters will be used to determine if the points are escrow or earned.
If a Bonus Points Flag value is not included, the parameters in the issue rule will be used to determine if the points are bonus or not.
Fields
The elements in the table below are the elements/attributes that may be used in an Issue Points request. The sample request shows the placement of these elements/attributes.
XML Tag | Comments |
---|---|
<LoyaltyRequest Type="IssuePoints"> |
|
<Instrument> |
|
<InstrumentID> |
Serial number of the card. |
<CardNumber> |
(required) Card number. |
<ClientUserId> |
ID of user making request. |
<ClientComments> |
Comments or notes. |
<ReasonCode> |
ID code for the reason the points were issued. |
<IssuePointsParameters> |
|
<LoyaltyAccountID> |
(required) Identifies specific loyalty account on card. |
<IssueRuleID> |
ID of the issue rule used to issue points. |
<PointsAmount> |
(required) Number of points being issued. |
<EscrowPeriodTypeCode> |
Period type used to calculate earn date for points, must be days, weeks, months, quarters, or years. |
<EscrowPeriods> |
The number of periods to use when calculating earn date for points; only included when the points are being issued to escrow. This must be a whole number. |
<BonusPointsFlag> |
Indicates whether points are to be considered Bonus (True) or not (False). |
<ForceEarnedPointsFlag> |
Ignore the Escrow settings in the request or Loyalty Program level if set to True. |
<TransactionID> |
|
<RetailStoreID> |
Retail location ID where transaction occurred. |
<RegisterID> |
Register ID where transaction occurred. |
<BusinessDayDate> |
Date/Time transaction occurred. |
<SequenceNumber> |
Identifies transaction on register. |
Example
An Issue Points request should look similar to the example below. The parameters will vary with each request.
If points are being issued to more than one account, there should be multiple <LoyaltyRequest>
blocks.
<?xml version="1.0" encoding="UTF-8"?><Loyalty> <LoyaltyRequest Type="IssuePoints"> <Instrument> <CardNumber><CARD_NUMBER></CardNumber> <InstrumentID><INSTRUMENT_ID></InstrumentID> </Instrument> <ClientUserId><USERID></ClientUserId> <ClientComments>Issued February 26, 2009</ClientComments> <ReasonCode></ReasonCode> <IssuePointsParameters> <LoyaltyAccountID><ACCOUNT_ID></LoyaltyAccountID> <IssueRuleID></IssueRuleID> <PointsAmount>125</PointsAmount> <!-- Escrow Periods values: Days, Weeks, Months, Quarters, Years --> <EscrowPeriodTypeCode></EscrowPeriodTypeCode> <!-- Optional; use with EscrowPeriodTypeCode - number of periods --> <EscrowPeriods></EscrowPeriods> <BonusPointsFlag>false</BonusPointsFlag> <ForceEarnedPointsFlag>false</ForceEarnedPointsFlag> </IssuePointsParameters> <TransactionID> <RetailStoreID><STORE_ID></RetailStoreID> <RegisterID><REGISTER_ID></RegisterID> <BusinessDayDate>2009-02-26</BusinessDayDate> <SequenceNumber>2345678</SequenceNumber> </TransactionID> </LoyaltyRequest></Loyalty>
Batch Processing Errors
The following table contains a list of possible errors that may occur and possible causes:
Error | Cause |
---|---|
ACCOUNT_EXPIRED |
There is an Expiry Date for the account and it is less than or equal to the current date. |
ACCOUNT_INACTIVE |
The account is not active (Active Flag = False). |
ACCOUNT_NOT_EFFECTIVE |
The account's effective date is greater than the current date. |
ACCOUNT_NOT_FOUND |
The account number specified in the request could not be found. |
CARD_EXPIRED |
There is an Expiration Date for the card and it is less than the current date. |
CARD_INACTIVE |
The card is not active (Active Flag = False). |
CARD_NOT_FOUND |
The card specified in the request could not be found. |
CARD_NUMBER_REQUIRED |
The card number was not included. |
GENERAL_ERROR |
A general, non-specific error. If you cannot determine the cause of the problem, contact your Project Consultant. |
INVALID_TRANSACTION_DATA |
Invalid retail transaction date provided in request. |
LOYALTY_INVALID_BONUS_FLAG |
Invalid bonus flag. |
LOYALTY_INVALID_ESCROW_PERIOD |
Invalid escrow period. |
LOYALTY_INVALID_POINTS_AMOUNT |
Invalid points amount provided in request. |
LOYALTY_NEGATIVE_BALANCE_NOT_ALLOWED |
The loyalty program level does not allow a negative balance and the points in the request would take the balance below zero. |
LOYALTY_INVALID_FORCE_EARNED_PTS_FLAG |
Invalid force earned points flag. |
LOYALTY_RULE_NOT_FOUND |
The loyalty rule in the request could not be found. |
REASON_CODE_REQUIRED |
Request is missing the required reason code. |
Batch File Response
A complete copy of the incoming request is placed in the /complete/[Fileset Name]/archived
directory.
Each <LoyaltyRequest>
block in the request that was not successfully processed is placed in a file with _failures
appended to the original filename and saved in the /complete/[Fileset Name]/failed
directory.
You may be able to determine the reason for the failure by using the Batch Import Review pages (see Introduction).
Redeem Points for Award
The purpose of this request is to redeem earned loyalty points in the loyalty account specified in the request for an award. The award is determined by the award rule included in the request.
Requirements/Restrictions
The <CardNumber>
must be included in the request.
If both the <CardNumber>
and <InstrumentID>
(Serial Number) are included, both of them must be valid and for the same card.
Card must be present and PIN requirements are not checked.
If the Retail Location ID is not provided, the default Customer Engagement location ID as configured in the organization-id-helper-config.xml
file is used.
If the Business Date/Time is not provided, Customer Engagement will used the date/time when the request is received.
The number of points included in the request is the cost of the award. If the points are not included in the request, Customer Engagement will use the number of points specified by the award rule.
Cash back awards rules are not supported for this request.
Fields
The elements in the table below are the elements/attributes that may be used in a Redeem Points for Award request. The sample request shows the placement of these elements/attributes.
XML Tag | Comments |
---|---|
<LoyaltyRequest Type= "RedeemPointsForAward"> |
|
<Instrument> |
|
<InstrumentID> |
Serial number of the card. |
<CardNumber> |
(required) Card number. |
<ClientUserId> |
ID of user making request. |
<ClientComments> |
Comments or notes. |
<ReasonCode> |
ID code for the reason for redeeming the points. |
<RedeemPointsParameters> |
|
<LoyaltyAccountID> |
(required) Identifies specific loyalty account on card. |
<AwardRuleID> |
(required) ID of the award rule used to determine the award. |
<PointsAmount> |
Point cost of the award. |
<TransactionID> |
|
<RetailStoreID> |
Retail location ID where transaction occurred. |
<RegisterID> |
Register ID where transaction occurred. |
<BusinessDayDate> |
Date/Time transaction occurred. |
<SequenceNumber> |
Identifies transaction on register. |
Example
A Redeem Points for Award request should look similar to the example below. The parameters will vary with each request.
If points are being redeemed by more than one account in a batch file, include multiple <LoyaltyRequest>
blocks.
<?xml version="1.0" encoding="UTF-8"?><Loyalty> <LoyaltyRequest Type="RedeemPointsForAward"> <Instrument> <CardNumber><CARD_NUMBER></CardNumber> <InstrumentID><INSTRUMENT_ID></InstrumentID> </Instrument> <ClientUserId><USERID></ClientUserId> <ClientComments>Redeem Points</ClientComments> <ReasonCode></ReasonCode> <RedeemPointsParameters> <LoyaltyAccountID><ACCOUNT_ID></LoyaltyAccountID> <AwardRuleID><RULE_ID></AwardRuleID> <PointsAmount>100</PointsAmount> </RedeemPointsParameters> <TransactionID> <RetailStoreID><STORE_ID></RetailStoreID> <RegisterID><REGISTER_ID></RegisterID> <BusinessDayDate>2015-02-20</BusinessDayDate> <SequenceNumber>1234567</SequenceNumber> </TransactionID> </LoyaltyRequest></Loyalty>
Batch Processing Errors
The following table contains a list of possible errors that may occur and possible causes:
Error | Cause |
---|---|
ACCOUNT_EXPIRED |
There is an Expiry Date for the account and it is less than or equal to the current date. |
ACCOUNT_INACTIVE |
The account is not active (Active Flag = False). |
ACCOUNT_NOT_EFFECTIVE |
The account's effective date is greater than the current date. |
ACCOUNT_NOT_FOUND |
The account number specified in the request could not be found. |
CARD_EXPIRED |
There is an Expiration Date for the card and it is less than the current date. |
CARD_INACTIVE |
The card is not active (Active Flag = False). |
CARD_NOT_FOUND |
The card specified in the request could not be found. |
CARD_NUMBER_REQUIRED |
The card number was not included. |
GENERAL_ERROR |
A general, non-specific error. If you cannot determine the cause of the problem, contact your Project Consultant. |
INVALID_DATA_FOR_REQUEST |
Request is missing data or contains invalid data. |
INVALID_TRANSACTION_DATA |
Invalid retail transaction date provided in request. |
LOYALTY_ACCOUNT_AWARD_RULE_MISMATCH |
Award rule specified in request that is not attached to loyalty program. |
LOYALTY_AWARD_ACCOUNT_ERROR |
An error occurred for the award account. If you cannot determine the cause of the problem, contact your Project Consultant. |
LOYALTY_INSUFFICIENT_POINTS_FOR_REDEEM |
Redeeming the award would cause the earned points balance to go below zero. |
LOYALTY_INVALID_POINTS_AMOUNT |
Invalid points amount provided in request. |
LOYALTY_RULE_NOT_FOUND |
The loyalty rule in the request could not be found. |
REASON_CODE_REQUIRED |
Request is missing the required reason code. |
Batch File Response
A complete copy of the incoming request is placed in the /complete/[Fileset Name]/archived
directory.
Each <LoyaltyRequest>
block in the request that was not successfully processed is placed in a file with _failures
appended to the original filename and saved in the /complete/[Fileset Name]/failed
directory.
You may be able to determine the reason for the failure by using the Batch Import Review pages (see Introduction).
Post Engagement Action
The purpose of this request is to issue loyalty points (positive or negative) to the loyalty account specified in the request based on marketing activity rather than transactions.
Requirements/Restrictions
The <CardNumber>
, <lylAccountId>
, <issueRuleId>
, and <transactionBusinessDate>
must be included in the request.
Fields
The elements in the table below are the elements/attributes that may be used in an PostEngagementAction request. The sample request shows the placement of these elements/attributes.
XML Tag | Comments |
---|---|
<LoyaltyRequest Type="PostEngagementAction"> |
|
<Instrument> |
|
<CardNumber><CARD_NUMBER> </CardNumber> |
(required) Card number. |
<InstrumentID></InstrumentID> |
|
</Instrument> |
|
<ClientUserId>example</ClientUserId> |
ID of user making request. |
<ClientComments>Watched our video</ClientComments> |
Comments or notes. |
<ReasonCode>Award engagement points</ReasonCode> |
ID code for the reason the points were issued. |
<PostEngagementAction Parameters> |
|
<LoyaltyAccountID><ACCOUNTID> </LoyaltyAccountID> |
(required) Identifies specific loyalty account on card. |
<IssueRuleID><RULE_ID></IssueRuleID> |
(required) ID of the rule issuing the points. Must have a Calculation Type of The number of marketing engagements. |
<PromotionID></PromotionID> |
(required) ID of the promotion that triggered the issuing of the points. Used in conjunction with offer Id. Promotion must be of Marketing Engagement offer type. |
<OfferID></OfferID> |
(required) ID of the offer that triggered the issuing of the points. Used in conjunction with promotion Id. Promotion must be of Marketing Engagement offer type. |
PointsAmount></PointsAmount> |
Number of points being issued. If not specified, defaults from the Fixed Amount specified for the issue rule. |
</PostEngagementActionParameters> |
|
<TransactionID> |
|
<RetailStoreID><STORE_ID></RetailStoreID> |
Retail location ID where transaction occurred. |
<RegisterID><REGISTER_ID></RegisterID> |
Register ID where transaction occurred. |
<BusinessDayDate>2017-12-31</BusinessDayDate> |
Date/Time transaction occurred. |
<SequenceNumber>1</SequenceNumber> |
Identifies transaction on register. |
</TransactionID> |
|
</LoyaltyRequest> |
|
</Loyalty> |
Example
A PostEngagementAction request should look similar to the example below. The parameters will vary with each request.
If points are being issued to more than one account, there should be multiple <LoyaltyRequest> blocks.
<?xml version="1.0" encoding="UTF-8"?><Loyalty> <LoyaltyRequest Type="PostEngagementAction"> <Instrument> <CardNumber><CARD_NUMBER></CardNumber> <InstrumentID><INSTRUMENT_ID></InstrumentID> </Instrument> <ClientUserId><USERID></ClientUserId> <ClientComments>Watched our video</ClientComments> <ReasonCode>Issue Engagement Points</ReasonCode> <IssuePointsParameters> <LoyaltyAccountID>99</LoyaltyAccountID> <IssueRuleID><RULE_ID></IssueRuleID> <PointsAmount>125</PointsAmount> </IssuePointsParameters> <TransactionID> <RetailStoreID><STORE_ID></RetailStoreID> <RegisterID><REGISTER_ID></RegisterID> <BusinessDayDate>2017-12-31</BusinessDayDate> <SequenceNumber>1234567</SequenceNumber> </TransactionID> </LoyaltyRequest></Loyalty>
Batch Processing Errors
The following table contains a list of possible errors that may occur and possible causes:
Error | Cause |
---|---|
ACCOUNT_NOT_FOUND |
The account number specified in the request could not be found. |
CARD_NOT_FOUND |
The card specified in the request could not be found. |
INVALID_TRANSACTION_DATA |
Invalid retail transaction date provided in request. |
LOYALTY_RULE_NOT_FOUND |
The loyalty rule in the request could not be found. |
LOYALTY_INVALID_POINTS_ AMOUNT |
The specified number of points is invalid. |
INVALID_LOYALTY_RULE |
The issue rule specified is does not belong to the level for the specified account or the issue rule does not have the correct Calculation Type of The number of marketing engagements. If a Marketing engagement promotion has triggered the issuing of points, the account supplied may not be in the loyalty programs or levels selected for the promotion. |
LOYALTY_RULE_NOT_EFFECTIVE |
The business date falls outside the effective period of the issue rule. |
INVALID_PROMODEAL |
The Promotion ID and/or Offer ID supplied is invalid. |
INVALID_DEAL |
The Offer ID supplied is not a Marketing Engagement offer type. |
DEAL_NOT_ENABLED |
The Offer ID supplied is not enabled. |
LOYALTY_NEGATIVE_BALANCE_NOT_ALLOWED |
The points issued will result in a negative balance and the allow negative balance flag in Loyalty Program Level is set to false. |
PROMOTION_NOT_ACTIVE |
The Promotion ID supplied is not active on the business date supplied. |
Batch File Response
A complete copy of the incoming request is placed in the /complete/[Fileset Name]/archived
directory.
Each <LoyaltyRequest>
block in the request that was not successfully processed is placed in a file with _failures
appended to the original filename and saved in the /complete/[Fileset Name]/failed
directory.
You may be able to determine the reason for the failure by using the Batch Import Review pages (see Introduction).
Activity Import
The purpose of this request is to update loyalty activity history for one or more loyalty accounts.
Requirements/Restrictions
The <AccountId>
, <CardNumber>
, <AccountActivityTypeCode>
, and <ActivityDatetime>
must be included in the request.
The Enable Loyalty Activity Batch Import property controls whether this import is supported.
This request is processed by creating and scheduling a Transfer through the File Transfers option in the Customer Engagement user interface.
Fields
The elements in the table below are the elements/attributes that may be used in an ActivityImport request. The sample request shows the placement of these elements/attributes.
XML Tag | Comments |
---|---|
<LoyaltyRequest Type="ActivityImport"> |
|
<ActivityImportParameters> |
|
<AccountId><ACCOUNT_ID></AccountId> |
(required) Identifies specific loyalty account on card. |
<CardNumber><CARD_NUMBER></CardNumber> |
(required) Card number. |
<ProgramId><PROGRAM_ID></ProgramId> |
Identifies the loyalty program in case the card number is associated with multiple programs. |
<AccountActivityTypeCode>Activate</AccountActivityTypeCode> |
(required) The type of activity. Possible types are Expire, AccountMerge, Void, Inquiry, ResetExpirationDate, SustainExtension, Issue, Earn, Award, Deactivate, PointRecovery, Activate Return, and ChangeLevel. |
<ActivityDatetime>2017-07-12T17:38:53</ActivityDatetime> |
(required) The date and time when the activity took place. |
<CreateDate>2017-07-12T17:38:53</CreateDate> |
|
<CreateUserId><USERID></CreateUserId> |
ID of user creating the activity. |
<CustomerId><CUSTOMER_ID></CustomerId> |
ID of the customer on the account. |
<UpdateDate>2017-07-12T18:00:00</UpdateDate> |
The most recent date and time when an update took place. |
<UpdateUserId>Import Update User</UpdateUserId> |
ID of user making the update. |
<EscrowTransferDate>2017-07-16T18:00:00</EscrowTransferDate> |
The date when escrow points were converted to earned points. |
<VoidFlag>false</VoidFlag> |
Indicates whether the activity has been voided. |
<ReferencedAccountId/> |
ID of account referenced by the activity. |
<ReferencedAccountActivityId/> |
ID of activity record referenced by the activity. |
<ErrorCode></ErrorCode> |
Error, if any, generated by the activity. |
<Comments>Sample comment</Comments> |
Comments or notes. |
<LineItemSequence>1</LineItemSequence> |
POS line item sequence number. |
<ActivityReasonCode>Sample reason</ActivityReasonCode> |
Reason code for the activity. |
<ExpirationDate></ExpirationDate> |
Date when the activity expires. |
<BonusPointsBalance>15</BonusPointsBalance> |
Total bonus points at the time of the activity. |
<EarnedPointsBalance>50</EarnedPointsBalance> |
Total earned points at the time of the activity. |
<EscrowPointsBalance>75</EscrowPointsBalance> |
Total escrow points at the time of the activity. |
<NumPoints>50</NumPoints> |
The number of points added or subtracted through the activity. Can be a negative number, or 0. |
<RequestedCurrencyCd>USD</RequestedCurrencyCd> |
Currency typecode to use for the calculation of loyalty points. |
<ExchangeRate>1</ExchangeRate> |
Number representing the amount of foreign currency that equals one unit of the base currency. |
<RequestedAmount>50</RequestedAmount> |
Original monetary amount before conversion. Can be a negative number, or 0. |
<ConvertedAmount>50</ConvertedAmount> |
Monetary amount after conversion. Can be a negative number, or 0. |
<FranchiseeId><FRANCHISEE_ID></FranchiseeId> |
Unique identifier of the franchisee. |
</ActivityImportParameters> |
|
<TransactionID> |
|
<RetailStoreID><STORE_ID></RetailStoreID> |
Retail location ID where activity occurred. |
<RegisterID><REGISTER_ID></RegisterID> |
Register ID where activity occurred. |
<BusinessDayDate>2017-06-01</BusinessDayDate> |
Date/Time when activity occurred. |
<SequenceNumber>10000</SequenceNumber> |
Identifies activity on register. |
</TransactionID> |
Examples
An ActivityImport request should look similar to the example below. The parameters will vary with each request.
If points are being issued to more than one account, there should be multiple <LoyaltyRequest>
blocks.
<?xml version="1.0" encoding="UTF-8"?><Loyalty> <LoyaltyRequest Type="ActivityImport"> <TransactionID> <RetailStoreID><STORE_ID></RetailStoreID> <RegisterID><REGISTER_ID></RegisterID> <BusinessDayDate>2017-12-31</BusinessDayDate> <SequenceNumber>1234567</SequenceNumber> </TransactionID> <ActivityImportParameters> <AccountId><ACCOUNT_ID></AccountId> <AccountActivityTypeCode>Issue</AccountActivityTypeCode> <ActivityDatetime>2017-12-31T17:38:53</ActivityDatetime> <CreateDate>2017-12-31T17:38:53</CreateDate> <CreateUserId>Import Create User</CreateUserId> <CustomerId><CUSTOMER_ID></CustomerId> <UpdateDate>2017-12-31T18:00:00</UpdateDate> <UpdateUserId>Import Update User</UpdateUserId> <EscrowTransferDate>2017-07-16T18:00:00</EscrowTransferDate> <VoidFlag>false</VoidFlag> <ReferencedAccountId/> <ReferencedAccountActivityId/> <ErrorCode>false</ErrorCode> <Comments>Sample loyalty activity comment</Comments> <LineItemSequence>1</LineItemSequence> <ActivityReasonCode>SampleReason</ActivityReasonCode> <ExpirationDate></ExpirationDate> <BonusPointsBalance>100</BonusPointsBalance> <EarnedPointsBalance>150</EarnedPointsBalance> <EscrowPointsBalance>50</EscrowPointsBalance> <NumPoints>50</NumPoints> <RequestedCurrency>USD</RequestedCurrency> <ExchangeRate>1</ExchangeRate> <RequestedAmount>50</RequestedAmount> <ConvertedAmount>50</ConvertedAmount> <FranchiseeId><FRANCHISEE_ID></FranchiseeId> </ActivityImportParameters> </LoyaltyRequest></Loyalty>
Additional Notes on Updates
Imported loyalty activity records are not included when the Earn Loyalty Points job calculates earned points. To enable the job to identify imported records, the ESCROW_XFER_FLAG in the LYL_LOYALTY_ACCT_ACT table is set to 1.
Imported loyalty activity records are not included when the Create Loyalty Awards job calculates awards. To enable the job to identify imported records, the ACT_ACT_TRIGGER_TYPECODE in the LYL_LOYALTY_ACCT_ACT table is set to BATCH.
Batch Processing Errors
The following table contains a list of possible errors that may occur and possible causes:
Error | Cause |
---|---|
LOYALTY_ACTIVITY_IMPORT_ DISABLED |
The Enable Loyalty Activity Batch Import property is not selected. |
ACCOUNT_NOT_FOUND |
The account number specified in the request could not be found. |
LOYALTY ACTIVITY NOT FOUND |
No AccountActivityTypeCode was specified. |
No enum constant dtv.crm.enums.loyalty.[LoyaltyActivity Type] |
The AccountActivityTypeCode specified in the request was not valid. |
could not execute batch |
No ActivityDatetime was passed in the request. |