Skip to content

[Experiment - do not merge] API stack on a single tenant - #12685

Draft
Prangshuman Das (t-prda) wants to merge 12 commits into
features/646383-stack-d8-apiv1-reliabilityfrom
features/646383-stack-e-single-tenant
Draft

Prangshuman Das (t-prda) wants to merge 12 commits into
features/646383-stack-d8-apiv1-reliabilityfrom
features/646383-stack-e-single-tenant

Conversation

@t-prda

@t-prda Prangshuman Das (t-prda) commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Experiment only, do not merge: one settings line.

Experiment on top of D8: numberOfTenantsForTesting 4 to 1, with clean test codeunit execution off (it requires a secondary tenant). Checks whether a single tenant is a viable fallback if the platform SQL fix were insufficient, and its CI time and failure cost compared with D8.

Related: AB#646383, AB#653393

Stack (each PR shows only its own layer; merge bottom first)

  1. [API tests] Default to web service key authentication #12674 A: web service key auth (base: main)
  2. [Expense tests] Re-enable Expense Agent API tests #12675 B: Expense API tests + clean test codeunit execution
  3. [API tests] Re-enable APIV1 and APIV2 API tests #12676 C: re-enable APIV1/APIV2 API tests
  4. Area fixes: [API tests] Ensure VAT posting setup in API document fixtures #12677 D1 VAT fixtures → [API tests] Ensure cancellation reason codes in API sales document tests #12678 D2 cancellation reasons → [API tests] Handle localized purchase invoice payment discounts in APIV1 tests #12679 D3 localized discounts → [API tests] Set sales quote document and posting dates in API tests #12680 D4 quote dates → [API tests] Assign a number series to API vendor payment journals #12681 D5 journal numbering → [API tests] Ignore localized fields in API document comparisons #12682 D6 field comparison → [API tests] Return shipment PDF selection and pdfDocument test isolation #12683 D7 PDF documents → [API tests] Improve APIV1 fixture and verification reliability #12684 D8 APIV1 reliability

Experiments (on D8, do not merge): #12685 E single tenant, #12686 F no clean execution. Combined validation (do not merge): #12687, same tree as D8.

