Table of Contents

 

 PDF

Notifications from Customisations

The Notification Framework in TallyPrime provides a system-driven way to surface important alerts, reminders, and actionable insights to users. This has been introduced in Release 5 and it enabled system-level notifications. Starting from Release 7, the framework has been extended to allow developers to create, trigger, and manage custom notifications using TDL.

The notification capability can be used in various scenarios, such as alerting users about pending invoices, stock shortages, or overdue payments. It can also display reminders for scheduled backups or report exports, helping users stay on top of routine tasks. Additionally, notifications can inform users about the status of external integrations or data synchronization, ensuring visibility into connected systems. For third-party or ISV extensions, solution-specific alerts can be delivered to enhance usability and keep users informed in real time.

Definition – Notification

The Notification definition enables developers to configure how notifications are created, displayed, and interacted within the system. This framework allows you to:

  • Define custom notifications.
  • Raise notifications programmatically.
  • Manage user interactions (snooze, dismiss, persist).
  • Track notification state across companies and application sessions.

The attributes of Notification definition allow for greater flexibility in how and when notifications are triggered.

Key Behavior:

  • If the base frequency attribute is present then the notification behaves like a Right Button, appearing consistently based on the defined frequency.
  • If the base frequency attribute is not present, the notification uses the extended attributes described below to determine its behaviour and display conditions.

Syntax

[Notification: <Definition Name>]

Where, <Definition Name> is the name of the notification.

Example:

[Notification : My Custom Alert]

Notification Attributes

Attributes – Activity Name and Activity ID

These attributes specify the name and ID of the notification as it will appear in the Notification Report and the Allow/Disallow Notifications from Customizations report.

Each notification is uniquely identified by the combination of Activity Name and Activity ID.

Syntax

[Notification: <Definition Name>]

Activity Name : <Notification Display Name >

Activity ID        : < ID Number>

Where,

<Definition Name> is the name of the notification definition.

<Notification Display Name > is the display name or activity name for the notification report.

<ID number> is the identification number for the activity ID.

Attribute – Activity Description

This attribute provides a brief, user-friendly summary shown under the Description column in the Allow/Disallow Notifications from Customizations report. It helps users clearly understand the purpose of each notification before allowing or disallowing it. This is a mandatory attribute for Notification definition.

Syntax

[Notification: <Definition Name>]

Activity Description: <Description Name>

Where, <Description Name> is the description used to describe the notification.

Attribute – IsCompanyNotify

This attribute is specified to check whether the notification to be displayed at company level or application level. The default value of this attribute is Yes, i.e., at company level.

Syntax

[Notification: <Definition Name>]

IsCompanyNotify: <Logical Expression>

Where,

<Logical Expression> can be any expression which evaluates to a logical value.

Attribute – Handler

This attribute specifies a TDL function to be triggered when the user presses Enter on a notification. The function returns a value that determines how the notification should be handled. The possible return values and their actions are:

  1. No Action – Keep the notification unchanged.
  2. Mark as Read – Update the notification status to “read.”
  3. Dismiss – Remove the notification from the list.
  4. Acted – Indicate that a relevant action has been performed for the notification.
  5. Snooze – Temporarily hide the notification to reappear later.

The return value directly controls the system’s behavior when the notification is activated. This is a mandatory attribute for defining a notification.

Syntax

[Notification: <Definition Name>]

Handler: <Function Name>

Where,

<Function Name> is the name of the TDL function.

Attributes – Type and Persist

The attribute Type specifies the type of the notification. The type of notification can be Normal, Non-Dismissible, No-read, No-read-no-dismiss. The default value will always be Normal.

Syntax

[Notification: <Definition Name>]

Type: <Notification Type>

Where,

<Notification Type> can be any of the following values: Normal, Non-Dismissible, No-read, No-read-no-dismiss.

The attribute Persist checks whether the notification to be temporarily held in memory or persisted across sessions.

  • In-Memory: The notification stays visible only while TallyPrime is running. It will disappear once TallyPrime is closed.
  • Persist: The notification is saved and will continue to appear in the Notification Report even after TallyPrime is closed and restarted.

Syntax

[Notification: <Definition Name>]

Persist: <Logical Value>

Where,

<Logical Value> can be any expression which evaluates to logical value.

Attributes – Snooze Type and Snooze Value

Snooze Type attribute specifies the duration of snooze for a particular notification. If a user snoozes a notification that when will the notification be shown again will be determined by the value for this attribute.

The values for Snooze Type can be 

  • Next Reminder Date
  • Next Product Release

Syntax

[Notification: <Definition Name>]

Snooze Type   : <Next reminder date/Next product release>

Where, <Next reminder date/Next product release> specifies the duration for when the notification should reappear.

Snooze Value attribute will become mandatory only if the attribute Snooze type has value “Next reminder date”. The value will specify the time for which the notification is snoozed.

This attribute is mandatory if Snooze Type given is “NextReminderDate”. And hence is valid only if Snooze type is NextReminderDate.

Syntax

[Notification: <Definition Name>]

Snooze Value : <Snooze Duration>

Where, <Snooze Duration> specifies number of seconds which takes a unique value and it must be a positive long integer.

Attributes – Raise New and Expiry Controls

