-
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Flowline is a Dataverse ALM CLI — structured workflow, Git-tracked solutions, and a fast push to DEV without the enterprise overhead.
Flowline is the opinionated successor to spkl:
attribute-driven plugin registration that now supports Custom APIs, web resource push without spkl.json,
a full Git-based ALM workflow, and modern PAC auth.
Each existing tool covers part of the Dataverse ALM workflow — none covers the specific inner loop Flowline targets.
Daxif introduced a sync philosophy that works well for some teams: push makes Dataverse match source, no orphans, generated C# types. But it is written in F#, which made community contributions nearly impossible; all maintenance had to go through the Delegate A/S team, which slowed down over time. Missing features (plugins and workflows in one assembly, NuGet packages) stayed missing.
spkl is a solid C# alternative that many
teams reach for, but it requires a spkl.json file that duplicates information already in the
project, and it has not been meaningfully maintained since 2021.
PAC CLI filled the auth and solution import gap, but none of the push tools aligned with it cleanly. PACX does, but its focus is scripting and broad component management — not the tight push inner loop of daily plugin and web resource development.
The Dataverse community will tell you unmanaged in production is amateurism. Flowline exists partly to disagree — loudly. The problem was never the package type; it was the tooling that made a professional workflow feel impossible without going managed. Git-tracked solutions, proper ALM, clean diffs, removing orphans, full auditability — all unmanaged, nothing to apologize for. (Managed deployment is supported too, if you want to go to the dark side.)
Flowline takes what worked in each tool — Daxif's sync philosophy, spkl's attribute-driven plugin registration, PAC CLI's auth model — combines them in C# so anyone can contribute, and adds the pieces that were missing for this specific workflow: a coherent Git-based push loop from dev to prod in one tool, managed or unmanaged.
In industry, a pipeline is rigid infrastructure: fixed diameter, fixed route, fixed rules. Microsoft's Dataverse Pipelines follow the same pattern — structured, opinionated, and built around managed solutions. That rigidity is useful when you need it, but it excludes teams that work differently.
A flowline is what engineers reach for when a pipeline doesn't fit. In oil and gas, flowlines are the flexible, small-bore connections used at the wellhead or at the end of a pipeline — where the terrain is uneven, the setup is temporary, or the fixed route simply isn't there yet. They carry the same thing as a pipeline, just on your terms.
Flowline CLI works the same way. Managed or unmanaged, strict ALM or fast inner loop, greenfield project or existing legacy repo — it adapts to how you work, not the other way around.
-
Scaffolded WebResources project.
clonecreates a web resources project with Rollup + TypeScript already set up —dist/is automatically wired topush. Swap in any bundler you prefer. -
Fast push for code assets.
pushsyncs plugin assemblies and web resources directly to DEV without a full solution import. Use from a Flowline project, or point at a standalone plugin file and web resource folder. -
Keeps Dataverse in sync with source. Plugin steps, images, and web resources missing from source are deleted on push — no manual cleanup. Use
--no-deleteto skip. -
Dry-run everything.
--dry-runpreviews every change before it touches Dataverse. -
Human-readable sync summary. After
sync, Flowline translates the git diff into a developer-friendly summary — entities and components added, changed, or removed. -
Attribute-driven plugin registration. Decorate
IPluginclasses with[Step],[Filter],[PreImage],[PostImage], and[CustomApi]; Flowline reads the compiled assembly and handles Dataverse registrations. - Plugins, workflow activities, and Custom APIs in one assembly. Flowline reads all supported types from a single assembly in one pass.
-
One-command environment provisioning.
provisioncopies PROD to a fresh DEV or TEST environment — no manual admin center clicks. -
Progressive adoption.
pushandgeneratework standalone — no.flowlineconfig required. Start withflowline pushon an existing project; adopt the full workflow when ready. - Modern auth. Flowline reuses the PAC CLI token cache. No passwords, no client secrets in scripts, no Windows Credential Manager.
- Getting-Started — install, auth, project workflow, structure
- Command-Reference — all commands and flags
-
Plugin-Registration —
[Step],[Filter],[CustomApi]attribute reference - WebResources-Project — TypeScript setup, Rollup build pipeline, deploying to Dataverse
- AI-Agents — exit codes, error messages, command selection guide, and daily dev loop for agents
- Migration-from-spkl — move an existing spkl project to Flowline
- Migration-from-Daxif — move an existing Daxif project to Flowline
- Migration-from-PACX — use Flowline alongside PACX (Greg.Xrm.Command)
- Planned-Features — what's coming next