Translate

terça-feira, 11 de agosto de 2026

Fixing "Insufficient privileges" on D365 Finance and Operations Batch SharePoint Connections

D365F&O Tenant Migration

The symptom

While troubleshooting a custom SysOperation batch process that uploads a generated CSV file to a SharePoint document library (via SharePointDocumentStorageProvider) after a Tenant Migration, I ran into an upload failure that looked like this:

Upload failed: Exception has been thrown by the target of an invocation.
Inner: An unknown error occurred while communicating with the SharePoint server '<tenant>.sharepoint.com'.

The exception itself is unhelpful — it's the generic wrapper message that the SharePoint client SDK returns whenever the underlying HTTP call fails, without exposing the actual status code or response body.

The first clue came from Document management parameters (Organization administration > Document management > Document management parameters > SharePoint). This page has two separate connection tests:

  • Test interactive SharePoint connection — succeeded
  • Test batch SharePoint connection — failed with "You are not authorized to connect to '<tenant>.sharepoint.com'"

That asymmetry was the key diagnostic signal. If the interactive test works but the batch test doesn't, the problem isn't the SharePoint site, the folder path, or the Document Type configuration — it's specifically about how non-interactive (application-only) calls authenticate.

Root cause

Interactive connections use the signed-in user's delegated permissions — essentially riding on the user's existing Microsoft 365 license and SharePoint access, just like a browser session would.

Batch connections are different. Since Microsoft deprecated the old Microsoft-managed high-trust connection between finance and operations environments and SharePoint (this affects environments on version 10.0.40 and later that have SharePoint user authentication enabled), batch jobs authenticate as an application rather than as a user. This means the finance and operations service principal needs its own application-level grant to talk to SharePoint Online — and that grant is not provisioned automatically. A tenant administrator has to assign it manually once per tenant.

If nobody has performed this one-time setup, every batch/non-interactive call to SharePoint — including custom X++ code using SharePointDocumentStorageProvider, and the built-in Export attachments feature — will fail with exactly the vague error shown above, while everything that goes through an interactive user session keeps working fine. This makes the problem easy to misdiagnose as a networking, firewall, or tenant-migration issue when it's actually a missing permission grant.

The fix

The fix is to grant the Microsoft Dynamics ERP first-party service principal an application permission (Sites.ReadWrite.All) against the SharePoint Online first-party service principal, in the target tenant. Both service principals already exist in every tenant that runs finance and operations and SharePoint — there's nothing to register or create.

Option A — PowerShell (Microsoft Graph SDK)

This is Microsoft's documented approach. Run it once, as a Global Administrator (or a role with Application.ReadWrite.All), against the tenant that hosts the finance and operations environment's SharePoint site:

Import-Module Microsoft.Graph.Applications

# Replace with your tenant
Connect-MgGraph -TenantId <yourtenant>.onmicrosoft.com -Scopes 'Application.ReadWrite.All'

# These AppIds are fixed first-party application IDs — they do not change between tenants
$erpServicePrincipal = Get-MgServicePrincipal -Filter "AppId eq '00000015-0000-0000-c000-000000000000'"
$sharePointServicePrincipal = Get-MgServicePrincipal -Filter "AppId eq '00000008-0000-0ff5-ci00-000000000000'"
$spAppRole = $sharePointServicePrincipal.AppRoles | Where-Object { $_.Value -eq 'Sites.ReadWrite.All' }

# Assign the SharePoint 'Sites.ReadWrite.All' application role to the Dynamics ERP service principal
New-MgServicePrincipalAppRoleAssignedTo `
    -ServicePrincipalId $erpServicePrincipal.Id `
    -PrincipalId $erpServicePrincipal.Id `
    -ResourceId $sharePointServicePrincipal.Id `
    -AppRoleId $spAppRole.Id

Option B — Microsoft Graph Explorer (no local PowerShell needed)

If PowerShell isn't installed locally, or a policy restricts running scripts on your machine, the exact same operation can be done through Graph Explorer, signed in as a Global Administrator:

1. Find the Dynamics ERP service principal

GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '00000015-0000-0000-c000-000000000000'

Copy the id from the response — this is erpServicePrincipalId.

2. Find the SharePoint Online service principal

GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '00000008-0000-0ff5-ci00-000000000000'

Copy the idsharePointServicePrincipalId — and, from the appRoles array in the same response, find the entry where "value": "Sites.ReadWrite.All" and copy its id — this is appRoleId.

Note: Graph Explorer's default permission set (User.Read) won't be enough for either of these steps. Under Modify permissions, consent to Application.ReadWrite.All first — as a Global Admin you can grant this directly from the same screen.

3. Grant the permission

POST https://graph.microsoft.com/v1.0/servicePrincipals/{erpServicePrincipalId}/appRoleAssignments

Request body:

{
  "principalId": "{erpServicePrincipalId}",
  "resourceId": "{sharePointServicePrincipalId}",
  "appRoleId": "{appRoleId}"
}

A 201 Created response confirms the grant succeeded.

Verifying the fix

Back in Document management parameters > SharePoint, run Test batch SharePoint connection again. It should now report success, matching the interactive test.

A security note

Sites.ReadWrite.All is a broad grant — it gives the finance and operations application read/write access to every SharePoint site in the tenant, not just the specific document library used by a given integration. There's no officially documented narrower alternative for this particular first-party grant (the more restrictive Sites.Selected model applies to apps you register and control yourself, not to this Microsoft-managed service principal). If your organization has strict least-privilege requirements for SharePoint, this is worth flagging to your security team as an accepted trade-off and revisiting if Microsoft introduces a more granular option in the future.

Conclusion

When a finance and operations environment can reach SharePoint interactively but not from batch, don't waste time chasing networking, DNS, or tenant-migration theories first — check whether the one-time application consent for batch SharePoint access has actually been granted. This step is easy to miss because it doesn't live in D365 F&O at all: it's an Entra ID (Azure AD) application permission that must be granted once per tenant, and there's no button for it in the finance and operations client. Whether you use PowerShell or Graph Explorer, the operation is a single, five-minute application role assignment — but until it's done, every non-interactive SharePoint call from your environment, including custom integrations and the built-in Export attachments feature, will keep failing with the same unhelpful "unknown error" message.

Fim do suporte ao Visual Studio 2022 para X++: o que muda com o PU74

A Microsoft confirmou uma mudança relevante para quem desenvolve em X++ no Dynamics 365 Finance & Operations: a partir do Platform Update 74 (versão 10.0.49), o Visual Studio 2022 deixa de ser suportado para desenvolvimento em X++. A partir desse ponto, o Visual Studio 2026 passa a ser a única IDE suportada.

Se você mantém pipelines de build, VMs de desenvolvimento (Tier 1) ou CHEs para clientes, este é o momento de começar a planejar a transição — não a semana antes do upgrade.

O que a Microsoft anunciou

Na documentação oficial de Platform Updates da versão 10.0.49, na seção de melhorias de "Developer tools", a Microsoft declara que, a partir do PU74, o Visual Studio 2022 deixa de ser suportado para desenvolvimento em X++ e que apenas o Visual Studio 2026 passa a ter suporte.

Não é uma depreciação gradual como aconteceu no passado com versões mais antigas do Visual Studio (2015, 2017, 2019) — é um corte direto: uma versão sai, a outra entra.

Cronograma oficial

De acordo com a página de "Platform updates for version 10.0.49", o cronograma é o seguinte:

Fase Data
Preview de release Julho de 2026
Disponibilidade geral (self-update) Setembro de 2026
Disponibilidade geral (auto-update) Outubro de 2026

Ou seja: quem faz self-update já pode ser impactado a partir de setembro de 2026. Quem depende do ciclo automático da Microsoft será atualizado em outubro de 2026, independentemente de estar ou não preparado.

Quem é afetado (e quem não é)

