Overview
This document outlines the configuration for automatically synchronizing Loyalty Card Transaction records from the 99minds Loyalty Card Transaction entity to the iPaaS Transaction entity. The integration uses an API-based sync that triggers whenever a Loyalty Card Transaction record is created in 99minds.
Mapping Collection Status
Mapping Status: Enabled.
Trigger Events: The sync is triggered by the creation of Loyalty Card Transactions in 99minds.
ID Format: When manually syncing, the Loyalty Card Transaction ID from 99minds is used. This can be resolved via an external ID.
Conflicting Mappings: This mapping applies only to Loyalty Card Transactions. Ensure no other mappings target the same 99minds entity to prevent data from being overwritten.
System Caveats
99minds Caveats
Each transaction must include TransactionAmount and TransactionType for proper classification.
Transactions referencing an order should include ClientOrderId to prevent duplicates.
iPaaS Caveats
The destination system requires a unique TransactionNumber for every Loyalty Transaction.
Setup Requirements
99minds Configuration
All loyalty point transactions must include:
TransactionAmount
TransactionType
ClientOrderId (when related to an order)
A valid customer reference or external identifier
iPaaS Configuration
CustomerId must resolve via internal lookup using customer mapping.
Ensure the iPaaS Loyalty Transaction entity has fields configured.
Authentication & Security
99minds API Secret Key: Used to access iPaaS API for fetching Loyalty Card Transaction and related data.
Integration Flow
Retrieve Data: Fetch newly created point transactions from 99minds based on Last Sync Time.
Check Existing Orders: If a transaction references an order and that order already exists in iPaaS, the system will skip creation to avoid duplication.
Map Fields: Apply the mapping rules to transform 99minds values into the iPaaS Loyalty Transaction format.
Assign Static Values: Default values for Ticket Type and Status are applied.
Transfer Data: Push transformed transactions to iPaaS as new entries only.
Mappings
Loyalty Card Transaction Transaction
Filter
var existingOrder = await IpaasTransactionIdByNumber(ClientOrderId);
if (existingOrder == null
&& TransactionType != "RELOAD"
& TransactionType != "REDEMPTION"
& TransactionAmount != "0.00"
{return true;} else {return false;}
Description
If an existing order match is found in iPaaS for this point adjustment, this mapping collection filter will not create a new one.
99minds Customer To iPaaS.com
Mapping Type | Source Field (99minds) | Destination Field (iPaaS) | Description |
Dynamic Formula |
| 99minds Last Sync Time (custom field) |
|
Field | TransactionAmount | 99minds Points Earned / Used (custom field) |
|
Field | TransactionType | 99minds Points Transaction Type (custom field) |
|
Dynamic Formula |
| 99minds Order Transactions (custom field) | If multiple transactions occurred, this will search for all of them |
Dynamic Formula |
| SystemId |
|
Dynamic Formula |
| TransactionNumber |
|
Dynamic Formula |
| CustomerId |
|
Static | Ticket | Type |
|
Static | Complete | Status |
|
Field | TransactionAmount | Total |
|
Error Handling
Duplicate Transaction (Order Match Found)
No new record created — existing order matched.
Description: The transaction references an order already synced to iPaaS.
Resolution: No action required — this is expected behavior to prevent duplicates.
Missing Transaction Amount
TransactionAmount not found.
Description: iPaaS cannot process the record without point’s value.
Resolution: Ensure 99minds always supplies TransactionAmount.
Invalid Customer Identifier
Failed to resolve CustomerId
Description: Customer lookup function returned null.
Resolution: Validate customer mapping or ensure customer exists in iPaaS.
Missing Transaction Type
TransactionType missing
Description: System cannot determine if this is earn/redeem.
Resolution: Fix data in 99minds before syncing.
Validation Rules & Testing
Validation Checklist
TransactionNumber created correctly with 99minds {TransactionId} format.
CustomerId resolves successfully.
Order-based transactions are skipped when they already exist.
Status always appears as Complete.
Total equals TransactionAmount.
Test Scenarios
New Loyalty Card Transaction Sync: Create a new Loyalty Card Transaction in 99minds and verify that it appears in iPaaS with correct Number, Balance, and PurchaseDate.
Duplicate Prevention: Attempt syncing an already existing LoyaltyCode and ensure the system skips it without overwriting.
Email Validation: Enter an invalid recipient email in 99minds and confirm that sync fails gracefully with appropriate error logging.
Balance Verification: Confirm that both Balance and OriginalAmount match expected values in iPaaS.
Additional Notes
This mapping supports Add-Only creation of Loyalty Transactions. Updates must be handled through separate mapping collection.
