The following table describes the collection properties for the Loyalty microservice:

S. No.AttributeDefault ValueDescription
1minimumRewardsValueForRedemption1Indicates the minimum rewards value where a user can redeem in a single transaciton.
2cycleperiod1Specifies the cycle period (in days).
3defaultlocaleen_USIndicates the default locale of the collection. The locale should be mentioned in the Java standard locale format.
4applicablelocalesen_USIndicates the list of locales applicable to the collection. The locale should be mentioned in the Java standard locale format.
5isRewardApprovalRequiredTRUEIndicates whether the reward approval is required or not.
Enable or disable the status of the property key to mention if the reward approval is required or not.
  • enable the toggle to approve the reward manually. This is default.
  • disable the toggle to approve the reward automatically.
6synchronousRedemptiontrueIndicates whether to redeem the approved points synchronously (if the value is true) or asynchronously (if the value value is false).
  • Synchronous: Before return redemption, removes the approved points.
  • Asynchronous: After return redemption, removes the approved points.
7customActionTypesConfigNAContains the custom actions of the rule settings. This field is used to customize the action configuration of loyalty rules. This field contains a valid JSON string. For example, [
{
"value": 1,
"actionTypes": [
{
"value": 1,
"actions": [
{
"name": "Earn Points Action",
"description": "Earn Points Action",
"className": "com.skava.loyalty.action.AddRewardsAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"formulaClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "rewardType",
"displayName": "Reward Type",
"type": "select"
},
{
"name": "formula",
"displayName": "Formula",
"type": "text"
}
]
},
{
"name": "Approve Points Action",
"description": "Approve Points Action",
"className": "com.skava.loyalty.action.ApproveCurrentCyclePendingRewards",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "rewardType",
"displayName": "Reward Type",
"type": "select"
},
{
"name": "minEligiblePV",
"displayName": "Minimum eligible PV",
"type": "text"
}
]
},
{
"name": "Earn Voucher Action",
"description": "Earn Voucher Action",
"className": "com.skava.loyalty.action.AddVoucherAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"type": "VOUCHER",
"params": [
{
"name": "rewardType",
"displayName": "Reward Type",
"type": "select"
},
{
"name": "formula",
"displayName": "Formula",
"type": "text"
},
{
"name": "voucherName",
"displayName": "Voucher Name",
"type": "select",
"options": [
{
"displayName": "Bounse Voucher",
"name": "Bounse Voucher",
"description": "Bounse Voucher"
},
{
"displayName": "Birthday Voucher",
"name": "Birthday Voucher",
"description": "Birthday Voucher"
}
]
}
]
},
{
"name": "Loyalty OptIn / OptOut Action",
"description": "Loyalty OptIn / OptOut Action",
"className": "com.skava.loyalty.action.LoyaltyOptInOptOutAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "rewardType",
"displayName": "Reward Type",
"type": "select"
},
{
"name": "optInStatus",
"displayName": "Status",
"type": "select",
"options": [
{
"displayName": "True",
"name": "true",
"description": "OptIn Status as True"
},
{
"displayName": "False",
"name": "false",
"description": "OptIn Status as False"
}
]
}
]
},
{
"name": "Cycle Transaction Action",
"description": "Cycle Transaction Action",
"className": "com.skava.loyalty.action.CycleTransactionAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "rewardType",
"displayName": "Reward Type",
"type": "select"
}
]
},
{
"name": "Loyalty Partial Forfeit Action",
"description": "Loyalty Partial Forfeit Action",
"className": "com.skava.loyalty.action.LoyaltyPartialForfeitAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"formulaClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "rewardType",
"displayName": "Reward Type",
"type": "select"
},
{
"name": "formula",
"displayName": "Formula",
"type": "text"
}
]
},
{
"name": "Update Profile Property",
"description": "Update Profile Property",
"className": "com.skava.loyalty.action.UpdateProfilePropertyAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"formulaClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "propertyName",
"displayName": "Property Name",
"type": "select",
"options": [
{
"name": "numOrdersThisYear",
"displayName": "Number of Orders this Year",
"description": "NumericIncrement",
"timeBasis": "Yearly"
},
{
"name": "numOrdersThisMonth",
"displayName": "Number of Orders this month",
"description": "NumericIncrement",
"timeBasis": "Monthly"
},
{
"name": "numOrdersThisWeek",
"displayName": "Number of Orders this week",
"description": "NumericIncrement",
"timeBasis": "Weekly"
},
{
"name": "numOrdersThisDay",
"displayName": "Number of Orders this Day",
"description": "NumericIncrement",
"timeBasis": "Daily"
},
{
"name": "referenceID",
"displayName": "Account reference Id",
"description": "NumericIncrement"
},
{
"name": "numOfSubscription",
"displayName": "Number of Subscription",
"description": "NumericIncrement"
},
{
"name": "orderTotalValue",
"displayName": "Order Total Value",
"description": "NumericIncrement"
},
{
"name": "test",
"displayName": "test",
"description": "NumericIncrement"
},
{
"name": "isFirstTimeSubscription",
"displayName": "First Time Subscription",
"description": "Boolean"
},
{
"name": "isFirstTimeSubscription1",
"displayName": "First Time Subscription1",
"description": "Boolean"
}
]
},
{
"name": "formula",
"displayName": "Formula",
"type": "text"
}
]
}
]
}
]
},
{
"value": 2,
"actionTypes": [
{
"value": 1,
"actions": [
{
"name": "Loyalty Forfeit Action",
"description": "Loyalty Forfeit Action",
"className": "com.skava.loyalty.action.LoyaltyForfeitAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "rewardType",
"displayName": "Reward Type",
"type": "select"
}
]
},
{
"name": "Order Total Value",
"description": "Order Total Value",
"className": "com.skava.loyalty.action.SetOrderTotalValuePropertyAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"formulaClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "propertyName",
"displayName": "Property Name",
"type": "select",
"options": [
{
"name": "orderTotalValue",
"displayName": "Order Total Value",
"description": "Order Total Value"
}
]
},
{
"name": "formula",
"displayName": "Cycle Months Count",
"type": "text"
}
]
}
]
}
]
},
{
"value": 3,
"actionTypes": [
{
"value": 1,
"actions": [
{
"name": "Set Tier Action",
"description": "Set Tier Action",
"className": "com.skava.loyalty.action.TierUpdateAction",
"conditionClasses": "com.skava.loyalty.action.model.CustomEvent",
"params": [
{
"name": "tier",
"displayName": "Tier Value",
"type": "select",
"options": [
{
"displayName": "T1 Discount-5",
"name": "T1",
"description": "Tier 1"
},
{
"displayName": "T2 Discount-10",
"name": "T2",
"description": "Tier 2"
},
{
"displayName": "T3 Discount-20",
"name": "T3",
"description": "Tier 3"
},
{
"displayName": "Tier 4",
"name": "T4",
"description": "Tier 4"
}
]
}
]
}
]
}
]
}
]
8expirationPeriod1Indicates the loyalty points expiration period (in days).
9roundOffValue2Indicates the number of decimal places.
10loyaltyPropertynullIndicates the default properties of Events APIs to define loyalty event modal attributes. This field contains a valid JSON string.
11allowedRewardTypesForOptIn nullHolds a list of default reward types. The list of reward types configured here will be eligible based on opt-in functionality. When the user opts-in to the loyalty program, the user will be able to earn these rewards.
Note:
  • Before providing values here, you need to create reward types. For more details, see Configuring Loyalty Rewards.
  • You MUST mention the reward type.