É importante deixar claro o escopo dessa mudança:

  • Afeta: desenvolvedores X++, VMs de desenvolvimento Tier 1, ambientes CHE/UDE usados para build e debug, pipelines do Azure DevOps que compilam pacotes X++.
  • Não afeta diretamente: usuários finais da aplicação. Ninguém vai notar nada na tela do ERP no dia a dia — a mudança é inteiramente do lado das ferramentas de desenvolvimento.

Isso significa que o impacto é silencioso até o dia em que alguém tentar compilar em uma VM ainda rodando VS2022 após o upgrade para 10.0.50/PU74 — e a extensão simplesmente não funcionar mais.

O que fazer antes do upgrade

Algumas ações recomendadas para quem tem PU74 no roadmap deste ano:

  1. Inventariar ambientes de desenvolvimento. Levante todas as VMs Tier 1, CHEs e UDEs atualmente utilizadas para desenvolvimento em X++ em seus projetos e clientes.
  2. Planejar a instalação do Visual Studio 2026 nessas máquinas antes da janela de upgrade, para evitar descobrir o problema no meio de um go-live.
  3. Revisar pipelines de build no Azure DevOps. Agentes de build hospedados (self-hosted) que compilam pacotes X++ também dependem da toolchain do Visual Studio — vale confirmar se o agente aponta para a versão correta.
  4. Para ambientes CHE: considerar reprovisionar a VM de desenvolvimento assim que a Microsoft atualizar as imagens base para incluir o Visual Studio 2026, em vez de tentar fazer upgrade in-place da IDE.
  5. Comunicar a mudança à equipe de desenvolvimento com antecedência — principalmente em times distribuídos por vários países e fusos horários, em que nem todo mundo acompanha as notas de release da Microsoft.

Por que isso importa

Esse tipo de mudança tende a pegar times desprevenidos justamente porque é "invisível" até o momento do upgrade. Diferente de uma feature nova que aparece na tela e gera perguntas dos usuários, uma mudança de toolchain de desenvolvimento só aparece quando alguém tenta compilar — e, nesse ponto, já é tarde para planejar com calma.

Para consultorias e squads que atendem múltiplos clientes e ambientes (como costuma ser o caso em rollouts multipaís), vale incluir essa checagem no checklist de pré-upgrade padrão, junto com os itens de sempre: backup, testes de regressão, DBSync, etc.

Fonte oficial

A informação está documentada oficialmente pela Microsoft em:

Platform updates for version 10.0.49 of finance and operations apps https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/fin-ops/get-started/whats-new-platform-updates-10-0-49

Vale a pena também acompanhar a página de release notes do Visual Studio 2026 para novidades da própria IDE: https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-notes


Este post faz parte da cobertura de novidades da plataforma Dynamics 365 Finance & Operations aqui no blog. Se você está planejando o upgrade para PU74 e quer trocar experiências sobre a transição de ambientes de desenvolvimento, deixe um comentário.

terça-feira, 26 de maio de 2026

Agentes de IA no D365 F&O: Como eles facilitam o trabalho no dia a dia?

Agentes de IA no D365 F&O: casos práticos do dia a dia
IA & Automação · D365 F&O

Agentes de IA no D365 F&O: como eles facilitam o trabalho no dia a dia

Maio 2026  ·  Leitura rápida (~3 min)

Os agentes de IA chegaram ao Dynamics 365 Finance & Operations para ficar — e estão a mudar a forma como as equipas financeiras e operacionais trabalham. Ao contrário de simples chatbots, estes agentes analisam dados, tomam decisões dentro de limites definidos e executam ações com mínima intervenção humana.

💡 Em termos simples: os agentes funcionam como um colaborador júnior que trata do trabalho rotineiro de forma autónoma e só escala para revisão humana quando surge uma exceção ou situação fora do padrão.

Agentes de IA no Dynamics 365 Finance and Operations

Investimentos em IA agentica no D365 F&O — 2026 Release Wave 1 (Fonte: Microsoft Learn)

🤖 Casos práticos: o que os agentes fazem por si hoje

Veja exemplos concretos de como os agentes de IA atuam em módulos do D365 F&O no dia a dia:

1

💳 Pagamento automático de faturas (Payflow Agent)

