---
id: object/codeunit/5063
type: object
title: Codeunit 5063 "ArchiveManagement"
summary: Codeunit 5063 "ArchiveManagement" in Base Application (Microsoft.Utilities). 16 public procedures, 44 events. Present since at least BC23, still in BC30, changed in BC27.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "27"
  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: 6192d5cf971b012a09275f719f2e8192462e719cbb8d1bccceb74ad16a91c6de
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Utilities/ArchiveManagement.Codeunit.al
    title: src/Layers/W1/BaseApp/Utilities/ArchiveManagement.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations:
    - localization/ch
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 5063
name: ArchiveManagement
namespace: Microsoft.Utilities
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "27"
source_major: "29"
obsolete: null
countries:
  - ch
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 67
  events: 44
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 6
  calls: 4
  called_by: 10
  implements: 0
---

# Codeunit 5063 "ArchiveManagement"

> Codeunit 5063 "ArchiveManagement" in Base Application (Microsoft.Utilities). 16 public procedures, 44 events. Present since at least BC23, still in BC30, changed in BC27.

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

## Properties

| Property | Value |
|---|---|
| Permissions | tableData "Purch. Comment Line" = r, tableData "Purchase Header Archive" = ri, tableData "Purchase Line Archive" = ri, tableData "Purch. Comment Line Archive" = ri, tabledata "Sales Comment Line" = r, tabledata "Sales Header Archive" = ri, tabledata "Sales Line Archive" = ri, tabledata "Sales Commen... |

## Events published

- `OnAfterAutoArchivePurchDocument(var PurchaseHeader: Record "Purchase Header")` (integration)
- `OnAfterAutoArchiveSalesDocument(var SalesHeader: Record "Sales Header")` (integration)
- `OnAfterStoreSalesDocument(var SalesHeader: Record "Sales Header"; var SalesHeaderArchive: Record "Sales Header Archive")` (integration)
- `OnAfterStoreSalesLineArchive(var SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line"; var SalesHeaderArchive: Record "Sales Header Archive"; var SalesLineArchive: Record "Sales Line Archive")` (integration)
  - subscribers: [Codeunit 20136 "Archive Management Handler"](../codeunit/20136.md) OnAfterStoreSalesLineArchive, [Codeunit 8069 "Sales Subscription Line Mgmt."](../codeunit/8069.md) StoreSalesServiceCommitmentLines
- `OnAfterStorePurchDocument(var PurchaseHeader: Record "Purchase Header"; var PurchaseHeaderArchive: Record "Purchase Header Archive")` (integration)
- `OnAfterStorePurchLineArchive(var PurchHeader: Record "Purchase Header"; var PurchLine: Record "Purchase Line"; var PurchHeaderArchive: Record "Purchase Header Archive"; var PurchLineArchive: Record "Purchase Line Archive")` (integration)
  - subscribers: [Codeunit 20136 "Archive Management Handler"](../codeunit/20136.md) OnAfterStorePurchLineArchive
- `OnAfterRestoreSalesDocument(var SalesHeader: Record "Sales Header"; var SalesHeaderArchive: Record "Sales Header Archive")` (integration)
  - subscribers: [Codeunit 8069 "Sales Subscription Line Mgmt."](../codeunit/8069.md) RemoveSalesLineRestoreInProgressOnAfterRestoreSalesDocument
- `OnAfterRestoreSalesLine(var SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line"; var SalesHeaderArchive: Record "Sales Header Archive"; var SalesLineArchive: Record "Sales Line Archive")` (integration)
  - subscribers: [Codeunit 8069 "Sales Subscription Line Mgmt."](../codeunit/8069.md) RestoreSalesServiceCommitment
