DevOps

Next Generation Salesforce DevOps Center: Get Hands-On

Jose  Carlos De Oliveira

By Jose Carlos De Oliveira

Salesforce DevOps Center’s managed package has been around for a while as an alternative to Change Sets. Since Spring ’26, there’s been a huge leap forward with the Next Generation of DevOps Center now available natively inside your production instance, with no managed package required.

“Built on the principles” of the original package, the new app feels like a complete reinvention: long-standing issues resolved, capability limits removed, and – even better – new AI-powered actions.

This article walks through what the Next Generation DevOps Center looks like in practice, step by step, including the underlying actions in the source control system. We’ll also cover the key differences between the managed package and the native app, and the details worth knowing before you use it.

If you’re not familiar with DevOps practices, I recommend reading my previous article first, where the underlying DevOps and source control concepts are explained with practical examples.

Getting Started: Enabling the App

To activate it, go to DevOps Center in Setup and toggle the switch on.

  • Top tip: If you’re already using the DevOps Center managed package, you’ll need to disable it first – only one can be active at a time. A new migration tool is rolling out in Dev Preview over the next couple of weeks.
Setup screen with toggles to enable the new DevOps Center Core App or keep the managed package active.
Enabling Next Generation of DevOps Center in Setup.

Once activated, you’ll find it in the App Launcher marked with a “crosshair” icon, as opposed to the managed package’s Person Account icon.

App Launcher search results showing the new DevOps Center app marked with a crosshair icon.
Next Generation of DevOps Center in App Launcher.
READ MORE: An Admin’s Guide to Salesforce Version Control Tools: DevOps Center vs. CLI

The Workflow: Five Steps

Moving a change through the pipeline takes just five steps. All the heavy lifting happens in the background, in the source control system – DevOps Center just gives it a simple, user-friendly front end.

Five-step DevOps Center workflow: Create Work Item, Commit Changes, Review Changes, Flag as Ready, Promote.
Five simple steps in the Work Item workflow.

1. Create the Work Item

A Work Item (WI) represents a logical unit of business change: a user story, a new feature, a Jira ticket, a Linear issue, a bug fix, or even an entire app.

  • New Work Item buttons in DevOps Center App.
  • New Work Item dialog screen with Project and Development Environment selection.

2. Commit the Changes

Save snapshots of your work directly to the version control branch.

3. Create a Review

Flag the changes for review and feedback before merging.

Create Review button highlighted in the DX Inspector Bar.
Create a review from the sandbox.

4. Flag as Ready to Promote

Mark the item visible in the pipeline, so release managers can promote it from the UI into the next environment.

Flag as Ready to Promote from the Work Item. Source: Salesforce Help; edited.

5. Promote the Changes

Move the item across each stage of the pipeline, which acts as a quality gate – a shift-left approach that runs a baseline test suite on every promotion to catch issues early.

Staging pipeline stage card listing five Work Items with a Promote Stage button.
Promote a bundle of changes from the pipeline. Source: Salesforce Help

Changes can then be backsynced to other development environments when needed.

Working via AI Agents

DevOps Center’s operations are exposed through the official Salesforce MCP (Model Context Protocol), so you can commit, push, promote, and even resolve conflicts straight from your preferred LLM agent: Claude Code via the CLI, Copilot in VS Code, or any other AI extension. 

Taking this further, you can run the entire work cycle from your ticketing system, e.g. Linear, using Coding Sessions.

  1. Ask the agent to create a Work Item in DevOps Center.
  2. The conversation continues. Some items may get deployed to the org for testing and committed to the branch.
  3. Once the work is agreed to be complete, ask the agent to create a review (a pull request).
  4. Promote the Work Item through the pipeline, resolving conflicts as needed.

It’s worth grounding agent behavior with clear rules and instructions to avoid unexpected outcomes. The agent should always seek approval before performing an action.

How Next Generation DevOps Center Works Under the Hood

As mentioned, DevOps Center powers a range of actions in the source control system so you don’t have to. Changes can be committed straight from a sandbox’s UI, or pushed from external tools: the CLI (via SFDX), an IDE like VS Code, or an AI agent such as Agentforce, Linear’s coding agents, or Claude Code via the official Salesforce MCP, which lets agents commit, merge, and promote directly.

For every simple step you see in the UI, there’s a corresponding technical action happening in the background. As a baseline, the source control system has one branch per stage environment.

Diagram linking a Git repository's Main, UAT and Integration branches to developer tools and Salesforce sandboxes.
Top: GitHub repository showing a branch for each environment. Left: development environments. Right: target orgs.

Creating a New Work Item

You can create a Work Item in two places: from the DevOps Center app in production (the standard “New” button on the Work Item tab/list view), or straight from the sandbox you’re working in, though the “Create Work Item” button there only appears if the environment already has another Work Item connected.

Sandbox DX Inspector Bar menu options to select, create, or open a Work Item, highlighting "Create Work Item".
Create a Work Item from the DX Inspector Bar.

Items in this status only exist inside DevOps Center – nothing has changed yet in the source control system.

Source control with no changes. Work Item status: New.

In Progress

A Work Item moves to In Progress from two places: the DevOps Center UI, or straight from the sandbox by committing components via the DX Inspector Bar.

Switching to In Progress automatically copies the main branch into a feature branch named after the Work Item. This lets developers or coding agents work with the latest files from production locally and commit directly to that isolated branch.

Work Item status stepper at 'In Progress', showing a new feature branch created from Main.
Action highlighted in blue: branch created from Main and Work Item changed to “In Progress”.
  • Top tip: If you’re working from the CLI or an IDE, checking out your own branch bypasses DevOps Center entirely, and you won’t be able to control the WI from there. Checking out a branch via an AI agent using the SF MCP, however, does create a DevOps Center-compatible feature branch, and the status updates to In Progress automatically.

Developers, admins, and agents can all commit to the same branch, effectively saving snapshots of their work as they go.

Repository diagram showing commits from several developer environments landing on the same Work Item branch.
Action highlighted in blue: commits to the same branch from multiple dev environments.

In Review

Once work is complete and all changes are committed to the WI branch, the item moves to “In Review” by clicking “Create Review” in the DX Inspector Bar, straight from the sandbox.

Moving to review creates a change request in the source control system – a merge or pull request – to merge the Work Item’s feature branch into the next environment’s branch (the next sandbox in the pipeline). This pull request can also be run directly from the source control system or from a coding agent via the SF MCP.

Repository diagram showing a pull request opened from the Work Item branch into the Integration branch.
Action highlighted in blue: pull request created to merge the branch into the next stage’s branch.

Once the change request is submitted, you can either merge it directly in the source control system (GitHub/Bitbucket), or mark the item “Ready to Promote.”

Merging directly in source control “half-promotes” the work: it moves the changes into the next environment’s branch, but only locally in the repository – the changes still need to be pushed to the actual org via “Complete Promotion.” This route lets you review and compare files before executing the merge.

Marking it “Ready to Promote” instead makes the WI visible in the DevOps Center pipeline, waiting for a declarative promotion via the UI. When you promote this way, the merge and the push to the target org both happen automatically.

Ready to Promote

This status only makes the item visible in the pipeline for a UI-driven promotion – nothing changes yet in the source control system. This step isn’t needed if the pull request is merged directly in the repository, or via an AI coding agent.

DevOps pipeline view showing one approved Work Item ready to promote across Integration, UAT/Staging and Production.
Work Item visible in pipeline for a UI promotion to the next stage.

Promoted

Once the pull request is approved and merged, the WI status becomes “Promoted.” Changes are merged into the next environment’s branch (e.g. Integration) and pushed from the source control system into the sandbox. 

This means that when resolving conflicts, manual changes must be made in the environment’s branch – not the Work Item’s branch – and redeployed to the org by promoting again.

Work Item status stepper at 'Promoted', showing the merged branch deployed into the Integration sandbox.
Action highlighted in blue: changes pushed from source control’s branch to the target Integration org.

No further changes are allowed on the Work Item once it’s been delivered to the next stage.

If the change request is merged manually, outside DevOps Center, DevOps Center picks this up and prompts a warning to complete promotion by pushing changes to the target org. 

A merge done via an agent through the SF MCP, on the other hand, automatically pushes to the target and completes promotion with no extra steps.

Pipeline view flagging an externally merged Work Item and an out-of-sync Integration stage needing promotion.
Warning message to deploy changes to the target org, when a pull request is merged outside DevOps Center. Source: Salesforce Help

Even when several changes land in the same stage, each Work Item is still tracked separately behind the scenes, enabling “Custom Promotions” that promote one item independently of the rest. 

Clicking “Prepare Work Item” creates a separate change request from that item’s rebased branch to the next environment’s branch (e.g., from the original PR “Integration → UAT,” it creates a new PR “WI-00001 → UAT”), letting you push individual change bundles.

Custom Promotion dialog listing a Work Item with its change request already created, ready to promote separately.
Work Item split from bundle to deploy individually using Custom Promotion. Source: Salesforce Help

Once promoted, a new pull request is created automatically between the current stage’s branch and the next (e.g., Integration to UAT), and this continues until the item reaches its final destination in the pipeline.

Work Item status stepper at 'Promoted', showing the merged branch deployed into the UAT sandbox.
Action highlighted in blue: changes pushed from source control’s branch to the target UAT org.

Closed

The final stage: changes are merged into the main branch, and all components have been deployed to production from the source control system.

Work Item status stepper at 'Closed', with the repository diagram showing changes merged and deployed to production.
Action highlighted in blue: changes deployed to production from source control’s branch.

Never (…Promoted)

Any Work Item can be changed to “Never” status if it’s being rescinded, leaving its branch unmerged.

Work Item path showing the dropdown menu with "Change Status to Never".
“Never Promoted” available from the WI dropdown menu.

Key Differences: Managed Package vs. Next Generation Core App

The differences are substantial – it feels like a complete reinvention, with a much simpler underlying data model. Here’s a rundown of what stood out most.

Seamless AI Integration

As mentioned earlier, you can manage every operation – pushing, merging, checking out branches, creating Work Items, even resolving conflicts – straight from an LLM like Claude Code, via the official Salesforce MCP.

Commit Straight from the Sandbox

With the DX Inspector Bar, changes can be committed to the branch directly from the working sandbox, instead of pulling and committing components inside DevOps Center, removing the friction of switching between environments.

DX Inspector Bar change management panel listing modified metadata files ready to commit from the sandbox.
DX Inspector Bar to commit changes from a sandbox. Source: Salesforce Help

See Metadata Dependencies

The managed package lacked visibility into dependent components, unlike Change Sets. In the Next Generation, the Relationship Viewer lists all related components.

  • Change Management panel highlighting the Relationship Viewer button for associated components.
  • Metadata Dependencies panel listing eleven components related to the Activity History custom object.

Deploy to Other Sandboxes

Instead of committing to the branch, you can now move components between environments, similar to Change Sets. In “Commit Options…”, select “Deploy Options…” to choose a target org and bypass the source control system entirely, useful when components need to move to a different isolated environment without a full backsync.

  • Deploy Options from the Commit Options dropdown menu in the DX Inspector Bar.
  • Deployment between orgs screen dialog.

Many changes require moving records alongside configuration (data and metadata). Previously, that meant exporting and importing manually. Not anymore. 

The Next Generation lets you move data at a granular level: selecting individual records, fields, and related records (parent, children, record types), while also surfacing their metadata dependencies, custom fields, validation rules, and workflows, so nothing gets missed.

  • Configure Deployment Data wizard showing fields, filter and record selection for the Price Book object.
  • Configure Deployment Data wizard showing parent, children and related metadata.

Unbundled, Flexible Releases With Custom Promotions

Previously, deciding whether to bundle a pipeline was a tough call you couldn’t easily reverse later. I ended up running two separate pipelines: a bundled one for big releases (so end users could read release notes ahead of a “big bang” date), and an unbundled one for hotfixes, so items could move quickly through the whole lifecycle in an emergency.

In the Core App, items are bundled by default, but they can be decoupled and deployed individually on the fly with a “Custom Promotion.” This creates a separate change request for the selected items and pushes only those changes forward, while the rest of the release stays put.

Custom Promotion screen for preparing and selecting individual Work Items to promote.
Custom Promotions from the stage’s dropdown menu. Source: Salesforce Help

Partial Back-Syncs

Now, we don’t have to bring all changes to a lower environment when performing a back-sync. “Back Sync Options” allows you to cherry-pick what work items we want to bring from the Source Control system into our Development environment, enabling a narrowed selection of the items we truly need when building a scoped solution. 

Back Sync Options Screen showing a list of work items to individually select what changes to sync.
Back Sync Options Screen.

Decoupling of Entities

In the managed package, Projects and Pipelines were tightly coupled. In the Core App, multiple Projects can share the same Pipeline, and these associations can be swapped at any time.

Although pipelines remain immutable after promoting Work Items through them, connections between environments and branches are interchangeable during planning and setup.

“Connect pipeline to projects” screen showing “Other Project” unselected on the left and two projects selected on the right (Project 1 and Project 2) as an example that multiple projects can be associated to a single pipeline.
Ability to select multiple projects per pipeline.

Flexible Environment Swap on Work Items

In the managed package, a Work Item was tightly coupled to its environment – once a sandbox was selected (or left unselected), that decision was permanent, short of cancelling the item as Never Promoted. 

Now, environments can be swapped or removed at any time. (This is typically used when changes are committed straight from an IDE, the CLI, or an LLM via the SF MCP, often built in a completely unrelated space, like a scratch org.)

