Reimaginate.Orchestrator.BusinessCentral
1.1.5
dotnet add package Reimaginate.Orchestrator.BusinessCentral --version 1.1.5
NuGet\Install-Package Reimaginate.Orchestrator.BusinessCentral -Version 1.1.5
<PackageReference Include="Reimaginate.Orchestrator.BusinessCentral" Version="1.1.5" />
<PackageVersion Include="Reimaginate.Orchestrator.BusinessCentral" Version="1.1.5" />
<PackageReference Include="Reimaginate.Orchestrator.BusinessCentral" />
paket add Reimaginate.Orchestrator.BusinessCentral --version 1.1.5
#r "nuget: Reimaginate.Orchestrator.BusinessCentral, 1.1.5"
#:package Reimaginate.Orchestrator.BusinessCentral@1.1.5
#addin nuget:?package=Reimaginate.Orchestrator.BusinessCentral&version=1.1.5
#tool nuget:?package=Reimaginate.Orchestrator.BusinessCentral&version=1.1.5
Reimaginate.Orchestrator.BusinessCentral
Business Central workflow actions for Orchestrator hosts.
Use this package when workflows need Business Central finance, purchasing, item, manufacturing, or custom API page operations. The package does not own OAuth flows, token storage, tenant resolution, or company selection state. Hosts provide those concerns through IBusinessCentralWorkflowConnectionProvider.
Registration
Register the action handlers in the customer host:
services.AddBusinessCentralWorkflowActions(configuration);
If the host uses a custom workflow action resolver, scan this package's action assembly:
using Reimaginate.Orchestrator.Abstractions;
using Reimaginate.Orchestrator.BusinessCentral.Actions;
[WorkflowActionResolver]
[ScanAssembly(typeof(BusinessCentralWorkflowActionsMarker))]
public partial class WorkflowActionResolver : IWorkflowActionResolver;
Register a host-owned connection provider:
services.AddSingleton<IBusinessCentralWorkflowConnectionProvider, CustomerBusinessCentralConnectionProvider>();
IBusinessCentralWorkflowConnectionProvider receives the workflow TenantKey and optional CompanyKey, then returns a fresh access token, environment URL, and resolved Business Central company ID. TenantKey is required on every action. CompanyKey is optional; when omitted, the host provider resolves the default company.
Actions
Generic/custom API actions:
BusinessCentral.GetBusinessCentral.SearchBusinessCentral.PostBusinessCentral.PatchBusinessCentral.DeleteBusinessCentral.InvokeAction
Typed standard API actions:
BusinessCentral.SearchVendorsBusinessCentral.GetVendorBusinessCentral.CreateVendorBusinessCentral.UpdateVendorBusinessCentral.SearchItemsBusinessCentral.GetItemBusinessCentral.CreateItemBusinessCentral.UpdateItemBusinessCentral.SearchPurchaseOrdersBusinessCentral.GetPurchaseOrderBusinessCentral.CreatePurchaseOrderBusinessCentral.UpdatePurchaseOrderBusinessCentral.DeletePurchaseOrderBusinessCentral.ReceiveAndInvoicePurchaseOrderBusinessCentral.SearchPurchaseInvoicesBusinessCentral.GetPurchaseInvoiceBusinessCentral.CreatePurchaseInvoiceBusinessCentral.UpdatePurchaseInvoiceBusinessCentral.DeletePurchaseInvoiceBusinessCentral.PostPurchaseInvoice
Typed manufacturing/custom API page actions:
BusinessCentral.SearchProductionOrdersBusinessCentral.GetProductionOrderBusinessCentral.CreateProductionOrderBusinessCentral.UpdateProductionOrderBusinessCentral.SearchReleasedProductionOrdersBusinessCentral.GetReleasedProductionOrderBusinessCentral.CreateReleasedProductionOrderBusinessCentral.UpdateReleasedProductionOrderBusinessCentral.SearchBomsBusinessCentral.GetBomBusinessCentral.CreateBomBusinessCentral.UpdateBom
All actions return Success and FailureReason plus action-specific result fields. Mutating actions require Confirm = true. Update, delete, post/process, and generic invoke operations also require an ETag; the action pack sends it as If-Match.
Custom Paths
Generic actions accept a full relative API path, for example:
relativePath: api/v2.0/companies({companyId})/vendors
The default HTTP client replaces {companyId}, {companyKey}, and {environmentName} from the resolved connection. Manufacturing actions use configured custom API page paths unless a workflow supplies relativePath directly:
{
"Orchestrator": {
"Actions": {
"BusinessCentral": {
"ProductionOrdersPath": "api/acme/manufacturing/v1.0/companies({companyId})/productionOrders",
"ReleasedProductionOrdersPath": "api/acme/manufacturing/v1.0/companies({companyId})/releasedProductionOrders",
"BomsPath": "api/acme/manufacturing/v1.0/companies({companyId})/boms"
}
}
}
}
Examples
Search a vendor by Business Central vendor number, then create or update explicitly:
do:
- findVendor:
call: BusinessCentral.SearchVendors
with:
tenantKey: qpac-au
number: V00010
top: 1
- createVendor:
call: BusinessCentral.CreateVendor
with:
tenantKey: qpac-au
confirm: true
record:
number: V00010
displayName: Contoso Supplies
email: accounts@contoso.example
additionalFields:
paymentTermsCode: 30D
- updateVendor:
call: BusinessCentral.UpdateVendor
with:
tenantKey: qpac-au
id: ${findVendor.records[0].id}
eTag: ${findVendor.records[0].@odata.etag}
confirm: true
record:
displayName: Contoso Supplies Pty Ltd
Create and post a purchase invoice:
do:
- createInvoice:
call: BusinessCentral.CreatePurchaseInvoice
with:
tenantKey: qpac-au
confirm: true
record:
vendorNumber: V00010
invoiceDate: "2026-06-30T00:00:00Z"
lines:
- lineType: Item
lineObjectNumber: ITEM-100
quantity: 2
unitCost: 42.50
- postInvoice:
call: BusinessCentral.PostPurchaseInvoice
with:
tenantKey: qpac-au
id: ${createInvoice.id}
eTag: ${createInvoice.eTag}
confirm: true
Use a custom AL/API page path:
do:
- createProductionOrder:
call: BusinessCentral.CreateProductionOrder
with:
tenantKey: qpac-au
relativePath: api/acme/manufacturing/v1.0/companies({companyId})/productionOrders
confirm: true
data:
number: PROD-0001
itemNumber: ITEM-100
additionalFields:
sourceType: Item
Hosts that expose these mutating actions from command-line workflows can replace IBusinessCentralActionWarningSink with a Spectre.Console-backed implementation to emit the same warning style as the current CLI.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FluentValidation (>= 12.1.1)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Options (>= 10.0.10)
- Reimaginate.Mediator.Abstractions (>= 1.3.0)
- Reimaginate.Mediator.SourceGenerator (>= 1.3.0)
- Reimaginate.Orchestrator.Abstractions (>= 1.1.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.5 | 28 | 7/30/2026 |
| 1.1.4 | 29 | 7/30/2026 |
| 1.1.3-rc.6 | 27 | 7/29/2026 |
| 1.1.3-rc.5 | 32 | 7/29/2026 |
| 1.1.3-rc.4 | 30 | 7/28/2026 |
| 1.1.3-rc.3 | 34 | 7/28/2026 |
| 1.1.3-rc.2 | 31 | 7/28/2026 |
| 1.1.3-rc.1 | 32 | 7/28/2026 |
| 1.1.2 | 97 | 7/23/2026 |
| 1.1.1 | 53 | 7/20/2026 |
| 1.1.1-rc.81 | 59 | 7/8/2026 |
| 1.1.1-rc.80 | 55 | 7/8/2026 |
| 1.1.1-rc.79 | 49 | 7/4/2026 |
| 1.1.1-rc.78 | 55 | 7/3/2026 |
| 1.1.1-rc.77 | 49 | 7/3/2026 |
| 1.1.1-rc.76 | 57 | 6/30/2026 |