Business Central, connected to everything else you run.

Midstream builds open-source AL extensions and Python integrations that let Dynamics 365 Business Central SaaS work with your servers, apps and network, so nobody has to copy data between them by hand.

Data moves both ways, automatically, over secure APIs.

Where Business Central stops, the workarounds start.

Business Central covers a lot. The gaps around it are where your team loses hours every week.

Someone exports to Excel every morning

Another system needs BC data, so a person downloads, cleans and re-uploads it. Every day. And it's wrong whenever they're out.

BC almost does what you need

The field, report, validation or approval step you want is one small change away, but standard BC won't let you make it.

You can't see what's talking to your server

Integrations, scripts and outside traffic all hit the same machine. You find out something is wrong after it breaks.

Three ways we close the gap

Everything we build starts as code you can read. Here is a small piece of each.

Custom extensions in AL

Make Business Central fit how you work

We add the fields, pages, reports, validations and automations your process needs, packaged as extensions that survive Microsoft's SaaS updates.

  • New fields and pages on any table
  • Approval steps and validation rules
  • Custom reports and scheduled jobs
How extensions work
CustomerExt.TableExt.al
tableextension 50100 "MID Customer Ext" extends Customer
{
    fields
    {
        field(50100; "Credit Review Date"; Date)
        {
            Caption = 'Credit Review Date';
            trigger OnValidate()
            begin
                if Rec."Credit Review Date" < Today() then
                    Error('Review date cannot be in the past.');
            end;
        }
    }
}

Integrations in Python and FastAPI

Connect BC to your servers and apps

We build secure APIs between Business Central SaaS and your Linux servers, so orders, inventory and customer data flow on their own, on a schedule or the moment they change.

  • Two-way sync with BC's official APIs
  • Runs on your own Linux server
  • Logging, retries and alerts built in
How integrations work
bc_bridge/main.py
from fastapi import FastAPI, Depends
from .bc import BusinessCentral, require_api_key

app = FastAPI(title="BC Bridge")
bc = BusinessCentral.from_env()

# Open sales orders, straight from Business Central
@app.get("/orders/open", dependencies=[Depends(require_api_key)])
async def open_orders():
    return await bc.get(
        "salesOrders",
        filter="status eq 'Open'",
    )

Network monitor, free and open source

See every connection on your network

Wirewatch plugs into your switch's mirror port and shows which devices are talking to what, where in the world that traffic goes, and what doesn't belong. It runs on a Raspberry Pi or an Ubuntu box.

  • Every device and destination, by name
  • Alerts for traffic outside your country and for risky sites
  • A live world map; your data stays on the box
See how wirewatch works
wirewatch · sample data
63Devices
41,208Attempts today
2Outside the US
DeviceDestinationCountryPort
laptop-04login.microsoftonline.comUS443
nvr-cam-2203.0.113.77CN8000
accounting-pcapi.businesscentral…US443
nas-01198.51.100.24RU22
thermostatpool.ntp.orgUS123

How a project works

Small, clear steps. You see working results early and approve each stage.

  1. Free discovery call

    30 minutes to walk through the manual work, the gap in BC or the systems you want connected. You leave with a plain-English plan and a price.

  2. Build and test in a sandbox

    We build in a Business Central sandbox, never your live company, and you test with your own data until it's right.

  3. Deploy and support

    We install it in production, hand over the source code and documentation, and stay available for fixes and changes.

The code is open. Read it before you hire us.

Our scripts and extensions are published on GitHub under an open-source license. Use them yourself for free, or have us set them up and tailor them for you.

  • bc-card-statement-ocr

    Card statements become coded, receipted purchase invoices; managers approve from an email link.

    AL
  • bc-scheduled-report-emailer

    Email any Business Central report as PDF, Excel or Word on a schedule.

    AL
  • bc-inventory-threshold-alerts

    One email when an item drops below its minimum, per item, location and variant.

    AL
  • wirewatch

    Network traffic dashboard for a Raspberry Pi or Ubuntu box, with a live world map.

    Python

Have a Business Central workaround you're tired of?

Tell us about it. The first call is free, and you'll get an honest answer about whether it's worth automating.

Book a free consultation