Skip to content

Fix CreateDirectory failing under Sites.Selected permission#8862

Closed
JorisVanDuyse4PS wants to merge 171 commits into
microsoft:mainfrom
JorisVanDuyse4PS:fix-sharepoint-folder-creation-sites-selected
Closed

Fix CreateDirectory failing under Sites.Selected permission#8862
JorisVanDuyse4PS wants to merge 171 commits into
microsoft:mainfrom
JorisVanDuyse4PS:fix-sharepoint-folder-creation-sites-selected

Conversation

@JorisVanDuyse4PS

@JorisVanDuyse4PS JorisVanDuyse4PS commented Jun 29, 2026

Copy link
Copy Markdown

Summary

The SharePoint connector callsGetRequestDigest() via the Microsoft SharePoint client, which always fetches the form digest from the tenant-root _/api/contextinfo endpoint (see SharePointUriBuilder.GetHost(), which strips the site path via \Uri.GetHost()).

Under \Sites.Selected, the app has no tenant-level rights, so this call is denied with a 403. Folder creation then fails even though the app has explicit write access to the configured site.

This PR replaces CreateDirectory with a direct REST implementation that POSTs to the site-scoped _/{SharePointUrl}/api/contextinfo endpoint. This endpoint is permitted under Sites.Selected as long as the app has been granted access to the configured site. The folder creation POST then uses the returned site-scoped digest.

BuildSharePointAuthorization is extracted from InitSharePointClient to eliminate duplicated auth-building logic.

Work Item(s)

Fixes #5584

aholstrup1 and others added 30 commits February 9, 2026 13:20
Integrate latest changes
Final integration from main to 28.x (Commit a7a0127)
<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md
-->
#### Summary <!-- Provide a general summary of your changes -->

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#620871](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/620871)

