接 Dynamics 365 Business Central:拉订单与客户进来,查库存
在 Microsoft Entra 注册应用,再在 Business Central 里建对应的应用记录,把 Tenant ID、Client ID 和 Client Secret 填进 Integration,测试、配 Mapping、激活——销售订单与客户流进来。
Dynamics 365 Business Central 连接器把您 Business Central 公司里的销售订单和客户拉进 OMS,并读取 Business Central 产品上的库存数量,让您在承诺发货前先核对库存。本连接不会把库存调整写回 Business Central——库存修正请直接在 Business Central 里做。
前置条件#
- 一个您在用的 Microsoft Dynamics 365 Business Central 环境——生产环境,或第一次测试先用 Sandbox 这类沙箱环境。
- 有权在您租户的 Microsoft Entra 里注册应用(Microsoft Entra 管理中心 / Azure 门户)。
- 有权在 Business Central 内部创建 Microsoft Entra 应用记录并给它分配权限集。只在 Entra 里注册应用只算配好一半——Business Central 这一侧同样必须配。
拿凭证#
- 在 Microsoft Entra 里打开 App registrations,进入您的应用(或新注册一个)。在概览页复制 Directory (tenant) ID——这就是 tenant_id;再复制 Application (client) ID——这就是 client_id。
- 给该应用授予调用 Business Central API 所需的 Business Central API 权限。
- 仍在应用页里,进 Certificates & secrets → New client secret,创建一个 secret 并立即复制它的值——这就是 client_secret,值只显示一次。
- 接下来配 Business Central 这一半:登录 Business Central,为同一个应用创建一条 Microsoft Entra 应用记录,并给它分配一个能读公司、销售订单、客户和产品的权限集。没有这条记录,连接测试会报 403(见常见问题)。
填进 Integration#
- 打开 Integration → 连接器市场 → Dynamics 365 Business Central → 新建连接。
- tenant_id——必填:粘贴 Microsoft Entra 应用页里的 Directory (tenant) ID。它是 GUID 格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。
- environment——可选:您的 Business Central 环境名,与 Business Central 里显示的完全一致。留空时连接使用 production;用沙箱时填它的名字,如 Sandbox。
- company——可选:本连接要读取的 Business Central 内部公司名。留空时,连接使用 Business Central 返回的第一家公司。
- client_id——必填:粘贴同一个 Microsoft Entra 应用页里的 Application (client) ID。它按密钥存储,永不回显。
- client_secret——必填:粘贴您从 Certificates & secrets 复制的 Client Secret 值。它加密存储,永不回显。
测试连接#
点测试连接。测试先检查 tenant_id、client_id、client_secret 是否都已填写——缺任何一个就直接停下并报出缺失项(MISSING_TENANT_ID 或 MISSING_CLIENT_SECRET),不会发出任何请求。随后它用您的客户端凭证去 login.microsoftonline.com 换取令牌,再拿令牌按您填的租户和环境,从 api.businesscentral.dynamics.com 的 Business Central 读取公司列表(最多 5 家)。
测试通过时会显示找到的第一家公司名称,以及共返回了几家公司——请核对这家公司正是您要拉订单的那家。如果 Business Central 约 12 秒内没有响应,测试会超时结束,因此超时通常意味着环境名填错了,或 Business Central 当时无法访问。
配 Mapping / 选模板#
选 Business Central 标准模板。它把销售订单号、带产品编号与数量的订单行、以及订单上的客户映射成标准订单。激活前先用一个真实销售订单跑一遍映射预览,核对两件事:订单来源公司是您要的那家;订单行上的每个 Business Central 产品编号都配到了您这边的产品。如果您有多家公司,先在连接上填好 company 字段,预览才会读对公司。
激活#
激活后,Integration 按您设的频率,从本连接指向的公司拉取新的销售订单和客户,并在需要核对库存时从 Business Central 读取产品库存。库存调整不会回传到 Business Central——库存修正请继续在 Business Central 里做,那里始终是库存的事实记录。先在 运行监控 / 日志里盯几单,确认无误再放手跑。
常见问题#
测试报 403——MISSING_SCOPE
凭证已被接受,但该应用在 Business Central 内部没有权限集。这是本连接器最常见的失败:应用在 Microsoft Entra 里注册好了,却没人在 Business Central 内部为它建 Microsoft Entra 应用记录,于是 Business Central 允许它登录、但拒绝它读取任何数据。
登录 Business Central,如还没有就为该应用创建一条 Microsoft Entra 应用记录,给它分配一个能读公司、销售订单、客户和产品的权限集,然后重新测试。
测试报 INVALID_CREDENTIALS
换令牌这一步本身被拒了:Microsoft Entra 不接受您填的 tenant_id 下的这组 client_id 与 client_secret。常见原因是 client_secret 已过期或复制不完整、client_id 是另一个应用的、或 tenant_id 是另一个租户的,与应用所属租户不一致。
回 Microsoft Entra → App registrations → 您的应用,从同一个应用页重新复制 Directory (tenant) ID 和 Application (client) ID。如果 secret 可能已过期,在 Certificates & secrets 下新建一个 client secret,把新值粘贴到 client_secret,再重新测试。
测试在读取公司时报 INVALID_TOKEN
令牌已经签发,说明凭证本身没问题——但测试去读公司列表时,Business Central 拒绝了这个令牌。问题出在 Microsoft Entra 一侧的应用权限:该应用缺少它需要的 Business Central API 权限,或该权限从未在您的租户里被授予。
在 Microsoft Entra 里打开该应用,检查它的 API 权限:补上连接器需要的 Business Central API 权限并为租户授予,然后重新测试。如果仍失败,再按上方 403 那条确认 Business Central 一侧——两边都到位才行。
我们有多家公司——连接会用哪一家?
取决于 company 字段。如果您把 company 留空,连接会使用 Business Central 返回的第一家公司——它可能不是您实际卖货的那家。连接测试会告诉您是哪一家:测试通过时会显示它找到的第一家公司名称。
要把连接固定到某一家公司,就把 company 字段填成该公司在 Business Central 里显示的准确名称,保存后重新测试——测试结果现在应显示这家公司。每多拉一家公司,就另建一个连接。