A Streamlined Workflow

The workflow itself has improved dramatically – each step naturally leads to the next, with clear guidance on where to click, removing friction and making the whole process feel intuitive and seamless.

Work Item status stepper at 'New' with a "Mark as in Progress" button below.
Clear Work Item progress path.

Previously, it wasn’t always obvious what to do next. The only real visual guide was the pipeline’s Kanban board.

Linear workflow diagram from the legacy managed package, with no visual stepper showing current stage.
Visual representation of the managed package’s Work Item steps.

Now, the Work Item has a progress bar showing a clear path and current stage, making it easy for release managers to track where a WI stands. A link to the next step always appears – after committing changes, a “Create Review” link shows up to open a pull request – once that’s done, the link changes to take you to the source control system to merge.

  • DX Inspector Bar showing a Create Review link after committing, with the committed metadata files listed below.
  • "View Pipeline" prompt in the Progress Bar of the Work Item.

One Home for Every Role

Each persona can now handle their part of the lifecycle from their own space: admins push changes and create pull requests straight from the UI, developers work from their IDE or CLI, agents act via the SF MCP, and release managers oversee the pipeline view while running tests to enforce quality gates, enabling multiple streams of collaboration that keep delivery moving.

Multiple Actions, Simultaneously

You can now deploy and backsync at the same time.

Pipeline view showing a backsync and a deployment both in progress at the same time.
Backsync and deployment at the same time.

Track Your KPIs With DORA Metrics

DORA (DevOps Research and Assessment) metrics – lead time from initial commit to delivery, failed-deployment rate, and number of promotions – give you an overview of your project’s DevOps health.

DORA Metrics. Source: Salesforce Help

More Flexibility Across Multiple Streams

In the managed package, changes could already come from two sources: outside DevOps Center entirely (components built, deployed, and tested in an isolated environment like a scratch org, then committed straight to the branch, bypassing the UI), or through the app itself (built declaratively, committed from a non-technical perspective). 

The key difference in the Next Generation is full pipeline flexibility: stages, environments, and branches are now fully independent and interchangeable, with no rigid dependency between them.

Ability to swap branches and environments for each stage.

Quality Gates With Built-In Testing

The Core App now includes a Tests tab, where you can define Test Suites and choose Test Providers (Apex Test, Flow Test, Code Analyzer) to run pre-promotion or before a review is created, catching issues earlier in the pipeline.

Limitations and Considerations

The Repo Is the Source of Truth, Not the Org

Something to keep in mind: even with live, working components in your environment, if the repo differs from what’s in the org, you risk having those changes wiped out on the next promotion. 

The repo always overwrites what’s currently in the target org. This matters most when running hotfixes straight in production, bypassing source control. If that change isn’t committed back to the repo, the next promotion brings back the previous version of your app. 

Everything Starts from an Empty Repository

The source control system (GitHub or Bitbucket) builds up incrementally. It will be completely empty the first time you use DevOps Center, containing only the SFDX project folder structure. As you commit and merge into environment branches (including Main/Production), the repository fills up with those changes. 

Alternatively, you can run a full metadata retrieval (excluding packages) and push it into the repository up front to set a baseline that mirrors production.

If you’re migrating from the managed package to the Next Generation Core App, you can point to an existing repository instead of starting from scratch.

Backsync Isn’t Allowed While a Work Item Is in Progress

This is a deliberate safeguard, and it makes sense: backsync doesn’t offer conflict resolution – it simply overwrites whatever is currently in the lower environment with the pipeline’s version. 

If your environment falls out of sync with the pipeline because other items were promoted while your Work Item was still active, you can push your changes forward without backsyncing. Just make sure your components aren’t reintroducing an older version of something already further along the pipeline.

Every Salesforce Release Requires a Manual Update

Since the repo is the source of truth, the sfdx-project.json file needs a manual update to reflect the project’s latest API version. DevOps Center uses this value when moving components. Skip this, and components may end up deployed on an outdated API version, silently missing newer features. 

For example, the “check for existing records” toggle on the Flow Create Records element (introduced in Winter ’25 / API v62) simply disappears if your project version is lower, and the flow can produce unexpected results.

To fix it, create a branch and merge, or commit the change directly to the lowest relevant environment branch (e.g., Integration) in source control. The change will propagate from there.

GitHub view of the sfdx-project.json file with the sourceApiVersion field highlighted for manual updating.
Manually editing the SFDX version number in GitHub.

Flows Are Versioned on Every Deployment

Every time a flow deploys, it creates a new version on top of the latest one in the target org, without overwriting anything. A flow might end up with different version numbers across sandboxes due to individual testing in isolated environments, but regardless of its version number in the source org, it’s always added as the next version in the target org. 