Platform: main already pins BCPlatform 30.0.56112.0, which includes the SQL connection-pool fix (AB#653457).

Note for CI: AL-Go's new-warning check needs a CI/CD baseline from the base branch, and features/* bases have none, so a PR build there fails with a 404. The current CI runs were triggered while these PRs targeted main, so their results are valid for the cumulative change.

@github-actions github-actions Bot added the Build: Automation Workflows and other setup in .github folder label Oct 12, 2026
@github-actions github-actions Bot added Ownership: Needs Review Ownership is Other, low confidence, or needs manual correction Team: Other GitHub request for other area than SCM, Finance or Integration labels Oct 12, 2026
@t-prda
Prangshuman Das (t-prda) changed the base branch from features/646383-stack-d8-apiv1-reliability to main October 12, 2026 11:14
@github-actions github-actions Bot added Build: scripts & configs Build scripts and configuration files AL: Apps (W1) Add-on apps for W1 labels Oct 12, 2026
@github-actions github-actions Bot added this to the Version 30.0 milestone Oct 12, 2026
Authenticate API test requests with the current user's web service key and remove the
container password and Key Vault credential plumbing (ApiTestCredential, password cleanup,
PipelineFinalize hooks). Containers disable NavHttpClient anti-SSRF so API tests can call
the local server. Clean-tenant execution logic is unchanged. Adds the shared
SetLicenseSafeWorkDate and AddFieldToIgnoreIfExists helpers to Library - Graph Mgt.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Remove the Expense API Test Auth Helper (no Key Vault secret, no subscriber) and apply the
Expense app and test fixes. Keep only Expense disablements that NAV master also has.
Enable clean test codeunit execution; APIV1/APIV2 tests that this surfaces are temporarily
excluded (entries from #12325) and re-enabled by the following layers.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Re-enable APIV1, APIV2, IRS 1099 and E-Document API tests that pass without area-specific
fixture fixes. Only tests fixed by the following area layers and the two Company Info.
tests that NAV master disables stay excluded.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Create missing VAT posting setup for item, item charge, resource and G/L account lines in
API document fixtures and re-enable the affected line and item variant tests.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Create a reason code when none exists so cancel actions succeed and re-enable the
affected invoice and credit memo tests.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Set dates before vendor defaults apply, use the payment-terms discount library and accept
localized payment lines, then re-enable the payment discount test.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Align quote dates with the work date before converting to an order and re-enable the
make-order tests.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Give the vendor payments batch a number series when it has none and re-enable the
vendor payment and apply vendor entry tests.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Skip localized header fields that only exist in some countries when comparing page and
API documents and re-enable the through-page-and-API tests.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-e-single-tenant branch from e1ea7c2 to d68d7ae Compare October 12, 2026 11:28
@t-prda
Prangshuman Das (t-prda) changed the base branch from main to features/646383-stack-d8-apiv1-reliability October 12, 2026 12:29
Select the purchase return shipment report for return shipment PDF documents, run the
PDF document codeunits without test isolation and re-enable their TestExpandPdfDocument tests.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
Find created lines by unique description, refresh polled configuration packages, fix
assertion order and journal template handling, and re-enable the affected APIV1 tests.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
…atform fix is insufficient)

Experiment branch on top of the API stack. Run tests on a single tenant and turn off clean test
codeunit execution, which requires a secondary tenant. Compare CI time and test failures with
the D8 layer. Not intended for merge.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d8-apiv1-reliability branch from 27005fe to 45a2ff0 Compare October 12, 2026 16:45
@t-prda
Prangshuman Das (t-prda) changed the base branch from features/646383-stack-d8-apiv1-reliability to main October 12, 2026 22:22
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-e-single-tenant branch from d68d7ae to eae57f7 Compare October 12, 2026 22:23
@t-prda
Prangshuman Das (t-prda) changed the base branch from main to features/646383-stack-d8-apiv1-reliability October 12, 2026 22:35
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d8-apiv1-reliability branch 7 times, most recently from 46994a0 to de737ec Compare October 15, 2026 12:56
dominicstarkl pushed a commit to dominicstarkl/BCApps that referenced this pull request Oct 15, 2026
Review focus: ``MicrosoftTestAuthProvider`` (about 60 lines) and the
enum default; the ``build/`` changes are deletions plus the anti-SSRF
line in ``NewBcContainer.ps1``.

Defaults API test authentication (`Library - Graph Mgt`) to the current
user's web service key. API tests no longer need per-app auth uptake or
a container password.

- `API Test Authentication` enum: `DefaultImplementation` = `Microsoft
Test Auth Provider`. Removes `No API Test Auth Provider` and the
explicit `Microsoft Test Environment` value.
- `Microsoft Test Auth Provider`: on-premises with NavUserPassword,
sends Basic auth with `UserId()` and the web service key. When the key
is missing or expired, a background session (`API Test Web Service Key`,
CU 131025) creates it with a 24h expiry and commits it, because the API
request runs in a separate server session. The caller's transaction is
never committed; the provider waits up to 60 s for the session and then
re-reads the key.
- `Library - Graph Mgt`: adds the `SetLicenseSafeWorkDate` and
`AddFieldToIgnoreIfExists` helpers used by later layers.
- Build: removes the container password and Key Vault credential
plumbing (`ApiTestCredential.psm1`, `Remove-ApiTestPassword.ps1`,
`PipelineFinalize` hooks and their tests). Keeps the clean-tenant
execution logic. Sets `NavHttpClientAntiSSRFEnabled=false` in the test
container, as NAV `RunALTests.ps1` does: since microsoft#12323, API tests call
the container's own endpoint through AL `HttpClient`, which anti-SSRF
blocks.
- CU 139494 `API Test Auth Provider Tests`: covers key creation and
renewal. Declares `TestHttpRequestPolicy = AllowAllOutboundRequests`
(NAV blocks outbound requests by default; microsoft#12694 covered the other API
tests).

Related:
[AB#646383](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/646383),
[AB#653393](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653393)

### Stack (each PR shows only its own layer; merge bottom first)
1. microsoft#12674 A: web service key auth (base: `main`)
2. microsoft#12675 B: Expense API tests + clean test codeunit execution
3. microsoft#12676 C: re-enable APIV1/APIV2 API tests
4. microsoft#12890 Review fixes for A: simplify web service key handling
5. Area fixes: microsoft#12677 D1 VAT fixtures → microsoft#12678 D2 cancellation reasons →
microsoft#12679 D3 localized discounts → microsoft#12680 D4 quote dates → microsoft#12681 D5
journal numbering → microsoft#12682 D6 field comparison → microsoft#12683 D7 PDF documents
→ microsoft#12684 D8 APIV1 reliability

Experiments (on D8, do not merge): microsoft#12685 E single tenant, microsoft#12686 F no
clean execution. Combined validation (do not merge): microsoft#12687, same tree
as D8.

Platform: `main` already pins BCPlatform 30.0.56112.0, which includes
the SQL connection-pool fix
([AB#653457](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653457)).

Note for CI: AL-Go's new-warning check needs a CI/CD baseline from the
base branch, and `features/*` bases have none, so a PR build there fails
with a 404. The current CI runs were triggered while these PRs targeted
`main`, so their results are valid for the cumulative change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
dominicstarkl pushed a commit to dominicstarkl/BCApps that referenced this pull request Oct 15, 2026
Review focus: the Expense test changes and the auth-helper deletion; the
``enableCleanTestCodeunitExecution`` line. The large JSON diffs are
temporary disables, undone in C.

Re-enables the Expense Agent API tests on top of the default web service
key auth. No Key Vault password and no auth subscriber.

- Deletes `Expense API Test Auth Helper` and its usages.
- Re-applies the Expense fixes from microsoft#12325 (reverted in microsoft#12514):
`TravelRequestApproval`, Expense permission and spend-request tests, the
`ExpDetailTest` permission set, and `SpendRequestTests`.
- Turns on `enableCleanTestCodeunitExecution`, as microsoft#12325 did, so
`RequiredTestIsolation = Disabled` codeunits run in clean-tenant lanes.
- Expense disabled tests: keeps only the entries NAV master also
disables (12).
- Temporarily disables the unrelated APIV1/APIV2 tests that the clean
lanes start executing, the same entries microsoft#12325 added. They are
re-enabled in the next layers.

Related:
[AB#646383](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/646383),
[AB#653393](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653393)

### Stack (each PR shows only its own layer; merge bottom first)
1. microsoft#12674 A: web service key auth (base: `main`)
2. microsoft#12675 B: Expense API tests + clean test codeunit execution
3. microsoft#12676 C: re-enable APIV1/APIV2 API tests
4. microsoft#12890 Review fixes for A: simplify web service key handling
5. Area fixes: microsoft#12677 D1 VAT fixtures → microsoft#12678 D2 cancellation reasons →
microsoft#12679 D3 localized discounts → microsoft#12680 D4 quote dates → microsoft#12681 D5
journal numbering → microsoft#12682 D6 field comparison → microsoft#12683 D7 PDF documents
→ microsoft#12684 D8 APIV1 reliability

Experiments (on D8, do not merge): microsoft#12685 E single tenant, microsoft#12686 F no
clean execution. Combined validation (do not merge): microsoft#12687, same tree
as D8.

Platform: `main` already pins BCPlatform 30.0.56112.0, which includes
the SQL connection-pool fix
([AB#653457](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653457)).

Note for CI: AL-Go's new-warning check needs a CI/CD baseline from the
base branch, and `features/*` bases have none, so a PR build there fails
with a 404. The current CI runs were triggered while these PRs targeted
`main`, so their results are valid for the cumulative change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
dominicstarkl pushed a commit to dominicstarkl/BCApps that referenced this pull request Oct 15, 2026
Review focus: mostly mechanical. ``Initialize`` sets a license-safe work
date in each API test, and the JSON deletions re-enable tests. A few
files have small fixture or isolation tweaks.

Re-enables the APIV1, APIV2, IRS 1099 and E-Document API tests that pass
without area-specific fixes. Aligned with NAV master: only tests that
NAV master also runs are re-enabled.

- API test `Initialize` sets a license-safe work date. Adds minimal
fixture and isolation adjustments.
- Removes the APIV1/APIV2 exclusions, keeping only the entries fixed in
the following area PRs and the two `139806` methods NAV master disables.
Removes E-Doc `135575`.

Related:
[AB#646383](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/646383),
[AB#653393](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653393)

### Stack (each PR shows only its own layer; merge bottom first)
1. microsoft#12674 A: web service key auth (base: `main`)
2. microsoft#12675 B: Expense API tests + clean test codeunit execution
3. microsoft#12676 C: re-enable APIV1/APIV2 API tests
4. microsoft#12890 Review fixes for A: simplify web service key handling
5. Area fixes: microsoft#12677 D1 VAT fixtures → microsoft#12678 D2 cancellation reasons →
microsoft#12679 D3 localized discounts → microsoft#12680 D4 quote dates → microsoft#12681 D5
journal numbering → microsoft#12682 D6 field comparison → microsoft#12683 D7 PDF documents
→ microsoft#12684 D8 APIV1 reliability

Experiments (on D8, do not merge): microsoft#12685 E single tenant, microsoft#12686 F no
clean execution. Combined validation (do not merge): microsoft#12687, same tree
as D8.

Platform: `main` already pins BCPlatform 30.0.56112.0, which includes
the SQL connection-pool fix
([AB#653457](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653457)).

Note for CI: AL-Go's new-warning check needs a CI/CD baseline from the
base branch, and `features/*` bases have none, so a PR build there fails
with a 404. The current CI runs were triggered while these PRs targeted
`main`, so their results are valid for the cumulative change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91

This branch was successfully deployed

1 active (outdated) deployment
triage — e1ea7c2f Deployed Oct 12, 2026 by t-prda via Classify team ownership #7473
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AL: Apps (W1) Add-on apps for W1 Build: Automation Workflows and other setup in .github folder Build: scripts & configs Build scripts and configuration files Ownership: Needs Review Ownership is Other, low confidence, or needs manual correction Team: Other GitHub request for other area than SCM, Finance or Integration

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant