You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2021/04/27 14:28:38 UTC

[incubator-hop] branch master updated: HOP-2521 salesforce transforms documentation

This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git


The following commit(s) were added to refs/heads/master by this push:
     new 5e16013  HOP-2521 salesforce transforms documentation
     new 21cda19  Merge pull request #770 from bamaer/HOP-2521
5e16013 is described below

commit 5e1601331c63bc217f5d73cf88dd6aa655b8eee1
Author: Bart Maertens <ba...@know.bi>
AuthorDate: Tue Apr 27 15:51:36 2021 +0200

    HOP-2521 salesforce transforms documentation
---
 docs/hop-user-manual/modules/ROOT/nav.adoc         |   5 +
 .../pipeline/transforms/salesforce-connection.adoc |  35 ++++++
 .../pipeline/transforms/salesforce-fields.adoc     |  38 ++++++
 .../pipeline/transforms/salesforce-settings.adoc   |  35 ++++++
 .../pipeline/transforms/salesforcedelete.adoc      |  47 +++++++
 .../pages/pipeline/transforms/salesforceinput.adoc | 137 +++++++++++++++++++++
 .../pipeline/transforms/salesforceinsert.adoc      |  47 +++++++
 .../pipeline/transforms/salesforceupdate.adoc      |  44 +++++++
 .../pipeline/transforms/salesforceupsert.adoc      |  52 ++++++++
 .../salesforcedelete/SalesforceDeleteMeta.java     |   2 +-
 .../salesforceinput/SalesforceInputMeta.java       |   2 +-
 .../salesforceinsert/SalesforceInsertMeta.java     |   2 +-
 .../salesforceupdate/SalesforceUpdateMeta.java     |   2 +-
 .../salesforceupsert/SalesforceUpsertMeta.java     |   2 +-
 14 files changed, 445 insertions(+), 5 deletions(-)

diff --git a/docs/hop-user-manual/modules/ROOT/nav.adoc b/docs/hop-user-manual/modules/ROOT/nav.adoc
index 391418b..ef45290 100644
--- a/docs/hop-user-manual/modules/ROOT/nav.adoc
+++ b/docs/hop-user-manual/modules/ROOT/nav.adoc
@@ -184,6 +184,11 @@ under the License.
 *** xref:pipeline/transforms/rowgenerator.adoc[Row Generator]
 *** xref:pipeline/transforms/rownormaliser.adoc[Row Normaliser]
 *** xref:pipeline/transforms/runssh.adoc[Run SSH commands]
+*** xref:pipeline/transforms/salesforcedelete.adoc[Salesforce Delete]
+*** xref:pipeline/transforms/salesforceinput.adoc[Salesforce Input]
+*** xref:pipeline/transforms/salesforceinsert.adoc[Salesforce Insert]
+*** xref:pipeline/transforms/salesforceupdate.adoc[Salesforce Update]
+*** xref:pipeline/transforms/salesforceupsert.adoc[Salesforce Upsert]
 *** xref:pipeline/transforms/sasinput.adoc[SAS Input]
 *** xref:pipeline/transforms/selectvalues.adoc[Select Values]
 *** xref:pipeline/transforms/setvalueconstant.adoc[Set field value to a constant]
diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-connection.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-connection.adoc
new file mode 100644
index 0000000..bb06827
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-connection.adoc
@@ -0,0 +1,35 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+
+
+=== Connection
+
+Enter the connection information in the following transform options:
+
+[option="header", width="90%"]
+|===
+|Option|Description
+|Salesforce Webservice URL a| Specify the URL to the Salesforce Webservice. +
+
+Default: https://login.salesforce.com/services/Soap/u/50.0
+
+|Username|Specify the username for authenticating to Salesforce
+|Password|Specify the password for authenticating to Salesforce. Enter your password followed by your security token. For example, if your password is PASSWORD and your security token is TOKEN, you would enter PASSWORDTOKEN in this field.
+|Test Connection|Click to verify the connection can be made to the Salesforce Webservice URL you specified.
+|===
\ No newline at end of file
diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-fields.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-fields.adoc
new file mode 100644
index 0000000..17f6618
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-fields.adoc
@@ -0,0 +1,38 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+
+=== Fields
+
+You can specify what fields to insert into your Salesforce database through the Fields table. Click Get fields to populate the table with input from the Hop data stream.
+
+The table contains the following columns:
+
+[options="header", width="90%"]
+|===
+|Option|Description
+|Module field|The name of the field within the Module
+|Stream field|The name of the field in the Hop data stream
+|Use External id? a|The flag indicating if the field links to an external ID. To resolve the ID, Salesforce needs the object type, column name, and relationship name in the following syntax: +
+
+[source, shell]
+Object name.column name/relationship
+
+|===
+
+Optionally, click Edit mapping to specify custom mapping. For example, you can map a single Hop field to multiple Salesforce fields.
diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-settings.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-settings.adoc
new file mode 100644
index 0000000..ed081a7
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforce-settings.adoc
@@ -0,0 +1,35 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+
+=== Settings
+
+Enter the insert process settings in the following transform options:
+
+[options="header", width="90%"]
+|===
+|Option|Description
+|Time out|Specify the timeout interval in milliseconds before the transform times out.
+|Use compression|Select to compress (.gzip) data when connecting between Hop and Salesforce.
+|Rollback all changes on|Revert changes unless all records are processed successfully. When you select this option, records without errors are inserted, while records with errors are marked as failed in the insertion results. The default behavior is to allow partial success of insertion.
+|Batch Size|Indicate the maximum number of records to collect before the insert is committed.
+|Module a| Select the module (table) in which you want to insert records. +
+
+NOTE: This list will be populated upon successfully authenticating to Salesforce using the Test Connection button.
+
+|===
\ No newline at end of file
diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforcedelete.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforcedelete.adoc
new file mode 100644
index 0000000..1b46b47
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforcedelete.adoc
@@ -0,0 +1,47 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+
+= Salesforce Delete
+
+The Salesforce Delete transform deletes records directly from your Salesforce database using the Salesforce Web Service. You can delete a batch of records by indicating a starting point (Fieldname id) and the amount of records (Batch Size) to delete.
+
+You can also use the following other transforms to modify your Salesforce database:
+
+* xref:pipeline/transforms/salesforceinput.adoc[Salesforce Input]: Reads records directly from your Salesforce database.
+* xref:pipeline/transforms/salesforceinsert.adoc[Salesforce Insert]: Inserts records directly into your Salesforce database.
+* xref:pipeline/transforms/salesforceupdate.adoc[Salesforce Update]: Updates records directly into your Salesforce database.
+* xref:pipeline/transforms/salesforceupsert.adoc[Salesforce Upsert]: Updates existing records and inserts new records into your Salesforce database.
+
+== General
+
+Enter the following information in the transform name field:
+
+* Transform name: Specifies the unique name of the Salesforce Delete transform on the canvas. You can customize the name or leave it as the default.
+
+include::salesforce-connection.adoc[]
+
+include::salesforce-settings.adoc[]
+
+[options="noheader", width="90%"]
+|===
+|Fieldname id a| Select the name of the field containing the Salesforce ID of the first record in the set of records (batch) you want to delete. +
+
+NOTE: This list is populated with field names received from the previous transform in a pipeline. For example, you can use the Salesforce Input transform to get field names.
+
+|===
diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinput.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinput.adoc
new file mode 100644
index 0000000..a2b4768
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinput.adoc
@@ -0,0 +1,137 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+
+= Salesforce Input
+
+The Salesforce Input transform reads data directly from Salesforce using the Salesforce Web Service.
+
+You can also use the following transforms for various ways to modify your Salesforce database:
+
+* xref:pipeline/transforms/salesforceinsert.adoc[Salesforce Insert]: Inserts records directly into your Salesforce database
+* xref:pipeline/transforms/salesforceupdate.adoc[Salesforce Update]: Updates records directly into your Salesforce database.
+* xref:pipeline/transforms/salesforceupsert.adoc[Salesforce Upsert]: Updates existing records and inserts new records into your Salesforce database.
+* xref:pipeline/transforms/salesforcedelete.adoc[Salesforce Delete]: Deletes records directly from your Salesforce database.
+
+== General
+
+Enter the following information in the transform name field:
+
+* Transform name: Specifies the unique name of the Salesforce Input transform on the canvas. You can customize the name or leave it as the default.
+
+== Options
+
+include::salesforce-connection.adoc[]
+
+== Settings
+
+In this panel, you can set the module to query from as well as the query conditions.
+
+[options="header", width="90%"]
+|===
+|Option|Description
+|Specify query|Select this check box to manually execute a query based on your own SOQL statements.
+|Module a| Select the module (table) from which you want to retrieve data. +
+
+NOTE: This list will be populated upon successfully authenticating to Salesforce using the Test Connection button.
+
+|Query Condition a| Enter any query filters you want to apply. Variables are allowed. For example, 'fieldname=myvalue AND fieldname2=myvalue2'. +
+
+NOTE: You do not need to include WHERE in your condition statement.
+
+|===
+
+== Content Tab
+
+The content tab allows you to optionally include additional descriptive fields in the result set.
+
+=== Advanced
+
+Use these options to further refine the data returned from the queries specified in the Settings tab. For example, you may want to only query deleted records within a specified date range. The Advanced panel includes the following fields:
+
+[options="header", width="90%"]
+|===
+|Option|Description
+|Retrieve|Select which records you want to retrieve to further define your pool of data. You can select All, Updated, or Deleted.
+|Query all records|Select the check box to query all the records you are retrieving. Clear the check box to use the date fields (below) to define a range of records to query.
+|Start date|Specify the starting date for retrieving the records in the date range. The format is 'yyyy-MM-dd HH:mm:ss'.
+|End date|Specify the end date for retrieving the records in the date range. The format is 'yyyy-MM-dd HH:mm:ss'.
+|===
+
+=== Additional Fields
+
+This panel includes the following fields:
+
+[options="header", width="90%"]
+|===
+|Option|Description
+|Include URL in output? & URL fieldname|Select this check box, then enter the URL used to retrieve the data.
+|Include Module in output? & Module fieldname|Select this check box, then enter the name of the module from which the data was retrieved.
+|Include SQL in output? & SQL fieldname|Select this check box, then enter the SQL used to generate the result set.
+|Include timestamp in output? & Timestamp fieldname|Select this check box, then enter the timestamp for when the record was retrieved.
+|Include Rownum in output? & Rownum fieldname| Select this check box, then enter the row number for each record retrieved.
+|Include deletion date in output? & Deletion date fieldname a| Select this check box, then enter the deletion date for when the record was removed. +
+
+NOTE: This set of fields is only enabled when the Advanced> Retrieve option is set to ‘Deleted’.
+
+|===
+
+
+=== Other fields
+
+Enter information for the remaining fields on the Content tab.
+
+[options="header", width="90%"]
+|===
+|Option|Description
+|Time out |Specify the timeout interval in milliseconds before the transform times out.
+|Use compression|Select to compress (.gzip) the data when connecting between Hop and Salesforce.
+|Limit a| Specify the maximum number of records to retrieve. +
+
+NOTE: When you set the limit to '0', there is no limit on the number of records that can be retrieved.
+
+|===
+
+
+== Fields tab
+
+The fields tab displays the fields that are read from the Salesforce module selected on the Settings tab. You will need to go to the Fields tab and press the Get Fields button to populate the fields returned before you can preview the rows returned.
+
+The following are the properties display in the Fields tab:
+
+[options="header", width="90%"]
+|===
+|Option|Description
+|Name|The name of the input field.
+|Field|The name of the field that contains the record.
+|IsIdLookup?|Specify if the field will be used as a fieldname ID (links to an External ID) when accessing the database to perform other calls, such as delete, insert, update, and upsert. Select ‘Y’(es) or ‘N’(o).
+|Type|The data type of the field.
+|Format|An optional mask for converting the format of the original field.
+|Length a| The length of the field depends on the following field types:
+
+* Number: Total number of significant figures in a number
+* String: Total length of string
+* Date: Length of printed output of the string (for example, four is a length for a year)
+
+|Precision|Number of floating point digits for number-type fields.
+|Currency |Symbol used to represent currencies ($5,000.00 or €5.000,00 for example).
+|Decimal|A decimal point can be a "." or "," (5,000.00 or 5.000,00 for example).
+|Group |A grouping can be a "," or "." (5,000.00 or 5.000,00 for example).
+|Trim type|The trimming method to apply to a string. Trimming only works when no field length is specified.
+|Repeat|If the corresponding value in this row is empty, repeat the one from the last time it was not empty. Select ‘Y’(es) or ‘N’(o).
+|===
\ No newline at end of file
diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinsert.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinsert.adoc
new file mode 100644
index 0000000..db45379
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinsert.adoc
@@ -0,0 +1,47 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+
+= Salesforce Insert
+
+The Salesforce Insert transform inserts records directly into your Salesforce database using the Salesforce Web Service.
+
+You can also use the following other transforms to modify your Salesforce database:
+
+* xref:pipeline/transforms/salesforceinput.adoc[Salesforce Input]: Reads records directly from your Salesforce database.
+* xref:pipeline/transforms/salesforceupdate.adoc[Salesforce Update]: Updates records directly into your Salesforce database.
+* xref:pipeline/transforms/salesforceupsert.adoc[Salesforce Upsert]: Updates existing records and inserts new records into your Salesforce database.
+* xref:pipeline/transforms/salesforcedelete.adoc[Salesforce Delete]: Deletes records directly from your Salesforce database.
+
+== General
+
+Enter the following information in the transform name field:
+
+* Transform name: Specifies the unique name of the Salesforce Insert transform on the canvas. You can customize the name or leave it as the default.
+
+include::salesforce-connection.adoc[]
+
+include::salesforce-settings.adoc[]
+
+=== Output Fields
+
+Enter the output information in the following transform option:
+
+* Salesforce ID fieldname: Specifies the field to contain the Salesforce ID of the first record in the set of records (batch) you inserted.
+
+include::salesforce-fields.adoc[]
\ No newline at end of file
diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupdate.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupdate.adoc
new file mode 100644
index 0000000..77cae6d
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupdate.adoc
@@ -0,0 +1,44 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+
+= Salesforce Update
+
+The Salesforce Update transform updates records directly in your Salesforce database using the Salesforce Web Service.
+
+You can also use the following other transforms to modify your Salesforce database:
+
+* xref:pipeline/transforms/salesforceinput.adoc[Salesforce Input]: Reads records directly from your Salesforce database.
+* xref:pipeline/transforms/salesforceinsert.adoc[Salesforce Insert]: Inserts records directly into your Salesforce database.
+* xref:pipeline/transforms/salesforceupsert.adoc[Salesforce Upsert]: Updates existing records and inserts new records into your Salesforce database.
+* xref:pipeline/transforms/salesforcedelete.adoc[Salesforce Delete]: Deletes records directly from your Salesforce database.
+
+== General
+
+Enter the following information in the transform name field:
+
+* Transform name: Specifies the unique name of the Salesforce Update transform on the canvas. You can customize the name or leave it as the default.
+
+include::salesforce-connection.adoc[]
+
+
+=== Settings
+
+include::salesforce-settings.adoc[]
+
+include::salesforce-fields.adoc[]
\ No newline at end of file
diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupsert.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupsert.adoc
new file mode 100644
index 0000000..43599c6
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupsert.adoc
@@ -0,0 +1,52 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+
+= Salesforce Upsert
+
+The Salesforce Upsert transform updates existing records and inserts new records into your Salesforce database using the Salesforce Web Service.
+
+You can also use the following other transforms to modify your Salesforce database:
+
+* xref:pipeline/transforms/salesforceinput.adoc[Salesforce Input]: Reads records directly from your Salesforce database.
+* xref:pipeline/transforms/salesforceinsert.adoc[Salesforce Insert]: Inserts records directly into your Salesforce database.
+* xref:pipeline/transforms/salesforceupdate.adoc[Salesforce Update]: Updates records directly into your Salesforce database.
+* xref:pipeline/transforms/salesforcedelete.adoc[Salesforce Delete]: Deletes records directly from your Salesforce database.
+
+== General
+
+Enter the following information in the transform name field:
+
+* Transform name: Specifies the unique name of the Salesforce Upsert transform on the canvas. You can customize the name or leave it as the default.
+
+include::salesforce-connection.adoc[]
+
+include::salesforce-settings.adoc[]
+
+[options="noheader", width="90%"]
+|===
+|Upsert Comparison Field|Specify the Salesforce ID of the field to use as a basis of comparison to determine if you are updating an existing record or inserting a new record.
+|===
+
+=== Output Fields
+
+Enter the output information in the following transform option:
+
+Salesforce ID fieldname: Specifies the field to contain the Salesforce ID of the first record in the set of records (batch) you updated and inserted.
+
+include::salesforce-fields.adoc[]
\ No newline at end of file
diff --git a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforcedelete/SalesforceDeleteMeta.java b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforcedelete/SalesforceDeleteMeta.java
index 220ce25..aaa08ca 100644
--- a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforcedelete/SalesforceDeleteMeta.java
+++ b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforcedelete/SalesforceDeleteMeta.java
@@ -43,7 +43,7 @@ import java.util.List;
   description = "i18n::SalesforceDelete.TypeTooltipDesc.SalesforceDelete",
   categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Output",
   image = "SFD.svg",
