<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<!--
      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.
    -->

<head>
    <meta charset="utf-8"/>
    <title>QuerySalesforceObject</title>
    <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
    <style>
h2 {margin-top: 4em}
h3 {margin-top: 3em}
td {text-align: left}
    </style>
</head>

<body>

<h1>QuerySalesforceObject</h1>

<h3>Description</h3>

<p>
    Objects in Salesforce are database tables, their rows are known as records, and their columns are called fields. The QuerySalesforceObject processor queries Salesforce objects and retrieves their records.
    The processor constructs the query using SOQL (Salesforce Object Query Language) and retrieves the result record dataset using the Salesforce REST API.
    The processor utilizes streams and NiFi record-based processing to be able to handle a large number of records and to allow arbitrary output format.
</p>

<h3>OAuth2 Access Token Provider Service</h3>

<p>
    The OAuth2 Access Token Provider Service handles Salesforce REST API authorization. In order to use OAuth2 authorization, create a new StandardOauth2AccessTokenProvider service and configure it as follows.
</p>

<ul>
    <li>Authorization Server URL: It is the concatenation of the Salesforce URL and the token request service URL (/services/oauth2/token).</li>
    <li>Grant Type: User Password.</li>
    <li>Username: The email address registered in the Salesforce account.</li>
    <li>Password: For the Password a Security token must be requested. Go to Profile -> Settings and under the Reset My Security Token option, request one, which will be sent to the registered email address.
        The password is made up of the Salesforce account password and the Security token concatenated together without a space.</li>
    <li>Client ID: Create a new Connected App within Salesforce. Go to Setup -> On the left search panel find App Manager -> Create New Connected App. Once it’s done, the Consumer Key goes to the Client ID property.</li>
    <li>Client Secret: Available on the Connected App page under Consumer Secret.</li>
</ul>

<h3>Age properties</h3>

<p>
    The age properties are important to avoid processing duplicate records. Age filtering provides a sliding window that starts with the processor’s prior run time and ends with the current run time minus the age delay.
    Only records that are within the sliding window are queried and processed. On the processor, the Age Field property must be a datetime field of the queried object, this will be subject to the condition that it is greater
    than the processor's previous but less than the current run time (e.g. LastModifiedDate). The first run, for example, will query records whose LastModifiedDate field is earlier than the current run time. The second will
    look for records with LastModifiedDate fields that are later than the previous run time but earlier than the current run time.
</p>

<p>
    The processor uses the Initial Age Filter as a specific timestamp that sets the beginning of the sliding window from which processing builds the initial query. The format must adhere to
    the Salesforce SOQL standards (see Salesforce documentation). The Age Delay moves the time of the records to be processed earlier than the current run time if necessary.
</p>

</body>
</html>