---
id: object/codeunit/7600
type: object
title: Codeunit 7600 "Calendar Management"
summary: Codeunit 7600 "Calendar Management" in Base Application (Microsoft.Foundation.Calendar). 16 public procedures, 24 events. Present since at least BC23, still in BC30, changed in BC24-26, BC28.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "28"
  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: 899a7b6c42e424130d89421e51857b7fb1d4d6db749ead98b371885ab1c07b1a
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Foundation/Calendar/CalendarManagement.Codeunit.al
    title: src/Layers/W1/BaseApp/Foundation/Calendar/CalendarManagement.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: 7600
name: Calendar Management
namespace: Microsoft.Foundation.Calendar
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "26"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 57
  events: 24
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 2
  calls: 1
  called_by: 20
  implements: 0
---

# Codeunit 7600 "Calendar Management"

> Codeunit 7600 "Calendar Management" in Base Application (Microsoft.Foundation.Calendar). 16 public procedures, 24 events. Present since at least BC23, still in BC30, changed in BC24-26, BC28.

Base Application · Microsoft.Foundation.Calendar · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Foundation/Calendar/CalendarManagement.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Permissions | tabledata "Base Calendar Change" = r |

## Events published

- `OnFillSourceRec(RecRef: RecordRef; var CustomCalendarChange: Record "Customized Calendar Change")` (integration)
  - subscribers: [Codeunit 6450 "Serv. Integration Mgt."](../codeunit/6450.md) CalendarManagementOnFillSourceRec
- `OnCombineCustomCalendarChange(CustomCalChange: Record "Customized Calendar Change"; var CustomizedCalendarChange: record "Customized Calendar Change")` (integration)
- `OnCombineBaseCalendarChange(BaseCalendarChange: Record "Base Calendar Change"; var CustomizedCalendarChange: record "Customized Calendar Change")` (integration)
- `OnCreateWhereUsedEntries(BaseCalendarCode: code[10])` (integration)
  - subscribers: [Codeunit 6450 "Serv. Integration Mgt."](../codeunit/6450.md) OnCreateWhereUsedEntries
- `OnBeforeCalcDateBOC(var CustomCalendarChange: array[2] of Record "Customized Calendar Change"; var CalConvTimeFrame: Integer; var IsHandled: Boolean)` (integration)
- `OnAfterReverseSign(DateFormulaExpr: Text[30]; var NewDateFormulaExpr: Text[30])` (integration)
- `OnAfterCheckDateStatus(var CustomizedCalendarChange: Record "Customized Calendar Change")` (integration)
- `OnBeforeCalcTimeSubtract(SubstractTime: Time; SubstractValue: Integer; var Result: Time; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckDateStatus(var CustomizedCalendarChange: Record "Customized Calendar Change"; var IsHandled: Boolean)` (integration)
- `OnBeforeIsNonworkingDay(var TargetDate: Date; var CustomizedCalendarChange: Record "Customized Calendar Change")` (integration)
- `OnBeforeSetSourceShippingAgentServices(var ShippingAgentServices: Record "Shipping Agent Services")` (integration)
- `OnCalcDateBOCOnAfterCheckDates(var CustomCalendarChange: Record "Customized Calendar Change")` (integration)
- `OnCalcDateBOCOnAfterGetCalendarCodes(var CustomCalendarChange: array[2] of Record "Customized Calendar Change"; var CalConvTimeFrame: Integer)` (integration)
- `OnCalcDateBOCOnAfterSetNonworking(var CustomCalendarChange: array[2] of Record "Customized Calendar Change")` (integration)
- `OnCheckDateStatusAfterDateCustomized(var TargetCustomizedCalendarChange: Record "Customized Calendar Change"; TempCustChange: Record "Customized Calendar Change")` (integration)
- `OnCheckDateStatusOnAfterCombineChanges(var TargetCustomizedCalendarChange: Record "Customized Calendar Change"; var TempCustChange: Record "Customized Calendar Change")` (integration)
- `OnCalcDateBOCOnBeforeCalcNewDate(var OrgDateExpression: Text[30]; var OrgDate: Date; var CustomCalendarChange: array[2] of Record "Customized Calendar Change"; CheckBothCalendars: Boolean; var NewDate: Date; var IsHandled: Boolean)` (integration)
- `OnDeleteCustomizedBaseCalendarDataOnAfterFilterCalendarChange(var CustomizedCalendarChange: Record "Customized Calendar Change")` (integration)
- `OnDeleteCustomizedBaseCalendarDataOnAfterFilterCalendarEntry(var CustomizedCalendarEntry: Record "Customized Calendar Entry")` (integration)
- `OnDeleteCustomizedBaseCalendarDataOnAfterFilterWhereUsedBaseCalendar(var WhereUsedBaseCalendar: Record "Where Used Base Calendar")` (integration)
- `OnBeforeCalcTimeDelta(EndingTime: Time; StartingTime: Time; var Result: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeAddCustomizedCalendarChanges(var CustomizedCalendarChange: Record "Customized Calendar Change")` (integration)
- `OnBeforeSetSource(SourceVariant: Variant; var NewCustomizedCalendarChange: Record "Customized Calendar Change")` (integration)
- `OnBeforeAddBaseCalendarChanges(NewCustomizedCalendarChange: Record "Customized Calendar Change"; var TempCustomizedCalendarChange: Record "Customized Calendar Change" temporary; var BaseCalendarChange: Record "Base Calendar Change")` (integration)

