---
id: change/bcquality/93
type: change
title: "#93 Fix lifecycle compatibility guidance"
summary: Knowledge articles and samples on error handling, events, interfaces, upgrade, testing, web services and breaking changes were corrected. API page defaults were clarified, version-specific API shapes now need separate page objects, and the web-services review example now follows APIVersion defaulting to beta.
tier: official
language: en
tags:
  - fix
  - main
system: development
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:13:04.242Z"
  flags: []
generated:
  at: "2026-10-08T01:26:53.141Z"
  pipeline: 0.2.0
  prompts:
    extract-change: 1
  input_hash: 5706959e4a2f4b6f601baf65e3a0a89e2c0ed1df
evidence:
  - kind: code
    url: https://github.com/microsoft/BCQuality/pull/93
    title: "microsoft/BCQuality#93: Fix lifecycle compatibility guidance"
    date: "2026-07-14"
    commit: 5706959e4a2f4b6f601baf65e3a0a89e2c0ed1df
    t: null
    quote: correct collectible-error, DataTransfer, upgrade-tag, obsoletion, and test-transaction guidance and samples
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes: []
number: 93
repo: microsoft/BCQuality
source_id: bcquality-prs
url: https://github.com/microsoft/BCQuality/pull/93
kind: pr
base_branch: main
major: null
merged_at: "2026-07-14T09:26:16Z"
author: JesperSchulz
author_type: User
community_contribution: false
labels: []
change_class: code
change_kind: fix
behavior_change: false
breaking: false
files:
  count: 32
  additions: 197
  deletions: 100
  al: 32
apps: []
objects_touched: []
objects_unjoined:
  - path: microsoft/knowledge/breaking-changes/deprecate-public-members-with-the-obsolete-lifecycle.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/breaking-changes/deprecate-public-members-with-the-obsolete-lifecycle.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/breaking-changes/do-not-expose-sensitive-data-through-public-api.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/breaking-changes/do-not-expose-sensitive-data-through-public-api.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/breaking-changes/obsolete-table-fields-instead-of-deleting-them.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/breaking-changes/obsolete-table-fields-instead-of-deleting-them.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/error-handling/collect-validation-errors-with-errorbehavior.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/error-handling/collect-validation-errors-with-errorbehavior.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/events/do-not-add-ishandled-to-an-existing-event.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/events/prefer-reusing-or-extending-existing-events.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/events/publish-thin-onbefore-onafter-integration-events.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/events/use-ishandled-to-make-base-behaviour-overridable.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/interfaces/set-defaultimplementation-on-enum.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/testing/transactionmodel-attribute-governs-test-transactions.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/testing/transactionmodel-attribute-governs-test-transactions.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/testing/transactionmodel-attribute-governs-test-transactions.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/datatransfer-skips-triggers-and-subscribers.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/datatransfer-skips-triggers-and-subscribers.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/datatransfer-skips-triggers-and-subscribers.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/obsoletion-requires-reason-and-tag.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/obsoletion-requires-reason-and-tag.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/obsoletion-requires-reason-and-tag.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/register-upgrade-tags-with-subscribers.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/register-upgrade-tags-with-subscribers.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/register-upgrade-tags-with-subscribers.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/upgrade-codeunit-subtype.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/upgrade/upgrade-codeunit-subtype.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/set-required-api-page-properties.bad.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/set-required-api-page-properties.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/version-apis-by-adding-not-mutating-published-versions.good.al
    status: modified
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/version-apis-by-adding-not-mutating-published-versions.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/skills/review/al-web-services-review.md
    status: modified
    reason: not-in-snapshot
obsoletions: []
backports: []
fixes_issues: []
work_items: []
systems:
  - development
quote: correct collectible-error, DataTransfer, upgrade-tag, obsoletion, and test-transaction guidance and samples
joined_against:
  major: null
  commit: null
---

# #93 Fix lifecycle compatibility guidance

> Knowledge articles and samples on error handling, events, interfaces, upgrade, testing, web services and breaking changes were corrected. API page defaults were clarified, version-specific API shapes now need separate page objects, and the web-services review example now follows APIVersion defaulting to beta.

[Pull request](https://github.com/microsoft/BCQuality/pull/93) · merged into `main` on 2026-07-14 by JesperSchulz · 32 files (+197 -100), 32 AL · fix · tier official · reviewed (checked by Opus)

## What changed

- Clarified examples and documentation for error collection with ErrorBehavior, event handling with IsHandled, and data transfer skipping triggers
- Updated API versioning guidance to require separate page objects for version-specific shapes and aligned examples with APIVersion defaulting to beta
- Corrected lifecycle guidance for obsoletions, public members, and test transaction models with improved samples
- Fixed examples for SecretText exposure prevention, interface default implementations, and upgrade tag registration
- Enhanced web services review examples and refined upgrade codeunit subtype documentation

## AL objects touched

- `microsoft/knowledge/breaking-changes/deprecate-public-members-with-the-obsolete-lifecycle.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/breaking-changes/deprecate-public-members-with-the-obsolete-lifecycle.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/breaking-changes/do-not-expose-sensitive-data-through-public-api.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/breaking-changes/do-not-expose-sensitive-data-through-public-api.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/breaking-changes/obsolete-table-fields-instead-of-deleting-them.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/breaking-changes/obsolete-table-fields-instead-of-deleting-them.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/error-handling/collect-validation-errors-with-errorbehavior.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/error-handling/collect-validation-errors-with-errorbehavior.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/events/do-not-add-ishandled-to-an-existing-event.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/events/prefer-reusing-or-extending-existing-events.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/events/publish-thin-onbefore-onafter-integration-events.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/events/use-ishandled-to-make-base-behaviour-overridable.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/interfaces/set-defaultimplementation-on-enum.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/testing/transactionmodel-attribute-governs-test-transactions.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/testing/transactionmodel-attribute-governs-test-transactions.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/testing/transactionmodel-attribute-governs-test-transactions.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/datatransfer-skips-triggers-and-subscribers.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/datatransfer-skips-triggers-and-subscribers.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/datatransfer-skips-triggers-and-subscribers.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/obsoletion-requires-reason-and-tag.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/obsoletion-requires-reason-and-tag.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/obsoletion-requires-reason-and-tag.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/register-upgrade-tags-with-subscribers.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/register-upgrade-tags-with-subscribers.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/register-upgrade-tags-with-subscribers.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/upgrade-codeunit-subtype.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/upgrade/upgrade-codeunit-subtype.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/web-services/set-required-api-page-properties.bad.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/web-services/set-required-api-page-properties.md`: modified, not in the BC? snapshot
- `microsoft/knowledge/web-services/version-apis-by-adding-not-mutating-published-versions.good.al`: modified, not in the BC? snapshot
- `microsoft/knowledge/web-services/version-apis-by-adding-not-mutating-published-versions.md`: modified, not in the BC? snapshot
- `microsoft/skills/review/al-web-services-review.md`: modified, not in the BC? snapshot

## Context

- Systems: development
- From the description: "correct collectible-error, DataTransfer, upgrade-tag, obsoletion, and test-transaction guidance and samples"

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