---
id: change/bcapps/9044
type: change
title: "#9044 [Master] Contact email is no validated during creation purchase documents_New"
summary: Contact email validation is restored during purchase document creation, fixing a regression where email validation was skipped.
tier: official
language: en
tags:
  - fix
  - main
  - bc30
  - table purchase header
  - page blanket purchase order
  - page purchase credit memo
  - page purchase invoice
  - page purchase order
  - page purchase quote
system: purchasing
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:12:42.914Z"
  flags: []
generated:
  at: "2026-10-08T01:26:53.141Z"
  pipeline: 0.2.0
  prompts:
    extract-change: 1
  input_hash: df4fbbb4417b54f02c84e884a19a6b883dce1c34
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/pull/9044
    title: "microsoft/BCApps#9044: [Master] Contact email is no validated during creation purchase documents_New"
    date: "2026-07-15"
    commit: df4fbbb4417b54f02c84e884a19a6b883dce1c34
    t: null
    quote: Contact email is no validated during creation of sales and purchase documents
links:
  learn: []
  objects:
    - object/table/38
    - object/page/509
    - object/page/52
    - object/page/51
    - object/page/50
    - object/page/49
    - object/page/6640
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes: []
number: 9044
repo: microsoft/BCApps
source_id: bcapps-prs
url: https://github.com/microsoft/BCApps/pull/9044
kind: pr
base_branch: main
major: "30"
merged_at: "2026-07-15T05:42:28Z"
author: Shikhverma
author_type: User
community_contribution: true
labels:
  - "ADO: Sync"
  - From Fork
  - "Team: SCM"
change_class: code
change_kind: fix
behavior_change: true
breaking: false
files:
  count: 85
  additions: 949
  deletions: 128
  al: 67
apps:
  - Base Application
objects_touched:
  - key: table/38
    page: table/38
    type: table
    id: 38
    name: Purchase Header
    app: Base Application
    status: modified
  - key: page/509
    page: page/509
    type: page
    id: 509
    name: Blanket Purchase Order
    app: Base Application
    status: modified
  - key: page/52
    page: page/52
    type: page
    id: 52
    name: Purchase Credit Memo
    app: Base Application
    status: modified
  - key: page/51
    page: page/51
    type: page
    id: 51
    name: Purchase Invoice
    app: Base Application
    status: modified
  - key: page/50
    page: page/50
    type: page
    id: 50
    name: Purchase Order
    app: Base Application
    status: modified
  - key: page/49
    page: page/49
    type: page
    id: 49
    name: Purchase Quote
    app: Base Application
    status: modified
  - key: page/6640
    page: page/6640
    type: page
    id: 6640
    name: Purchase Return Order
    app: Base Application
    status: modified
objects_unjoined:
  - path: src/Layers/APAC/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/APAC/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/APAC/BaseApp/Purchases/Document/PurchaseInvoice.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/APAC/BaseApp/Purchases/Document/PurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/APAC/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/BE/BaseApp/Purchases/Document/PurchaseInvoice.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/CH/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/CH/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/CH/BaseApp/Purchases/Document/PurchaseInvoice.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/CH/BaseApp/Purchases/Document/PurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/CH/BaseApp/Purchases/Document/PurchaseQuote.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/CH/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/DACH/BaseApp/Purchases/Document/PurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/ES/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/ES/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/ES/BaseApp/Purchases/Document/PurchaseInvoice.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/ES/BaseApp/Purchases/Document/PurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/ES/BaseApp/Purchases/Document/PurchaseQuote.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/ES/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/FI/BaseApp/Purchases/Document/PurchaseInvoice.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/FI/BaseApp/Purchases/Document/PurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/GB/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NA/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NA/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NA/BaseApp/Purchases/Document/PurchaseQuote.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NA/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NL/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NL/BaseApp/Purchases/Document/PurchaseInvoice.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NL/BaseApp/Purchases/Document/PurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NL/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NO/BaseApp/Purchases/Document/PurchaseInvoice.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/NO/BaseApp/Purchases/Document/PurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/RU/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/RU/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/RU/BaseApp/Purchases/Document/PurchaseOrder.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/RU/BaseApp/Purchases/Document/PurchaseQuote.Page.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/RU/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al
    status: modified
    reason: not-in-snapshot
