---
id: object/codeunit/37404-de
type: object
title: Codeunit 37404 "PEPPOL30 DE Context" (DE)
summary: Codeunit 37404 "PEPPOL30 DE Context" (DE) in the DE country layer (Microsoft.Peppol.DE). 7 public procedures, 5 events, 5 event subscribers. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - codeunit
  - de layer
versions:
  introduced: "29"
  last_changed: null
  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: 2f9ccb98433451ba61317aad224f53231f87197da44c411849ce79cee36e098d
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/DE/PEPPOLDE/app/src/PEPPOL30DEContext.Codeunit.al
    title: src/Apps/DE/PEPPOLDE/app/src/PEPPOL30DEContext.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations:
    - localization/de
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 37404
name: PEPPOL30 DE Context
namespace: Microsoft.Peppol.DE
app: PEPPOLDE
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
country: DE
counts:
  fields: 0
  procedures: 17
  events: 5
  subscribers: 5
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
---

# Codeunit 37404 "PEPPOL30 DE Context" (DE)

> Codeunit 37404 "PEPPOL30 DE Context" (DE) in the DE country layer (Microsoft.Peppol.DE). 7 public procedures, 5 events, 5 event subscribers. Introduced in BC29, still in BC30.

DE country layer · Microsoft.Peppol.DE · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/DE/PEPPOLDE/app/src/PEPPOL30DEContext.Codeunit.al) · facts from BC29

An object of the [DE localization](../../localizations/de.md), not part of W1.

## Properties

| Property | Value |
|---|---|
| Access | Public |

## Events published

- `OnSetBuyerReference(NewBuyerReference: Text)` (integration)
- `OnSetSkipCustomerVATRegNoCheck(NewValue: Boolean)` (integration)
- `OnHasContext(var Result: Boolean)` (integration)
- `OnGetBuyerReference(var Result: Text)` (integration)
- `OnGetSkipCustomerVATRegNoCheck(var Result: Boolean)` (integration)

## Event subscriptions

- SubOnSetBuyerReference subscribes to Codeunit "PEPPOL30 DE Context" OnSetBuyerReference
- SubOnSetSkipCustomerVATRegNoCheck subscribes to Codeunit "PEPPOL30 DE Context" OnSetSkipCustomerVATRegNoCheck
- SubOnHasContext subscribes to Codeunit "PEPPOL30 DE Context" OnHasContext
- SubOnGetBuyerReference subscribes to Codeunit "PEPPOL30 DE Context" OnGetBuyerReference
- SubOnGetSkipCustomerVATRegNoCheck subscribes to Codeunit "PEPPOL30 DE Context" OnGetSkipCustomerVATRegNoCheck

## Procedures

- `Start()`: Binds this codeunit instance as the active DE PEPPOL context for the current call stack and resets any captured state. Must be called before pushing values with the Set* methods and before invoking the W1 EDoc PEPPOL bridge so the DE interface implementations can read the context state during valida...
- `Stop()`: Unbinds this instance from the current session's subscriber chain and clears its captured state. Must be called after the PEPPOL export through the W1 bridge has returned so that later operations in the same session do not see stale DE context values.
- `SetBuyerReference(NewBuyerReference: Text)`: Publishes the resolved DE buyer-reference value to the active bound context instance. The DE Document Info Provider returns this value from GetBuyerReference , which the W1 Sales Invoice / Sales Cr.Memo PEPPOL30 XmlPort renders into the cbc:BuyerReference element on the exported document.
- `SetSkipCustomerVATRegNoCheck(NewValue: Boolean)`: Publishes whether the W1 Customer GLN/VAT identifier check should be skipped for the active document. The DE Sales Validation reads this flag to relax the W1 requirement: when the document carries a routing number (Leitweg-ID on the document Buyer Reference, or an E-Invoice Routing No. on the bill-t...
- `HasContext(): Boolean`: Returns whether a DE PEPPOL context is currently bound on the active session and call stack. The DE interface implementations use this to gate behaviour that is only valid mid-export — outside an export they must fall back to the standard W1 behaviour rather than honour stale or empty context values...
- `GetBuyerReference(): Text`: Returns the buyer-reference value pushed by the EDocumentDE bridge via on the active bound instance.
- `GetSkipCustomerVATRegNoCheck(): Boolean`: Returns the skip-customer-VAT/GLN-check flag pushed by the EDocumentDE bridge via on the active bound instance.

## Across versions

- Present in: BC29-30
- Changed (declaration) in: none

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

A DE country object, not part of W1: the default corpus does not have it; `bcatlas_list_countries` shows which countries the atlas has.