## Procedures

- `SetSource(SourceVariant: Variant; var NewCustomCalendarChange: Record "Customized Calendar Change")`
- `FillSource(SourceVariant: Variant; var CustomCalendarChange: Record "Customized Calendar Change")`
- `ShowCustomizedCalendar(SourceVariant: Variant)`
- `GetMaxDate(): Date`
- `IsNonworkingDay(TargetDate: Date; var CustomizedCalendarChange: Record "Customized Calendar Change"): Boolean`
- `CheckDateStatus(var TargetCustomizedCalendarChange: Record "Customized Calendar Change")`
- `CreateWhereUsedEntries(BaseCalendarCode: Code[10])`
- `CustomizedChangesExist(SourceVariant: Variant): Boolean`
- `CalcDateBOC(OrgDateExpression: Text[30]; OrgDate: Date; CustomCalendarChange: array[2] of Record "Customized Calendar Change"; CheckBothCalendars: Boolean): Date`
- `CalcDateBOC2(OrgDateExpression: Text[30]; OrgDate: Date; CustomCalendarChange: array[2] of Record "Customized Calendar Change"; CheckBothCalendars: Boolean): Date`
- `CheckDateFormulaPositive(CurrentDateFormula: DateFormula)`
- `CalcTimeDelta(EndingTime: Time; StartingTime: Time): Integer`
- `CalcTimeSubtract(SubstractTime: Time; SubstractValue: Integer): Time`
- `DeleteCustomizedBaseCalendarData(SourceType: Enum "Calendar Source Type"; SourceCode: Code[20])`
- `RenameCustomizedBaseCalendarData(SourceType: Enum "Calendar Source Type"; SourceCode: Code[20]; xSourceCode: Code[20])`
- `ReverseDateFormula(var ReversedDateFormula: DateFormula; DateFormula: DateFormula)`

Plus 17 local procedures.

## 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.

- [Page 7606 "Customized Calendar Entries"](../page/7606.md) (1 call: `ShowCustomizedCalendar → (object)`)

## Called by

