Publish / saas · All operations

Update or upsert records in an application

A variant of Write to an application's API

Change the application's existing records matched by key, or create them where none match.

Status

In arcform

Not built yet

arcform does not do this yet. Its place on the roadmap

What other tools call it

Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).

Apache Hop (2)
Bruin (3)
  • mergeread 2026-09-27

    Upsert: update the matching remote record or create it

  • replaceread 2026-09-27

    Mirror: upsert every source row, then remove remote records absent from the source

  • updateread 2026-09-27

    Update matching remote records only; unmatched rows are rejected

EasyMorph (4)
Pentaho Data Integration (3)
RapidMiner Studio (1)

Background

In Bruin, the merge strategy is an upsert: it updates the matching record in the target application, or creates it if there is none.[1] Bruin's update strategy changes matching records only, and a row with no match is rejected, never created.[1] Apache Hop's Salesforce Upsert transform updates existing records and inserts new records in Salesforce through the Salesforce Web Service.[2]

When to use it

Choose update when a missing record is a mistake you want to hear about, and upsert when it is a record the application should now have. (Meridian's view) In EasyMorph's Salesforce action, Update mode fails a record that does not already exist, while Upsert mode creates it.[3]

In Bruin, a NULL in the source is written through by default, clearing the field in the application.[1] In Bruin, setting write_nulls to false omits a NULL cell and leaves the value already stored untouched.[1] EasyMorph's Airtable update can either keep the values of a row that are not updated or blank them out.[4] In RapidMiner's Update Salesforce operator, attributes that are not selected for update are ignored.[5] Decide before the first run whether an empty value in your result means clear the field or leave it alone. (Meridian's view)

RapidMiner's Update Salesforce operator always treats datetime fields as Coordinated Universal Time (UTC).[5] EasyMorph's Airtable update has a setting that prevents Airtable from typecasting text values automatically.[4]

The method

In Apache Hop's Salesforce Upsert transform, the Upsert Comparison Field determines whether a row updates an existing record or inserts a new one.[2] Apache Hop's Salesforce Update and Upsert transforms can flag a field as linking to an external ID, which Salesforce resolves from the object type, column name and relationship name.[6][2] In Bruin, the remote field to match on is set on the destination_table parameter, such as Contact?external_id=Email on Salesforce.[1] RapidMiner's Update Salesforce operator needs an ID column in its input, and each input row updates one record identified by that ID.[5] An upsert keyed on a field the application keeps unique is the safest write to repeat after a failed run. (Meridian's view)

Compared with the alternatives

In Structured Query Language (SQL), the MERGE statement, also called upsert, inserts new records or updates or deletes existing ones depending on whether a condition matches.[7] The MERGE statement was officially introduced in the SQL:2003 standard.[7] Some database implementations use the term upsert for a statement that inserts a record if it does not exist or, if it already exists, updates the existing record.[7]