12duplicateTransactionCheckfalseSpecifies whether duplicate transactions are allowed or not. The value can be:
  • true - Indicates duplicate transactions are not allowed. Here, to maintain the uniqueness a unique value is set to the field `sourceSystemUniqueId` of the `TransactionRequest` model. This value is obtained from third-party services.
  • false - Indicates more than one transaction with the same loyalty rule condition is allowed.
13enrollBankOnTransaction trueSpecifies whether to show the validation error message or create a reward bank for a new user who does not exist in the loyalty database. If this flag is true, shows the validation error message if the user is not available in the loyalty database. If the value is false, creates a reward bank for a new user even though the user does not exist in the database.
14frequencyFeedCurrentTimeInMs NAHolds the current time in milliseconds which overrides the existing current time to update any missing transactions.
15frequencyTransactionConfig NAHolds the transaction frequency configurations. This configuration helps to automatically perform the transactions on the given frequenci(es). For example, to provide loyalty points monthly to all the Gold users. The frequency can be weekly, monthly, quarterly, halfyearly, and yearly. The transaction details are given using the TransactionRequest model. Multiple frequencies with their transaction details can be given as comma-separated.
For example,
{
""weekly"": [
{
""rewardType"": ""Points"",
""type"": ""EARN"",
""eventId"": ""Frequency reward"",
""properties"": {
""items"": ""{\""customEvent\"":[{\""frequency\"":{\""Type\"":\""weekly\""}}]}""
}
}
],
""monthly"": [
{
""rewardType"": ""Points"",
""type"": ""EARN"",
""eventId"": ""Frequency reward"",
""properties"": {
""items"": ""{\""customEvent\"":[{\""frequency\"":{\""Type\"":\""monthly\""}}]}""
}
}
],
""quarterly"": [
{
""rewardType"": ""Points"",
""type"": ""EARN"",
""eventId"": ""Frequency reward"",
""properties"": {
""items"": ""{\""customEvent\"":[{\""frequency\"":{\""Type\"":\""quarterly\""}}]}""
}
}
]
}
16isInternalUser trueSpecifies whether the user is from the User (Customers) service or not. If the value is true, the user is from the User service.
17pointsExpiryDays NAHolds the number of days for which the expiry points will be calculated and sent as an event. Here, the points that will expire in the next three days, four days and five days will be calculated and sent in the event.
18profilePropertyNADefines the dynamic profile properties based on business requirements. These properties are used as operands while configuring loyalty conditions. For example,
{
""properties"": {
""numOrdersThisMonth"": {
""name"": ""Number of Orders this month"",
""type"": ""NumericIncrement"",
""timeBasis"": ""Monthly""
},
""numOrdersThisWeek"": {
""name"": ""Number of Orders this Week"",
""type"": ""NumericIncrement"",
""timeBasis"": ""Weekly""
}
}
}