O problema: processar manualmente filas de pagamento consome horas e está sujeito a erros.

O que o agente faz: monitoriza a fila de pagamentos, identifica faturas prontas para pagar, verifica os dados bancários do fornecedor face ao mestre de dados, executa o processamento e lança os lançamentos contabilísticos — tudo sem intervenção humana para transações dentro da política definida.

Resultado: redução de 70–80% no esforço manual em contas a pagar, segundo dados da Microsoft.

2

📄 Captura e correspondência de faturas (AP Automation)

O problema: equipas de AP a rever manualmente centenas de faturas por semana.

O que o agente faz: lê faturas em PDF, extrai os dados, faz a correspondência com as ordens de compra, aprende com as correções do utilizador ao longo do tempo, e encaminha automaticamente para aprovação com base nos limites configurados.

Resultado: redução de 60–70% no processamento manual de faturas, com acuidade crescente a cada ciclo.

3

🔁 Reconciliação contabilística automática

O problema: o encerramento de período exige dias de reconciliação manual entre razão auxiliar e razão geral.

O que o agente faz: cruza automaticamente saldos do razão auxiliar com o razão geral, aplica regras de tolerância e lógica fuzzy para matches complexos (1-para-muitos e muitos-para-muitos), e sinaliza apenas as exceções para revisão humana.

Resultado: encerramento de período mais rápido com a equipa focada apenas nos casos de exceção reais.

4

📬 Cobranças e gestão de recebíveis (AR Collections)

O problema: acompanhar clientes em atraso manualmente, sem priorização inteligente.

O que o agente faz: prioriza as atividades de cobrança com base no perfil de risco do cliente, gera comunicações de cobrança personalizadas, faz seguimento de faturas vencidas e recomenda estratégias de resolução com base no histórico de pagamento.

Resultado: menos dias de vendas em crédito (DSO) e equipas de AR focadas nos clientes de maior risco.

5

📦 Planeamento de procura com Copilot (Supply Chain)

O problema: planificadores a analisar manualmente variações de procura sem contexto suficiente.

O que o agente faz: o Copilot analisa planos de procura em linguagem natural — o planificador seleciona um ponto no gráfico e pergunta ao Copilot "Quais os principais fatores que causaram este desvio?" e recebe a resposta imediatamente, com explicação dos drivers.

Resultado: decisões de reabastecimento mais rápidas e com contexto — caso real documentado pela Microsoft com a Domino's Pizza UK.

6

🏭 Operações de armazém mais inteligentes

O problema: rotas de picking ineficientes e reequilíbrio de stock manual entre armazéns.

O que o agente faz: otimiza automaticamente as rotas de picking, deteta potencial rotura de stock e desencadeia workflows de compra, e o agente financeiro atualiza as projeções de fluxo de caixa em tempo real — tudo de forma coordenada.

Resultado: menor tempo de deslocação em armazém, maior precisão no inventário e cumprimentos mais rápidos.

7

💬 Consultas em linguagem natural (Copilot + MCP)

O problema: controllers e CFOs dependentes de relatórios pré-definidos ou de apoio IT para obter dados específicos.

O que o agente faz: com a integração MCP da Wave 1 2026, é possível perguntar diretamente: "Qual o saldo de AP em aberto por fornecedor para faturas com mais de 45 dias?" — e receber dados estruturados e precisos, sem SQL nem navegação em menus.

Resultado: autonomia de dados para equipas de gestão sem dependência de IT ou report builders.

🧠

Da automação reativa à operação agêntica

Os agentes de IA no D365 F&O observam, decidem e atuam — escalando apenas o que realmente precisa de atenção humana.

Operação agentica no ERP: do trabalho manual à automação inteligente (Fonte: Microsoft Dynamics 365)

Os agentes de IA no D365 F&O não substituem as equipas — libertam-nas para trabalho de maior valor. O objetivo é simples: o sistema trata do rotineiro, e as pessoas focam-se no estratégico. Com a 2026 Release Wave 1, esta visão está a tornar-se realidade módulo a módulo.