- `OnAfterRestoreSalesLines(var SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line"; var SalesHeaderArchive: Record "Sales Header Archive"; var SalesLineArchive: Record "Sales Line Archive")` (integration)
- `OnAfterSalesHeaderArchiveInsert(var SalesHeaderArchive: Record "Sales Header Archive"; SalesHeader: Record "Sales Header")` (integration)
- `OnAfterPurchHeaderArchiveInsert(var PurchaseHeaderArchive: Record "Purchase Header Archive"; PurchaseHeader: Record "Purchase Header")` (integration)
- `OnAfterTransferFromArchToSalesHeader(var SalesHeader: Record "Sales Header"; var SalesHeaderArchive: Record "Sales Header Archive")` (integration)
- `OnAfterTransferFromArchToSalesLine(var SalesLine: Record "Sales Line"; var SalesLineArchive: Record "Sales Line Archive")` (integration)
- `OnBeforeAutoArchiveSalesDocument(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeAutoArchivePurchDocument(var PurchaseHeader: Record "Purchase Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeArchivePurchDocument(var PurchaseHeader: Record "Purchase Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeSalesHeaderInsert(var SalesHeader: Record "Sales Header"; SalesHeaderArchive: Record "Sales Header Archive")` (integration)
- `OnBeforeRestoreSalesDocument(var SalesHeaderArchive: Record "Sales Header Archive"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckIfDocumentIsPartiallyPosted(var SalesHeaderArchive: Record "Sales Header Archive"; var DoCheck: Boolean)` (integration)
- `OnBeforeGetNextVersionNo(TableId: Integer; DocType: Option Quote,"Order",Invoice,"Credit Memo","Blanket Order","Return Order"; DocNo: Code[20]; DocNoOccurrence: Integer; var VersionNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeSalesHeaderArchiveInsert(var SalesHeaderArchive: Record "Sales Header Archive"; SalesHeader: Record "Sales Header")` (integration)
- `OnBeforeSalesLineArchiveInsert(var SalesLineArchive: Record "Sales Line Archive"; SalesLine: Record "Sales Line")` (integration)
- `OnBeforePurchHeaderArchiveInsert(var PurchaseHeaderArchive: Record "Purchase Header Archive"; PurchaseHeader: Record "Purchase Header")` (integration)
- `OnBeforePurchLineArchiveInsert(var PurchaseLineArchive: Record "Purchase Line Archive"; PurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeStoreSalesDocument(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)` (integration)
- `OnGetNextOccurrenceNo(TableId: Integer; DocType: Option; DocNo: Code[20]; var OccurenceNo: Integer)` (integration)
- `OnGetNextVersionNo(TableId: Integer; DocType: Option; DocNo: Code[20]; DocNoOccurrence: Integer; var VersionNo: Integer)` (integration)
- `OnRestoreDocumentOnAfterDeleteSalesHeader(var SalesHeader: Record "Sales Header")` (integration)
- `OnRestoreDocumentOnBeforeDeleteSalesHeader(var SalesHeader: Record "Sales Header"; var SkipDeletingLinks: Boolean)` (integration)
  - subscribers: [Codeunit 8069 "Sales Subscription Line Mgmt."](../codeunit/8069.md) SetSalesLineRestoreInProgressOnRestoreDocumentOnBeforeDeleteSalesHeader
- `OnRestoreSalesLinesOnAfterCalcShouldValidateQuantity(var SalesLine: Record "Sales Line"; var SalesLineArchive: Record "Sales Line Archive"; var ShouldValidateQuantity: Boolean)` (integration)
- `OnRestoreSalesDocumentOnAfterSalesHeaderInsert(var SalesHeader: Record "Sales Header"; var SalesHeaderArchive: Record "Sales Header Archive")` (integration)
- `OnRestoreSalesLinesOnAfterSalesLineInsert(var SalesLine: Record "Sales Line"; var SalesLineArchive: Record "Sales Line Archive")` (integration)
- `OnRestoreSalesLinesOnAfterSalesLineArchiveSetFilters(var SalesLineArchive: Record "Sales Line Archive"; var SalesHeaderArchive: Record "Sales Header Archive"; SalesHeader: Record "Sales Header")` (integration)
- `OnRestoreSalesLinesOnBeforeSalesLineInsert(var SalesLine: Record "Sales Line"; var SalesLineArchive: Record "Sales Line Archive")` (integration)
- `OnRestoreSalesLinesOnAfterValidateQuantity(var SalesLine: Record "Sales Line"; var SalesLineArchive: Record "Sales Line Archive")` (integration)
- `OnStorePurchDocumentCommentsOnBeforePurchCommentLineArchInsert(var PurchCommentLineArchive: Record "Purch. Comment Line Archive"; PurchCommentLine: Record "Purch. Comment Line")` (integration)
- `OnStoreSalesDocumentCommentsOnBeforeSalesCommentLineArchInsert(var SalesCommentLineArchive: Record "Sales Comment Line Archive"; SalesCommentLine: Record "Sales Comment Line")` (integration)
- `OnBeforeStorePurchDocument(var PurchHeader: Record "Purchase Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeArchiveSalesDocument(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)` (integration)
- `OnRestoreDeferralsOnAfterGetDeferralHeaderArchive(DeferralHeaderArchive: Record "Deferral Header Archive"; var DeferralHeader: Record "Deferral Header")` (integration)
- `OnBeforeArchPurchDocumentNoConfirm(var PurchaseHeader: Record "Purchase Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeArchSalesDocumentNoConfirm(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)` (integration)
- `OnRestoreSalesLineCommentsOnBeforeInsertSalesCommentLine(var SalesCommentLine: Record "Sales Comment Line")` (integration)
- `OnRestoreSalesDocumentOnBeforeSalesHeaderValidateFields(var SalesHeader: Record "Sales Header"; SalesHeaderArchive: Record "Sales Header Archive")` (integration)

## Procedures

