Translate

terça-feira, 25 de agosto de 2026

Dynamics 365 Finance & Operations 10.0.49: As novidades que merecem atenção!

D365 Finance & Operations 10.0.49: o que realmente muda no seu dia a dia

Toda nova versão do D365 F&O traz uma longa lista de novidades — mas nem tudo merece o mesmo nível de atenção. Na 10.0.49 (build 10.0.2790), separei o que é só ruído do que vai exigir teste, decisão ou ajuste de processo antes de chegar à produção.

TL;DR: mais automação no financeiro (pré-pagamento por linha, liquidação desacoplada, reconciliação bancária com revisão), planejamento mais preciso no supply chain, classificação dinâmica de trabalho no armazém com Power Fx — e uma mudança de ferramenta para quem desenvolve X++ que não pode ficar para a última semana do projeto.


📅 Quando isso chega ao seu ambiente?

Fase Data
Preview Julho de 2026
GA (self-update) Setembro de 2026
GA (auto-update) Outubro de 2026

Data de disponibilidade não é sinônimo de "ativar tudo no dia seguinte". O caminho seguro continua sendo: sandbox primeiro, integrações revisadas, usuários-chave validando os processos críticos.


💰 Financeiro: menos trabalho manual, mais rastreabilidade

Pré-pagamento agora pode ser calculado por linha

Até aqui, a regra de adiantamento valia para o documento inteiro. Agora dá para diferenciar por linha.

Cenário real: equipamento de 100.000 com 30% de adiantamento + instalação de 20.000 com 50% de adiantamento. Antes, uma regra única distorcia um dos dois. Agora, cada linha respeita sua própria condição.

📍 Ativação: Accounts receivable parameters, com Prepayment customer invoice habilitado no Feature management.

Datas contábeis que se ajustam sozinhas

Requisição criada em 30/06, aprovação arrasta até depois do fechamento do período. Em vez de travar o processo, o sistema reprocessa para o próximo período aberto do mesmo ano fiscal e reavalia o orçamento automaticamente.

Menos ping-pong com o financeiro — mas vale confirmar se essa automação bate com a política de períodos e os requisitos de auditoria da empresa.

Reservas orçamentárias com mais controle

Um pacote de melhorias que ataca perguntas que todo controller já fez pelo menos uma vez:

  • O compromisso ainda está mesmo aberto?
  • Um documento finalizado continua consumindo orçamento por engano?
  • Existe alguma relação quebrada entre compromisso e liquidação?
  • O fechamento do exercício está sendo respeitado no saldo exibido?

Prioridade alta de teste para quem trabalha com setor público ou governança orçamentária forte.

Pagamento contabilizado, liquidação em fila

Delay settlement from journal posting separa dois momentos que hoje são um só: contabilizar o pagamento e concluir a liquidação. Se o volume travar a liquidação, o pagamento entra mesmo assim — e a liquidação roda depois, automática ou manual.

⚠️ Ganho de continuidade operacional, mas alguém precisa monitorar a fila e tratar os casos que não se liquidam sozinhos.

Reconciliação bancária com um "ok" humano antes de fechar

As regras de correspondência continuam automáticas, mas agora é possível revisar e aprovar o resultado antes de marcar como conciliado. Útil para valores altos, contas sensíveis ou exceções que ninguém quer descobrir depois do fechamento.

De brinde: filtro de transações de bridge por conta bancária, cliente/fornecedor, referência, número de cheque e período — relevante para quem trabalha com alto volume.

Ativos fixos e moeda de reporte

Ajustes de moeda de reporte agora acompanham corretamente divisões de ativos registrados em moeda estrangeira (o recurso de contabilização do ajuste ainda está em preview). Antes de ativar, vale revisar transações antigas, lançamentos não contabilizados e registros zerados em moeda de reporte.

Electronic Reporting fica mais robusto

  • Geração nativa de GS1-128, GS1 DataMatrix e GS1 QR Code
  • Funções DIV e MOD nas fórmulas
  • Respeito ao número de cópias do Print management
  • Menor consumo de memória em execuções grandes
  • Validação de múltiplas versões de configuração numa única operação, com histórico

DIV(25, 10) = 2 caixas completas · MOD(25, 10) = 5 unidades restantes — simples, mas resolve paginação, agrupamento de volumes e dígitos verificadores.


📦 Supply Chain: planejamento mais fino, armazém mais inteligente

Master planning respeita melhor a realidade da produção

Duas melhorias que se somam: consideração de períodos fechados em calendários de transporte e, principalmente, sub-BOM e sub-roteiro entrando na redução de previsão. Resultado esperado: menos excesso de compra e produção quando já existe suprimento no meio do caminho.

