> ## Documentation Index
> Fetch the complete documentation index at: https://help-loyalife.xoxoday.com/llms.txt
> Use this file to discover all available pages before exploring further.

# v7.16 — May 2025

> Loyalife v7.16 introduces aggregate attributes in the rule engine, configurable points expiry, Plum marketplace redirection, multi-currency program linking, and 15 VAPT security fixes.

# v7.16 — May 2025

**Released:** May 2025

## Rule Engine

### Aggregate Attributes for Volume-Based Logic

Programs can now create aggregate attributes that compute running totals for use in rule conditions:

* **Eligible base types:** Float and Integer (global and local attributes)
* **Aggregate functions:** Sum, Min, Max, Average, Count
* **Time periods:** Lifetime, MTD, QTD, YTD, Rolling (last 365 days)
* Optional conditional logic can be applied during attribute setup
* Once created, only the **name** can be edited; deletion is only allowed when the attribute is not used in the Rule Engine
* Aggregation is computed from incoming data (file or API) — historical data is not re-computed

**Time period notes:**

* *Rolling Year:* Covers the last 365 days; members outside this window remain in summaries but do not receive points
* *MTD/QTD/YTD:* Computation occurs even without a current-period transaction; data is stored per transaction date

**Performance benchmarks:**

* 1M transactions + 10 aggregate attributes ≈ 4.7M records processed in 8–10 minutes
* Full points issuance run with capping ≈ 220 minutes total

***

## Points Configuration

### Revamped Points Definition Setup

The Points Definition screen is reorganised into three unified sections:

* **Point Terminology & Rates:** Points terminology, Cashback Rate, Customer Purchase Rate, Redemption Rate
* **Expiration Details:** Expiration schedule, period, and start condition
* **Claim & Pending Points Management:** Moved under Points Definition; toggles are non-editable if required global attributes are missing

The standalone "Attribute Setting" option previously in Rule Engine Attribute Setup has been removed.

### Configurable Points Expiry Trigger

Points expiry can now be triggered from either the **Processing Date** or the **Availability Date**:

* Default is Processing Date; the option to change it is only available once Claim & Pending Points Management is configured
* Expiry begins when the transaction status changes to confirmed (status = 1)
* When anomaly detection is enabled, expiry is calculated **after** the transaction is approved

### Monthly Email Statement Toggle

* A new enable/disable toggle is available in Communication Settings (enabled by default)
* Requires "Create communication template" permission
* Once a member receives a monthly statement, they will not receive another for the same month even if re-triggered
* Compatible with both new and existing programs

### Monthly Cap Limits Removed

* Product Code monthly cap validation has been removed; values exceeding 100,000 are now accepted
* Rule Group limits now accept values beyond 5 digits without validation errors

***

## Marketplace

### Plum Account Redirection from Loyalife

Admins can configure storefront Plum redirection under Platform Settings:

* Requires platform view and edit configuration permissions
* **Role-based redirection:** Super Admin → Plum admin portal; Admin → Plum marketplace/end-user section; Unregistered → member view with no admin switch
* Password resets must be performed from the **Loyalife portal** — not from Plum
* Credential validation is not performed in real-time during setup; errors appear in the UI during login
* Token mechanism: refresh tokens generate access tokens; if the refresh token expires, the user is not redirected to Plum

***

## Multi-Currency

### Linked Program Management

Program Admins can link two independent programs for multi-currency operations:

* This is a **one-time, irreversible** action — programs cannot be delinked once joined
* Module-level switching is supported (e.g., Member module)
* Detailed actions and views are limited to linked modules only
* Proper error messaging is displayed when a member exists in one program but not the other

***

## Members

### CRD LastSixDigits Uniqueness Removed

* Zero values are now accepted for LastSixDigits and SubRelationIdentifier
* Either `CardNumber` or `SubRelationIdentifier` must be non-null and non-zero — providing both as null/zero is rejected with: *"CardNumber and SubRelationIdentifier both cannot be empty together"*
* After insertion, `CardNumber` and `SubRelationIdentifier` are immutable
* The Get API returns all members matching a given `CardNumber` or `SubRelationIdentifier`

### Enhanced Member Transaction API

* `GetMemberTransactionSummary` and `GetMemberTransactionSummaryByDate` now return local transaction attributes
* Compatible with both legacy and new programs

***

## Reports

### Purchase Eraser Report

* A new *"Purchase erases"* filter is available in transaction reports
* Not included in default system reports; admins must create a custom view
* Classification criteria: `loyalty_txn_type=47` AND `transaction_type=2`; transaction narration: *"Redemption DebitTransfer"*

### Report Generation Improvements

* Preview capability lets users verify the report setup before generating
* Manual reports can be generated from an auto-report configuration; naming convention: `[Parent Report Name]_[StartDate-EndDate]`

***

## User Experience

### Sidebar Redesign

* Each sidebar module now has a unique icon with an accurate tooltip
* "Organisation" removed from the top navigation
* "Manage Users" and "Manage Roles" are consolidated into a single **Manage Roles** section

### Improved User Creation Flow

* Email ID appears before username in the creation form
* If the email already exists in the system, the username auto-populates and the field is locked
* New email addresses require manual username entry with basic validation

***

## Branding

* Sender email updated to `no-reply@xoxoday.com`; default sender name updated to **Loyalife**
* All LBMS/Giift references have been removed from email templates
* Existing program configurations are not affected

***

## Security

* All VAPT vulnerabilities flagged by the Seciq external penetration testing team for 2025 have been resolved and verified; a security certificate has been issued