Co-authored-by: Miroslav Uhlir (Miroslav Uhlr) <v-mirouhlir@microsoft.com>
<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md
-->
#### Summary <!-- Provide a general summary of your changes -->
Add CLEAN29 to preprocessorsymbols

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#620871](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/620871)
…latest (microsoft#6818)

<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md
-->
#### Summary <!-- Provide a general summary of your changes -->
Update artifact to bcinsider/Sandbox/28.1//latest

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#622584](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/622584)
…(+ 1 more update(s)) (microsoft#6838)

This PR contains the following changes:
- Update app baselines package version. New value: 28.0.46665.0
- Update translation package version. New value: 28.0.26054.3


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

Co-authored-by: aholstrup1 <aholstrup1@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md
-->
#### Summary <!-- Provide a general summary of your changes -->

Fixes NO app uptake in NAV. Without change app cant be uptake.

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#622982](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/622982)

Co-authored-by: Magnus Hartvig Grønbech <magnushar@microsoft.com>
…n-AL defined indices (microsoft#6863)

This pull request backports microsoft#6782 to releases/28.x

Problem:
When an non-AL defined index is disabled (turned off) it doesn't exist
anymore (neither in Database Index VT or Key VT), so it will no longer
exist in the temp table, leading to an error.

Solution:
Don't attempt to return to the position for non-AL defined indices after
disabling them. Instead the position will just be the first index.

This PR also adds another page which shows the index's fields and
include fields.

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

Co-authored-by: Mads Gram <magram@microsoft.com>
<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md
-->
#### Summary <!-- Provide a general summary of your changes -->

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#623252](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/623252)
## Summary
- Backport of microsoft#6806 to releases/28.x
- Adds a check that ensures an invalid GTIN (longer than the field
length) doesn't fail the SetRange when importing E-Documents.

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

Co-authored-by: Magnus Hartvig Grønbech <magnushar@microsoft.com>
…for Certificate auth (microsoft#6880)

The certificate SetParameters overload was assigning `Certificate :=
Certificate` (self-assignment) instead of `Certificate :=
NewCertificate`, causing certificate-based auth to always send an empty
certificate.

This will fix authorization with certificate for Microsoft Graph and
SharePoint Graph API modules.

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes microsoft#6851
Fixes
[AB#623232](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/623232)

Co-authored-by: Volodymyr Dvernytskyi <volodymyr.dvernytskyi@gmail.com>
…soft#6912)

Filtering on exact item tracing variation

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#623358](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/623358)
)

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

**Message from cherry-picked commit:**
Create basic setup data in **OnInstallApp** (so when installing the main
QM app), not just when opening the setup page.
Reclassify the demo data from the Contoso module as Master data instead
of Setup data, so it's not installed with the other setup data.

Fixes

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

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

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

[AB#622186](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/622186)
… error when you change a newly create line in a customer subscription contract (microsoft#6885)

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

Workitem:
[Bug
623238](https://dynamicssmb2.visualstudio.com/Dynamics%20SMB/_workitems/edit/623238):
[28.x][all-e]"The changes to the subscription line record cannot be
saved..." error when you change a newly create line in a customer
subscription contract
…e scanned is 0D (microsoft#6963)

Summary

FA Scan entries The date is not valid. this is because Last time scanned
is 0D. This will prevent the user open the FA card page .

Work Item(s)
Fixes
[AB#624039](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/624039)
microsoft#6921)

…rmission (microsoft#6914)

<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md -->
#### Summary <!-- Provide a general summary of your changes -->
Initializing quality management setup causes error for limited user

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes

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

<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md
-->
#### Summary <!-- Provide a general summary of your changes -->

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#623806](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/623806)
## Summary
- Check that a fulfillment service exists before querying assigned
fulfillment orders
- Handle deleted fulfillment service locations in Shopify sync

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

Cherry-picked from main:
- 3c83280 [Shopify] Check fulfillment service exists before querying
assigned fulfillment orders (microsoft#6904)
- 1819203 [Shopify] Handle deleted fulfillment service location in
Shopify (microsoft#6847)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
…#6920)

<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md
-->
#### Summary <!-- Provide a general summary of your changes -->
Quality Management - Introducing actionable error messages

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#623757](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/623757)
…o-PTE@preview - ab2dd7a / Related to AB#539394 (microsoft#6999)

## preview

Note that when using the preview version of AL-Go for GitHub, we
recommend you Update your AL-Go system files, as soon as possible when
informed that an update is available.

### Issues

- Attempt to start docker service in case it is not running
- NextMajor (v28) fails when downloading dependencies from NuGet-feed

## v8.3

### Issues

- Issue 2107 Publish a specific build mode to an environment
- Issue 1915 CICD fails on releases/26.x branch - '26.x' cannot be
recognized as a semantic version string

### The default pull request trigger is changing

AL-Go for GitHub is transitioning from the pull_request_target trigger
to the more secure pull_request trigger. This is a step we are taking to
make AL-Go for GitHub more secure by default. If you are used to working
from branches within the repository you may not notice any difference.
If you get pull requests from forks, those pull requests will no longer
be able to access secrets. If that is blocking for your repository, you
will need to update your settings to use the pull_request_target
trigger.

**How do I revert back to pull_request_target?**

Add the following setting to one of your settings files and run the
Update AL-Go System Files workflow:

```json
  "pullRequestTrigger": "pull_request_target"
```

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

Co-authored-by: business-central-bot <business-central-bot@users.noreply.github.com>
…ed through recurring billing (microsoft#6955)

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

Workitem:
[Bug
623240](https://dynamicssmb2.visualstudio.com/Dynamics%20SMB/_workitems/edit/623240):
[28.x][All-e]Extended texts are not applied when sales invoices are
created through recurring billing
…soft#6956)

- Add Power Automate-friendly API pages for quality inspections (**Qlty.
Inspections API** and **Qlty. Create Inspection API**) under the
**qualityManagement** API group
- Add external business events for key inspection lifecycle moments
(created, started, failed, passed, finished) via **Qlty. Start
Workflow** codeunit
- Add **QltyEventCategory** enum extension to register Quality
Management as an event category for external integrations
- Put **QltyInspectionValues** query under the **qualityManagement** API
group.
- Add tests covering the new API pages (**Qlty. Tests - Inspections
API**)

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

Co-authored-by: insightworks007 <226571004+insightworks007@users.noreply.github.com>
Co-authored-by: aldobriansky <aldobriansky@microsoft.com>
…chedule… (microsoft#6950)

- Enable item ledger entry as an inspection source so users can create
inspections against open inventory (periodic/stock inspections)
- Allow the Schedule Inspection report to be used for bulk creating
inspections without requiring a schedule group, not just via job queue
- Revert accidental change that bypassed the "please choose a record
first" validation in the Create Inspection report
- Restore schedule group value when the user declines to create a job
queue entry, preventing orphaned schedule groups

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

Co-authored-by: aldobriansky <aldobriansky@microsoft.com>
…ation registration (microsoft#6237) (microsoft#6873)

## Summary
Cherry-pick of d282dde from main to
releases/28.x.

**Original PR:** microsoft#6237  
**Fixes:** microsoft#6875

Fix a bug that causes an error when creating a new Nemhandel
participation and adding network profiles using the Advanced Setup step.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

Co-authored-by: Eldar Vilcinskis <elvi@continia.com>
Co-authored-by: Jesper Schulz-Wedde <JesperSchulz@users.noreply.github.com>
Co-authored-by: Pavel Rakalovič <para@continia.com>
…ocNo (microsoft#7034)

Cherry-pick of microsoft#7033 to releases/28.x

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

Co-authored-by: Joshua Martínez Pineda <diegojoshuam@microsoft.com>
mynjj and others added 14 commits May 29, 2026 09:00
…n. Journal Template does not exist (Name = '')" (microsoft#8390)

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


[Bug
637277](https://dynamicssmb2.visualstudio.com/Dynamics%20SMB/_workitems/edit/636197):
[28.1] [ALL-E] Vendor Subscription Contract Deferral Release fails with
"Gen. Journal Template does not exist (Name = '')"


Cherry-picked from microsoft#8356

Co-authored-by: DhavalMore88 <v-dhavalmore@microsoft.com>
…052 (microsoft#8406)

This PR contains the following changes:
- Update app baselines package version. New value: 28.0.46665.51052


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

Co-authored-by: aholstrup1 <aholstrup1@users.noreply.github.com>
…o-PTE@preview - 935eb86 / Related to AB#539394 (microsoft#8461)

## preview

Note that when using the preview version of AL-Go for GitHub, we
recommend you Update your AL-Go system files, as soon as possible when
informed that an update is available.

### Use artifact manifest to pick .NET runtime for assembly probing

When compiling apps with the workspace compiler, AL-Go now reads the
`dotNetVersion` from the BC artifact's `manifest.json` (copied into the
compiler folder by BcContainerHelper) and selects an installed .NET
runtime whose major version matches. This avoids version drift between
the build agent's highest installed runtime and the platform the
artifact was built against. If the manifest does not declare a
`dotNetVersion`, or no installed runtime matches the required major,
versioned .NET assembly probing paths are omitted (a warning is logged
in the latter case).

### New compiler folder hooks

Two new hooks are available for customizing the compiler folder creation
process when workspace compilation is enabled:

- **PreNewBcCompilerFolder.ps1** - Runs before `New-BcCompilerFolder` is
called. Receives a `[hashtable] $parameters` argument containing the
parameters that will be passed to `New-BcCompilerFolder`. The script can
modify the hashtable in-place to customize the compiler folder creation
(e.g., add a `platformArtifactUrl` to use a specific platform version).
- **PostNewBcCompilerFolder.ps1** - Runs after the compiler folder is
created. Receives `[hashtable] $parameters` and `[string]
$compilerFolder` arguments.

Place these scripts in your project's `.AL-Go` folder to use them.

### New AL-Go hooks (experimental)

AL-Go for GitHub now supports a new generic hook mechanism that is
independent of BcContainerHelper. A new `RunHook` action invokes scripts
placed in the project's `.AL-Go` folder at well-known extension points
in the workflows. The first such extension point is `BuildInitialize`,
which runs in the build workflow immediately after `Read settings` (so
AL-Go settings are available as environment variables).

To use it, add a `.AL-Go/BuildInitialize.ps1` script that accepts a
`[Hashtable] $parameters` argument. If the script does not exist, the
step is a silent no-op.

The hook mechanism is intended to gradually replace the
BcContainerHelper-based `Run-AlPipeline` script overrides as AL-Go moves
away from `Run-AlPipeline`. See [Customizing AL-Go for
GitHub](https://github.com/microsoft/AL-Go/blob/main/Scenarios/CustomizingALGoForGitHub.md#al-go-hooks)
for details and the list of supported hook names.

> **Experimental:** the set of supported hook names, the parameters
passed to hook scripts, the location and timing of hook invocations, and
the names of the underlying action and helpers may all change in future
versions. Anything you build on top of this first iteration may break in
a later update.

### Conditional settings now support workflow trigger events

`ConditionalSettings` now supports a `triggers` condition, allowing you
to apply settings based on `GITHUB_EVENT_NAME` values such as `push`,
`pull_request`, `schedule`, and `workflow_dispatch`.

Example:

```json
"ConditionalSettings": [
  {
    "triggers": ["schedule", "workflow_dispatch"],
    "settings": {
      "additionalCountries": ["de", "us"]
    }
  }
]
```

### Support for workspace compilation (Continued)

- Added support for upgrade tests and using previously released
artifacts as baselines for appsourcecop.json
- Added support for BCPT app compilation with workspace compilation
- Added support for incremental builds (`modifiedApps` mode) with
workspace compilation. Unmodified apps are downloaded from the baseline
workflow run and excluded from workspace compilation, matching the
behavior of the container-based path.

### Optimized dependency artifact downloads for multi-project
repositories

The `DownloadProjectDependencies` action now downloads only artifacts
from dependency projects instead of all workflow artifacts. For
repositories with many AL-Go projects, this reduces build runner
bandwidth and speeds up the dependency download step.

### Issues

- Incremental builds (`modifiedApps` mode) now correctly identify
unmodified apps for projects whose `appFolders` reference paths outside
the project directory (e.g. using `../`)
- Issue 2204 - Workspace compilation ignores vsixFile setting
- Issue 2211 - Cannot create a release if a project contains only test
apps
- Issue 2214 - Workspace compilation not working with external
dependencies
- Issue 2235 - Workspace compilation: only the first `customCodeCops`
entry resolved when multiple relative paths were configured. Relative
`customCodeCops` paths are now resolved against the project folder
before being passed to the compiler.

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

Co-authored-by: business-central-bot <business-central-bot@users.noreply.github.com>
…for any event (microsoft#8481)

## What & why

Quality Management responses are nominally valid only for Quality
Management events.

## Linked work

Fixes
[AB#637723](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/637723)
…e Excel (microsoft#8426)

Backport of microsoft#8423. Fixes
[AB#637447](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/637447).
Cherry-pick conflict in TrialBalanceExcelReports.Codeunit.al resolved by
accepting the deletion of the moved-out tests/handlers (mirror of main).

Co-authored-by: Joshua Martínez Pineda <diegojoshuam@microsoft.com>
…283 (microsoft#8536)

This PR contains the following changes:
- Update app baselines package version. New value: 28.0.46665.51283


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

Co-authored-by: aholstrup1 <aholstrup1@users.noreply.github.com>
…542 (microsoft#8630)

This PR contains the following changes:
- Update app baselines package version. New value: 28.0.46665.51542


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

Co-authored-by: aholstrup1 <aholstrup1@users.noreply.github.com>
…oft#8637)

Adds VAT handling to the purchase E-Document import flow (bug 638188).

Fixes
[AB#638188](https://dynamicssmb2.visualstudio.com/Dynamics%20SMB/_workitems/edit/638188)

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…o-PTE@preview - c6589e9 / Related to AB#539394 (microsoft#8785)

## preview

Note that when using the preview version of AL-Go for GitHub, we
recommend you Update your AL-Go system files, as soon as possible when
informed that an update is available.

### Use artifact manifest to pick .NET runtime for assembly probing

When compiling apps with the workspace compiler, AL-Go now reads the
`dotNetVersion` from the BC artifact's `manifest.json` (copied into the
compiler folder by BcContainerHelper) and selects an installed .NET
runtime whose major version matches. This avoids version drift between
the build agent's highest installed runtime and the platform the
artifact was built against. If the manifest does not declare a
`dotNetVersion`, or no installed runtime matches the required major,
versioned .NET assembly probing paths are omitted (a warning is logged
in the latter case).

### New compiler folder hooks

Two new hooks are available for customizing the compiler folder creation
process when workspace compilation is enabled:

- **PreNewBcCompilerFolder.ps1** - Runs before `New-BcCompilerFolder` is
called. Receives a `[hashtable] $parameters` argument containing the
parameters that will be passed to `New-BcCompilerFolder`. The script can
modify the hashtable in-place to customize the compiler folder creation
(e.g., add a `platformArtifactUrl` to use a specific platform version).
- **PostNewBcCompilerFolder.ps1** - Runs after the compiler folder is
created. Receives `[hashtable] $parameters` and `[string]
$compilerFolder` arguments.

Place these scripts in your project's `.AL-Go` folder to use them.

### New AL-Go hooks (experimental)

AL-Go for GitHub now supports a new generic hook mechanism that is
independent of BcContainerHelper. A new `RunHook` action invokes scripts
placed in the project's `.AL-Go` folder at well-known extension points
in the workflows. The first such extension point is `BuildInitialize`,
which runs in the build workflow immediately after `Read settings` (so
AL-Go settings are available as environment variables).

To use it, add a `.AL-Go/BuildInitialize.ps1` script that accepts a
`[Hashtable] $parameters` argument. If the script does not exist, the
step is a silent no-op.

The hook mechanism is intended to gradually replace the
BcContainerHelper-based `Run-AlPipeline` script overrides as AL-Go moves
away from `Run-AlPipeline`. See [Customizing AL-Go for
GitHub](https://github.com/microsoft/AL-Go/blob/main/Scenarios/CustomizingALGoForGitHub.md#al-go-hooks)
for details and the list of supported hook names.

> **Experimental:** the set of supported hook names, the parameters
passed to hook scripts, the location and timing of hook invocations, and
the names of the underlying action and helpers may all change in future
versions. Anything you build on top of this first iteration may break in
a later update.

### Conditional settings now support workflow trigger events

`ConditionalSettings` now supports a `triggers` condition, allowing you
to apply settings based on `GITHUB_EVENT_NAME` values such as `push`,
`pull_request`, `schedule`, and `workflow_dispatch`.

Example:

```json
"ConditionalSettings": [
  {
    "triggers": ["schedule", "workflow_dispatch"],
    "settings": {
      "additionalCountries": ["de", "us"]
    }
  }
]
```

### Support for workspace compilation (Continued)

- Added support for upgrade tests and using previously released
artifacts as baselines for appsourcecop.json
- Added support for BCPT app compilation with workspace compilation
- Added support for incremental builds (`modifiedApps` mode) with
workspace compilation. Unmodified apps are downloaded from the baseline
workflow run and excluded from workspace compilation, matching the
behavior of the container-based path.

### Optimized dependency artifact downloads for multi-project
repositories

The `DownloadProjectDependencies` action now downloads only artifacts
from dependency projects instead of all workflow artifacts. For
repositories with many AL-Go projects, this reduces build runner
bandwidth and speeds up the dependency download step.

### Issues

- Issue 2277 Auto-exclude the `copilot` GitHub environment from CI/CD
deployments. When the GitHub Copilot coding agent is enabled on a
repository, GitHub auto-creates an environment named `copilot`. AL-Go
now treats it the same way as `github-pages` and never attempts to
deploy to it.
- Issue 2236 - `GetDependencies` `buildMode` prefix leaks across
dependency iterations, causing incorrect artifact mask names when
multiple `appDependencyProbingPaths` entries use different build modes
- Incremental builds (`modifiedApps` mode) now correctly identify
unmodified apps for projects whose `appFolders` reference paths outside
the project directory (e.g. using `../`)
- Issue 2204 - Workspace compilation ignores vsixFile setting
- Issue 2211 - Cannot create a release if a project contains only test
apps
- Issue 2214 - Workspace compilation not working with external
dependencies
- Issue 2235 - Workspace compilation: only the first `customCodeCops`
entry resolved when multiple relative paths were configured. Relative
`customCodeCops` paths are now resolved against the project folder
before being passed to the compiler.
- Issue 2265 - Creating a Performance Test App fails on Linux due to
case-sensitive path lookup for the Performance Toolkit sample app

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

Co-authored-by: business-central-bot <business-central-bot@users.noreply.github.com>
… zero (microsoft#8838)

Work item:
[AB#640628](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/640628)

## Summary

Backport of the fix for the edge case where a posting account's balance
at the ending date is zero.

The query-based Trial Balance path previously skipped any
account/dimension combination whose values netted to zero
(`CheckAllZero`). But the underlying query only returns combinations
that actually have entries, so a zero *net* change still represents real
(offsetting) turnover that should be shown. This change inserts every
combination the query returns in the first pass, so the second
(opening-balance) pass can correctly adjust those that also have an
opening balance — preserving correct debit/credit splits when the end
balance nets to zero.

## Changes

- `src/Apps/W1/ExcelReports/App/src/Financials/TrialBalance.Codeunit.al`
-
`src/Apps/W1/ExcelReports/Test/src/TrialBalanceExcelReports.Codeunit.al`

Tests updated/added:
- `QueryPathIncludesAccountsThatNetToZero`
- `QueryPathReportsCorrectDebitCreditSplitsForZeroEndBalance`

Cherry-picked from `bugs/tb-totaling-accs` (commits `470ad7c8`,
`d24a08cf`, `09e70035`).

---------

Co-authored-by: Joshua Martínez Pineda <diegojoshuam@microsoft.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…oft#8831)

Backport of microsoft#8310 to `releases/28.1`.

Cherry-picks commit bbad0a8.

## Summary

- **Root cause**: The UBL schema template used string `"0"` placeholders
for numeric fields, causing the MLLM to return locale-formatted strings
(e.g. Swedish `"2,34"`) instead of JSON numbers. AL's `AsDecimal()` then
stripped the comma, turning `"2,34"` into `234`.
- **Fix 1** (`ubl_example.json`): Changed all numeric string `"0"`
placeholders to `0` (JSON numbers).
- **Fix 2** (`EDocMLLMExtraction-SystemPrompt.md`): Added explicit rule
requiring XML decimal format.
- **Fix 3** (`EDocMLLMSchemaHelper.Codeunit.al`): Replaced `AsDecimal()`
with `Evaluate(…, AsText(), 9)` in `GetDecimal()` for locale-independent
parsing.

Fixes
[AB#640594](https://dynamicssmb2.visualstudio.com/Dynamics%20SMB/_workitems/edit/640594)

Co-authored-by: Magnus Hartvig Grønbech <magnushar@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@JorisVanDuyse4PS JorisVanDuyse4PS requested a review from a team June 29, 2026 12:22
@github-actions github-actions Bot added AL: Apps (W1) Add-on apps for W1 From Fork Pull request is coming from a fork labels Jun 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Issue #5584 is not valid. Please make sure you link an issue that exists, is open and is approved.

@github-actions github-actions Bot added the needs-approval Workflow runs require maintainer approval to start label Jun 29, 2026
@JorisVanDuyse4PS JorisVanDuyse4PS marked this pull request as draft June 29, 2026 13:24
ventselartur and others added 2 commits June 29, 2026 20:28
…iption fixes (microsoft#8843)

#### Summary
Backport to `releases/28.1` of the E-Document purchase import
improvements:

- **Vendor-match telemetry**: emit `E-Doc. Imp. Session Telemetry`
signals throughout the prepare-draft pipeline — `Vendor Match Method`
(No / GLN / VAT Id / Service Participant / Name and Address / None),
`Vendor Info Present`, `Vendor Assignment Source` (Already Assigned /
Provider / History / None), and `Vendor Matched By Name Not Address`.
- **Name-and-Address fallback fix**: the result of
`FindVendorByNameAndAddress` was previously discarded (trailing `;`); it
now actually assigns the matched vendor and exits.
- **Posting Description fix**: only copy `Posting Description` from the
E-Document onto the Purchase Header when it is non-empty, applied after
insert so a blank value no longer overwrites the header.
- Remove the obsolete `#if not CLEAN26` guard around the
`Microsoft.eServices.EDocument.Processing.Import` using statement (now
always required).

> Note: the `ApplyDefaultPostingDateFromSetup` call present on newer
branches does not exist on 28.1 and was intentionally omitted from this
backport.

#### Work Item(s)
Fixes
[AB#640638](https://dynamicssmb2.visualstudio.com/Dynamics%20SMB/_workitems/edit/640638)
Fixes
[AB#640634](https://dynamicssmb2.visualstudio.com/Dynamics%20SMB/_workitems/edit/640634)
The SharePoint connector called GetRequestDigest() via the MS SharePoint
client, which always fetches the form digest from the tenant-root
/_api/contextinfo endpoint. Under Sites.Selected, the app has no
tenant-level rights, so this call is denied with a 403.

Replace CreateDirectory with a direct REST implementation using
System.RestClient that POSTs to the site-scoped {SharePointUrl}/_api/contextinfo
instead. This endpoint is permitted under Sites.Selected as long as the app
has been granted access to the configured site. The folder creation POST
then uses the returned site-scoped digest.

Also extract BuildSharePointAuthorization from InitSharePointClient to
eliminate the duplicated auth-building logic.
@JorisVanDuyse4PS JorisVanDuyse4PS force-pushed the fix-sharepoint-folder-creation-sites-selected branch from 598d2b3 to 5706d56 Compare June 30, 2026 07:33
@github-actions github-actions Bot added Build: Automation Workflows and other setup in .github folder AL: System Application Build: scripts & configs Build scripts and configuration files AL: Tools AL: Business Foundation labels Jun 30, 2026
@JorisVanDuyse4PS JorisVanDuyse4PS deleted the fix-sharepoint-folder-creation-sites-selected branch June 30, 2026 07:33
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 AL: Business Foundation AL: System Application AL: Tools Build: Automation Workflows and other setup in .github folder Build: scripts & configs Build scripts and configuration files 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 Connector is unable to create folder if user is not Sharepoint Admin