This can get confusing when resolving conflicts between flows deployed from different environments. I personally note the production version number in the flow’s description as a lightweight version history.

Order Matters

Similar to the order of execution for DML operations, some components deploy in a strict, specific sequence behind the scenes (a custom object deploys before its fields, for instance), but the exact order isn’t publicly documented, and it can affect dependent deployments

For example: deploying a new record type and a permission set in the same transaction can fail, with the permission set erroring out because the record type “doesn’t exist”, even though it’s in the same bundle. 

The same applies to destructive changes: deleting a component that isn’t in the target org fails for the same reason (“component not found”). Outside DevOps Center, this is normally handled by running destructive changes after deploying the new component, via destructiveChangesPost.xml. A quick workaround is to manually create or push the component in the target org, outside DevOps Center.

Manual Deployments

Following on from the above: if a promotion or backsync fails due to missing components, a pragmatic fix is to deploy them manually into the target org. Ideally, though, those components should still be pushed to the repo (as the source of truth) so they propagate correctly. 

A small trick: make a trivial change (editing a description, or adding a comment to an Apex class), then commit it to a Work Item and promote. This flags the component as “changed,” so the latest version lands in the repo – otherwise it may not be recognized as newer than what’s in the target org, and gets skipped during backsync.

Migrating from Managed Package to Core App

Salesforce has recently announced a migration tool rolling out in Dev Preview, check out the official article with details of how to migrate.

New Pipeline setup form with optional connection to an existing repository or creating a new one.
Migrate from DevOps Center Package card.

Alternatively, you might want to consider pointing a new project/pipeline to the existing repository, but you’ll need to recreate any work-in-progress Work Items and re-commit their changes.

New Pipeline setup form with optional connection to an existing repository or creating a new one.
New pipeline with the option to select an existing repository.

Multi-Org Teams: Consider Package Development on Top

Organizations running multiple production orgs need a separate DevOps Center per org, and it’s recommended to keep one repository per project. A common challenge is distributing cross-organization components across those multiple production instances. 

A workaround is linking different projects/pipelines to the same repo, but this is strongly discouraged. Unlocked Packages are the better fit here: bundle the logic into a package and install it across orgs via an installation link. 

It’s worth reviewing the Enterprise Architecture Operating Model to understand which quadrant your organization falls into (Diversification, Replication, Coordination, or Unification) and pick a strategy accordingly.

Think Before Committing Data

As we’ve seen, DevOps Center allows you to move Data during deployments (records), and we already know Source Control is the sole source of truth. That means existing data in the Target Org will be overwritten with whatever comes from the Repository, in every deployment, forever!

Make sure to thoroughly think and evaluate what Data needs to be in the Source Control before committing. Using .forceignore with **/dataset/** doesn’t exclude those records.

This is highly relevant when Data is used as a configuration mechanism in the org (data as metadata), like NPSP’s Table-Driven Trigger Management, where records control what triggers are run when DML occurs (for reference, these records live in a Custom Object from the NPSP Managed Package, not in Custom Settings or CMDT. Then, a single trigger per object calls handler classes to control what happens and when during record changes).

What’s On the Roadmap?

There have already been plenty of changes since GA – testing tools were added recently, for example. Ahead, we’re hoping to see: creating Work Items straight from the sandbox when no open items are connected (already possible via the Salesforce MCP), automated updates to sfdx-project.json after each release, and eventually automatic deployments once testing passes at each pipeline stage.

To submit feedback, ideas, or issues, check out the product roadmap and the Next Generation Feedback Repo in GitHub.

Final Thoughts

DevOps Center is a powerful tool that controls Git operations in the cloud from a simple interface, combining core SFDX actions, testing, metadata, and data deployments into one place. With clicks instead of code, an underlying engine automates complex tasks, simplifying the ALM cycle into a user-friendly, intuitive flow.

With a simplified data model, built-in testing, a guided visual workflow, and native AI support, delivery genuinely becomes CI/CD in practice, accelerating lifecycles, shipping faster and more frequently, reducing error-prone deployments, and increasing reliability by baking industry best practices into the release cycle.

The Next Generation marks a major step forward: unifying capabilities from legacy tools like Change Sets, extending current functionality, and turning an organisation’s delivery process into a genuinely high-velocity one.

The Author

Jose  Carlos De Oliveira

Jose Carlos De Oliveira

Jose is a Salesforce Platform Manager at a global NGO and Independent Consultant. He is a certified DevOps Architect, mentor, speaker and open-source contributor.

Leave a Reply