-
-
Notifications
You must be signed in to change notification settings - Fork 0
06 Sync
flowline sync exports the current solution state from DEV and unpacks it into the repo. Run it
after making changes in the Maker Portal, XrmToolBox, or any other tool that modifies Dataverse
directly — to capture those changes in source control.
- After modifying entities, forms, views, or business rules in the Maker Portal
- Before committing — to make sure source control reflects what's actually in Dataverse
Plugins and web resources are source-driven: they flow from code into Dataverse via
push, All the other stuff is environment-driven:synccaptures solution metadata (entities, forms, views, relationships, roles, workflows, etc.) and flows it back into source control. This is a key part of the inner dev loop when working with Dataverse.
flowline sync # sync the solution configured in .flowline
flowline sync ContosoSales # specify which solution when multiple are configuredAfter sync completes, Flowline prints a human-readable summary of what changed — entities and components added, modified, or removed, including attribute-level detail for entities, column changes in views, and option changes in option sets — so you can review the diff before committing.
So, no need to go through the git status or diff to see what changed, Flowline does it for you.

A full CHANGES.md is also written to solutions/<SolutionName>/CHANGES.md on every successful
sync. It contains the complete sub-item detail (all attributes, view columns, options) regardless
of the terminal threshold, and can be committed alongside the sync checkpoint or used as the basis
for a PR description.
CI tip: CHANGES.md stays untouched when there are no changes. You can use it as a filter for a deploy trigger, so no-op deploys can be skipped.
DATAVERSE_CONTEXT.md is also regenerated on every successful sync — see 09-AI-Agents#dataverse-schema-context for what it contains and how AI agents consume it.
Then commit the result:
git commit -m "sync: add account validation form"By default, Flowline syncs only the unmanaged solution. If you plan to deploy to other environments as a managed package, pass --managed once to sync both the unmanaged and managed solution:
flowline sync --managedThe flag is saved to .flowline — all subsequent syncs include the managed export automatically. To revert, pass --managed false.
Warning
You need --managed if you intend to deploy to test, UAT, or prod as a managed solution.
Increment the solution version as part of sync with --bump:
flowline sync --bump patch # 1.0.0 → 1.0.1 (default)
flowline sync --bump minor # 1.0.0 → 1.1.0
flowline sync --bump major # 1.0.0 → 2.0.0
flowline sync --bump none # 1.0.0 → 1.0.0 (no change)| Option | Description |
|---|---|
[solution] |
Solution to sync (optional when only one solution is configured) |
--dev <url> |
Development environment URL — only needed on first run; saved to .flowline automatically |
--managed |
Export and unpack the managed solution in addition to unmanaged — only needed on first run; saved to .flowline automatically. Pass --managed false to revert. |
--bump <component> |
Version component to increment: patch, minor, major, or none to skip bumping |
--no-build |
Skip the dotnet build validation step |
--no-build: Skips the post-sync build that validates the synced source compiles cleanly. Useful when iterating quickly and you know the build is clean, or when running sync in a CI step that handles build separately.
flowline push # push code changes to DEV
# ... make changes in Maker Portal ...
flowline sync # pull Dataverse changes back to source
git commit -m "feat: add validation"
flowline deploy test
See 03-Command-Reference#sync for the full option reference.