Note: The key ""timeBasis"" indicates the value of the property is updated on the specified time such as Monthly, Weekly, Quaterly, HalfYearly, and Yearly.
19reasonstoCreditRewardsNAHolds a list of reasons to credit or debit reward points (Store Credit or Loyalty) by a CSR. These reasons are shown as options when a CSR credits or debits the reward points.
20roundOffMode HALF_UPHolds the round-off mode. The value can be:
  • HALF_UP - Indicates the value is rounded up or down based on the decimal value. If the decimal value is 5 or above, the value is rounded up to the nearest whole number. If the decimal value is 4 or below, the value is rounded down to the nearest whole number.
  • FLOOR - Indicates the value is rounded down to the nearest whole number.
  • CEILING - Indicates the value is rounded up to the nearest whole number.
21tierConfig1Specifies the current tier and next tier mappings which are used to track the loyalty events.
22VouchersLimit10Holds the maximum number of vouchers of a flat voucher value. For example, if a user earns a flat voucher of $165, the value of voucherTypes is 5,10,20,25,50, and the value of voucherLimit is 7, then the vouchers provided are $50, $50, $50, $10, and $5. In the same case, if the user earns a flat voucher of $240, the vouchers provided can be $50, $50, $50, $50, $25, $10, and $5.
Note: You can configure the voucher types via the collection property voucherTypes. The value of the voucherLimit collection property MUST be greater than or equal to the number of types in the voucherTypes collection property.
23voucherTypes10Holds a list of voucher types. For example, 5,10,20, 25,50. The splitting-up of a flat voucher into small vouchers is considered from the largest value to the smallest value. For example, if a flat voucher is $130, then $50, $50, $25, and $5 vouchers are provided to the user.
24voucherTypes5,10,20Points earned for the rewardType VOUCHER will be divided based on the voucherTypes collection property. If reward value is $50, then it can be divided as $20, $20, and $10.
25vouchersLimit5Specifies the number of different vouchers that can be configured in the voucherTypes collection property. If the maximum limit is 5, then 5 different set of voucher types can be defined.
26voucherTypesVoucher Types10
27vouchersLimitVouchers Limit10




Revision History
2023-10-22 | JP – Updated content for 8.15.4 release.
2023-08-03 | AN – Updated content for 8.15.0 release.
2022-12-22 | AN – Updated content for 8.13 release.
2021-01-21 | SW – Updated the descriptions.
2020-10-08 | HM – Updated content with properties.
2020-05-26 | AN – Updated content for June 2020 release.
2020-01-14 | AN – Updated content for February 2020 release.
2019-10-31 | AN – Page created and content uploaded.