Skip to content

Fix site scoped contextinfo#9454

Open
jorisvanduyse wants to merge 2 commits into
microsoft:mainfrom
jorisvanduyse:fix-site-scoped-contextinfo
Open

Fix site scoped contextinfo#9454
jorisvanduyse wants to merge 2 commits into
microsoft:mainfrom
jorisvanduyse:fix-site-scoped-contextinfo

Conversation

@jorisvanduyse

@jorisvanduyse jorisvanduyse commented Jul 14, 2026

Copy link
Copy Markdown

What & why

This fixes SharePoint request-digest acquisition for site-scoped SharePoint URLs.

SharePoint Uri Builder.GetHost() intentionally returns only the hostname, but request-digest calls used it for /_api/contextinfo. For URLs such as https://tenant.sharepoint.com/sites/site, this caused the request to target the tenant root instead of the configured site.

The change adds a site-base URL accessor and uses it for request-digest acquisition in CreateList, both CreateListItem overloads, CreateFolder, and UpdateListItemMetaDataField. GetHost() remains unchanged for callers that require hostname-only behavior.

Regression tests verify that contextinfo requests retain the configured /sites/<site> path.

Linked work

Fixes #8932

How I validated this

  • I read the full diff and it contains only changes I intended.
  • I built the affected app(s) locally with zero compilation errors.
  • I ran the change in Business Central and confirmed it behaves as expected.
  • I added or updated tests for the new behavior, or explained below why none are needed.

What I tested and the outcome

  • Built the affected System Application and test applications locally with zero compilation errors.
  • Published a temporary System Application build to a disposable local BC29 container using normal synchronization and upgrade semantics.
  • Ran the SharePoint Client Test codeunit (132970) manually in the BC Test Tool.
  • Confirmed the regression before the fix:
    • Expected: site-scoped .../sites/<site>/_api/contextinfo/
    • Actual: tenant-root .../_api/contextinfo/
  • Published the fixed System Application and reran the same tests.
  • Confirmed that TestCreateFolder, TestCreateListRequestDigestUsesSiteScopedUrl, and TestCreateListItemRequestDigestUsesSiteScopedUrl pass with the fix applied.
  • Also verified the original scoped SharePoint scenario manually in a disposable v28.1 container.

Risk & compatibility

This is an internal URI-construction change with no schema, data-upgrade, permission, or public API contract changes.

GetHost() is unchanged. The new site-base URL accessor is used only for request-digest acquisition, ensuring existing hostname-only consumers retain their behavior.
Fixes #8932 is the GitHub issue link. GitHub will automatically link it, and close the issue when the PR is merged.

…soft#8932)

Adds coverage for CreateFolder, CreateList, and CreateListItem to assert
that the request digest (_api/contextinfo) is requested from the
site-scoped URL rather than the tenant root, so the fix keeps working
under Sites.Selected permissions.
@github-actions github-actions Bot added AL: System Application From Fork Pull request is coming from a fork labels Jul 14, 2026
@jorisvanduyse

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

@github-actions github-actions Bot added the needs-approval Workflow runs require maintainer approval to start label Jul 14, 2026
@jorisvanduyse jorisvanduyse marked this pull request as ready for review July 15, 2026 14:53
@jorisvanduyse jorisvanduyse requested a review from a team July 15, 2026 14:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AL: System Application From Fork Pull request is coming from a fork needs-approval Workflow runs require maintainer approval to start

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Sharepoint External File Account uses tenant-root contextinfo endpoint, failing under scoped Sites.Selected

1 participant