obsoletions: []
backports: []
fixes_issues: []
work_items:
  - 630739
systems:
  - purchasing
quote: Contact email is no validated during creation of sales and purchase documents
joined_against:
  major: "30"
  commit: f18567dc08e2bd162bf192e1da4d714b57eb099f
---

# #9044 [Master] Contact email is no validated during creation purchase documents_New

> Contact email validation is restored during purchase document creation, fixing a regression where email validation was skipped.

[Pull request](https://github.com/microsoft/BCApps/pull/9044) · merged into `main` (BC30) on 2026-07-15 by Shikhverma (community contribution) · 85 files (+949 -128), 67 AL · fix · tier official · reviewed (checked by Opus)

## What changed

- Fixes contact email not being validated when purchase documents are created
- Regression from earlier change 460343
- Small changes to the Purchase Header table and the purchase document pages (Order, Invoice, Quote, Credit Memo, Return Order, Blanket Order)
- Applied across many country layers, such as NA, GB, CH, ES, IT and RU
- Behaviour changes for users or extensions.

## AL objects touched

- [Table 38 "Purchase Header"](../../objects/table/38.md), Base Application: modified
- [Page 509 "Blanket Purchase Order"](../../objects/page/509.md), Base Application: modified
- [Page 52 "Purchase Credit Memo"](../../objects/page/52.md), Base Application: modified
- [Page 51 "Purchase Invoice"](../../objects/page/51.md), Base Application: modified
- [Page 50 "Purchase Order"](../../objects/page/50.md), Base Application: modified
- [Page 49 "Purchase Quote"](../../objects/page/49.md), Base Application: modified
- [Page 6640 "Purchase Return Order"](../../objects/page/6640.md), Base Application: modified
- `src/Layers/APAC/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/APAC/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/APAC/BaseApp/Purchases/Document/PurchaseInvoice.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/APAC/BaseApp/Purchases/Document/PurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/APAC/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/BE/BaseApp/Purchases/Document/PurchaseInvoice.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/CH/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/CH/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/CH/BaseApp/Purchases/Document/PurchaseInvoice.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/CH/BaseApp/Purchases/Document/PurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/CH/BaseApp/Purchases/Document/PurchaseQuote.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/CH/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/DACH/BaseApp/Purchases/Document/PurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/ES/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/ES/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/ES/BaseApp/Purchases/Document/PurchaseInvoice.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/ES/BaseApp/Purchases/Document/PurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/ES/BaseApp/Purchases/Document/PurchaseQuote.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/ES/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/FI/BaseApp/Purchases/Document/PurchaseInvoice.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/FI/BaseApp/Purchases/Document/PurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/GB/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NA/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NA/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NA/BaseApp/Purchases/Document/PurchaseQuote.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NA/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NL/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NL/BaseApp/Purchases/Document/PurchaseInvoice.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NL/BaseApp/Purchases/Document/PurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NL/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NO/BaseApp/Purchases/Document/PurchaseInvoice.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/NO/BaseApp/Purchases/Document/PurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/RU/BaseApp/Purchases/Document/BlanketPurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/RU/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/RU/BaseApp/Purchases/Document/PurchaseOrder.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/RU/BaseApp/Purchases/Document/PurchaseQuote.Page.al`: modified, not in the BC30 snapshot
- `src/Layers/RU/BaseApp/Purchases/Document/PurchaseReturnOrder.Page.al`: modified, not in the BC30 snapshot

## Context

- Work items: AB#630739
- Labels: ADO: Sync, From Fork, Team: SCM
- Systems: purchasing
- From the description: "Contact email is no validated during creation of sales and purchase documents"

Source: metadata of a merged pull request in microsoft/BCApps (bcapps): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).