- [Table 37 "Sales Line"](../table/37.md) (6 calls: `CalcPlannedDeliveryDate → CalcDateBOC`, `CalcPlannedDeliveryDate → CalcDateBOC2`, `CalcPlannedShptDate → CalcDateBOC`, …)
- [Table 5742 "Transfer Route"](../table/5742.md) (6 calls: `CalcPlannedReceiptDateForward → CalcDateBOC`, `CalcPlanReceiptDateBackward → CalcDateBOC2`, `CalcPlanShipmentDateBackward → CalcDateBOC2`, …)
- [Table 39 "Purchase Line"](../table/39.md) (5 calls: `ReversedInternalLeadTimeDays → ReverseDateFormula`, `UpdateOrderDateFromPlannedReceiptDate → CalcDateBOC2`, `UpdateOrderDateFromRequestedReceiptDate → CalcDateBOC2`, …)
- [Codeunit 5404 "Lead-Time Management"](../codeunit/5404.md) (3 calls: `GetPlannedDueDate → CalcDateBOC`, `GetPlannedEndingDate → CalcDateBOC2`, `GetPlannedStartingDate → CalcDateBOC2`)
- [Codeunit 5900 "ServOrderManagement"](../codeunit/5900.md) (3 calls: `CalcServTime → CalcTimeDelta`, `CalcServTime → IsNonworkingDay`, `CalcServTime → SetSource`)
- [Codeunit 5918 "ServOrder-Check Response Time"](../codeunit/5918.md) (3 calls: `CalculateCheckDate → CalcTimeDelta`, `CalculateCheckDate → IsNonworkingDay`, `CalculateCheckDate → SetSource`)
- [Table 5901 "Service Item Line"](../table/5901.md) (3 calls: `CalculateResponseDateTime → CalcTimeDelta`, `CalculateResponseDateTime → IsNonworkingDay`, `CalculateResponseDateTime → SetSource`)
- [Codeunit 5780 "Whse. Cross-Dock Management"](../codeunit/5780.md) (2 calls: `CalculateCrossDockDate → CalcDateBOC`, `CalculateCrossDockDate → SetSource`)
- [Codeunit 5790 "Available to Promise"](../codeunit/5790.md) (2 calls: `CalcEarliestAvailabilityDate → GetMaxDate`, `GetForwardPeriodEndDate → GetMaxDate`)
- [Codeunit 99000755 "Shop Calendar Management"](../codeunit/99000755.md) (2 calls: `CalcTimeDelta → CalcTimeDelta`, `CalcTimeSubtract → CalcTimeSubtract`)
- [Codeunit 99000854 "Inventory Profile Offsetting"](../codeunit/99000854.md) (2 calls: `ForecastConsumption → CalcDateBOC2`, `GetPrevAvailDateFromCompanyCalendar → CalcDateBOC2`)
- [Page 7604 "Base Calendar Entries Subform"](../page/7604.md) (2 calls: `InsertLine → CheckDateStatus`, `SetCalendarSource → SetSource`)
- [Page 7605 "Customized Cal. Entries Subfm"](../page/7605.md) (2 calls: `InsertLine → CheckDateStatus`, `SetCalendarSource → SetSource`)
- [Table 14 "Location"](../table/14.md) (2 calls: `OnDelete → DeleteCustomizedBaseCalendarData`, `OnRename → RenameCustomizedBaseCalendarData`)
- [Table 18 "Customer"](../table/18.md) (2 calls: `OnDelete → DeleteCustomizedBaseCalendarData`, `OnRename → RenameCustomizedBaseCalendarData`)
- [Table 23 "Vendor"](../table/23.md) (2 calls: `OnDelete → DeleteCustomizedBaseCalendarData`, `OnRename → RenameCustomizedBaseCalendarData`)
- [Table 291 "Shipping Agent"](../table/291.md) (2 calls: `OnDelete → DeleteCustomizedBaseCalendarData`, `OnRename → RenameCustomizedBaseCalendarData`)
- [Codeunit 6450 "Serv. Integration Mgt."](../codeunit/6450.md) (1 call: `OnCreateWhereUsedEntries → CustomizedChangesExist`)
- [Page 21 "Customer Card"](../page/21.md) (1 call: `HasCustomBaseCalendar → CustomizedChangesExist`)
- [Page 6013 "Resource Capacity Settings"](../page/6013.md) (1 call: `SetCalendar → SetSource`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-26, BC28

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: "Calendar Management")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