-  documentationUrl = "Products/Salesforce_Delete" )
+  documentationUrl = "https://hop.apache.org/manual/latest/pipeline/transforms/salesforcedelete.html" )
 public class SalesforceDeleteMeta extends SalesforceTransformMeta<SalesforceDelete, SalesforceDeleteData> {
   private static Class<?> PKG = SalesforceDeleteMeta.class; // For Translator
 
diff --git a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceinput/SalesforceInputMeta.java b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceinput/SalesforceInputMeta.java
index 597cb54..c716d64 100644
--- a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceinput/SalesforceInputMeta.java
+++ b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceinput/SalesforceInputMeta.java
@@ -53,7 +53,7 @@ import java.util.List;
   description = "i18n::SalesforceInput.TypeTooltipDesc.SalesforceInput",
   categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Input",
   image = "SFI.svg",
-  documentationUrl = "Products/Salesforce_Input" )
+  documentationUrl = "https://hop.apache.org/manual/latest/pipeline/transforms/salesforceinput.html" )
 @InjectionSupported( localizationPrefix = "SalesforceInputMeta.Injection.", groups = { "FIELDS" } )
 public class SalesforceInputMeta extends SalesforceTransformMeta<SalesforceInput, SalesforceInputData> {
   public static String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
diff --git a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceinsert/SalesforceInsertMeta.java b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceinsert/SalesforceInsertMeta.java
index edc1d01..594efe8 100644
--- a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceinsert/SalesforceInsertMeta.java
+++ b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceinsert/SalesforceInsertMeta.java
@@ -46,7 +46,7 @@ import java.util.List;
   description = "i18n::SalesforceInsert.TypeTooltipDesc.SalesforceInsert",
   categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Output",
   image = "FFO.svg",
-  documentationUrl = "Products/Salesforce_Insert" )
+  documentationUrl = "https://hop.apache.org/manual/latest/pipeline/transforms/salesforceinsert.html" )
 public class SalesforceInsertMeta extends SalesforceTransformMeta<SalesforceInsert, SalesforceInsertData> {
   private static Class<?> PKG = SalesforceInsertMeta.class; // For Translator
 
diff --git a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceupdate/SalesforceUpdateMeta.java b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceupdate/SalesforceUpdateMeta.java
index 3a8b7dd..0708709 100644
--- a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceupdate/SalesforceUpdateMeta.java
+++ b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceupdate/SalesforceUpdateMeta.java
@@ -43,7 +43,7 @@ import java.util.List;
     description = "i18n::SalesforceUpdate.TypeTooltipDesc.SalesforceUpdate",
     categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Output",
     image = "SFUD.svg",
-    documentationUrl = "Products/Salesforce_Update" )
+    documentationUrl = "https://hop.apache.org/manual/latest/pipeline/transforms/salesforceupdate.html" )
 public class SalesforceUpdateMeta extends SalesforceTransformMeta<SalesforceUpdate,SalesforceUpdateData> {
   private static Class<?> PKG = SalesforceUpdateMeta.class; // For Translator
 
diff --git a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceupsert/SalesforceUpsertMeta.java b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceupsert/SalesforceUpsertMeta.java
index f9d91b9..44bf51b 100644
--- a/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceupsert/SalesforceUpsertMeta.java
+++ b/plugins/transforms/salesforce/src/main/java/org/apache/hop/pipeline/transforms/salesforceupsert/SalesforceUpsertMeta.java
@@ -46,7 +46,7 @@ import java.util.List;
     description = "i18n::SalesforceUpsert.TypeTooltipDesc.SalesforceUpsert",
     categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Output",
     image = "SFU.svg",
-    documentationUrl = "Products/Salesforce_Upsert" )
+    documentationUrl = "https://hop.apache.org/manual/latest/pipeline/transforms/salesforceupsert.html" )
 public class SalesforceUpsertMeta extends SalesforceTransformMeta<SalesforceUpsert,SalesforceUpsertData> {
   private static Class<?> PKG = SalesforceUpsertMeta.class; // For Translator