📍 Antes de confiar no novo comportamento, rode um cenário de comparação: ordens planejadas, datas e quantidades, antes x depois.

Reserva de matéria-prima presa ao mesmo lote (preview)

Pensado para rastreabilidade em produção — típico caso de indústria alimentícia, onde a ordem precisa consumir de um único lote sempre que o estoque permitir. Testar com regras de validade, localização e disponibilidade parcial é obrigatório antes de ligar em produção.

ASN de entrada vira despatch advice

O aviso antecipado de embarque do fornecedor agora entra como despatch advice, permitindo organizar docas, equipe e conferência antes do caminhão chegar. Ganho direto de produtividade no recebimento.

Uma localização, um proprietário

Nova regra impede múltiplos proprietários numa mesma localização de armazém — importante em operações de terceiros ou consignação. Antes de ativar: audite os saldos atuais, porque dado legado com múltiplos proprietários vai pedir limpeza.

Mapeamento de status de estoque para integrações externas

Um sistema externo manda Available, Blocked, QualityHold — e agora dá para mapear isso direto para os status internos do SCM, com efeito claro em reserva, picking e disponibilidade para venda.

Classificação dinâmica de trabalho com Power Fx

Provavelmente o recurso mais "de engenharia" da lista: uma fórmula Power Fx substitui vários templates estáticos de work classification, decidindo em tempo real pool de trabalho, prioridade, diretiva de localização e classe de trabalho.

Switch(workTable.Load.CarrierCode,
    "Carrier1", {WorkPoolId: "Carrier1", DefaultWorkPriority: 100},
    "Carrier2", {WorkPoolId: "Carrier2", DefaultWorkPriority: 50},
    "Carrier3", {WorkPoolId: "Carrier3", DefaultWorkPriority: 10}
)

Ou, direcionando por zona refrigerada:

{ WorkClassId: Concatenate("S-", workLine.ZoneId) }

Poderoso, mas pede governança: documente as fórmulas, teste os casos sem correspondência e confira se a lógica se encaixa no agrupamento de templates já existente.

E ainda: melhorias incrementais

CAPA, consolidação de transações de estoque, sincronização de estabelecimento em entregas diretas, bloqueio de registros de chão de fábrica após o cálculo diário, escalabilidade de filas do message processor e rastreamento de alterações de preço para o Azure Product Search.


⚠️ O que passou a ser obrigatório

Nem tudo é opt-in. Ficaram obrigatórios nesta versão:

  • Finance: customer and vendor netting, melhorias de reconciliação bancária, cash position, cash control e diversas validações de pagamento
  • Supply Chain: Advanced quality management, integrações do Inventory Visibility, dispense management, recálculo de datas em entregas diretas, recursos de rebates

Isso muda o jogo do planejamento: não basta escolher o que ativar — é preciso mapear o que mudou de comportamento por padrão e testar os processos que dependem disso.


✅ Checklist rápido para o projeto

  1. Confirme versão atual, canal de atualização e data planejada
  2. Inventário de customizações X++, extensões, integrações e ER
  3. Separe: novo opcional, ativado por padrão, obrigatório, preview
  4. Teste ponta a ponta: compras, vendas, pagamentos, fechamento, produção, planejamento, recebimento
  5. Compare master planning antes x depois
  6. Teste reconciliação bancária, liquidação em fila e filas de processamento
  7. Valide ER: cópias, idiomas, destinos, códigos de barras
  8. Teste regras de armazém com transportadoras, zonas e mudança de carga
  9. Revise permissões, batch jobs e monitoramento
  10. Documente decisões e mantenha um plano de rollback — mesmo em One Version

🛠️ Atenção, devs: o Visual Studio muda a partir do PU74

A partir do PU74, o Visual Studio 2022 deixa de ser suportado para desenvolvimento X++ — o ambiente suportado passa a ser o Visual Studio 2026. Isso não é só uma preferência de IDE: máquinas de desenvolvimento, agentes de build, pipelines de CI/CD e extensões precisam ser revisados.

Não deixe essa migração para a última etapa do projeto — ela afeta diretamente a capacidade de compilar, testar e publicar.


Conclusão

A 10.0.49 segue a direção que o D365 F&O vem tomando há tempo: mais automação nos controles financeiros, mais inteligência no armazém, mais integração e rastreabilidade. Os ganhos mais claros para a maioria dos projetos estão em pré-pagamento por linha, liquidação desacoplada, reconciliação bancária com revisão, ER otimizado, planejamento mais preciso e classificação dinâmica de trabalho.

Trate a atualização como projeto de negócio, não como aplicação de pacote. Testar os novos comportamentos, preparar os usuários e revisar as integrações vai pesar tanto quanto instalar a versão em si.


Fontes

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.