Raise New attribute will be used to specify if a new notification can be raised if the present notification already exists on the notification report. This attribute takes logical value Yes/No

This is different from “grouped” notifications, in which case the “time stamp” gets altered to whenever a notification is raised.

This will be ignored if “Grouped” is “yes”

Syntax

[Notification: <Definition Name>]

Raise New   : <Logical Condition>

Where, <Logical Condition> is an expression that evaluates to a logical value (Yes/No).

Expiry Relative attribute will be used to specify whether the expiry of a particular notification is related to some other notification or is it absolute. Absolute means that the notification expiry will have no dependency on the other notifications and will follow a fixed criteria for expiry.

Syntax

[Notification: <Definition Name>]

Expiry Relative   : <Logical Condition>

Where, <Logical Condition> is an expression that evaluates to a logical value (Yes/No).

Expiry Date Time attribute will be used to specify the exact date and time for expiring the notification, but only if Expiry Relative is set to No. If this attribute is not provided, the Expiry Relative setting will be ignored. If Expiry Relative is ‘No’, then this is mandatory. The value for this attribute will be “Date and Time”

Syntax

[Notification: <Definition Name>]

Expiry Date Time  : <Date and Time>

Where, <Date and Time> specifies the absolute date and time for the notification to expire.

Expiry Duration attribute will be used to specify the duration after which the notification should expire, but only if Expiry Relative is set to Yes. If this attribute is not provided, the Expiry Relative setting will be ignored.

It takes two arguments:

  1. The expiry duration, calculated from the time the notification is raised.
  2. (Optional) The unit of expiry — Week(s), Day(s), Hour(s), Minute(s), or Second(s). The default unit is Day

Syntax

[Notification: <Definition Name>]

Expiry Duration  : <Duration>

Where, <Duration>  specifies the expiry duration that will be calculated from the time the notification is raised.

Example

[Notification: CustomNotification]

Activity Name          : CustomNotification
Activity Description   : Alert for pending invoice approvals
Type                   : Normal
Persist                : Yes
Snooze Type            : Duration
Snooze Value           : 1:Day
Expiry Duration        : 3:Days
Handler                : MyNotificationHandler

Accessing Notifications

Use TDL collections to fetch notifications.

Collection

Scope

Usage

AppLevelNotifications

Application-level

Fetches all notifications at application level.

CompanyLevelNotifications

Company-specific

Fetches notifications for all loaded companies.

AllNotifications

Global

Fetches every notification in system.(application level & all loaded companies)

NotificationByCompany

Targeted

Fetches notifications by company name.

Example

[Collection : Company Notifications]

Type : Notification
Source Collection : CompanyLevelNotifications

Actions

Actions – RaiseNotification and DeleteNotification

The action RaiseNotification is a global action used to open or raise a notification report and use this specifically where notification-related behavior is required. The return value is a BOOLEAN, which denotes whether the notification is raised or not.

This action takes 2 parameters

  • Parameter 1: It specifies the name of the TDL notification.
  • Parameter 2: It specifies the text to be displayed for a notification.

Both the parameters are mandatory

Syntax

[Function: <Function Name>]

Action: RaiseNotification:<Notification Name>:<String Expression>

Where,

<Notification Name> is the name of the notification.

<String Expression> can be an expression which evaluates to a string.

DeleteNotifications action is used to delete all notifications associated with a specific notification activity type. It is a global action, meaning it can be invoked across the application context to clear relevant notifications system-wide.

This action takes one parameter

  • Parameter: Provides the name of the TDL notification activity to be deleted.

It is a mandatory parameter.

Syntax

[Function: <Function Name>]

Action: DeleteNotification: <Notification Name>

Where,

<Notification Name> is the name of the notification.

Example

[Notification : Backup Reminder]

Activity Name       : BackupReminder
Description         : It’s been 7 days since your last data backup.
Type                : Info
Persist             : Yes
Snooze Type         : Duration
Snooze Value        : 1:Day
Expiry Duration     : 5:Days

….
….

[Button : Raise Backup Reminder]

Key               : F8
Action            : RaiseNotification : BackupReminder

Best Practices

  1. Define reusable handlers – write common handler functions for repeated logic.
  2. Use logical grouping – e.g., “Accounts”, “Inventory”, “System” for better organization.
  3. Set expiry and snooze wisely – avoid overwhelming users with persistent alerts.
  4. Avoid duplicates – use Delete All Previous attribute before raising new notifications.
  5. Validate snooze/expiry conditions thoroughly.

Troubleshooting

Issue

Possible Cause

Solution

Notification not appearing

Invalid activity name or missing raise action

Verify name and trigger code

Handler not executing

Function not defined or mismatched name

Check Handler definition

Notification persists after expiry

Expiry not defined or persist set to “Yes”

Set Persist : No or define expiry duration

Multiple duplicate alerts

Missing delete action

Use Delete All Previous : Yes

Summary

This capabilty gives developers complete control to design meaningful, contextual, and actionable notifications for users. By defining and raising notifications programmatically, you can improve visibility, automate reminders, and enhance user engagement within custom solutions.

TallyHelpwhatsAppbanner
Is this information useful?
YesNo
Helpful?
TARA