---
id: object/codeunit/1508
type: object
title: Codeunit 1508 "Notification Lifecycle Handler"
summary: Codeunit 1508 "Notification Lifecycle Handler" in Base Application (System.Environment.Configuration). 57 event subscribers. Present since at least BC23, still in BC30, changed in BC25.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "25"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 4f8260b449d47af3583f4f55278cbc1175773029b49c86673c87089ebae93d0a
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/Notifications/NotificationLifecycleHandler.Codeunit.al
    title: src/Layers/W1/BaseApp/System/Notifications/NotificationLifecycleHandler.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 1508
name: Notification Lifecycle Handler
namespace: System.Environment.Configuration
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "25"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 57
  events: 0
  subscribers: 57
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 3
  called_by: 0
  implements: 0
---

# Codeunit 1508 "Notification Lifecycle Handler"

> Codeunit 1508 "Notification Lifecycle Handler" in Base Application (System.Environment.Configuration). 57 event subscribers. Present since at least BC23, still in BC30, changed in BC25.

Base Application · System.Environment.Configuration · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/Notifications/NotificationLifecycleHandler.Codeunit.al) · facts from BC29

## Event subscriptions

- OnAfterSalesLineInsertSetRecId subscribes to Table "Sales Line" OnAfterInsertEvent
- OnAfterSalesLineRenameUpdateRecId subscribes to Table "Sales Line" OnAfterRenameEvent
- OnAfterSalesLineDeleteRecall subscribes to Table "Sales Line" OnAfterDeleteEvent
- OnAfterItemJournalInsertSetRecId subscribes to Table "Item Journal Line" OnAfterInsertEvent
- OnAfterItemJournalRenameUpdateRecId subscribes to Table "Item Journal Line" OnAfterRenameEvent
- OnAfterItemJournalDeleteRecall subscribes to Table "Item Journal Line" OnAfterDeleteEvent
- OnAfterTransferLineInsertSetRecId subscribes to Table "Transfer Line" OnAfterInsertEvent
- OnAfterTransferLineRenameUpdateRecId subscribes to Table "Transfer Line" OnAfterRenameEvent
- OnAfterTransferLineDeleteRecall subscribes to Table "Transfer Line" OnAfterDeleteEvent
- OnAfterJobPlanningLineInsertSetRecId subscribes to Table "Job Planning Line" OnAfterInsertEvent
- OnAfterJobPlanningLineRenameUpdateRecId subscribes to Table "Job Planning Line" OnAfterRenameEvent
- OnAfterJobPlanningLineDeleteRecall subscribes to Table "Job Planning Line" OnAfterDeleteEvent
- OnAfterAssemblyLineInsertSetRecId subscribes to Table "Assembly Line" OnAfterInsertEvent
- OnAfterAssemblyLineRenameUpdateRecId subscribes to Table "Assembly Line" OnAfterRenameEvent
- OnAfterAssemblyLineDeleteRecall subscribes to Table "Assembly Line" OnAfterDeleteEvent
- OnAfterSalesHeaderInsertSetRecId subscribes to Table "Sales Header" OnAfterInsertEvent
- OnAfterPurchaseHeaderInsertSetRecId subscribes to Table "Purchase Header" OnAfterInsertEvent
- OnAfterGenJnlLineInsertSetRecId subscribes to Table "Gen. Journal Line" OnAfterInsertEvent
- OnCustCheckCrLimitCheckRecallNotifs subscribes to Codeunit "Cust-Check Cr. Limit" OnNewCheckRemoveCustomerNotifications
- OnItemJournalLineUpdateEntryTypeRecallItemNotif subscribes to Table "Item Journal Line" OnBeforeValidateEvent (Entry Type)
- OnItemJournalLineUpdateQtyTo0RecallItemNotif subscribes to Table "Item Journal Line" OnBeforeValidateEvent (Quantity)
- OnSalesLineUpdateTypeRecallItemNotif subscribes to Table "Sales Line" OnBeforeValidateEvent (Type)
- OnSalesLineUpdateQtyTo0RecallItemNotif subscribes to Table "Sales Line" OnBeforeValidateEvent (Quantity)
- OnTransferLineUpdateQtyTo0RecallItemNotif subscribes to Table "Transfer Line" OnBeforeValidateEvent (Quantity)
- OnJobPlanningLineUpdateTypeRecallItemNotif subscribes to Table "Job Planning Line" OnBeforeValidateEvent (Type)
- OnJobPlanningLineUpdateLineTypeRecallItemNotif subscribes to Table "Job Planning Line" OnBeforeValidateEvent (Line Type)
- OnJobPlanningLineUpdateQtyTo0RecallItemNotif subscribes to Table "Job Planning Line" OnBeforeValidateEvent (Quantity)
- OnAssemblyLineUpdateUnitOfMeasureCodeRecallItemNotif subscribes to Table "Assembly Line" OnBeforeValidateEvent (Unit of Measure Code)
- OnAssemblyLineUpdateTypeRecallItemNotif subscribes to Table "Assembly Line" OnBeforeValidateEvent (Type)
- OnAssemblyLineUpdateQuantityRecallItemNotif subscribes to Table "Assembly Line" OnBeforeValidateEvent (Quantity per)
- OnBeforeSalesPost subscribes to Codeunit "Sales-Post" OnBeforePostSalesDoc
- OnAfterSalesPost subscribes to Codeunit "Sales-Post" OnAfterPostSalesDoc
- OnBeforePurchPost subscribes to Codeunit "Purch.-Post" OnBeforePostPurchaseDoc
- OnAfterPurchPost subscribes to Codeunit "Purch.-Post" OnAfterPostPurchaseDoc
- OnBeforeAssemblyPost subscribes to Codeunit "Assembly-Post" OnBeforePost
- OnAfterAssemblyPost subscribes to Codeunit "Assembly-Post" OnAfterPost
- OnOpenSalesQuote subscribes to Page "Sales Quote" OnOpenPageEvent
- OnCloseSalesQuote subscribes to Page "Sales Quote" OnClosePageEvent
- OnOpenSalesOrder subscribes to Page "Sales Order" OnOpenPageEvent
- OnCloseSalesOrder subscribes to Page "Sales Order" OnClosePageEvent
- OnOpenSalesInvoice subscribes to Page "Sales Invoice" OnOpenPageEvent
- OnCloseSalesInvoice subscribes to Page "Sales Invoice" OnClosePageEvent
- OnOpenSalesCreditMemo subscribes to Page "Sales Credit Memo" OnOpenPageEvent
- OnCloseSalesCreditMemo subscribes to Page "Sales Credit Memo" OnClosePageEvent
- OnOpenPurchaseQuote subscribes to Page "Purchase Quote" OnOpenPageEvent
- OnClosePurchaseQuote subscribes to Page "Purchase Quote" OnClosePageEvent
- OnOpenPurchaseOrder subscribes to Page "Purchase Order" OnOpenPageEvent
- OnClosePurchaseOrder subscribes to Page "Purchase Order" OnClosePageEvent
- OnOpenPurchaseInvoice subscribes to Page "Purchase Invoice" OnOpenPageEvent
- OnClosePurchaseInvoice subscribes to Page "Purchase Invoice" OnClosePageEvent
- OnOpenPurchaseCreditMemo subscribes to Page "Purchase Credit Memo" OnOpenPageEvent
- OnClosePurchaseCreditMemo subscribes to Page "Purchase Credit Memo" OnClosePageEvent
- OnOpenAssemblyOrder subscribes to Page "Assembly Order" OnOpenPageEvent
- OnCloseAssemblyOrder subscribes to Page "Assembly Order" OnClosePageEvent
- OnOpenAssemplyQuote subscribes to Page "Assembly Quote" OnOpenPageEvent
- OnCloseAssemplyQuote subscribes to Page "Assembly Quote" OnClosePageEvent
- OnOpenItemJournalLine subscribes to Page "Item Journal Lines" OnOpenPageEvent

## Triggers

OnRun

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 1511 "Notification Lifecycle Mgt."](../codeunit/1511.md) (87 calls: `OnAfterAssemblyLineDeleteRecall → AreSubscribersDisabled`, `OnAfterAssemblyLineDeleteRecall → RecallNotificationsForRecord`, `OnAfterAssemblyLineInsertSetRecId → AreSubscribersDisabled`, …)
- [Codeunit 311 "Item-Check Avail."](../codeunit/311.md) (11 calls: `OnAssemblyLineUpdateQuantityRecallItemNotif → GetItemAvailabilityNotificationId`, `OnAssemblyLineUpdateTypeRecallItemNotif → GetItemAvailabilityNotificationId`, `OnAssemblyLineUpdateUnitOfMeasureCodeRecallItemNotif → GetItemAvailabilityNotificationId`, …)
- [Codeunit 312 "Cust-Check Cr. Limit"](../codeunit/312.md) (2 calls: `OnCustCheckCrLimitCheckRecallNotifs → GetCreditLimitNotificationId`, `OnCustCheckCrLimitCheckRecallNotifs → GetOverdueBalanceNotificationId`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC25

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "codeunit", object_name: "Notification Lifecycle Handler")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