- `AutoArchiveSalesDocument(var SalesHeader: Record "Sales Header")`
- `AutoArchivePurchDocument(var PurchaseHeader: Record "Purchase Header")`
- `ArchiveSalesDocument(var SalesHeader: Record "Sales Header")`
- `ArchivePurchDocument(var PurchHeader: Record "Purchase Header")`
- `StoreSalesDocument(var SalesHeader: Record "Sales Header"; InteractionExist: Boolean)`
- `StorePurchDocument(var PurchHeader: Record "Purchase Header"; InteractionExist: Boolean)`
- `RestoreSalesDocument(var SalesHeaderArchive: Record "Sales Header Archive")`
- `GetNextOccurrenceNo(TableId: Integer; DocType: Option Quote,"Order",Invoice,"Credit Memo","Blanket Order","Return Order"; DocNo: Code[20]): Integer`
- `GetNextVersionNo(TableId: Integer; DocType: Option Quote,"Order",Invoice,"Credit Memo","Blanket Order","Return Order"; DocNo: Code[20]; DocNoOccurrence: Integer): Integer`
- `SalesDocArchiveGranule(): Boolean`
- `PurchaseDocArchiveGranule(): Boolean`
- `StorePurchDocumentComments(DocType: Option; DocNo: Code[20]; DocNoOccurrence: Integer; VersionNo: Integer)`
- `ArchSalesDocumentNoConfirm(var SalesHeader: Record "Sales Header")`
- `ArchPurchDocumentNoConfirm(var PurchHeader: Record "Purchase Header")`
- `RoundSalesDeferralsForArchive(SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line")`
- `RoundPurchaseDeferralsForArchive(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line")`

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

- [Codeunit 1720 "Deferral Utilities"](../codeunit/1720.md) (4 calls: `RestoreDeferrals → RemoveOrSetDeferralSchedule`, `RestoreDeferrals → SetDeferralRecords`, `RoundPurchaseDeferralsForArchive → RoundDeferralAmount`, …)
- [Codeunit 447 "Record Link Management"](../codeunit/447.md) (4 calls: `RestoreSalesDocument → CopyLinks`, `RestoreSalesLines → CopyLinks`, `StorePurchDocument → CopyLinks`, …)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (3 calls: `ArchivePurchDocument → GetResponseOrDefault`, `ArchiveSalesDocument → GetResponseOrDefault`, `RestoreSalesDocument → GetResponseOrDefault`)
- [Codeunit 414 "Release Sales Document"](../codeunit/414.md) (1 call: `RestoreSalesDocument → Reopen`)

## Called by

- [Codeunit 80 "Sales-Post"](../codeunit/80.md) (3 calls: `ArchiveUnpostedOrder → ArchSalesDocumentNoConfirm`, `ArchiveUnpostedOrder → RoundSalesDeferralsForArchive`, `FinalizePosting → AutoArchiveSalesDocument`)
- [Codeunit 90 "Purch.-Post"](../codeunit/90.md) (3 calls: `ArchiveUnpostedOrder → ArchPurchDocumentNoConfirm`, `ArchiveUnpostedOrder → RoundPurchaseDeferralsForArchive`, `FinalizePosting → AutoArchivePurchDocument`)
- [Codeunit 1305 "Sales-Quote to Invoice"](../codeunit/1305.md) (2 calls: `ArchiveSalesQuote → ArchiveSalesDocument`, `ArchiveSalesQuote → ArchSalesDocumentNoConfirm`)
- [Codeunit 5348 "CRM Quote to Sales Quote"](../codeunit/5348.md) (2 calls: `ManageSalesQuoteArchive → ArchSalesDocumentNoConfirm`, `ProcessWonQuote → ArchSalesDocumentNoConfirm`)
- [Codeunit 86 "Sales-Quote to Order"](../codeunit/86.md) (2 calls: `ArchiveSalesQuote → ArchiveSalesDocument`, `ArchiveSalesQuote → ArchSalesDocumentNoConfirm`)
- [Codeunit 96 "Purch.-Quote to Order"](../codeunit/96.md) (2 calls: `ArchivePurchaseQuote → ArchivePurchDocument`, `ArchivePurchaseQuote → ArchPurchDocumentNoConfirm`)
- [Table 36 "Sales Header"](../table/36.md) (2 calls: `InitRecord → GetNextOccurrenceNo`, `OnDelete → AutoArchiveSalesDocument`)
- [Table 38 "Purchase Header"](../table/38.md) (2 calls: `GetNextArchiveDocOccurrenceNo → GetNextOccurrenceNo`, `OnDelete → AutoArchivePurchDocument`)
- [Codeunit 5341 "CRM Int. Table. Subscriber"](../codeunit/5341.md) (1 call: `UpdateSalesOrderQuoteNo → ArchSalesDocumentNoConfirm`)
- [Codeunit 5343 "CRM Sales Order to Sales Order"](../codeunit/5343.md) (1 call: `CreateSalesOrderHeader → ArchSalesDocumentNoConfirm`)

## Across versions

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

## Countries that replace it

[CH](../../localizations/ch.md)

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