> ## Documentation Index
> Fetch the complete documentation index at: https://support.entegrata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reviewing Changes with Merge

> Walk through every difference between two pipelines and approve changes one at a time before committing

## Overview

Choosing **Merge (review changes)** and clicking **Review changes** opens a step-by-step wizard that walks you through every difference between the source and target pipelines. You decide what comes across, and **nothing is applied until you commit**.

The wizard only shows entities that **actually differ**. Entities that are already identical on both sides are skipped entirely, so you're never clicking through dozens of no-op tables. If the two pipelines match completely, the wizard tells you there's nothing to sync.

<Info>
  Merge is the only strategy that lets you mix decisions in a single pass — bring two fields across, leave a third, and remove a fourth.
</Info>

## The Top Bar

On the left, your position in the review:

* **`{n}` of `{total}`**, followed by the entity's name.
* A one-line summary of what differs — either a count such as `3 traits, 1 join`, or `only in source` / `only in target` for an entity that exists on just one side.
* If the entity depends on other entities, those are listed as **depends on** chips.

On the right, your controls, in order:

<ResponseField name="Jump to entity" type="dropdown">
  A searchable dropdown of every differing entity, so you don't have to page through in order. The filter box reads **Filter entities…**
</ResponseField>

<ResponseField name="{reviewed} / {total} reviewed" type="progress">
  How many entities you've looked at so far.
</ResponseField>

<ResponseField name="‹ and Next ›" type="navigation">
  Move between entities.
</ResponseField>

<ResponseField name="Commit all ({n})" type="button">
  Apply your decisions across all remaining entities at once.
</ResponseField>

<ResponseField name="Commit entity" type="button">
  Apply just the entity you're looking at. Once committed, this becomes a green **Committed** chip.
</ResponseField>

## Making Decisions on an Entity

Each entity has two views, toggled at the top:

* **Summary** — a readable overview of what differs.
* **Interactive** — the decision surface.

In **Interactive**, every difference is a row tagged **Add**, **Update**, **Remove**, or **Unchanged**, grouped by the part of the entity it belongs to — the entity itself, or one of its maps. Toggle each row on to apply it, or off to leave the target as-is.

### Shortcuts

* **Apply all** / **Ignore all** at the top affect every row on the entity. Each group also has its own pair.
* **Reset** appears once you've excluded something, and puts everything back to the default.
* The footer keeps a running count: `{n} add · {n} update · {n} remove · {n} ignore`.

### Entities That Exist on Only One Side

When an entity exists on only one side, you get a single card instead of a row list:

* **Ignore / Add** toggles for an entity that only the source has.
* **Keep / Remove** toggles for an entity that only the target has.

Removing an entity archives it in the target, so that option is flagged in red.

<Note>
  Some entity settings are shown but not selectable, under the note *"Entity settings differ but aren't part of a merge."* Edit those on the entity directly — see [Managing Entities](/data/pipeline/managing-entities).
</Note>

## Committing One Entity at a Time

**Commit entity** applies just the entity you're looking at, and leaves the rest for later. The confirmation dialog states the scope plainly:

> "This applies your decisions for Person into Main — just this one entity. The rest of the pipeline is left for later."

The **Reason for Sync** field is pre-filled with `Merged from {source}` and you can edit it. There's also a **Publish `{target}` after committing** checkbox — see [Publishing After a Sync](/data/pipeline/sync-overview#publishing-after-a-sync).

After it commits, you get a confirmation, the entity gets a green **Committed** chip, and the wizard moves on.

<Tip>
  **Commit Entity by Entity for Large Syncs**

  Committing incrementally lets you stop, verify, and resume. It also means a failure affects one entity instead of interrupting a batch partway through.
</Tip>

## Committing Everything at Once

**Commit all (`{n}`)** applies your decisions across all remaining entities. The dialog summarizes exactly what's about to happen:

* `{n}` changed entities merged
* `{n}` added
* `{n}` removed from target
* `{n}` add/remove ignored

If any entity is going to be archived from the target, a red callout says so explicitly and calls it destructive.

<Warning>
  **Entities you never opened are committed with all their changes accepted.** If you want an entity left alone, open it and use **Ignore all** — don't just skip past it.
</Warning>

While it runs you'll see `Committing {done} of {total}…` and a note asking you not to navigate away. When it's done you'll see **Merge complete**, with a tally of committed, skipped, and failed entities, and any failures listed with a reason. **Done** takes you to the target pipeline.

<Note>
  A batch commit is a per-entity loop, not a single transaction. If one entity fails partway through, the entities committed before it stay applied. The result screen tells you exactly which succeeded and which didn't — re-open the wizard and retry the failures.
</Note>

## Troubleshooting

### Nothing to Sync

**Problem:** The wizard opens and reports that there's nothing to sync.

**Solution:** The two pipelines are already identical. There's nothing to review or commit.

### A Commit Was Rejected

**Problem:** Committing fails with a message about a stale diff, or a batch failure reads *"diff went stale — re-open the wizard and retry."*

**Solution:** Someone edited the target after you opened the wizard, so the commit was rejected rather than applied to something you didn't review. Click **Re-fetch diff**, review the affected entity again, and commit.

### Some Entities Failed in a Batch Commit

**Problem:** **Merge complete** lists failures alongside successful commits.

**Solution:**

* The entities that succeeded are applied and don't need redoing.
* Re-open the wizard, which will now show only the remaining differences, and retry the failures.
* If the same entity fails repeatedly, check the reason listed and contact support if it isn't actionable.

### Removals Didn't Apply

**Problem:** You expected fields to be deleted from the target and they're still there.

**Solution:** Check that each removal row was toggled on before you committed. If the target should match the source exactly, use Overwrite instead.

## Related Topics

<CardGroup cols={2}>
  <Card title="Sync Strategies" icon="code-branch" href="/data/pipeline/sync-strategies">
    When Merge is the right choice
  </Card>

  <Card title="Syncing Pipelines" icon="arrow-right-arrow-left" href="/data/pipeline/syncing-pipelines">
    Getting to the Merge wizard
  </Card>

  <Card title="Comparing Pipelines" icon="code-compare" href="/data/pipeline/comparing-pipelines">
    The same walkthrough, read-only
  </Card>

  <Card title="Managing Entities" icon="table" href="/data/pipeline/managing-entities">
    Edit entity settings that aren't part of a merge
  </Card>
</CardGroup>
