

# What is the AWS Partner CRM connector for Salesforce?
<a name="aws-partner-crm-connector"></a>

The topics in this section explain how to install and use the AWS Partner CRM connector, a no-code solution for integrating Salesforce with AWS Partner Central and AWS Marketplace. 

**Topics**
+ [CRM connector overview](connector-overview.md)
+ [Available features](crm-connector-feature-list.md)
+ [Installing the connector](install-connector.md)
+ [Upgrading the connector to the latest version](upgrading-from-previous-versions.md)
+ [Setting up real-time notifications for AWS Partner Central and AWS Marketplace events](set-up-real-time-notifications.md)
+ [Mapping ACE objects](crm-connector-mapping.md)
+ [Configuring the CRM connector](configure-crm-connector.md)
+ [Using the CRM connector in Salesforce](using-the-connector.md)
+ [Using an earlier CRM with Amazon S3 integration](custom-integration-using-amazon-s3.md)
+ [Getting help](getting-help.md)
+ [AWS Partner CRM connector FAQ](crm-connector-faq.md)
+ [Release notes](crm-connector-release-notes.md)

# CRM connector overview
<a name="connector-overview"></a>

The AWS Partner CRM connector enables you to integrate your Salesforce organization with AWS Partner Central and AWS Marketplace. Integration enables you to complete AWS Partner Central and AWS Marketplace tasks in Salesforce, such as two-way synching of ACE opportunities and attaching offers to opportunities. 

The CRM connector is available at no charge, and it requires no coding. 

The following topics explain the concepts and processes for using the connector.

**Topics**
+ [Connector benefits](#connector-benefits)
+ [Intended users](#connector-audience)
+ [Installation and usage overview](#connector-process)

## Connector benefits
<a name="connector-benefits"></a>

The AWS Partner CRM connector provides the following benefits:
+ **AWS Partner Central integration** – Streamlined opportunity management. You can use Salesforce to send and receive opportunities from AWS Sales, and from other partners. The connector also enables you to send leads to AWS. 
**Note**  
Partners who receive leads from AWS continue to use their Amazon S3 integrations. For more information, refer to:  
[Configuring the connector for a CRM with Amazon S3 integration](s3-config.md) later in this section.
[Using an earlier CRM with Amazon S3 integration](custom-integration-using-amazon-s3.md) later in this guide.
+ **AWS Marketplace integration** – Use Salesforce to manage private offers, resale authorizations, and complete other AWS Marketplace tasks.

## Intended users
<a name="connector-audience"></a>

The CRM connector is intended for use by the following groups:
+ Partners looking to streamline the coselling process.
+ Independent software vendors (ISVs) selling products on AWS Marketplace.
+ AWS Consulting Partners who manage client engagements and opportunities.

## Installation and usage overview
<a name="connector-process"></a>

The process of installing and using the AWS Partner CRM connector follows these broad steps:

1. Complete the [Integration prerequisites](crm-integration-setting-up.md).

1. Install the connector from the Salesforce AppExchange. Refer to [Installing the connector](install-connector.md), later in this section, for the installation steps.

1. Configure the connector to exchange data with AWS Partner Central, AWS Marketplace, and earlier Amazon S3 integrations. The topics in [Configuring the CRM connector](configure-crm-connector.md) explain how to configure the connector for each type of integration.

# Available features
<a name="crm-connector-feature-list"></a>

The following topics describe the features provided by the AWS Partner CRM connector. The features support AWS Partner (APN) customer engagements, manage opportunities and leads, and integrate Salesforce with AWS Marketplace. You can enable any combination of the features as needed to meet your business needs and AWS engagement models.

**Topics**
+ [Partner Central API features](#partner-central-api-features)
+ [CRM with Amazon S3 features](#apn-customer-engagements)
+ [AWS Marketplace features](#feature-list-aws-marketplace)

## Partner Central API features
<a name="partner-central-api-features"></a>

The AWS Partner Central API provides the following features:
+ A set of buttons that partners can use to help speed their operations:
  + **Share with AWS** – Create and update an opportunity.
  + **Approval Status** – Accept or reject AWS referred opportunities. 
  + **Associate or Disassociate** – Associate or disassociate an opportunity with Partner Solutions, AWS products, and AWS Marketplace offers throughout the opportunity lifecycle. 
  + **Assign** – Reassign an opportunity to another user in your Partner Central account. 
+  In the connector, partners can use the **Solution offering** tab to view a list of available solutions. 
+  Partners can use the **AWS Marketplace notifications** tab to view the events generated by Amazon EventBridge. Events include *Opportunity Created*, *Opportunity Updated*, Engagement Invitation* Accepted*, and Engagement Invitation *Rejected*. 

**Note**  
To start using the AWS Partner Central API, refer to the [AWS Partner Central API Reference](https://docs.aws.amazon.com/partner-central/latest/crm/aws-partner-crm-integration.html).
To migrate from an earlier CRM with Amazon S3 integration to the AWS Partner Central API, refer to [Upgrading from a CRM with Amazon S3 integration to the Partner Central API](upgrade-crm-api.md) before proceeding.

Integrating the CRM connector with the AWS Partner Central API does the following:
+ Enables near real-time, two-way synching of ACE Opportunity records. 
+ Replaces the Amazon S3-based CRM integration. AWS supports the earlier integrations, but stopped accepting new integrations in 2024.
+ Partners who receive ACE leads from AWS continue to use their Amazon S3-based integrations.

After you install the AWS Partner CRM connector, you configure it for use with an AWS Partner Central API integration. For more information about configuring, refer to [Configuring the connector for a Partner Central API integration](p-c-api-integration.md) later in this section.

For information about creating a custom AWS Partner Central API integration, refer to the [AWS Partner Central API Reference](https://docs.aws.amazon.com/partner-central/latest/APIReference/aws-partner-central-api-reference-guide.html). 

## CRM with Amazon S3 features
<a name="apn-customer-engagements"></a>

The CRM connector provides the following features when you configure it for an earlier CRM with Amazon S3 integration. 
+ **AWS-originated opportunities** – In Salesforce, you can exchange coselling opportunities with AWS Sales. You receive opportunities when AWS Sales identifies a customer that could benefit from your solution.
+ **Partner-originated opportunities** – In Salesforce, you can exchange coselling opportunities with other partners. You can create opportunities and link them to relevant AWS services. That can help streamline collaboration efforts.
+ **AWS lead referrals** – This lets you receive leads from AWS that might be a good fit for your offerings. These leads can be potential customers who express an interest in your solutions.
+ **Dashboard** – A centralized overview in Salesforce of your coselling activities. Depending on how you configure the connector, this can include opportunities and leads. 

  For more information about configuring the CRM connector, refer to [Configuring the CRM connector](configure-crm-connector.md) later in this guide.

## AWS Marketplace features
<a name="feature-list-aws-marketplace"></a>

**Multiple AWS Marketplace seller accounts** – In Salesforce, you can manage private offers, resale authorizations, and other functions for your AWS Marketplace seller accounts . 

**Supported AWS Marketplace product types** – The connector supports the following product types:
+ SaaS 
+ AMI 
+ Containers 

 **Dashboards** – A consolidated overview in Salesforce of your private offers. 

### Independent software vendor (ISV) features
<a name="isv-features"></a>

The CRM connector provides the following features for ISVs.

**General features**
+ In Salesforce, view your AWS Marketplace product listings, and manage product portfolios and coselling activities. 
+ In Salesforce, create and manage private offers for your listed AWS Marketplace products. Create flexible payment schedules for all supported private offers. For SaaS and contract offerings, create future dated agreements.
+ Speed the process of adopting the connector by importing private offers.

**Private offer management features**
+ **Create/publish** – Use Salesforce to publish private offers.
+ **Draft** – Save private offers as drafts before publishing them.
+ **Modify** – Change a private offer's expiration date.
+ **Cancel** – Remove published private offers.
+ **Clone** – Create a copy of a private offer as a starting point for a new offer.

**Agreement management features**
+  **View** – Access AWS Marketplace agreements in Salesforce. 
+  **Import** – Import agreements from AWS Marketplace into the connector. 

**Features for agreement-based offers**
+ **Agreement-based offers** – Use agreements to create targeted customer offers. This helps simplify the quoting and purchasing process.

**Resale authorization features**
+ **Create/publish** – Create resale authorizations and enable AWS Marketplace channel partners to resell your products.
+ **Draft** – Save resale authorization requests for review before submitting them.
+ **Deactivate** – Use the connector to deactivate resale authorizations that you no longer need.
+ **Clone** – Clone a resale authorizations to speed the creation of a new resale authorization.

**Channel Partner features**

If you enrolled as AWS Marketplace Channel Partner, you can use shared resale authorizations to simplify the process of reselling products to your channel partners. The connector lets you do the following:
+ View shared resale authorizations in Salesforce.
+ Use the same management functions as private offers: **Create/publish**, **Modify**, **Cancel**, and **Clone**.

# Installing the connector
<a name="install-connector"></a>

The following sets of steps explain how to install and uninstall the AWS Partner Customer Relationship Management (CRM) connector. 

**Topics**
+ [Installing the connector](#first-install)
+ [Confirming the installation](#confirm-the-installation)
+ [Uninstalling the connector](#uninstall-connector)
+ [Understanding Salesforce governor limits](#connector-limits)

## Installing the connector
<a name="first-install"></a>

The following steps explain how to install the CRM connector in a Salesforce organization. Follow these steps to install the connector for the first time, and to install new versions of the connector.

**Note**  
To complete these steps, you must have the following:  
An Enterprise, Professional, or Unlimited edition of Salesforce.
Administrative access to your Salesforce organization.

**To install a new version**

1. Navigate to **AppExchange** and search for **AWS Partner CRM Connector**.

   —OR—

   Go to [ https://appexchange.salesforce.com/appxListingDetail?listingId=a0N4V00000IYf0nUAD](https://appexchange.salesforce.com/appxListingDetail?listingId=a0N4V00000IYf0nUAD).

1. Choose **Get it now**.

1. On the **Where do you want to install this package** page, choose **Install in sandbox**.

1. On the **Confirmation Installation Details** page, select the **I have read the terms and conditions** checkbox, then choose **Confirm and Install**.

1. Sign in to Salesforce.
**Note**  
Make sure you sign in to the correct domain. As needed, choose **Use Custom Domain** and enter the correct domain name.

1. Choose the **Install for Administrators Only** option, then choose **Install**.

1. Choose the **Yes, grant access to these third-party web sites** checkbox, then choose **Continue**.

## Confirming the installation
<a name="confirm-the-installation"></a>

To confirm package installation, choose **Home**, **Apps**, **Packaging**, **Installed Packages**.

If the new version of the connector doesn't appear on the list of installed packages, follow the steps in [Getting help](getting-help.md) to contact support.

**Note**  
After you confirm the installation, complete the steps listed in [Upgrading the connector to the latest version](upgrading-from-previous-versions.md) to install the latest features.

## Uninstalling the connector
<a name="uninstall-connector"></a>

Before uninstalling the AWS Partner Customer Relationship Management (CRM) connector, remove any user [ACE integration permission sets](crm-connector-pemissions-sets.md) and [AWS Marketplace integration permission sets](mkt-permissions-sets.md).

**To uninstall the connector**

1. In Salesforce, choose **Home**, **Apps**, **Packaging**, **Installed Packages**.

1. Choose **Uninstall**.

## Understanding Salesforce governor limits
<a name="connector-limits"></a>

When implementing the AWS Partner CRM Connector, be aware of Salesforce governor limits, particularly regarding SOQL query consumption. These limits can significantly impact your custom business logic and overall system performance. We recommend reviewing Salesforce's official documentation on governor limits and best practices for query optimization. For detailed guidance, refer to the following Salesforce resources:
+ [Salesforce governor lImits overview](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm) in the *Apex Developer Guide*
+ [Best Practices for SQLS and SOSL](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm?q=SOSL+SOQL+best+practices+limits)

# Upgrading the connector to the latest version
<a name="upgrading-from-previous-versions"></a>

The following topics explain how to upgrade the AWS Partner CRM connector to latest version. Upgrading involves adding buttons, sync log details, and mapping values to your opportunity records.

**Note**  
For information about upgrading an Amazon S3 integration, refer to [Upgrading from a CRM with Amazon S3 integration to the Partner Central API](upgrade-crm-api.md) later in this guide.

**Topics**
+ [Adding the Import Resale Authorization button](#add-resale-authorization)
+ [Adding the Import Offer button](#import-offer-btn)
+ [Adding the Import Agreement button](#import-agreements-btn)
+ [Adding sync log details to the ACE opportunity Record page](#add-sync-log-details-ace)
+ [Adding mapping values to the Closed Lost Reason label](#map-closed-lost)

## Adding the Import Resale Authorization button
<a name="add-resale-authorization"></a>

The following steps explain how to add the **Import Resale Authorization** button to the **Resale authorization** section of an opportunity. The button enables you to import resale authorizations from AWS Marketplace.

**To add the button**

1. Sign in to your Salesforce organization as a system administrator.

1. Choose **Setup, Object Manager**, then choose **Resale authorization**.

1.  In the left navigation pane, choose **List View Button Layout**.

1. Choose **Edit** to open the list view editor.

1. In the **Custom Buttons** section, in the **Available Buttons** column, choose **Import Resale Authorization**.

1. Choose the right-arrow button to add **Import Resale Authorization** to the **Selected Buttons** list.

1. Choose **Save**.

After upgrading to version 2.2 or later, do the following:
+ To ensure that your product information is current, refresh your products on the **Refresh Products** tab.
+ Follow the procedures in this section to complete the transition to version 2.2.

## Adding the Import Offer button
<a name="import-offer-btn"></a>

The following steps explain how to add the **Import Offer** button. 

**To add the button**

1. Sign in to your Salesforce organization as a system administrator.

1. Choose **Setup, Object Manager**.

1. Choose **Private Offer**.

1. In the left navigation pane, choose **List View Button Layout**, then choose **Edit** to open the list view editor.

1. In the **Custom Buttons** section, in the **Available Buttons** column, choose **Import Offer**.

1. Choose the right-arrow button to add **Import Offer** to the **Selected Buttons** list.

1. Choose **Save**.

## Adding the Import Agreement button
<a name="import-agreements-btn"></a>

The following steps explain how to add the **Import Agreement** button to the **Agreements** section of an opportunity record. 

**To add the button**

1. Sign in to your Salesforce organization as a system administrator, choose **Setup**, then **Object Manager**.

1. Choose **Agreement**, and in the **Details** section, choose **Edit**.

1. Choose **Allow Search**.

1. Choose **Save**.

1. In the left navigation pane, choose **List View Button Layout**.

1. In the **Custom Buttons** section, in the **Available Buttons** column, choose **Import Agreement**, then choose the right-arrow button to add **Import Agreement** to the **Selected Buttons** list.

1. Choose **Save**.

## Adding sync log details to the ACE opportunity Record page
<a name="add-sync-log-details-ace"></a>

The following steps explain how to add sync log details to an ACE Opportunity Record page. 

**To add the log details**

1. Sign in to your Salesforce organization as a system administrator.

1. Choose **Setup, Object Manager**.

1. Choose **ACE Opportunity**.

1. In the left navigation pane, choose **ACE Opportunity Layout**.

1. Choose **Related Lists**.

1. Choose and move **Sync Log Details** to the **Related Lists** section of the page layout.

1. Choose **Save**.

1. Customize related lists for **Sync Log Details** and add **Created Date**, **Error Messages**, and **Status** fields to **Related Lists**. For more information, refer to [Customize Related Lists](https://help.salesforce.com/s/articleView?id=sf.customizing_related_lists.htm) in the Salesforce help.

1. Choose **Save**.

**Note**  
Version 2.2 of the CRM connector features a path for AWS-delivered ACE opportunities. For information about viewing that path, refer to [Enable Paths](https://help.salesforce.com/s/articleView?id=sf.emergency_response_create_paths.htm) in the Salesforce help.

## Adding mapping values to the Closed Lost Reason label
<a name="map-closed-lost"></a>

The following steps explain how to add automatic field mapping values to the **Closed Lost Reason** label of ACE opportunity objects.

**To add the mapping values**

1. Sign in to your Salesforce organization as a system administrator.

1. Choose the **ACE Mappings** tab.

1. In the navigation bar, choose **Opportunity**.

1. In the **Object Selector**, choose **ACE Opportunity**.

1. For the **Closed Lost Reason** label, choose **Edit Values**.

1. Choose **Auto Map**.

1. Choose **Next**.

1. Choose **Save**.

# Setting up real-time notifications for AWS Partner Central and AWS Marketplace events
<a name="set-up-real-time-notifications"></a>

The following topics explain how to set up real-time EventBridge notifications for AWS Partner Central and AWS Marketplace events. You can set up notifications in Salesforce by configuring a connected app, or you can use AWS CloudFormation templates.

**Topics**
+ [Configuring a Salesforce connected app](#configuring-salesforce-connected-app)
+ [Using an AWS CloudFormation stack to set up notifications](#configuring-aws-components)

## Configuring a Salesforce connected app
<a name="configuring-salesforce-connected-app"></a>

The following steps explain how to configure a connected app in Salesforce. You must create a connected app in order to use OAuth authentication for destination connections. For more information, refer to [Creating notification components manually](#manual-creation-of-aws-components), later in this guide.

1. Sign in to your Salesforce organization as a system administrator.

1. From **Setup**, in the **Quick Find** box, enter **apps**, then select **App Manager**. 

1. On the **Lightning Experience App Manager** page, choose **New Connected App**, choose **Create a Connected App**, then choose **Continue**.

   The **New Connected App** page appears.

1. Do the following:

   1. In the **Connected App Name** box, enter a name for the app. 

   1. In the **Contact Email** box, enter your email address.

   1. (Optional) Complete the remaining fields as described in [Configure Basic Connected App Settings](https://help.salesforce.com/s/articleView?id=sf.connected_app_create_basics.htm), in the Salesforce documentation. 

1. Select the **Enable OAuth Settings** checkbox, then do the following: 

   1. Select the **Enable for Device Flow** checkbox. You can ignore the resulting callback URL.

   1. Under **Available OAuth Scopes**, select **Manage user data via APIs** and use the **Add** button to move the scope to the list of selected scopes. 

   1. Select the following checkboxes:
      + **Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows**
      + **Require Secret for Web Server Flow**
      + **Require Secret for Refresh Token Flow**
      + **Enable Client Credentials Flow**

   1. On the message that appears after you select **Enable Client Credentials Flow**, choose **OK**.

   1. Scroll to the bottom of the page and choose **Save**.

1. Choose **Continue**, then choose **Manage Consumer Details**.

   The **Verify Your Identity** page appears, and the system sends a verification code to your contact email address.

1.  Enter the verification code in the **Verification Code** box and choose **Verify**.

   The page for your connected app appears.

1. Under **Consumer Details**, choose the **Copy** buttons for the consumer key and customer secret.

1. From **Setup**, in the **Quick Find** box, enter **Apps**, select **Manage Connected Apps**, then choose the connected app you just created. 

1. Choose **Edit Policies**, then do the following: 

   1. From the **Permitted Users** list, choose **All users may self authorize**.

   1. From the **IP Relaxation** list, choose **Enforce IP restrictions**.

   1. From the **Run As** list, select the *execution user*, the user to whom you assign the client credential flow. Salesforce requires the execution user to return access tokens on behalf of the user.

   1. Choose **Save**.

## Using an AWS CloudFormation stack to set up notifications
<a name="configuring-aws-components"></a>

The following topics explain now to use AWS CloudFormation templates to set up real-time EventBridge notifications. The steps only apply to version 3.0 and later of the AWS Partner CRM connector. 

For AWS Partner CRM connector version 3.0 and later, you can use an CloudFormation template to configure the AWS Components for the Amazon EventBridge Integration, or you can create the components manually. To use CloudFormation, download the templates from:

**Topics**
+ [Finding your domain URL](#find-domain-url)
+ [Using the CloudFormation stack](#downloading-templates)
+ [Creating notification components manually](#manual-creation-of-aws-components)
+ [Example rules](#example-rules)

### Finding your domain URL
<a name="find-domain-url"></a>

The CloudFormation template uses your domain URL as one of its required parameters.

**To find the URL**

1. Sign in to Salesforce.

1. In the **Setup** section, in the **Quick Find** box, enter **my domain**.

1. In the left pane, under **Company Settings**, choose the **My Domain** link.

1. Copy the address in the **Current My Domain URL** box.

**Note**  
You must use the https:// prefix when you enter the URL in the CloudFormation template.

### Using the CloudFormation stack
<a name="downloading-templates"></a>

The steps in the following topics explain how to create and deploy a CloudFormation stack that sets up real-time notifications.

1. Download the following templates:
**Note**  
You deploy each template separately, and you follow the same steps for both.
   + Partner Central API integration: [https://servicecatalogconnector.s3.amazonaws.com/APIDestinationCFT\$1PCAPI.json](https://servicecatalogconnector.s3.amazonaws.com/APIDestinationCFT_PCAPI.json)
   + (Optional) AWS Marketplace integration: [https://servicecatalogconnector.s3.amazonaws.com/APIDestinationCFT\$1AWSMP.json](https://servicecatalogconnector.s3.amazonaws.com/APIDestinationCFT_AWSMP.json)

1. In the AWS Console, sign in to your AWS Marketplace seller account and ensure it runs in the **N. Virginia**. EventBridge only operates in that Region.

1. Still in the console, search on **cloudformation**, then open the CloudFormation console.

1. On the **Stacks** page, choose **Create stack**.

1. Select the **Choose an existing template** and **Upload a template file** radio buttons.

1. Select **Choose file** to open the downloaded template, then choose **Next**.

1. On the **Specify stack details** page, enter the following:
   + **Stack name** – enter a name for the stack.
   + **Client ID** – Enter the consumer key you noted when creating the connected app.
   + **Client Secret** – Enter the consumer secret you noted when you created the connected app.
   + **Domain URL** – Use the following format: **https://*domain\$1URL*.**

   When finished, choose **Next**.

1. On the **Configure stack options** page, scroll to the end, select the **I acknowledge that AWS CloudFormation might create IAM resources** checkbox, then choose **Next**.

1. Choose **Submit**.

When deployed successfully, the templates create the API Destination, Connection, Event Rules, and Dead Letter Queue.

### Creating notification components manually
<a name="manual-creation-of-aws-components"></a>

The following steps explain how to manually create the components for EventBridge notifications.

**Topics**
+ [Create an Amazon EventBridge API destination and connection](#manual-destination-connection)
+ [Creating an EventBridge Rule and connecting it to the API destination](#create-connect-ev-rule)
+ [Creating change set events](#change-set-events)
+ [Creating Offer Released events](#offer-released-events)
+ [Creating opportunity events](#opportunity-events)
+ [Types of events](#types-of-events)
+ [Example event](#example-event)

#### Create an Amazon EventBridge API destination and connection
<a name="manual-destination-connection"></a>

To create an API destination and connection in EventBridge, create an API destination that uses a new connection. In this case, the API destination is a REST API call to Salesforce to publish an event back. The connection contains the authentication information for the API call. The connection accepts several authorization methods.

**Prerequisites**  
To use OAuth authorization for the API destination connection, create a connected app in Salesforce. To do so, follow the steps in [Configure a Connected App for the OAuth 2.0 Client Credentials Flow](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm), in the Salesforce documentation. You use the consumer key and secret from the connected app for the API destination connection.

To create an API destination in the EventBridge console: 
+ Follow the steps in [Create an API destination](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-api-destinations.html#eb-api-destination-create) in the *Amazon EventBridge User Guide*.
+ Set up the configurations that are specific to Salesforce.

In Salesforce, on the **My Domain** page, under **Setup**, note your organizations domain name. You use it to set up the API destination and connection in the EventBridge console. The following steps explain how.

**To create the destination and connection**

1. Open the EventBridge console at [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/), and in the left navigation pane, choose **API destinations**.

1. Scroll down to the **API destinations** table and choose **Create API destination**.

   The **Create API destination** page appears.

1. Enter the following information:

   1. A **Name** for the API destination. You can use up to 64 uppercase or lowercase letters, numbers, dots (.), dashes (-), or underscore (\$1) characters.

      The name must be unique to your account in the current Region.

   1. (Optional) Enter a **Description** of the API destination.

   1. For **API destination endpoint**, use this URL: **https://*my-salesforce-domain-name*.my.salesforce.com/services/data/v58.0/sobjects/*event-api-name***.

   1. For **HTTP method**, select **POST**.

1. Under **Connection configuration**, select **Create a new connection**, then do the following:

   1. Enter a name and optional description.

   1. For **Destination type**, choose **Other**.

   1. Choose **OAuth Client Credentials**.

   1. For **Authorization endpoint**, accept the prepopulated endpoint.

      —OR—

      if you use a production organization, replace the populated endpoint with this URL:

      **https://*my-salesforce-domain-name*.my.salesforce.com/services/oauth2/token**

   1. For **HTTP method**, select **POST**.

   1. For **Client ID**, enter the consumer key from the connected app in Salesforce.

   1. For **Client secret**, enter the consumer secret from the connected app in Salesforce.

   1. Add the following OAuth values:
      + **Parameter**: Body field
      + **Key**: grant\$1type
      + **Value**: client\$1credentials

1. Choose **Create**.

**Note**  
If your Salesforce organization uses multi-factor authentication for API access, users must complete a second authentication challenge to access the Salesforce APIs. For more information, see [Set Multi-Factor Authentication Sign in Requirements for API Access](https://help.salesforce.com/s/articleView?id=sf.security_require_2fa_api.htm&language=en_US&type=5) in the Salesforce documentation.

After you create the API destination, you can create a rule that uses the target as the destination.

#### Creating an EventBridge Rule and connecting it to the API destination
<a name="create-connect-ev-rule"></a>

EventBridge rules route events from the event bus to the API destination, which results in making a REST call to publish an event back to Salesforce.

For more information about EventBridge rules, see [Creating Amazon EventBridge rules that react to events](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) in the *Amazon EventBridge User Guide*.

#### Creating change set events
<a name="change-set-events"></a>

The following steps explain how to create change set events.

1.  In [Amazon EventBridge](https://docs.aws.amazon.com/marketplace/latest/userguide/seller-eventbridge.html#events-changesets), choose **Rules**. 

1.  From the list, select the desired event bus. 

1.  In the **Rules** section, Choose **Create rule**. 

1.  Enter a name for the rule, then choose **Next**. 

1. Under **Event pattern**, select **Custom patterns (JSON editor)** and enter the following filter. You can use any combination of detail types.

   ```
   {
     "source": [
       "aws.marketplacecatalog"
     ],
     "detail-type": [
       "Change Set Succeeded",
       "Change Set Failed",
       "Change Set Cancelled"
     ]
   }
   ```

    For more information about event pattern matching, see [Content filtering in Amazon EventBridge event patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns-content-based-filtering.html) in the AWS documentation. 

1.  Choose **Next**. 

1.  In **Select targets**, under **Target 1**, select **EventBridge API destination**. 

1.  From the list, select the API destination that you just created. 

1.  Expand **Additional settings**. 

1.  Under **Configure Target Input**, select **Input Transformer** and **Configure Input Transformer**. This ensures that only the Salesforce event fields from the detail section of the original event are sent. 

    The Input path must be:  

   ```
   {
     "Name": "$.detail-type",
     "awsapn__Account_Number__c": "$.account",
     "awsapn__EntityId__c": "$.detail.ChangeSetId"
   }
   ```

    The template must be:  

   ```
   {
     "Name": Name,
     "awsapn__Account_Number__c": awsapn__Account_Number__c,
     "awsapn__EntityId__c": awsapn__EntityId__c
   }
   ```

1.  Choose **Next**, then **Next**. 

1. Review the rule, then choose **Create rule**.

**Note**  
To troubleshoot an API destination, you can use the Amazon SQS console to add a dead letter queue to the target. The queue receives messages that couldn't be delivered, plus the errors. From the Amazon SQS console, you can poll messages in the queue for errors. For more information, refer to [Using dead-letter queues to process undelivered events in EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-dlq.html), and [Receiving and deleting a message in Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-receive-delete-message.html) in the *Amazon SQS User Guide*. 

#### Creating Offer Released events
<a name="offer-released-events"></a>

The following steps explain how to create Offer Released events.

1.  In the [Amazon EventBridge](https://docs.aws.amazon.com/marketplace/latest/userguide/seller-eventbridge.html#events-changesets) console, Choose **Rules**. 

1.  Select the desired event bus from the list. 

1.  In the **Rules** section, Choose **Create rule**. 

1.  Enter a name for your rule, then choose **Next**. 

1.  Under **Event pattern**, select **Custom patterns (JSON editor)**, then enter the following filter:  

   ```
   {
     "source": [
       "aws.marketplacecatalog"
     ],
     "detail-type": [
       "Offer Released"
     ]
   }
   ```

    For more information about event pattern matching, see [Content filtering in Amazon EventBridge event patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns-content-based-filtering.html) in the Amazon EventBridge User Guide. . 

1.  Choose **Next**. 

1.  In **Select targets**, under **Target 1**, select **EventBridge API destination**, then open the list and select the API destination that you just created. 

1.  Expand **Additional settings**. 

1.  Under **Configure Target Input** Select **Input Transformer**, and select **Configure Input Tansformer**. This step prevents the top-level Amazon event fields from being sent to Salesforce. Only the part containing the Salesforce event fields from the detail section of the original event are sent. 

    Use the following input path:  

   ```
   {
      "Name":"$.detail-type",
      "awsapn__Account_Number__c":"$.account",
      "awsapn__EntityId__c":"$.detail.offer.id",
      "awsapn__Manufacturer_Account_Id__c":"$.detail.manufacturer.accountId",
      "awsapn__Product_Id__c":"$.detail.product.id",
      "awsapn__Seller_Account_Id__c":"$.detail.sellerOfRecord.accountId"
   }
   ```

    Use the following template:  

   ```
   {
     "Name": Name,
     "awsapn__Account_Number__c": awsapn__Account_Number__c,
     "awsapn__EntityId__c": awsapn__EntityId__c,
     "awsapn__Seller_Account_Id__c": awsapn__Seller_Account_Id__c,
     "awsapn__Manufacturer_Account_Id__c": awsapn__Manufacturer_Account_Id__c,
     "awsapn__Product_Id__c": awsapn__Product_Id__c
   }
   ```

1.  Choose **Next** and then **Next**. 

1.  Review the rule, then choose **Create rule**. 

**Note**  
 To help troubleshoot the execution of the API destination, add an Amazon SQS dead letter queue to the target. The queue receives the messages that couldn't be delivered along with the errors. You can then poll the messages to view the errors. For more information, see [Event retry policy and using dead-letter queues](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-dlq.html) and [Receiving and deleting messages (console)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-receive-delete-message.html) in the AWS documentation. 

#### Creating opportunity events
<a name="opportunity-events"></a>

 Opportunity events provide real-time notifications about changes in the status or details of opportunities 

 You can also create and manage EventBridge rules programmatically using the [AWS SDKs](https://docs.aws.amazon.com/partner-central/latest/selling-api/opportunity-events.html#aws-eventbridge). 

#### Types of events
<a name="types-of-events"></a>

The following list describes the event types generated when partners work with opportunities. The links take you to the API documentation for each event.
+ [Opportunity Created:](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#opportunity-created) – Triggered when a new opportunity is created.
+ [Opportunity Updated](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#opportunity-updated) – Triggered when an opportunity is updated. 
+ [Engagement Invitation Created](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#invitation-created) – Triggered when an opportunity is created.
+  [Engagement Invitation Accepted](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#invitation-accepted) – Triggered when a partner accepts an AWS Engagement Invitation, confirming their interest in collaborating with AWS on the opportunity.
+  [Engagement Invitation Rejected](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#invitation-rejected) – Triggered when an opportunity is rejected. 

#### Example event
<a name="example-event"></a>

```
{
    "version": "1",
    "id": ""d1example-0c9c-4655-15bf-c5exampleb08",
    "source": "aws.partnercentral-selling",
    "detail-type": "Opportunity Created",
    "time": ""2023-10-28T13:31:05Z",
    "region": ""us-east-1",
    "account": ""123456789123",
    "detail": { 
        "schemaVersion": "1",
        "catalog": "AWS",
        "opportunity": {
            "identifier": ""O1234567",
            "url": "Partner Central Opportunity Page URL"
        }
    }
}
```

### Example rules
<a name="example-rules"></a>

The following table lists examples of the EventBridge rules that you can use with the events listed in the previous section. Rules route events from the event bus to the API destination, which results in making a REST call to publish an event back to Salesforce.


| Event type | Example | 
| --- | --- | 
| **Opportunity Created** |  <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Opportunity Created"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre>  | 
| **Opportunity Updated** |  <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Opportunity Updated"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre> | 
| **Engagement Invitation Created** |  <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Engagement Invitation Created"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre>  | 
| **Engagement Invitation Accepted** |  <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Engagement Invitation Accepted"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre>  | 
| **Engagement Invitation Rejected** | <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Engagement Invitation Rejected"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre> | 
| **All events** | <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre> | 

# Mapping ACE objects
<a name="crm-connector-mapping"></a>

The CRM connector provides the **ACE Mappings** page. The page enables you to map objects and fields between your Salesforce organization and AWS Partner Network (APN).

The following sections explain how to create object mappings.

**Topics**
+ [Using the ACE Mappings page](mapping-page.md)
+ [Multi-object mapping](multi-object-mappings.md)
+ [Picklist mapping](picklist-mapping.md)
+ [Mapping ACE and Salesforce objects](#mapping-guidance)
+ [Sync logs and reports](crm-connector-sync-logs-and-reports.md)

# Using the ACE Mappings page
<a name="mapping-page"></a>

AWS Partner Central provides the following ways to navigate to the **ACE Mappings** page: 
+ From the App launcher, search for and choose **AWS Partner CRM connector**.
+ Choose the **ACE Mappings** tab.

  —OR—

  Choose the **Guided setup** tab, and in the **Map leads and opportunities** section, choose **Start** or **Review**. 

On the **ACE Mappings** page, use the left navigation pane to toggle between opportunity and lead mappings. Use the **Object Selector** to choose the source object to map APN leads and opportunities. The object selector supports mapping standard opportunities, lead objects, and custom objects. Use the **Mapping View** and **Type View** filters to toggle among mapped fields, unmapped fields, required fields, and optional fields. 

On the **ACE Mappings** page, the **AWS Fields** column for the object indicates the corresponding target APN fields. The **Salesforce Fields** are source fields of the selected object in the partner’s organization. **Salesforce Fields** are filtered to show only applicable data types available in the organization to be mapped to the corresponding APN field. For example, a text field in APN can be mapped only to a text (string) field in the partner’s organization.

Partners can control inbound updates on mapped fields if they don’t want a field updated by APN. To do this, set the **Enable Inbound Updates** toggle to **False**.

For one-to-one mapping, select the relevant source field, and then choose **Save**.

# Multi-object mapping
<a name="multi-object-mappings"></a>

Multi-object mapping allows partners to map AWS fields to a primary source object, such as an opportunity or lead, and to the Salesforce objects related to the primary source.

**Note**  
Remember the following when using multi-object mapping:  
When using the Salesforce `Account` object for multi-object-mapping with an opportunity object, you must configure the `Default Account` in the [ACE custom settings](guided-setup-apis.md#api-sys-config-settings) to receive opportunities.
When receiving an opportunity, if you map to an object other than the chosen `Opportunity` object, you must ensure that you link the related object to your opportunity record.  
For example, when receiving an AWS referral for the first time, the inserted opportunity has no mapped objects' related IDs *unless* you configure the `Default Account` in the ACE custom settings. If you configure the default account, the referral has the IDs of the chosen opportunity or account objects. Otherwise, the mapped field value won't be inserted. In that case, you must modify the opportunity to add the related object ID, and choose **Sync with AWS**. When AWS pushes the opportunity back to Salesforce, the mapped object’s field updates because it has a reference to the object's related ID.
Select the **Clone Default Account** option in custom settings. This allows AWS to clone the default account when necessary, particularly if you map account fields to your primary object.

**To map related objects**

1. In Salesforce, navigate to the **ACE Mappings** tab and choose an opportunity or lead.

1. From the **Object** selector, choose your source object.

   The **Salesforce Fields** column appears and displays the **>** symbol at the end of any fields that contain related objects.

1. Select an **>** symbol to expand the list of related objects for that field.

1. Choose the field that you want to map to the AWS field.

1. Choose **Save**.

# Picklist mapping
<a name="picklist-mapping"></a>

The picklist dialog box allows limited and extended mappings between the partner’s picklist field and APN. The **ACE Mappings** page also has an Auto Map function if using the provided **custom ACE opportunity object **. For more information about the object, refer to [Using a standard Salesforce object or custom object](crm-connector-mapping.md#custom-ace-opportunity-object) later in this guide.

If an exact match is found between the partner’s field values and APN, those values are mapped automatically. The option for extended mapping lets partners map a single APN value to multiple sources, configure additional target mappings, and set default mappings.

## Limited mapping
<a name="limited-mapping"></a>

1. On the **ACE Mappings** page, select a source field, and then choose **Map Values**. 

   The mapping dialog box appears.

1. For **Step 1: Primary APN Values**, choose either **Auto Map** or the Salesforce value for the corresponding ACE pipeline manager, and then choose **Save**.

1. Repeat steps 1 and 2 as necessary to map all of your ACE pipeline manager values.

1. To close the mapping dialog box, choose **Close**. 

Partners receive a confirmation message that the value mappings were saved. 

## Extended mapping
<a name="extended-mapping"></a>

1. If the same source value maps to multiple APN values, proceed with the mapping as previously described.

1. On the **Primary APN Values** tab, choose the same value mapping for multiple APN values. 

1. If unmapped values exist in the partner’s organization, the **Additional APN Value** tab lets you map additional values to APN. This helps partners ensure that all applicable values in their organization are mapped to appropriate APN values. 

1. If a single value in the partner’s organization is mapped to more than one APN value, use the **Secondary APN Values** tab to set the default value for outbound integrations. 

## Mapping ACE and Salesforce objects
<a name="mapping-guidance"></a>

The following sections explain how to map ACE and Salesforce custom objects in object maps.

### Using an AWS ACE opportunity custom object
<a name="ace-opportunity-custom-object"></a>

Version 2.0 and later of the CRM connector includes an ACE custom opportunity object. You can use the object to manage AWS opportunities in Salesforce.

When using the custom object on the **ACE Mappings** page, partners can automatically map AWS fields to Salesforce fields. Additionally, the custom opportunity object is aligned with the new ACE data model and has validations built in to the user interface that help users submit new opportunities.

To use a custom ACE opportunity object, complete the following steps:

1. In Salesforce, navigate to the **ACE Mappings** page, and choose **Opportunity** from the left navigation pane.

1. Under **Object Selector**, choose **ACE Opportunity **.

1. To map Salesforce fields to AWS fields, choose the **Auto Map ACE object** button.

### Using a standard Salesforce object or custom object
<a name="custom-ace-opportunity-object"></a>

Partners can use the Salesforce standard opportunity object or their own custom opportunity object. To avoid ACE synchronization failures, ensure that the custom opportunity object contains all of the relevant ACE mandatory fields or conditionally mandatory fields. The data type of the mapped AWS field must be the same data type as the Salesforce field created in the custom object. If the data type doesn't match, the field will not appear in the ACE mapping screen. For example, the text field **customerCompanyName** can be mapped only to a text (string) field in the standard or custom opportunity object. For required data types, refer to the ACE opportunity fields.

To use a standard Salesforce object or custom object, complete the following steps:

1. Navigate to the **ACE Mappings** page, and choose **Opportunity** from the left navigation pane.

1. Under **Object Selector**, choose your object.

1. Complete the mapping by selecting the required Salesforce fields against the corresponding AWS fields, and then choose **Save**.

**Note**  
The Auto Map feature is available only for ACE opportunity custom objects.

# Sync logs and reports
<a name="crm-connector-sync-logs-and-reports"></a>

The following topics explain how to use sync logs and reports in the AWS Partner CRM connector app. The topics also list the log and report types, and the data they contain.

**Topics**
+ [Sync logs](#sync-logs)
+ [Reports](#reports)

## Sync logs
<a name="sync-logs"></a>

In the connector app, the **Sync Log** tab displays the status of the synchronization records for inbound and outbound APN synchronization. You use the tab to verify a successful sync and troubleshoot sync errors.

Use the included list views to toggle between **Inbound** and **Outbound** synchronization logs.
+ **Inbound Orchestration** – Indicates the job that checks for available inbound records from APN.
+ **Inbound Orchestration Record Retrieval** – Indicates the job that picks up and processes pending inbound records from APN.
+ **Outbound Orchestration** – Indicates the job that sends pending outbound transactions from your organization to APN.

The **Sync Log** record page shows the status of the synchronization job, the number of records in the payload, the number of records processed successfully, and the number of records in error.

The related **Sync Log** details show the individual record details processed as part of the synchronization job, plus their individual statuses. The following tables explain each type of log file and their related contents.

### Log types
<a name="log-types"></a>


| **Purpose** | **Definition** | 
| --- | --- | 
| Outbound File Retrieval  | Created when the outbound job runs based on frequency and whether a new set of pending records must be synced with AWS. Logs are created only when records must match the following filter specification for the outbound sync: `Updates for AWS` is `true` and `Last Sync Date` is null, or `Last Sync Date` is before the `Last Modified Date` and `Last Modified By` is the user who scheduled the sync jobs. | 
| Inbound File Retrieval  | Created based on your inbound sync schedule. The log lists the callouts that check for pending inbound transactions from AWS.  | 
| Inbound Record Retrieval  | Created only when the parent Inbound File Retrieval job identifies pending inbound transactions from AWS. The log contains the details of the file from AWS that contains the opportunity or lead records. | 

### Outbound file retrieval results
<a name="outbound-file-retrieval-results"></a>


| **Direction**  | **Purpose**  | **Status**  | **Definition**  | 
| --- | --- | --- | --- | 
| From AWS  | Inbound file retrieval | API Success  | A list call to the bucket succeeded, The call checked for pending inbound records that must be processed. | 
| From AWS  | Inbound file retrieval | Error  | The list call failed, typically due to invalid credentials or a permission issue. | 

### Inbound file retrieval results
<a name="inbound-file-retrieval-results"></a>


| **Direction**  | **Purpose**  | **Status**  | **Definition**  | 
| --- | --- | --- | --- | 
| From AWS  | Inbound record retrieval  | API success  | A get call was made to retrieve the file listed from the Inbound File Retrieval operation, if one or more files exist and await processing. | 
| From AWS  | Inbound record retrieval | Partial  | The file was retrieved but processing failed for some records. Review the sync log to troubleshoot the failure. | 
| From AWS  | Inbound record retrieval | Error  |  Processing failed for all records due to one of the following reasons: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/crm-connector-sync-logs-and-reports.html)  | 
| From AWS  | Inbound record retrieval | API success  | If one or more files are present and awaiting processing, a get call is made to retrieve the file listed from the Inbound File Retrieval operation. | 
| From AWS  | Inbound record retrieval | Partial  | The file was retrieved but processing failed for some of the records. Review the sync log to troubleshoot the failure.  | 
| From AWS  | Inbound record retrieval  | Error  | Processing failed for all records due to one of the following reasons: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/crm-connector-sync-logs-and-reports.html)  | 
| From AWS  | Inbound record retrieval  | Processed  | Processing succeeded and the records inserted into your mapped object. | 

## Reports
<a name="reports"></a>

The AWS Partner CRM connector package includes reports that allow you to track the status of the synchronization between your organization and APN.<a name="view-reports-synchronization"></a>

**To view reports for synchronization**

1. In the AWS Partner CRM connector app, choose the **Reports** tab.

1. Choose **All Folders**, then **AWS Partner CRM connector**.

Available reports include the following:
+ **Inbound Sync Logs** – `Error: Inbound` synchronization record failures by day.
+ **Inbound Sync Logs** – `Success: Inbound` synchronization record successes by day.
+ **Outbound Sync Logs** – `Error: Outbound` synchronization record failures by day.
+ **Outbound Sync Logs** – `Success: Outbound` synchronization record successes by day.
+ **Synchronization Summary** – Summary of inbound and outbound synchronization jobs by day.

# Configuring the CRM connector
<a name="configure-crm-connector"></a>

**Note**  
The topics in this section assume you've completed the prerequisites for an AWS Partner Central integration, an AWS Marketplace integration, or both. For more information, refer to [Integration prerequisites](crm-integration-setting-up.md) and [Getting started](crm-integration-getting-started.md) earlier in this guide.

After you install the connector, you configure it to work with the following types of CRM integrations and AWS services:
+ An AWS Partner Central API integration
+ A CRM with Amazon S3 integration, but only if you created the integration before 2024
+ AWS Marketplace

The configurations enable you to use Salesforce with Partner Central and AWS Marketplace. The following topics explain how to configure the CRM connector.

**Topics**
+ [Using guided setup](use-guided-setup.md)
+ [Configuring the connector for a Partner Central API integration](p-c-api-integration.md)
+ [Configuring the connector for AWS Marketplace](aws-marketplace-integration.md)
+ [Personas for CRM connector permission sets](permission-sets.md)

# Using guided setup
<a name="use-guided-setup"></a>

You always use Salesforce to configure the CRM connector, and you start on the **Guided setup** tab. The following steps explain how to start the tab:

**To start the tab**

1. Sign in to Salesforce as a system administrator.

1. From the App launcher, search for and select **AWS Partner CRM connector**.

1. Choose the **AWS Guided Setup** tab.

# Configuring the connector for a Partner Central API integration
<a name="p-c-api-integration"></a>

The following sections explain how to configure the CRM connector for use with the AWS Partner Central APIs.

To create and manage opportunities in Salesforce, configure the CRM connector for use with a Partner Central API integration.

**Note**  
Managing leads requires an earlier CRM with Amazon S3 integration. For more information, refer to [Configuring the connector for a CRM with Amazon S3 integration](s3-config.md) later in this guide.

**Topics**
+ [Entering connection authentication details](#config-p-c-apis)
+ [Entering the system settings](#p-c-api-system-settings)
+ [Testing the connection](#p-c-apis-testing)
+ [Using flow templates](flow-templates.md)

## Entering connection authentication details
<a name="config-p-c-apis"></a>

Partners start the integration process by entering the details needed to connect to the Partner Central sales endpoint. Follow each set of steps in the order listed, and complete each set before proceeding to the next one.

**To enter connection authentication details**

1. In Salesforce, open the **AWS guided setup** tab. For information about opening that tab, refer to [Using guided setup](use-guided-setup.md) earlier in this guide. 

1. Expand **Step 1: AWS connection authentication details** and choose **Start.**

1. On the **Named credentials** page, choose **New earlier**. 

1. In the **New named credential** form, enter the values from the following table.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/p-c-api-integration.html)

1. Choose **Save**. 

1. Return to the **AWSGuided setup** page. In the **Authentication details** section, choose **Review** and confirm the credentials. 

## Entering the system settings
<a name="p-c-api-system-settings"></a>

The following steps explain how to enter the correct system configuration settings for the integration.

1. In Salesforce, open the **AWS guided setup** tab. For information about opening that tab, refer to [Using guided setup](use-guided-setup.md) earlier in this guide. 

1. Expand **Step 2: System configuration settings** and choose **Start.** 

1. Locate **AWS Partner CRM Connector Settings**, and choose **Manage**. 

1. Choose **New**, then enter the values from the following table.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/p-c-api-integration.html)

1. Choose **Save**. 

1. Return to the **AWS guided setup** page. In the **Authentication details** section, choose **Review** and confirm the credentials.

## Testing the connection
<a name="p-c-apis-testing"></a>

Before testing the connection, ensure that you have completed all the above steps.

**To test the AWS Partner Central API connection**

1. Expand **Step 4: Test configuration for Partner Central API integration**.

1. Choose **Test**.

If the connection succeeds, you receive a confirmation message.

# Using flow templates
<a name="flow-templates"></a>

Flow templates are pre-built Salesforce flows that integrate Salesforce with AWS Partner Central using the AWS Partner Central API integration method. These templates include data synchronization, field mapping, and error handling configurations.

## Available templates
<a name="available-templates"></a>

**Unified Standard-ACE Opportunity Sync Flow Template**

The Unified Standard-ACE Opportunity Sync flow template maps Salesforce Standard Opportunity fields to ACE Opportunity fields, converts state and country formats, and prevents duplicate entries. It includes default values for required fields.
+ Revenue, close dates, and next steps are synchronized between Salesforce and AWS Partner Central.
+ By default, synchronization is triggered when "Create ACE" is added to the opportunity description. You can modify this trigger mechanism by using a checkbox or button.
+ This template provides a foundation for developing flows that align with your business requirements and field mappings.
+ This template is for use with AWS Partner Central API integration only and is not compatible with other integration methods.

Find this template in Salesforce Flow Builder by searching for "Unified Standard-ACE Opportunity Sync Flow Template".

**Prerequisites**

This template requires an active AWS Partner Central API integration. You must have appropriate permissions in Salesforce and configured fields in both systems. Familiarity with Salesforce Flow and AWS Partner Central API is recommended.

**Accessing the template**

To locate the flow template:

1. In your Salesforce org, choose **Setup**.

1. Search for **Flows**.

1. On the Flows page, search for the "Unified Standard-ACE Opportunity Sync Flow" template.

Create a copy of the template to customize for your requirements. Test modifications in a sandbox environment before deploying to production.

**Key features**

The template includes field mapping between Standard Opportunity and ACE Opportunity objects, state and country format conversion, and duplicate entry prevention. You can configure custom triggers and default value handling for required fields.

**Implementation considerations**
+ Follow best practices when customizing flow templates.
+ Test modifications and consider impact on existing processes.
+ Common customizations include adding custom fields or adjusting trigger mechanisms.
+ Test thoroughly in a sandbox environment before deploying to production.
+ Consider performance implications when dealing with large data volumes or complex business logic.

# Configuring the connector for AWS Marketplace
<a name="aws-marketplace-integration"></a>

**Note**  
The topics in this section assume you've completed the prerequisites for an AWS Partner Central integration, an AWS Marketplace integration, or both. For more information, refer to [Integration prerequisites](crm-integration-setting-up.md) and [Getting started](crm-integration-getting-started.md) earlier in this guide.

You can configure the CRM connector to connect to multiple AWS seller accounts and integrate Salesforce with several AWS Marketplace functions. The following topics explain how to configure the connector for use with AWS Marketplace.

For more information about AWS Marketplace, refer to [What is AWS Marketplace?](https://docs.aws.amazon.com/marketplace/latest/userguide/what-is-marketplace.html) in the *AWS Marketplace User Guide*. For more information about the AWS Marketplace features that the CRM connector supports, refer to [AWS Marketplace features](crm-connector-feature-list.md#feature-list-aws-marketplace).

**Note**  
Use the **AWS guided setup** tab in Salesforce to complete the following tasks. For information about using that tab, refer to [Using guided setup](use-guided-setup.md) earlier in this guide.

**Topics**
+ [Onboarding an AWS Seller account](onboard-seller-account.md)
+ [Entering system configuration settings](mkt-system-config.md)
+ [Entering custom settings](mkt-custom-settings.md)

# Onboarding an AWS Seller account
<a name="onboard-seller-account"></a>

The following steps explain how to onboard AWS Seller accounts to the CRM connector.

1. In Salesforce, on the [Guided setup tab](use-guided-setup.md), expand **Step 1: Set up access to AWS Marketplace Management Portal (AMMP)** and choose **Start.** 

1. On the **Named credentials** page, choose **New earlier**. 

1. In the **New named credential** form, enter the values from the following table. 
**Note**  
For *unique\$1account\$1prefix*, use a descriptor for the AWS account, such as SellerA; SellerB. For example, **AWS\$1SELLER\$1CATALOG\$1sellerA**. Always use the same prefix for the named credentials related to the AWS seller account.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/onboard-seller-account.html)

1. Choose **Save**.

1. Return to the **AWSGuided setup** page. In the **Authentication details** section, choose **Review** and confirm the credentials.

Repeat the above steps for each type of the listed **Named Credentials** in the following table. Use the values in the table below to replace the corresponding values in **Step 3** above 


|  **Named Credential Label**  |  **Named Credential Name**  |  **API endpoint**  |  **AWS Region**  |  **AWS service**  | 
| --- | --- | --- | --- | --- | 
| AWS SELLER Amazon S3 | AWS\$1SELLER\$1S3\$1unique\$1account\$1prefix  |  [https://s3.amazonaws.com/](https://s3.amazonaws.com/)  | us-east-1  | s3  | 
| AWS SELLER AWS STS | AWS\$1SELLER\$1STS\$1unique\$1account\$1prefix |  [https://sts.us-east-1.amazonaws.com/](https://sts.us-east-1.amazonaws.com/)  | us-east-1  | sts  | 
| AWS SELLER Amazon SQS  | AWS\$1SELLER\$1SQS\$1unique\$1account\$1prefix |  [https://sqs.us-east-1.amazonaws.com/](https://sqs.us-east-1.amazonaws.com/)  | us-east-1  | sqs  | 
| AWS SELLER AGREEMENT  | AWS\$1SELLER\$1AGREEMENT\$1unique\$1account\$1prefix |  [https://agreement-marketplace.us-east-1.amazonaws.com/](https://agreement-marketplace.us-east-1.amazonaws.com/)  | us-east-1  | aws-marketplace  | 

Repeat the above steps for each AWS Seller account you want added to the AWS Marketplace integration.

After onboarding the named credentials, go to the **AWS Accounts** tab in the **AWS Partner CRM connector app** and complete the steps in the next sections.

# Entering system configuration settings
<a name="mkt-system-config"></a>

After you onboard an AWS seller account, you enter several system settings. Follow these steps.

1. In Salesforce, on the [Guided setup tab](use-guided-setup.md), expand **Step 2: Complete system configuration settings** and choose **Review.** 

1. On the **Custom Settings** page, locate the **AWS Marketplace Integration Settings**, and choose **Manage.** 

1. Choose **Edit** to add **Default Organization Level** **values**, and then enter the required values from the following table.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/mkt-system-config.html)

1. Choose **Save**. 

# Entering custom settings
<a name="mkt-custom-settings"></a>

After you enter the system configuration settings, you enter settings for the Amazon S3 bucket used to upload and store custom EULAs. 

1. In Salesforce, on the [Guided setup tab](use-guided-setup.md), return to the **Custom Settings** page, locate **S3 Bucket Settings**, and choose **Manage**. 

1. Choose **New**.

1. Enter values for the following settings.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/mkt-custom-settings.html)

1. Choose **Save**. 

1. For each configured AWS Seller account, repeat steps 2-4 to add the Amazon S3 settings.

# Personas for CRM connector permission sets
<a name="permission-sets"></a>

After you install and configure the AWS Partner CRM connector, you assign Salesforce users to one or more personas in a *permission set*, a collection of settings and permissions that provide access to various tools and functions. The following topics list and describe the available personas.

For more information about assigning Salesforce users to permission sets, refer to [Managing Permission Set Assignments](https://help.salesforce.com/s/articleView?id=platform.perm_sets_manage_assignments.htm) in the Salesforce help.

**Topics**
+ [AWS Partner Network permission sets](crm-connector-pemissions-sets.md)
+ [AWS Marketplace permission sets](mkt-permissions-sets.md)
+ [CRM connector tabs and permission sets](permission-set-table.md)

# AWS Partner Network permission sets
<a name="crm-connector-pemissions-sets"></a>

The CRM connector supports the following primary AWS Partner Network personas:

**Topics**
+ [Business administrator (APN Business Administrator)](#business-administrator)
+ [Integration User (APN Integration User)](#integration-user)
+ [Business user (APN Business User)](#business-user)
+ [Granting permissions to view reports](#report-permissions)
+ [Activating flow users](#activate-flow-user)

## Business administrator (APN Business Administrator)
<a name="business-administrator"></a>
+ Assign to a system admin or a business admin to configure the setup and mapping of records. 
+ Gives full access to the Salesforce AWS Partner Network CRM administration app.
+ Can create, view, and edit field mappings.
+ Can view all sync log detail records.
+ Doesn’t allow the user to schedule an integration, only to set up configurations.
+ Doesn’t provide core Salesforce setup access.
+ Some settings in Salesforce require additional access. Specifically, named credentials and custom settings that the AWS Partner must provide to their user. However, partners can pair this permission set with a Salesforce system admin profile and enable all of the necessary permissions to configure the application. For more information about named credentials, refer to [Set up named credentials](set-up-api-credentials.md)

## Integration User (APN Integration User)
<a name="integration-user"></a>
+ Assign to a system user responsible for processing the integration. 
+ To schedule an integration, a Salesforce system admin signs in as this user and invokes the system integration schedule.
+ Allows admins to configure the mappings and invoke integration schedules.
+ The integration may break if this permission isn’t set for the user who runs the integration.
+ In addition to this permission set, the user designated to process the integration should have field level access to all mapped fields. If not, the mappings fail to sync as assigned.
+ The outbound jobs are designed to ignore updates done in the integration user context to prevent a race-around condition, with the same record updated during inbound integration being flagged to be sent for outbound integration.

## Business user (APN Business User)
<a name="business-user"></a>
+ Assign to business users who might want to see the sync log details related to their opportunities. This allows for end-user troubleshooting if data is not syncing correctly.
+ Does not provide visibility to the sync log records and only gives access to the object and fields.
+ We recommend setting sync log records to private, since they contain sensitive opportunity information.
+ If you configure a private model, APN business users can access only the records if the partner Salesforce administrator configures record sharing with users.

## Granting permissions to view reports
<a name="report-permissions"></a>

To allow a user to view reports on the **Home** tab of the AWS Partner CRM connector, an administrator must grant the following permissions:
+ Create and Customize Reports
+ Edit My Reports
+ Mange Reports in Public Folders
+ Run Reports
+ View Reports in Public Folders

For more information, refer to [Grant Users Access to Reports and Dashboards](https://help.salesforce.com/s/articleView?id=sfdo.PMM_Folder_Sharing_Reports_Dash.htm) in the Salesforce help.

## Activating flow users
<a name="activate-flow-user"></a>

Activating users as flow users enables them to run flows and use the **Link private offer** button on an ACE opportunity.

1. Ensure that the system administrator has permission to assign a flow user. For more information, refer to [Add Run Flows Permissions](https://help.salesforce.com/s/articleView?id=sf.wcc_setup_add_run_flows_perms.htm) in the Salesforce help.

1. Choose **Setup**, **Users**.

1. Choose a user.

1. Choose **Flow user**.

# AWS Marketplace permission sets
<a name="mkt-permissions-sets"></a>

The CRM connector supports the following primary AWS Partner personas. Partners enable the personas by giving the Salesforce user the corresponding permission set included in the application.

**Topics**
+ [AWS Marketplace administrator](#aws-marketplace-administrator)
+ [AWS Marketplace user](#aws-marketplace-user)
+ [AWS Channel Partner user](#aws-channel-partner-user)

## AWS Marketplace administrator
<a name="aws-marketplace-administrator"></a>

Assign this persona to a systems or Business Administrator to perform the configuration and manage schedules. This persona provides full access to the AWS Marketplace integration in the Salesforce connector.

This persona can do the following:
+ Read, write, and view records for all objects related to the AWS Marketplace integration.
+ View all AWS Marketplace sync log records.
+ Create schedules related to AWS Marketplace entities.

**Note**  
Certain settings in Salesforce require additional access, specifically named credentials and custom settings that AWS Partners must provide to users. However, if partners pair this permission set with a Salesforce systems administrator profile, all permissions needed to fully configure the application should work.

## AWS Marketplace user
<a name="aws-marketplace-user"></a>

Assign this persona to the user who creates and manages private offers and resale authorization.

The AWS Marketplace user can do the following:
+ Synchronize AWS Marketplace products, offers, and resale authorizations.
+ Modify expiry dates, and cancel and clone offers and resale authorizations.
+ Access the AWS Marketplace dashboard.

## AWS Channel Partner user
<a name="aws-channel-partner-user"></a>

The AWS Channel Partner user can do the following:
+ View available shared resale authorizations created by the Independent Software Vendor (ISV) seller.
+ View and create AWS Channel Partner private offers from shared resale authorizations.

# CRM connector tabs and permission sets
<a name="permission-set-table"></a>

When you use the CRM connector app in Salesforce, a set of tabs appears. The tabs you see vary, depending on your permission settings. The following table lists the tabs provided by the connector app, and the permission sets allowed to use each tab.


| **Connector app tab** | **Permission sets** | 
| --- | --- | 
| **AWS Guided Setup** |  APN Business Administrator APN Integration User APN Business User ? AWS Marketplace Administrator  | 
| **Reports** |  APN Business User AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner User  | 
| **ACE Mappings** |  APN Business Administrator APN Business User ?  | 
| **Schedules** |  APN Business Administrator APN Integration User AWS Marketplace User (AWS Marketplace ISV)  | 
| **ACE Sync Logs** |  APN Business Administrator APN Integration User APN Business User  | 
| **ACE Leads** |  APN Business Administrator ? -> Available APN Integration User ? APN Business User  | 
| **ACE Opportunities** |  APN Business Administrator ? -> Available APN Integration User ? APN Business User  | 
| **Solution Offerings** |  APN Business Administrator APN Business User  | 
| **AWS Accounts** |  AWS Marketplace Administrator AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner User  | 
| **Products** |  AWS Marketplace Administrator AWS Marketplace User (AWS Marketplace ISV)  | 
| **Private Offers** |  AWS Marketplace Administrator ? -> Available AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner User  | 
| **Resale Authorizations** |  AWS Marketplace Administrator ? -> Available AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner user  | 
| **Shared Resale Authorizations** |  AWS Marketplace Administrator ? -> Available AWS Channel Partner user  | 
| **Marketplace sync logs** |  AWS Marketplace Administrator AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner User  | 
| **Agreements** |  AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner User  | 
| **AWS Marketplace Notifications** |  APN Business Administrator APN Business User AWS Marketplace Administrator AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner user  | 
| **Field Mappings** |  APN Business Administrator ? APN Integration User ?  | 
| **Offer Dimensions** |  AWS Marketplace Administrator ? AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner User  | 
| **Payment Schedules** |  AWS Marketplace Administrator ? AWS Marketplace User (AWS Marketplace ISV) AWS Channel Partner User  | 
| **Product Dimensions** |  AWS Marketplace Administrator ? AWS Marketplace User (AWS Marketplace ISV)  | 
| **Logs** |  APN Business Administrator APN Business User  | 

# Using the CRM connector in Salesforce
<a name="using-the-connector"></a>

The following topics explain how to use Salesforce and the CRM connector to manage customer engagements, and how to manage AWS Marketplace activities such as private offers and resale authorizations. The topics assume that you have configured the connector for AWS Partner Central and AWS Marketplace.

**Topics**
+ [Managing ACE opportunities](manage-ace-opportunities.md)
+ [Managing opportunities in a Partner Central API integration](manage-aws-opportunities.md)
+ [Managing opportunities in a CRM with Amazon S3 integration](manage-s3-opportunities.md)
+ [Managing AWS Marketplace activities](crm-manage-marketplace.md)

# Managing ACE opportunities
<a name="manage-ace-opportunities"></a>

The following topics explain how to use the AWS Partner CRM connector to manage ACE opportunities. 

**Topics**
+ [Creating partner-originated opportunities](create-partner-opportunity.md)
+ [Viewing opportunity records](viewing-opportunities.md)
+ [Updating an opportunity's stage](update-opportunity-stage.md)
+ [Cloning an opportunity](clone-opportunity.md)

# Creating partner-originated opportunities
<a name="create-partner-opportunity"></a>

The following steps explain how to create a partner-originated opportunity.

1. Sign in to your Salesforce organization as a sales user.

1. Choose **App launcher**, then search for and choose **AWS Partner CRM connector**.

1. Open the **ACE Opportunities** tab.

1. Choose **New**.

1. Fill in the fields. Make sure you complete all required fields.

1. Choose **Save**.

1. When ready, on the opportunity record page, choose **Share with AWS** to send the opportunity to AWS.

# Viewing opportunity records
<a name="viewing-opportunities"></a>

The following steps explain how to view opportunity records in the CRM connector app.

1. Sign in to your Salesforce organization as a sales user.

1. From the **App launcher**, search for and choose **AWS Partner CRM connector**.

1. Open the **ACE Opportunities** tab.

1. View an opportunity by selecting its **ACE Opportunity Name**. 

# Updating an opportunity's stage
<a name="update-opportunity-stage"></a>

The following steps explain how to update an opportunity's stage.

1. Sign in to your Salesforce organization as a sales user.

1. Choose **App launcher**, then search for and select **AWS Partner CRM connector**.

1. On the **ACE Opportunities** tab, open the opportunity record.

1. Do one of the following:

   In the **stage path**, choose the required stage.

   —OR—

   In the **Stage** field, enter the required stage.

   —OR—

   Choose **Mark Stage as Complete**.

1. Choose **Save**.

# Cloning an opportunity
<a name="clone-opportunity"></a>

Cloning enables you to create a new opportunity that contains details from an existing opportunity. The following steps explain how.

1. Sign in to your Salesforce organization as a sales user.

1. Choose **App launcher**, then search for and select **AWS Partner CRM connector**.

1. On the **ACE Opportunities** tab, open the opportunity record.

1. Choose the **Clone** button.

1. Remove the **APN CRM unique identifier** value, and update the other fields as required.

1. Choose **Save**.

# Managing opportunities in a Partner Central API integration
<a name="manage-aws-opportunities"></a>

The following topics explain how to complete the tasks specific to specific to a Partner Central API integration.

**Topics**
+ [Accepting or rejecting AWS originated opportunities](accept-reject-aws-opportunity.md)
+ [Assigning an opportunity to another user](assign-opportunity.md)
+ [Associating or dissociating an opportunity](associate-disassociate-opportunity.md)
+ [Accepting multiple opportunities](accepting-multiple-opportunities.md)
+ [Assigning multiple opportunities](assigning-multiple-opportunities.md)

# Accepting or rejecting AWS originated opportunities
<a name="accept-reject-aws-opportunity"></a>

The following steps explain how to accept or reject an opportunity that originates from AWS Sales.

1. Open the opportunity record.

1. Choose the **Approval Status** button.

1. In the **Partner acceptance status** field. Choose **Accepted** or **Rejected**.

   If you choose **rejected**, open the **Rejection reason** list and choose a reason.

1. Choose **Save**.

# Assigning an opportunity to another user
<a name="assign-opportunity"></a>

The following steps explain how to assign an opportunity to another user in your Partner Central account.

**Important**  
You can only assign an AWS-originated opportunity after it has been accepted.

1. Open the opportunity record.

1. Choose the **Assign** button.

1. In the **Assign opportunity** dialog box, complete all the fields. 

1. Choose **Save**.

# Associating or dissociating an opportunity
<a name="associate-disassociate-opportunity"></a>

The following steps explain how to associate and disassociate an opportunity from Partner Solutions, AWS products, or AWS Marketplace offers. You can associate and disassociate an opportunity at any time during the opportunity's lifecycle.

**To associate an opportunity**

1. Open the opportunity record.

1. Choose the **Associate or Disassociate** button. 

1. In the **Associate or Disassociate Opportunity** dialog box, choose the required **Solution(s)**, **AWS product(s)**, **AWS Marketplace offer(s)**, or enter in a value under **Other** 

1. Choose **Save**.

**To disassociate an opportunity**

1. Open the opportunity record.

1. Choose the **Associate or Disassociate** button.

1. Choose the **X** next to the **Solution(s)**, **AWS product(s)**, or ** AWS Marketplace offer(s)** that you want to remove.

1. Choose **Save**.

# Accepting multiple opportunities
<a name="accepting-multiple-opportunities"></a>

You can accept multiple AWS-originated opportunities simultaneously using the bulk accept functionality. This feature streamlines the process of accepting opportunities, reducing manual effort.

1. In the AWS Partner CRM Connector, open the **ACE Opportunities** tab.

1. Select the opportunities you wish to accept by checking the box in the first column.

1. Choose the **Accept Opportunities** button on the top right. If the button is not visible, choose the down arrow and then choose **Accept Opportunities**.

1. On the **Accept Opportunities** page, only the opportunities which have not been accepted will be selected.

1. Confirm the selected opportunities, and then choose **Accept Opportunities**.

1. The next screen will show the progress of the Accept Opportunities job.

1. When complete, the **Accept Opportunities** screen will show the number of items processed and any errors.

1. Choose **Close** to go back to the **ACE Opportunities** tab.

# Assigning multiple opportunities
<a name="assigning-multiple-opportunities"></a>

You can assign multiple opportunities to another user in your Partner Central account simultaneously using the bulk assign functionality. This feature streamlines the process of assigning opportunities, reducing manual effort.

**Important**  
Before assigning opportunities to a user, the opportunity must be shared with AWS. Opportunities not shared with AWS will fail processing or be unchecked during the assigning wizard.

1. In the AWS Partner CRM Connector, open the **ACE Opportunities** tab.

1. Select the opportunities you wish to assign by checking the box in the first column.

1. Choose the **Assign Opportunities** button on the top right. If the button is not visible, choose the down arrow and then choose **Assign Opportunities**.

1. On the **Assign Opportunities** page, enter the required fields: **First name**, **Last name**, **Email**, and **Business title**.

1. Under **Selected Opportunities** only the opportunities shared with AWS will be selected. Any opportunities not shared with AWS will be deselected.

1. Confirm the selected opportunities, and then choose **Assign Selected Opportunities**.

1. The next screen will show the progress of the Assign Opportunities job.

1. When complete, the **Assign Opportunities** screen will show the number of items processed and any errors.

1. Choose **Close** to go back to the **ACE Opportunities** tab.

# Managing opportunities in a CRM with Amazon S3 integration
<a name="manage-s3-opportunities"></a>

The following topics explain how to use the CRM connector with a CRM with Amazon S3 integration.

**Topics**
+ [Importing solutions into Salesforce](import-solutions-tab.md)
+ [Accepting or rejecting AWS-originated opportunities](accept-reject-opportunities.md)
+ [Synchronizing opportunity and lead data](send-receive-opportunities-leads.md)
+ [Linking AWS Marketplace private offers to ACE opportunities](link-private-offer-to-opportunity.md)
+ [Viewing sync log detail records for ACE opportunities](view-ace-details.md)

# Importing solutions into Salesforce
<a name="import-solutions-tab"></a>

 Partner Solutions are software products or consulting practices that AWS Partners create and deliver. They’re designed to help customers solve specific business challenges or achieve specific goals using AWS services. For more information, refer to [Creating a solution](https://docs.aws.amazon.com/partner-central/latest/builder-guide/creating-a-solution.html) in the *AWS Partner Central Builder Guide*. 

The following steps explain how to import Partner Central solutions into Salesforce. You can then associate the solutions with opportunities.

**To import solutions**

1. Sign in to Salesforce as a sales user.

1. Choose **App launcher**, then search for and select **AWS Partner CRM connector**.

1. Open the **Solution Offerings** tab.

1. Choose the **Refresh Solutions** button.

1. Choose **Proceed** to confirm that you want to import solutions from Partner Central.

# Accepting or rejecting AWS-originated opportunities
<a name="accept-reject-opportunities"></a>

The following steps explain how to accept or reject opportunities in an APN Amazon S3 integration. 

1. Open the opportunity record.

1. Open the **Partner acceptance status** list and choose **Accepted** or **Rejected**.

   If you choose **Rejected**, open the **Rejection reason** list and choose a reason.

1. Choose **Save**.

# Synchronizing opportunity and lead data
<a name="send-receive-opportunities-leads"></a>

To sync an opportunity or lead with APN, you must set the **Sync with Partner Central** field to **True**. Additional fields for integration include the **Last APN Sync Date** and **Eligible to Sync with APN** fields. Standard opportunities and leads include those fields. However, you set must create and map the fields for the corresponding object if the source objects are set to custom.
+ **Sync with Partner Central** – Included in the app for standard opportunities and leads. If you choose to map to custom objects, you must create and map this field as boolean.
+ **Last Sync Date with APN** – Indicates the last time the record was successfully sent to APN or received from APN. This field is auto set when the record is successfully sent to APN or an update is received from APN. 
+ **Eligible to Sync with APN** – A formula field that determines if the record is targeted to be sent to APN in the next scheduled job. Calculated based on if the record was modified since the last time the outbound schedule ran, and it was updated by a user other than the designated integration user for the AWS Partner's organization. 

# Linking AWS Marketplace private offers to ACE opportunities
<a name="link-private-offer-to-opportunity"></a>

You can link private offers directly from the AWS delivered ACE opportunity record page in Salesforce.

1. Sign in to your Salesforce organization.

1. In the **App Launcher**, choose **AWS Partner CRM connector**.

1. Choose the **ACE Opportunities** tab.

1. Choose an ACE opportunity record.

1. Choose **Link Private Offer**.

1. In **Offer ID Look Up**, choose the private offer.

1. Choose **Save**.

# Viewing sync log detail records for ACE opportunities
<a name="view-ace-details"></a>

 You can view sync log details for AWS-delivered ACE opportunities on the **Related** section of the ACE opportunity record.

**Note**  
These steps only apply to AWS-delivered ACE opportunity objects. If you map to standard or custom objects in your Salesforce organization, you can view sync log details on the **ACE Sync Log** section.

1. Sign in to your Salesforce organization.

1. In the **App Launcher**, choose **AWS Partner CRM connector**.

1. In the **ACE Opportunities** section, choose an ACE opportunity record.

1. The **Related** section displays details, including **Sync Log Name**, **Status**, **Error Message**, and **Created Date**. 

# Managing AWS Marketplace activities
<a name="crm-manage-marketplace"></a>

The following topics explain how to use the CRM connector to manage AWS Marketplace activities from within Salesforce. 

**Topics**
+ [Synchronizing Salesforce with your AWS Marketplace products](crm-sync-salesforce.md)
+ [Managing private offers](crm-manage-private-offers.md)
+ [Managing AWS Marketplace agreements](crm-manage-agreements.md)
+ [Managing AWS Marketplace resale authorizations](crm-resale-authorizations.md)

# Synchronizing Salesforce with your AWS Marketplace products
<a name="crm-sync-salesforce"></a>

Before you can work with AWS Marketplace products, you must first synchronize them with Salesforce. Synchronizing ensures that you have the latest product details.

**To synchronize**

1.  Sign in to Salesforce as a system administrator. 

1.  Choose **App launcher**, then search for and select **AWS Partner CRM connector**. 

1.  Choose the **Products** tab, then choose **Refresh Products**. 

1.  For the prompt **Do you want to pull the list of products from the AWS Marketplace**, choose **Proceed**. 

 When the synchronization process finishes, you can use the connector app to create and manage **Private Offers** and **Resale Authorizations**. The following sections explain how. 

# Managing private offers
<a name="crm-manage-private-offers"></a>

The following topics explain how to use Salesforce to create and manage private offers for your AWS Marketplace products. Topics include creating, modifying, and tracking private offers, creating flexible payment schedules, create future-dated agreements, and manage the entire lifecycle of your private offers.

**Topics**
+ [Accessing your private offers](#crm-view-private-offers)
+ [Creating private offers](#crm-create-private-offer)

## Accessing your private offers
<a name="crm-view-private-offers"></a>

To create and manage AWS Marketplace private offers from within Salesforce, you use the **private offers** tab in the **AWS Partner CRM connector**. The following steps explain how to start the tab.

1.  Sign in to the Salesforce organization as an AWS Marketplace user. 

1.  From the App launcher, search for and choose **AWS Partner CRM connector**. 

1.  Choose the **Private Offers** tab. 

## Creating private offers
<a name="crm-create-private-offer"></a>

The following topics explain how to create AWS Marketplace private offers from within Salesforce. Expand each section to learn more.

### Steps for creating private offers
<a name="private-offer-creation-steps"></a>

**Note**  
When creating a private offer, dynamic fields appear based on your chosen product, and on your selections as you move through the creation process.

The following steps explain how to create a private offer. You must complete the [Required fields for private offers](#private-offer-required-fields). Optionally, you can create a flexible payment schedule and a future dated agreement, depending on the type of product selected. Also, you can save the offer as a draft, or publish it to the buyer account.

1.  On the **Private Offers** tab, choose **New**. 

1.  On the **Create an Offer** page, at a minimum, complete the [Required fields for private offers](#private-offer-required-fields) listed in the next section. 

1. Do some or all of the following:
   + **To create a flexible payment schedule**

     1.  In the **Product and Buyers** section, choose **Enable fixed units and allow buyers to pay for this product in installments**. 

     1.  Configure payments in the **Payment Schedule** section. 
   + **To create a future dated agreement**

     1. In the **Service Length** section, choose **New offer starting at future date**.

     1.  Enter **Service start date** and **Service end date** (if required). 

1. Choose **Create Offer** to publish the offer to the buyer.

   —OR—

   Choose **Save as draft** to save the offer as a draft to complete later without releasing it to the buyer.

### Required fields for private offers
<a name="private-offer-required-fields"></a>

To create an AWS Marketplace private offer, you must complete the fields in the following list, including any options. 

**Products and buyers**  
**ISV** – Self  
**Products** – Choose from the list of products synced through the connector.  
**Buyer accounts** – Enter your own seller test account to validate the integration.

**Offer details**  
**Offer name** – Enter a custom name.  
**Offer description** – Enter a custom offer description.

**Service length or contract duration**  
Choose **New offer** then choose a service lent, such as 12 months.

**Offer dimensions**  
Choose the entitlement type that you want to offer.  
Add offer rates to or update existing rates of your chosen dimensions.  
To submit an offer in which any of the dimension rates are set at \$10, choose **I want to enable zero dollar pricing**.

**End User License Agreement (EULA)**  
Choose **Standard Contract for AWS Marketplace** or **Custom EULA**.   
If you choose **Custom EULA**, you must configure an Amazon S3 bucket to store the custom EULA when you onboard the AWS seller account. For more information, refer to [Creating your first Amazon S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#creating-bucket) in the *Amazon Simple Storage Service User Guide*.

**Renewals**  
For **Is this offer intended to renew an existing paid subscription with an existing customer for the same underlying product?**, choose ** Yes** or **No**.

**Expiration information**  
Enter the offer expiration date. For subscription-type products, enter the subscription end date.

### Viewing and refreshing offer status
<a name="view-refresh-status"></a>

1.  Open the **Private Offers** tab. 

1.  From the **Private Offers** list, choose the **Private Offer Name**. 

1.  Choose **Refresh Offer Status**. The offer status appears at the bottom of the page. Available values: **PREPARING**, **APPLYING**, **SUCCEEDED**, or **FAILED**. 

**Note**  
The status can take up to two hours to change to **SUCCEEDED**.

### Modifying an offer's expiration date
<a name="modify-private-offer-expiration"></a>

1.  Open the **Private Offers** tab. 

1.  From the **Private Offers** list, choose the **Private Offer Name**. 

1.  Choose **Modify expiry/validity**. 

1.  Choose the new **Offer expiration date.** 

1.  Choose **Modify expiry/validity** to save your selection. 

### Modifying a private offer's expiration date
<a name="cancel-private-offer"></a>

 After you cancel a private offer, no new customers can subscribe to it. Customers with existing subscriptions will stay subscribed until their offer terms expire. 

1.  Open the **Private Offers** tab. 

1.  From the **Private Offers** list, choose the **Private Offer Name**. 

1.  Choose **Cancel Offer**, then choose **Cancel offer** again to confirm the cancellation. 

### Copying a private offer's URL
<a name="copy-offer-url"></a>

1.  Open the **Private Offers** tab. 

1.  From the **Private Offers** list, choose the **Private Offer Name**. 

1.  Locate the **Offer status** section towards the bottom of the page. 

1.  Choose **Copy URL**. 

### Cloning a private offer
<a name="clone-private-offer"></a>

 Cloning a private offer creates a new offer that contains data from the cloned offer. If you enable the connector's **Add seller account to buyer list** setting, the connector automatically inserts the AWS seller account number in the **Buyer Accounts** list. This helps the seller refer to the private offer from the buyer's perspective. 

1.  Open the **Private Offers** tab. 

1.  From the **Private Offers** list, choose the **Private Offer Name**. 

1.  Choose **Clone Offer.** 

1.  Edit the **Offer Details** section of the cloned offer as necessary. 

1.  If necessary, re-upload the EULA. 

1.  Choose **Create offer**. 

### Using the FPS utility to populate payment schedules
<a name="use-fps"></a>

 When creating an AWS Marketplace private offer, use the FPS utility to populate payment schedules with fixed costs and equal payment gaps. 

**To use FPS**

1.  On the **Payment Schedule** tab, choose **Yes** to generate a payment schedule with fixed cost and equal payment gaps. 

1.  Choose a **Payment Frequency** of 15, 30, 90. or 365 days. 

1.  Choose **Remainder Options**. To place the remainder of the uneven payment on the first payment, choose **Frontload**. To place the remainder on the last payment, choose **Backend**. 

1.  For **Calendar Options**, to configure the payment frequency to include weekend days, choose **Calendar Day**. To not include weekend days, choose **Business Day**. 

1.  Enter the payment amount (sum of all payments), payment start date (first payment), and approximate payment end date. 

1.  Choose **Generate Schedule**. 

1.  Review and edit the payment amounts and invoice dates as needed. 

# Managing AWS Marketplace agreements
<a name="crm-manage-agreements"></a>

The following topics explain how AWS sellers and Channel Partners can use the CRM connector to access agreements and view agreement details.

**Topics**
+ [](#crm-refresh-agreements)

## 
<a name="crm-refresh-agreements"></a>

As a best practice, refresh your agreements list before you take any other action. 

**To refresh agreements**

1.  Sign in to your Salesforce organization as an AWS Marketplace user. 

1.  Choose **App Launcher**, then search for and select **AWS Partner CRM connector**. 

1.  Choose the **Agreements** tab. 

1.  Choose **Refresh Agreement**. 

1.  In the **Refresh Agreements** dialog box, choose **Proceed**. 

   The system syncs the agreements for all private offers and displays them on the **Agreements** tab.

### Creating agreement-based offers
<a name="crm-agreements-based-offers"></a>

 AWS Marketplace sellers and Channel Partners can create agreement-based offers, then use them to generate new private offers based on the existing agreements. Agreement based offers are subject to certain limitations. For more information, refer to [Amending agreements in AWS Marketplace](marketplace/latest/userguide/private-offers-upgrades-and-renewals.html) in the *AWS Marketplace User Guide*. 

**Note**  
As a best practice, refresh the data on the **Shared resale authorization** tab before creating an agreement-based offer.

 **To create an agreement-based offer** 

1. Sign in to your Salesforce organization as an AWS Marketplace user.

1. From the App Launcher, search for and choose **AWS Partner CRM connector**.

1. Choose the **Agreements** tab.

1. In the **Agreements** list, choose the agreement name.

1. Choose **Create Agreement Based Offer**.

1. On the **Create an Offer** form, complete the required fields.

1. Choose **Create offer**.

# Managing AWS Marketplace resale authorizations
<a name="crm-resale-authorizations"></a>

As an ISV, you can authorize an AWS Channel Partner to resell your products by creating a resale authorization directly within Salesforce using the AWS Partner CRM Connector. The connector allows you to specify a fixed rate per product dimension, which creates a wholesale price for the AWS Channel Partner. The Channel Partner can then mark up the wholesale price when creating private offers for buyers. The connector enables you to manage the entire lifecycle of resale authorizations, from creation and modification to deactivation and cloning, so you can handle all aspects of your channel partner relationships without leaving Salesforce.

**Topics**
+ [Using the Resale authorization tab](#crm-resale-auth-tab)
+ [Creating an AWS Marketplace resale authorization](#crm-resale-auth-creation-steps)
+ [Required fields for resale authorizations](#crm-required-resale-fields)
+ [Deactivating a resale authorization](#crm-deactivate-resale-auth)
+ [Cloning resale authorizations](#crm-clone-resale-auth)
+ [Viewing and refreshing resale authorization status](#crm-view-refresh-auth-status)

## Using the Resale authorization tab
<a name="crm-resale-auth-tab"></a>

You use the **Resale authorization** tab in the AWS Partner CRM connector to create and manage resale authorizations.

**To start the tab**

1.  Sign in to your Salesforce organization as an AWS Marketplace user. 

1.  Choose **App launcher**, then search for and select **AWS Partner CRM connector**. 

1.  Choose the **Resale authorization** tab. 

## Creating an AWS Marketplace resale authorization
<a name="crm-resale-auth-creation-steps"></a>

**Note**  
 When creating a resale authorization, dynamic fields will appear based on your chosen product, and the selections you make during the creation process. 

The following steps explain how to create an AWS Marketplace resale authorization You have the option of creating a flexible payment schedule and a future dated agreement based on the type of product selected. You can create a resale authorization and publish it to a channel partner, or save an authorization as a draft without releasing it.

1.  On the **Resale Authorizations** tab, choose **New**. 

1. On the **Create a Resale Authorization** page, complete the required fields.

1. (Optional) Create a flexible payment schedule

   1.  In the **Product and Buyers** section, choose **Enable fixed units and allow buyers to pay for this product in installments**. 

   1. Configure payments in the **Payment Schedule** section. 

1. Choose **Create resale authorizations** to publish the offer to the channel partner.

   —OR—

   Choose **Save as draft** to complete the offer later without releasing it to the channel partner.

## Required fields for resale authorizations
<a name="crm-required-resale-fields"></a>

You must complete the following fields and any options as listed here.

**Products and buyers**  
**Products** — Choose from the list of available products synched through the CRM connector.

**Buyer Accounts**  
A comma-separated list of target buyer accounts for offer.

**Resale Authorization Details**  
**Resale Authorization Name** – Enter a name  
**Description** – Enter a description (viewable by the AWS Channel Partner)  
**Reseller Account** – Enter the 12-digit AWS account number of the reseller.

**Resale Authorization Name**  
Enter a name.

**Description**  
Enter a description (viewable by the AWS Channel Partner).

**Reseller Account**  
Enter the 12-digit AWS account number of the reseller.

**Contract duration (if applicable)**  
**Standard**  
**Custom Duration** – When you choose this option, enter **Custom Service Length**.

**Product pricing (if applicable)**  
+ Choices include **Usage model** or **Contract model**.
+ For **Contract model**, you can enable FPS in the **Buyers and Products** section.

**Legal terms**  
+  Choose **Standard Contract for AWS Marketplace** or **Custom EULA for End User License Agreement** for the buyer. 
+  Optionally, choose **Reseller Contract for AWS Marketplace** or **Custom Contract for Reseller Agreement**. 
+ For **Custom EULA (Buyer)** and **Custom Contract (Reseller)**, ensure that you have configured the Amazon Simple Storage Service bucket for the seller account to store the custom EULA. 

**Product dimensions**  
Add or update offer rates and units to the chosen dimensions.  
Choose **I want to enable zero-dollar pricing** to create a resale authorization in which any of the dimension rates are set to **\$10**.

**Resale Authorization Duration**  
Choose **Duration Type** and provide details for the **Resale Authorization Expiration Date** as required. 

**Renewals**  
For **Is this offer intended to renew an existing paid subscription with an existing customer for the same underlying product?**, choose **Yes** or **No**, and enter the required details. 

## Deactivating a resale authorization
<a name="crm-deactivate-resale-auth"></a>

1.  On the **Resale Authorizations** tab, choose **New** 

1.  Under **Resale Authorization Name**, choose the name of the authorization that you want to deactivate. 

1.  Choose **Deactivate Resale Authorization**. 

1.  Choose **Refresh Resale Authorization Status**. 

   The authorization status changes to **Restricted** when the deactivation succeeds.

## Cloning resale authorizations
<a name="crm-clone-resale-auth"></a>

You clone a resale authorization when you need to change the details of an existing authorization. For example, you clone an authorization when you need to provide a different EULA to a partner.

**To clone a resale authorization**

1.  From the **Resale Authorizations** tab, choose **New** 

1.  From the list of resale authorizations, choose the **Resale Authorization Name**. 

1.  Choose **Clone Resale Authorization** 

1.  Review and edit the **Resale Authorization Details** section of the cloned authorization. If you use a custom EULA or a custom contract (reseller agreement) in the cloned authorization, you must re-upload the legal terms. 

1.  Choose **Create Resale Authorization**. 

## Viewing and refreshing resale authorization status
<a name="crm-view-refresh-auth-status"></a>

1. On the **Resale Authorizations** tab, choose **New** 

1. From the **Resale Authorizations** list, choose the **Resale Authorization Name**. 

1. Choose **Refresh Resale Authorization Status**. 

1. Choose **Proceed**. 

1. Repeat steps 5 and 6 until the resale authorization status changes to **SUCCEEDED**. 

Allow a 30 seconds before choosing the **Refresh Resale Authorization Status** button again. This ensures that each refresh request is fully processed and preserves data integrity by preventing potential record duplication.

# Using an earlier CRM with Amazon S3 integration
<a name="custom-integration-using-amazon-s3"></a>

**Important**  
AWS Partner Central stopped accepting new requests for this type of integration in 2024. This section only applies to partners using Amazon S3.   
To get started with a new custom CRM integration, refer to the [AWS Partner Central API Reference](https://docs.aws.amazon.com/partner-central/latest/APIReference/aws-partner-central-api-reference-guide.html).

**Topics**
+ [Upgrading from a CRM with Amazon S3 integration to the Partner Central API](upgrade-crm-api.md)
+ [Configuring the connector for a CRM with Amazon S3 integration](s3-config.md)
+ [Integration resources](resources.md)
+ [Lead sharing](custom-lead-sharing.md)
+ [Opportunity sharing](custom-opportunity-sharing.md)
+ [Field mapping](custom-field-mapping.md)
+ [Creating synchronization schedules](crm-connector-scheduling.md)
+ [Best practices](best-practices.md)
+ [Quotas](quotas.md)
+ [Version history](version-history.md)
+ [FAQs](faqs.md)

# Upgrading from a CRM with Amazon S3 integration to the Partner Central API
<a name="upgrade-crm-api"></a>

**Note**  
The topics in this section assume you've completed the prerequisites for an AWS Partner Central integration, an AWS Marketplace integration, or both. For more information, refer to [Integration prerequisites](crm-integration-setting-up.md) and [Getting started](crm-integration-getting-started.md) earlier in this guide.

The steps in the following sections explain how to upgrade from an earlier CRM with Amazon S3 integration to the AWS Partner Central API. Upgrading removes the need for several ACE requirements, such as the need for an integration user, and the need to set up synchronization schedules.

**Topics**
+ [Upgrade features](api-upgrade-features.md)
+ [Set up named credentials](set-up-api-credentials.md)
+ [Add the Approval Status button to the Opportunity Lightning Record page](add-approval-status-button.md)
+ [Add the remaining buttons](add-remaining-buttons.md)
+ [Refresh the Solution Offerings tab](refresh-the-solutions-from-the-solution-offerings-tab.md)

# Upgrade features
<a name="api-upgrade-features"></a>

The upgrade provides the following features:
+ You no longer need an ACE integration user permission set in Salesforce.
+ You no longer need to create a schedule for ACE opportunities in Salesforce.
+ The Partner Central API also provides a set of buttons that enable the following actions on your **Opportunity Lightning Record** page:
  + **Approval Status** – Accept or reject AWS Referred Opportunities.
**Note**  
This button replaces the **Partner Acceptance Status** list. You must use the button to accept AWS-originated opportunities. 
  + **Share with AWS** – Create and update opportunities.
  + **Associate or Disassociate** – Associate or disassociate an opportunity with Partner Solutions, AWS products, and AWS Marketplace offers throughout the opportunity lifecycle.
  + **Assign** – Reassign an opportunity to another user in your Partner Central account.

  You add the buttons after you set up named credentials. The following topics explain how to complete those tasks.

# Set up named credentials
<a name="set-up-api-credentials"></a>

To upgrade to the Partner Central API, you first set up named credentials. The CRM connector uses your Salesforce organization credentials to authenticate with Partner Central.

**To set up credentials**

1. Sign in to Salesforce as a system administrator.

1. Under **Named credentials**, choose **New earlier**.

1. In the **New named credential** form, enter the values from the following table.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/set-up-api-credentials.html)

1.  Choose **Save**. 

1.  Return to the **AWSGuided setup** page. In the **Authentication details** section, choose **Review** and confirm the credentials. 

# Add the Approval Status button to the Opportunity Lightning Record page
<a name="add-approval-status-button"></a>

The following steps explain how to add the **Approval Status** button to your Opporuntiy Lightning Record page. The button enables you to see the status of your opportunities as they go through the approval process.

**To add the button**

1. Sign in to your Salesforce organization as a system administrator. 

1. Navigate to the **Opportunity Lightning Record** page. 

1. Choose the highlighted panel to open the properties pane.

1. Select **Upgrade now**.

1. Select **Migrate existing actions**, then select the page layout from which you want to upgrade the actions.

    —OR— 

   Start from scratch and add the actions manually.

1. From the **Actions** list, choose **Approval Status**.

1. Choose **Save**.

**Note**  
You only need to complete steps 4 and 5 once. 
The **Approval status** button only appears in the **Opportunity Lightning Record** page for AWS-referred opportunities. 

# Add the remaining buttons
<a name="add-remaining-buttons"></a>

You can add some or all of the buttons listed in the following steps.

**To add the buttons**

1. Sign in to your Salesforce organization as a system administrator. 

1. Navigate to the **Opportunity Lightning Record Page**. 

1. Choose the highlighted panel to open the properties pane.

1. Choose **Assign from Actions**, then select some or all of the following items:
   + **Share with AWS**
   + **Associate or Disassociate**
   + **Assign**

   For more information about what each button does, refer to [Upgrade features](api-upgrade-features.md), earlier in this guide.

1. Choose **Save**.

# Refresh the Solution Offerings tab
<a name="refresh-the-solutions-from-the-solution-offerings-tab"></a>

The following steps explain how to refresh the data on the **Solution Offerings** tab.

1.  Sign in to your Salesforce organization as a system administrator. 

1.  Navigate to the **Solution Offerings** tab. 

1.  Select **Refresh Solutions**. 

# Configuring the connector for a CRM with Amazon S3 integration
<a name="s3-config"></a>

**Important**  
Starting in 2024, AWS Partner Central made this integration type unavailable to new users. 

**Note**  
The topics in this section assume you've completed the prerequisites for an AWS Partner Central integration, an AWS Marketplace integration, or both. For more information, refer to [Integration prerequisites](crm-integration-setting-up.md) and [Getting started](crm-integration-getting-started.md) earlier in this guide.

The deprecated CRM with Amazon S3 integration uses an Amazon S3 bucket to transfer leads and opportunities . We recommend using the Partner Central API integration as shown in the previous section to create and manage opportunities. However, you can use this configuration if you want to use the connector to manage leads in Salesforce.

**Topics**
+ [Entering connection authentication details](#apn-s3-authentication-details)
+ [Entering system configuration settings](#apn-s3-config-settings)
+ [Testing the connection](#apn-s3-testing)
+ [Sending and receiving opportunities and leads](#sending-receiving-opportunities-leads)
+ [Production checklist](ace-production-checklist.md)
+ [Upgrading AWS Partner CRM connector to the new data model](connector-upgrade-plan.md)
+ [Sandbox testing with the custom ACE opportunity and ACE lead objects](custom-ace-opportunity.md)
+ [Linking AWS Marketplace private offers to ACE opportunities](#linking-private-offers-to-ace)

## Entering connection authentication details
<a name="apn-s3-authentication-details"></a>

Partners start the integration process by entering the details needed to connect to their Amazon S3 endpoint. Follow each set of steps in the order listed, and complete each set before proceeding to the next one.

The following tasks are performed from the **AWS guided setup** tab. For information about using the tab, refer to [Using guided setup](use-guided-setup.md) earlier in this guide.

**To enter the authentication details**

1. In Salesforce, open the **AWS guided setup** tab. For information about opening that tab, refer to [Using guided setup](use-guided-setup.md) earlier in this guide. 

1. Expand **Step 1: AWS connection authentication details** and choose **Start.**

1. On the **Named credentials** page, choose **New earlier**.

1. In the **New named credential** form, enter the values from the following table.


| **Field** | **Value** | 
| --- | --- | 
| Label | APN API Connection  | 
| URL | [https://s3.us-west-2.amazonaws.com](https://s3.us-west-2.amazonaws.com) | 
| Identity type | Named Principal  | 
| Authentication protocol | AWS signature version 4  | 
| AWS access key ID | Cloud-Ops provides the ID during the prerequisite steps  | 
| AWS secret access key | Cloud-Ops provides the access key during the prerequisite steps  | 
| AWS Region | us-west-2  | 
| AWS service | s3  | 
| Generate authorization header | checked  | 
| Allow merge fields in HTTP header | unchecked  | 
| Allow merge fields in HTTP body | unchecked  | 

1. Choose **Save**. 

1. Return to the **AWSGuided setup** page. In the **Authentication details** section, choose **Review** and confirm the credentials. 

1. Keep the **AWSGuided setup** page open and go to the next steps.

## Entering system configuration settings
<a name="apn-s3-config-settings"></a>

The following steps explain how to enter the correct system configuration settings for the integration.

1. Expand **Step 2: System configuration settings** and choose **Start.** 

1. Locate the **AWS Partner CRM Connector Settings**, and choose **Manage**. 

1. Choose **New**, and then enter the required values from the following table.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/s3-config.html)

1. Choose **Save**. 

1. Return to the **AWSGuided setup** page. In the **Authentication details** section, choose **Review** and confirm the credentials. 

## Testing the connection
<a name="apn-s3-testing"></a>

Before testing the connection, make sure you complete the steps in the previous sections.

**To test the connection**

1. Expand **Step 3: Test configuration for APN API**.

1. Choose **Test**.

If the connection succeeds, you receive a confirmation message. 

## Sending and receiving opportunities and leads
<a name="sending-receiving-opportunities-leads"></a>

You send and receive opportunities and leads by synchronizing them with Partner Central. To synchronize an opportunity or lead, you must set the **Sync with Partner Central** field to **True**. Additional key fields for integration include the **Last APN Sync Date** and the **Eligible to Sync with APN** fields.

These fields are included for standard opportunities and leads. However, you must create and map them for any custom source objects.
+ **Sync with Partner Central** – Included in the app for standard opportunities and leads. If a AWS Partner chooses to map to custom objects, a custom boolean field must be created and mapped in the opportunity and lead mappings, respectively.
+ **Last Sync Date with APN** – Indicates the last time the record was successfully sent to or received from APN. This field is autoset when the record is successfully sent to APN or an update is received from APN.
+ **Eligible to Sync with APN** – A formula field that determines if the record is targeted to be sent to APN in the next scheduled job. Calculated based on whether the record was modified since the last time the outbound schedule ran, and it was updated by a user other than the designated integration user for the AWS Partner's organization.

# Production checklist
<a name="ace-production-checklist"></a>

Follow these steps to complete the production installation of your AWS Partner CRM connector.

1. Confirm that you completed the [onboarding process](https://docs.aws.amazon.com/partner-central/latest/crm/crm-integration-getting-started.html) for the CRM integration. In [stage 6](https://docs.aws.amazon.com/partner-central/latest/crm/stage-6-production-approval.html) of this process, you set up your production environment and perform data migration so you can manage opportunities and leads through the integration. 

1. Install and configure the CRM connector. For more information, refer to [Installing the connector](install-connector.md).

1.  Map opportunities and lead objects by choosing one of the following mapping options. For reference, see this list of [required fields](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Fields.csv) on GitHub.
   + Use the AWS ACE opportunity custom object provided with AWS Partner CRM connector to log opportunities and share them with AWS. Using this option, you can automatically map AWS fields to Salesforce fields.
   + Use the standard Salesforce object and map the required AWS fields.
   + Use an ACE custom opportunity object. You first create a workflow to populate an intermediate table of ACE opportunity objects and then map the Salesforce fields to AWS.

1. For additional details and guidance about mapping options, refer to [Mapping ACE objects](crm-connector-mapping.md).

1. (Optional) Set up inbound and outbound synchronization schedules between the AWS Partner Network and Salesforce. For details, refer to [Creating synchronization schedules](crm-connector-scheduling.md).

1. To validate a partner-originated opportunity in production, raise a [support case](https://docs.aws.amazon.com/partner-central/latest/crm/crm-integration-faq.html#troubleshooting) with Partner Central Operations (PCO) in your Partner Central account. In this process, you create a dummy opportunity, sync it with AWS, and ask the AWS support agent to confirm that AWS received the opportunity. At the end of testing, ask your AWS support agent to reject the opportunity request so you can delete it from your side.

1. (Optional) Perform data backfill. This process ensures that both AWS Originated and Partner Originated opportunity referrals can be identified during future updates. For more information, refer to [Stage 6: Production approval](https://docs.aws.amazon.com/partner-central/latest/crm/stage-6-production-approval.html) in the CRM onboarding process.

1. Activate the production integration to allow the exchange of files through the Amazon S3 bucket. For details, refer to [Stage 7: Launch](https://docs.aws.amazon.com/partner-central/latest/crm/stage-7-launch.html).

# Upgrading AWS Partner CRM connector to the new data model
<a name="connector-upgrade-plan"></a>

**Important**  
Test and approve the new data model upgrade in your sandbox Salesforce organization before upgrading your production environment. For the new data model and changes between the old and new models, refer to the following [aws-samples/partner-crm-integration-samples](https://github.com/aws-samples/partner-crm-integration-samples/tree/main/opportunity-samples) on GitHub:  
**Opportunity-FieldsAndStandardValues-DiffWithPrevVersion-V14.3.xlsx**
**Opportunity-Fields.xlsx**
**Opportunity\$1-\$1StandardValues.xlsx**

## Prerequisites
<a name="connector-upgrade-prereqs"></a>
+ Use field definitions for new data model guidelines of the ACE CRM integration, and migrate any required open opportunities and leads to the new data model.
+ Add or remove columns in your custom or standard objects (objects used in mapping).
+ Ensure that you're using version 2.0 or later of the AWS Partner CRM connector.

**To upgrade to the new data model**

1. Sign in to your Salesforce organization as a system administrator.

1. Deactivate any active schedules.

1. Choose **Setup**, **Custom Settings**, **AWS Partner CRM connector Settings**, and then update the version to **2.0** or later.
**Note**  
Starting with version 2.0, the **Version** field is mandatory. This field specifies the payload version that partners use to interact with the CRM Integration. When partners move to version 2.0, they must fully adopt its specifications. Reverting to previous versions isn't permitted.

1. Choose the **ACE Mapping** tab.

1. Create, review, and update all required field mappings and details. For sandbox testing, use the custom ACE opportunity and ACE lead object to test the new data model features. For more information, refer to [Sandbox testing with the custom ACE opportunity and ACE lead objects](custom-ace-opportunity.md).

1. Activate schedules for opportunities and leads.

1. Review the ACE sync logs for synchronization errors and make any corrections.

1. Review the synced opportunities and leads to ensure that the data transformation is accurate. Alternatively, review the opportunities and leads in ACE to ensure that the new data model changes are captured accurately.

1. Follow your product deployment process to migrate the changes to your production Salesforce environment.
**Note**  
If you need help, refer to [Getting help](getting-help.md).

# Sandbox testing with the custom ACE opportunity and ACE lead objects
<a name="custom-ace-opportunity"></a>

**Note**  
If you are an existing CRM connector user, refer to [Upgrading AWS Partner CRM connector to the new data model](connector-upgrade-plan.md).

1. Sign in to your Salesforce organization as a system administrator.

1. Choose **Setup**, **Custom settings**, **AWS Partner CRM connector settings**, and update version to **2**.

1. Choose the **ACE Mapping** tab.

1. For **Opportunity**, map it to the **ACE opportunity** custom object.

1. Choose **Auto Map ACE object**.
**Note**  
If you want to upgrade to the new version of the CRM connector that want to use the custom ACE opportunity and ACE lead objects from the connector for sandbox testing, we recommend manually deleting any available records from the `Field Mappings` and `Field Mapping Details` objects from the database before using the Auto Map ACE object feature. You only need to do this once.

1. Review field mappings and field mapping values for picklist and multipicklist.

1. Activate schedules for opportunities and leads.

1. Review the ACE Sync Logs for synchronization errors and make any required corrections.

1. Review the synced opportunities and leads to ensure the data transformation is accurate. Alternatively, review the opportunities and leads in ACE to ensure that the new data model changes have been accurately captured.

## Viewing sync log detail records for ACE opportunities
<a name="sync-log-detail-records"></a>

 You can view sync log details for AWS-delivered ACE opportunities on the **Related** tab on the ACE opportunity record. 

**Note**  
These steps only apply to AWS-delivered ACE opportunity objects. If you map to standard or custom objects in your Salesforce organization, you can view sync log details on the **ACE Sync Log** tab.

1. Sign in to your Salesforce organization.

1. In the **App Launcher**, choose **AWS Partner CRM connector**.

1. Choose the **ACE Opportunities** tab.

1. Choose an ACE opportunity record.

1. Choose the **Related** tab to view details including **Sync Log Name**, **Status**, **Error Message**, and **Created Date**.

## Linking AWS Marketplace private offers to ACE opportunities
<a name="linking-private-offers-to-ace"></a>

You can link private offers directly from the AWS delivered ACE opportunity record page.

1. Sign in to your Salesforce organiziation.

1. In the **App Launcher**, choose **AWS Partner CRM connector**.

1. Choose the **ACE Opportunities** tab.

1. Choose an ACE opportunity record.

1. Choose **Link Private Offer**.

1. In **Offer ID Look Up**, choose the private offer.

1. Choose **Save**.

# Integration resources
<a name="resources"></a>

AWS provides the following resources to help you create a custom integration.

**Topics**
+ [Field definitions](#custom-field-definitions)
+ [Standard values](#standard-values)
+ [Sample inbound files](#sample-inbound-files)
+ [Sample outbound files](#sample-outbound-files)
+ [Sample processed results](#sample-processed-results)
+ [Sample test cases](#sample-test-cases)
+ [Sample code snippets](#sample-code-snippets)

## Field definitions
<a name="custom-field-definitions"></a>

The links in the following sections list all the fields, explaining their data types, usage, and any constraints or formatting rules that apply. They serve as a reference to ensure that when partners and AWS exchange data, it’s correctly formatted and understood.

The following links take you to GitHub.
+ [Opportunity](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Fields.csv)
+ [Lead](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Leads-Fields.csv)

## Standard values
<a name="standard-values"></a>

These lists outline the standard values and enumerations for various fields. They help to maintain consistency in the data exchanged, and ensure that both parties have a common understanding of the values used.

The following links take you to GitHub.
+ [Opportunity](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity_-_StandardValues.csv)
+ [Lead](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Lead_-_StandardValues.csv)

## Sample inbound files
<a name="sample-inbound-files"></a>

The following sample files show the structure of the JSON payload for a file sent from a partner to AWS.

The following links take you to GitHub.
+ [Opportunity](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Create-Inbound-Sample.json)
+ [Lead](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Lead-Update-Inbound-Sample.json)

## Sample outbound files
<a name="sample-outbound-files"></a>

The following sample files show the structure of the JSON payload for a file sent from AWS to a partner.

The following links take you to GitHub.
+ [Opportunity](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Outbound-Sample.json)
+ [Lead](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Lead-Outbound-Sample.json)

## Sample processed results
<a name="sample-processed-results"></a>

The following files show a typical result after AWS processes a payload sent by a partner. 

The following links take you to GitHub.
+ [Opportunity](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Results-Success-Sample.json)
+ [Lead](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Lead-Results-Success-Sample.json)

## Sample test cases
<a name="sample-test-cases"></a>

The following links take you to GitHub.
+ [Opportunity](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity%20-%20Testing%20Scenarios.xlsx)
+ [Lead](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Lead%20-%20Testing%20Scenarios.xlsx)

## Sample code snippets
<a name="sample-code-snippets"></a>

The following links take you to GitHub.
+ [ace\$1read\$1s3.py](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/ace_read_s3.py)
+ [Apex\$1Sample\$1REST\$1API\$1Code.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/Apex_Sample_REST_API_Code.cls)
+ [S3\$1Authentication.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/S3_Authentication.cls)
+ [Sample\$1AceOutboundBatch.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/Sample_AceOutboundBatch.cls)
+ [SFDC apex s3 sample.txt](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/SFDC_apex_s3_sample.txt)
+ [Apex\$1get\$1files\$1from\$1s3\$1ace\$1partner\$1test.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/Apex_get_files_from_s3_ace_partner_test.cls)
+ [s3\$1ace\$1partner\$1test.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/s3_ace_partner_test.cls)

# Lead sharing
<a name="custom-lead-sharing"></a>

## How AWS shares leads
<a name="how-aws-shares-leads"></a>

1. **Incremental exports**: Amazon Web Services (AWS) exports new leads (and updates) referred by AWS, on an hourly basis.

1. **File creation**: AWS generates lead files adhering to a specific format. For detailed file specifications, refer to [Field definitions](resources.md#custom-field-definitions).

1. **File upload**: The lead files are uploaded to the `lead-outbound` folder.

## Consuming leads from AWS
<a name="consuming-leads-from-aws"></a>

To effectively consume leads from AWS, build custom integration with the following functionalities.

1. **File retrieval**:
   + Regularly scan the `lead-outbound` folder using a scheduled job at an interval you choose.
   + Retrieve the lead files for processing.

1. **Data transformation and mapping**:
   +  After you read the content of each file, transform and map the data to the lead records in your customer relationship management (CRM) system. 
   + For guidance on field mapping, refer to [Field mapping](custom-field-mapping.md).

1. **Lead identification**:
   + Uniquely identify each lead using either `partnerCrmLeadId` or `apnCrmUniqueIdentifier`.
   + If `partnerCrmLeadId` is blank and `apnCrmUniqueIdentifier` is present, the lead is a new referral from AWS Partner Network (APN) Customer Engagement (ACE).
   + If both identifiers are present, the record is treated as an update from ACE.

1. **Lead ingestion**:
   + Ingest new leads or update existing leads in the CRM system.

1. **File management**:
   + After you successfully process each lead and the complete file data, delete the files from the outbound folder.
   + Each file is automatically archived in the `lead-outbound-archive` folder.

**Integration and code reference**:
+ For reading files uploaded to the Amazon Simple Storage Service (Amazon S3) bucket, you can use AWS Lambda or read directly from your CRM system.
+ Use the sample codes below for Lambda and Salesforce REST API to validate and update CRM records.
  + **Lambda for validating files**: [ace\$1read\$1s3.py](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/ace_read_s3.py).
  + **Salesforce REST API**: [Apex\$1Sample\$1REST\$1API\$1Code.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/Apex_Sample_REST_API_Code.cls).
+ If you use a CRM system other than Salesforce, you must provide code specific to your system to update your data.

## Sharing updates on leads with AWS
<a name="sharing-updates-on-leads-with-aws"></a>

1. **Identify leads**: Locate the leads with updates to be shared with AWS.

1. **Data transformation**: Convert the data into the AWS format, as outlined in [Field definitions](resources.md#custom-field-definitions).

1. **File creation**:
   + Generate lead files in JSON format.
   + Append a timestamp to each file, ensuring all file names are unique and follow the format: `{name}_MMDDYYYY24HHMMSS.json`.

1. **Authenticate and upload**:
   + Authenticate to the ACE Amazon S3 bucket.
   + Upload the file to the `lead-inbound` folder. All files shared with AWS are automatically archived in the `lead-inbound-archive` folder.
   + When you upload files to S3, ensure you provide full access to the bucket owner.

     ```
     aws s3 cp example.jpg s3://awsexamplebucket --acl bucket-owner-full-control
     ```

     See a sample result of running this command in ["Results Sample file.json"](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Lead-Results-Success-Sample.json).

1. **File processing**:
   + Upon receipt, AWS automatically processes the files.
   + The results of the processing is uploaded to the `lead-inbound-processed-results` folder in the Amazon S3 bucket. This includes the status of successes and errors, as well as any error messages for each lead.
   + These processed results are also archived in the `lead-inbound-processed-results-archive` folder.
   + For more information, refer to the [Technical FAQ—leads and opportunities](technical-faq-leads-and-opps.md).

1. **Response handling**:
   + You must develop logic to consume these responses, review erroneous records, correct any errors, and resend the data to ACE.
   + You can find sample errors in the FAQ and Troubleshooting sections.
   + To upload a file to Amazon S3 from CRM:
     + Reference the version of the AWS signature.
     + Use an HTTPS request to upload the file.
   + For reference, use the following files to upload a file to the Amazon S3 bucket:
     + **For authenticating an S3 bucket**: [S3\$1Authentication.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/S3_Authentication.cls)
     + **For uploading files to an S3 bucket**: [Sample\$1AceOutboundBatch.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/Sample_AceOutboundBatch.cls)
   + **NOTE:** Files must not exceed 1 MB in size, and duplicate files won’t be processed.

# Opportunity sharing
<a name="custom-opportunity-sharing"></a>

## How AWS shares opportunities
<a name="how-aws-shares-opportunities"></a>

1. **Incremental exports**: Amazon Web Services (AWS) exports new opportunities (and updates) referred by AWS, on an hourly basis.

1. **File creation**: AWS generates opportunity files that adhere to a specific format. For detailed file specifications, refer to [Opportunity field definitions](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Fields.csv).

1. **File upload**: Opportunity files are uploaded to the `opportunity-outbound` folder.

## Consuming opportunities from AWS
<a name="consuming-opportunities-from-aws"></a>

To effectively consume opportunities from AWS, you need to build custom integration with these functionalities.

1. **File retrieval**:
   + Use a scheduled job to regularly scan the `opportunity-outbound` folder, at an interval you choose.
   + Retrieve the opportunity files for processing.

1. **Data transformation and mapping**:
   + After you read the content of each file, transform and map the data to the opportunity records in your customer relationship management (CRM) system.
   + For guidance on field mapping, refer to [Field mapping](custom-field-mapping.md).

1.  **Opportunity identification**:
   + Uniquely identify each opportunity using either `partnerCrmOpportunityId` or `apnCrmUniqueIdentifier`.
   + If `partnerCrmOpportunityId` is blank and `apnCrmUniqueIdentifier` is present, the opportunity is a new referral from AWS Partner Network (APN) Customer Engagement (ACE).
   + If both identifiers are present, the record is treated as an update from ACE.

1. **Opportunity ingestion**: Ingest new opportunities or update existing opportunities in the CRM system.

1. **File management**:
   + After you successfully process each opportunity and the complete file data, delete the files from the outbound folder.
   + Each file is automatically archived in the `opportunity-outbound-archive` folder.

**Integration and code reference**:
+  For reading files uploaded to the Amazon Simple Storage Service (Amazon S3) bucket, you can use AWS Lambda or read directly from your CRM system.
+ Use the sample codes below for Lambda and Salesforce REST API to validate and update CRM records.
  + **Lambda for validating files**: [ace\$1read\$1s3.py](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/ace_read_s3.py).
  + **Salesforce REST API**: [Apex\$1Sample\$1REST\$1API\$1Code.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/Apex_Sample_REST_API_Code.cls).
+ If you use a CRM system other than Salesforce, you must provide code specific to your system to update your data.

## Sharing updates to opportunities with AWS
<a name="sharing-updates-to-opportunities-with-aws"></a>

1. **Identify opportunities**: Locate the opportunities with updates to be shared with AWS.

1. **Data transformation**: Convert the data into the AWS format, as outlined in [Field definitions](resources.md#custom-field-definitions).

1.  **File creation**: 
   + Generate opportunity files in JSON format.
   + Append a timestamp to each file, ensuring all file names are unique and follow the format: `{name}_MMDDYYYY24HHMMSS.json`.

1.  **Authenticate and upload**: 
   + Authenticate to the ACE Amazon S3 bucket.
   + Upload the file to the `opportunity-inbound` folder. All files shared with AWS are automatically archived in the `opportunity-inbound-archive` folder.
   + When you upload files to S3, ensure you provide full access to the bucket owner:

     ```
     aws s3 cp example.jpg s3://awsexamplebucket --acl bucket-owner-full-control
     ```

      See a sample result of running this command in [Opportunity Results Success Sample.json](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Results-Success-Sample.json).

1. **File processing**: 
   + Upon receipt, AWS automatically processes the files.
   + The results of the processing is uploaded to the `lead-inbound-processed-results` folder in the Amazon S3 bucket. This includes the status of successes and errors, as well as any error messages for each opportunity.
   + These processed results are also archived in the `opportunity-inbound-processed-results-archive` folder.
   + For more information, refer to the [Technical FAQ—leads and opportunities](technical-faq-leads-and-opps.md).

1. **Response handling**:
   + You must develop logic to consume these responses, review erroneous records, correct any errors, and resend the data to ACE.
   + You can find sample errors in the FAQ and Troubleshooting sections.
   + To upload a file to Amazon S3 from CRM:
     + Reference the version of the AWS signature.
     + Use an HTTPS request to upload the file.
   + For reference, use the following files to upload a file to the Amazon S3 bucket: 
     + **For authenticating an S3 bucket**: [S3\$1Authentication.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/S3_Authentication.cls)
     + **For uploading files to an S3 bucket**: [Sample\$1AceOutboundBatch.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/Sample_AceOutboundBatch.cls)
   + **NOTE:** Files must not exceed 1 MB in size, and duplicate files won’t be processed.

# Field mapping
<a name="custom-field-mapping"></a>

Field mapping is an essential step in the integration process where partners align their customer relationship management (CRM) system’s fields with those defined by Amazon Web Services (AWS). This ensures that both parties accurately exchange and understand data. Below are guidelines to assist in this process.

## Mandatory field mapping
<a name="mandatory-field-mapping"></a>
+ Map each mandatory field to its corresponding field in your CRM system. It’s essential for successful data exchange when you ensure all required fields are mapped. For more information, refer to [Field definitions](resources.md#custom-field-definitions)
  + [Opportunity](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Fields.csv)
  + [Lead](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Leads-Fields.csv)

## Handling optional fields
<a name="handling-optional-fields"></a>
+ Understand the role of optional fields in the integration process. Decide if you want to map these fields based on your business requirements, and be aware of any possible implications from leaving them unmapped.

## Value mapping
<a name="value-mapping"></a>
+ Align each field value in your CRM with the required AWS Partner Network (APN) Customer Engagement (ACE) list value, as specified in [Field definitions](resources.md#custom-field-definitions). This is important to maintain data consistency and integrity.

## Data type and format validation
<a name="data-type-and-format-validation"></a>
+ Verify that the data types and formats of the fields in your CRM system align with those specified in the AWS *Field definitions*. It’s essential to maintain consistency in data types and formats to prevent data corruption and ensure seamless integration.

## Field length and limitations
<a name="field-length-and-limitations"></a>
+ Notice field length restrictions and other limitations. Ensure that the data from your CRM system fits into the corresponding fields in AWS without being truncated or causing errors.

## Data type and format validation
<a name="data-type-and-format-validation-1"></a>
+ Verify that the field data types and formats in your CRM system align with those specified in [Field definitions](resources.md#custom-field-definitions). It’s crucial to prevent data corruption and ensure seamless integration with consistency in data types and formats.

## Periodic review and update
<a name="periodic-review-and-update"></a>
+ Regularly review and update your field mappings to accommodate changes in your CRM system or AWS requirements. This proactive approach ensures ongoing data exchange accuracy and efficiency.

## Field mapping documentation
<a name="field-mapping-documentation"></a>
+ Maintain comprehensive field mapping documentation. This practice aids in troubleshooting, future updates, and ensuring clarity in how data is transferred between systems.

## Testing and validation
<a name="testing-and-validation"></a>
+ Conduct thorough field mappings testing to validate that data is being transferred and transformed accurately. Address any discrepancies or issues immediately to ensure data integrity.

## Handling unwanted overwrites
<a name="handling-unwanted-overwrites"></a>
+ To prevent AWS data from overwriting specific CRM fields, consider the following: 
  + Creating a custom CRM field for the data you want to protect.
  + Having this custom field reviewed by a sales representative.
  + Once the custom field is approved, adding it to the opportunity record and pipeline.
+ This is particularly important for fields like `MRR` or `Stage`, especially if they signify that a product has launched.

## Managing downstream dependencies
<a name="managing-downstream-dependencies"></a>
+ If there are downstream dependencies in your system that rely on data exchange, consider the following:
  + Creating new fields in your CRM to accommodate the AWS data.
  + Realigning your business processes as necessary to ensure seamless integration and data flow.

# Creating synchronization schedules
<a name="crm-connector-scheduling"></a>

**Note**  
The topics in this section assume you've completed the prerequisites for an AWS Partner Central integration, an AWS Marketplace integration, or both. For more information, refer to [Integration prerequisites](crm-integration-setting-up.md) and [Getting started](crm-integration-getting-started.md) earlier in this guide.

You can create inbound and outbound synchronization schedules between Salesforce and AWS Partner Central. The steps in the following sections explain how.

**Topics**
+ [Prerequisites](#scheduling-prerequisites)
+ [Creating a schedule](#creating-a-schedule)
+ [Deactivating a scheduled job](#deactivating-a-scheduled-job)
+ [Viewing all schedules](#viewing-all-schedules)

## Prerequisites
<a name="scheduling-prerequisites"></a>

Ensure that you complete the following before creating a synchronization schedule:
+ [Map](crm-connector-mapping.md) all required fields on at least one object, opportunity, or lead.
+ Create a [system integration user](#system-integration-user) in Salesforce.

### Creating a system integration user
<a name="system-integration-user"></a>

Before you can create a synchronization schedule, you must use Salesforce to create a system integration user with APN integration permissions. To create synchronization schedules, you must sign in to Salesforce as the system integration user. Creating a schedule without APN integration user permissions can break the APN integration.

**To create a system integration user**

1. Sign in to your Salesforce organization as a system administrator.

1. Create a user in your Salesforce organization. Assign a profile to the user with access to the required objects in your Salesforce organization. For more information, refer to [Add a single user](https://help.salesforce.com/s/articleView?id=sf.adding_new_users.htm).

1. Assign the user the **APN Integration User** permissions set. For more information, refer to [Assign permission set to users](https://help.salesforce.com/s/articleView?id=sf.assign_permission_set_to_user.htm).

## Creating a schedule
<a name="creating-a-schedule"></a>

After completing the [prerequisites](#scheduling-prerequisites), you can create synchronization schedules between Salesforce and APN.

**To create a synchronization schedule with APN**

1. Sign in to Salesforce as a user with system integration user permissions.

1. On the **Schedules** tab, choose **New**.

1. Choose the objects to schedule. You can set up schedules for leads and opportunities, or for a single object.

1. Choose the schedule frequency, from a minimum of every five minutes to a maximum of once a day.

1. Choose **Schedule**.

**Note**  
Only one schedule per object can be active at one time. Creating a new schedule for the same object deactivates the existing schedule.
To disable the inbound integration when creating a schedule, choose **Disable Inbound Integration, Schedule**.
Creating a schedule without APN integration user permissions can break the APN integration.

## Deactivating a scheduled job
<a name="deactivating-a-scheduled-job"></a>

1. On the **Scheduling** page, choose **Deactivate All Jobs** to turn off any active schedules.

1. Proceed through the confirmation screen to deactivate the synchronization schedule.

## Viewing all schedules
<a name="viewing-all-schedules"></a>

 From the **Schedules** tab, use the list view filters to toggle between **Active**, **Inactive**, and **All synchronization** schedules. 

# Best practices
<a name="best-practices"></a>

 Use these best practices to optimize your custom integration development and maintenance.

## General best practices
<a name="general-best-practices"></a>

1. Map all *mandatory* fields because they are the required fields in the AWS Partner Network (APN) Customer Engagement (ACE) submission form.

1. Connect with your current ACE Pipeline Manager user to understand what the process looks like. Capture any unique processes/field uses, so you can build it into your experience.

1. Consider creating separate sales pipeline stages for Amazon Web Services (AWS)-reported sales stages (example: Stage, Target Close Date, Expected Monthly AWS revenue, Next Steps). If we have different stage definitions, we might override your sales stages. When you create separate sales stages, it allows you to manage your pipeline appropriately, but still have visibility into what AWS is projecting.

1. For partner referred opportunities, the ACE team must approve/reject them before we accept any updates.

1. For AWS referred opportunities, the partner must accept or reject the opportunities.

## Data exchange protocols
<a name="data-exchange-protocols"></a>

1. **Input conventions**: Separate multi-select picklist entries with semicolons and omit spaces.

1. **Attention to detail**: Field names and values are case-sensitive, so maintain accuracy.

1. **Deletion procedures**: Execute field removal by transmitting the value `null` for the chosen field.

1. **Synchronization**: The synchronization processes operate on an hourly basis, causing potential delays in data reflections. Updates to AWS can take up to one hour to reflect in the AWS customer relationship management (CRM). Avoid sending multiple documents per hour.

## Field-specific best practices
<a name="field-specific-best-practices"></a>

1. **Inbound modifications**: To protect the integrity of your data, disable modifications for fields such as `stage`, `closedDate`, and `closedLostReason`. To track AWS values without affecting your local Salesforce values, use these read-only fields: `awsStage`, `awsCloseDate`, and `awsClosedLostReason`.

1. **Customer mapping and validation**: Ensure customer website accuracy because it’s pivotal for AWS CRM mapping. Pair it with the customer name for superior CRM account mapping.

1. **Project description clarity**: Furnish a clear description detailing customer challenges and solution alignments. AWS uses this to validate the opportunity.

1. **Provisioning**: (Optional) When you provision end-customer contact specifics, it enables AWS to retrace leads and campaigns. This leads to enhanced funding verdicts.

## Additional best practices
<a name="additional-best-practices"></a>

1. Adhere to the latest payload field definition guidelines.

1. Maintain sandbox bucket naming consistency with the specified format.

1. Use the recommended naming pattern for the production bucket.

1. Prioritize sandbox environment testing before live deployment.

1. Maintain distinct identifiers for records between AWS and partner CRMs.

1. Post-processing, delete files in the outbound Amazon Simple Storage Service (Amazon S3) folder. Originals remain in the archives.

1. To prevent errors, set up field level validations at the source.

# Quotas
<a name="quotas"></a>

## Inbound file to Amazon Web Services (AWS)
<a name="inbound-file-to-aws"></a>


| Operation | Limit | 
| --- | --- | 
| Maximum opportunities | 500 per file | 
| Maximum file size | 1 MB | 
| Frequency of synchronization | Near real-time | 
| Maximum number of submitted files | 10,000 per 24-hour period | 

## Outbound file to partner
<a name="outbound-file-to-partner"></a>


| Operation | Limit | 
| --- | --- | 
| Maximum file size | 5 MB | 
| Frequency of synchronization | Hourly | 

# Version history
<a name="version-history"></a>

Current fields version: 14 (November 15, 2023)

The following table describes important changes to the custom integration fields for leads and opportunities after 2020. To be notified of future updates, subscribe to the RSS feed.


| Change | Version | Date | 
| --- | --- | --- | 
|  Update Amazon S3 quotas  | 14 | 1/17/2024 | 
|  **Changes to integration opportunity fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html)  | 14 | 11/15/2023 | 
|  **Changes to integration opportunity fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html)  | 13 | 03/29/2023 | 
|  **Changes to integration opportunity fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html) **Changes to standard values on opportunity:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html)  | 12 | 09/01/2022 | 
|  **Changes to integration opportunity fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html) **Changes to standard values on opportunity fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html)  | 11 | 03/21/2022 | 
|  **Changes to integration opportunity fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html) **Changes to standard values on opportunity:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html)  | 10 | 01/26/2022 | 
|  **Changes to standard values on lead fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html) **Changes to integration lead fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html) **Changes to integration opportunity fields:** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/partner-central/latest/crm/version-history.html)  | 9 | 9/16/2021 | 
|  Update Closed Lost reason codes  | 8 | 6/24/2021 | 

# FAQs
<a name="faqs"></a>

 Use these common questions and answers to assist in the custom integration. 

**Topics**
+ [General FAQ](general-faq.md)
+ [Technical FAQ—fields](technical-faq-fields.md)
+ [Technical FAQ—Amazon S3](technical-faq-s3.md)
+ [Technical FAQ—leads and opportunities](technical-faq-leads-and-opps.md)
+ [Technical FAQ—versioning and backward compatibility](technical-faq-versioning.md)

# General FAQ
<a name="general-faq"></a>

## How does the integration work?
<a name="how-does-the-integration-work"></a>

 **Q: Can I access the Amazon Simple Storage Service (Amazon S3) bucket used for sending and receiving the files?**

Yes. Partners can programmatically access the Amazon S3 bucket using the secret/access key of the AWS Identity and Access Management (IAM) that has access to the bucket. Partners won’t have console access to the Amazon S3 buckets because these buckets are in Amazon Web Services (AWS)’s own account. 

 **Q: What skill set does the partner's developer need?**

The partner’s developer needs to be familiar with their customer relationship management (CRM) system and Amazon S3. 

 **Q: Do the sample code files include complete code or does the partner have to write the code?**

The partner needs to write the code based on the provided sample code files. 

 **Q: If the partner develops their solution in Python, Golang, or any other language, does AWS Partner Network (APN) Customer Engagement (ACE) provide any software development kit (SDK) in those languages for this integration?**

No. 

 **Q: What is the sync process from the Amazon S3 bucket to internal ACE?**

Every hour, a batch process runs to pick up the files and synchronize information. Any update the AWS sales team makes on the record can take up to one hour to be sent to the partner’s bucket. Partners may receive an email notification about updates immediately, but the updates from AWS may still be delayed by one hour. 

 **Q: What is the frequency of lead and opportunity file uploads by ACE?**

ACE sends the leads and opportunities data every one hour. 

 **Q: Is there a sandbox environment for ACE?**

Yes. We do have a sandbox environment for ACE, but we can’t provide access to partners due to security reasons. Raise a support case on Partner Central if you want to have new opportunities or leads pushed into your bucket. 

 **Q: How do we maintain identifiers across the partner’s CRM and APN?**

To provide more flexibility for our partners, we use two sets of identifiers in our system. 

1.  `apnCrmUniqueIdentifier`: AWS manages this identifier. It starts with `OXXXXXX` for opportunities and `LXXXXXX` for leads. 

1.  `PartnerCrmUniqueIdentifier`/`partnerCrmLeadId`: The partner manages this identifier on opportunities and leads, respectively, within their CRM. Partners should add this identifier while ingesting new opportunities to trace updates back to their CRM. 

 When an opportunity is sent without `apnCrmUniqueIdentifier` or `partnerCrmUniqueIdentifier`, AWS treats it as a new opportunity and assigns a new `apnCrmUniqueIdentifier` for the opportunity. 

 When an opportunity is sent with a `apnCrmUniqueIdentifier` or `partnerCrmUniqueIdentifier`, AWS treats it as an update action and updates the existing opportunity with the payload data. 

 **Q: How do I prevent duplicate records from getting created in both systems?**

From the partner CRM side, there must be a unique identifier for each record that’s sent to ACE, which is called `partnerCrmUniqueIdentifier`. Similarly, ACE also maintains a unique identifier for each record, which is called `apnCrmUniqueIdentifier`. When the data is sent, both ACE and the partner have to include these two fields, which helps to identify if the record is a new opportunity (if blank) or an existing opportunity (if populated). 

# Technical FAQ—fields
<a name="technical-faq-fields"></a>

 **Q: Does the integration support CSV format?**

No. The integration accepts only JSON file formats. 

 **Q: When do the files have to be deleted from outbound folders?**

Delete the files only after you successfully process them. 

 **Q: If I accidentally delete the files from outbound folders, where can I find the original files?**

The files are available in the `opportunity-outbound-archive` and `lead-outbound-archive` folders. 

 **Q: What do I do for support during development?**

For assistance during development, reach out to AWS Partner Network (APN) support on Partner Central. 

 **Q: What is the difference between `opportunityOwnerName` and `opportunityOwnerEmail`?**
+ `opportunityOwnerName`: The opportunity owner’s name in the partner organization. This needs to be a Partner Central user.
+ `opportunityOwnerEmail`: The opportunity owner’s email in the partner organization. This needs to be a Partner Central user. If not provided, the opportunity is created with the Partner Central Alliance Lead as the owner.

 **Q: What's the time zone for all the date fields (`targetCloseDate`, `lastModifiedDate`, `createdDate`, and `acceptBy`)?**

The time zone for the date fields is Greenwich Mean Time (GMT). 

 **Q: Are the inbound JSON files versioned?**

No. Amazon Web Services (AWS) doesn’t support versioning of the files. APN Customer Engagement (ACE) processes the file immediately after receiving and then deletes the file after successful processing. If we receive the same file name again, it’s rejected. 

 **Q: What fields in the Amazon Simple Storage Service (Amazon S3) JSON file indicate the creation and latest update date of a particular lead and opportunity?**

`createdDate` and `lastModifiedDate`. 

 **Q: How do you determine if an opportunity is new or existing?**

The field `PartnerCrmUniqueIdentifier` is a unique identifier on each opportunity that we require from the partner. This identifier must be defined in the source CRM of the partner's system. We use this to determine if an opportunity exists in AWS. If it exists, we update the opportunity with the shared information. If not, we create a new opportunity.

 When we send data to the partner, we include both `PartnerCrmUniqueIdentifier` and `apnCrmUniqueIdentifier`. If the opportunity shared by AWS is being sent for the first time, you won’t see any value for `PartnerCrmUniqueIdentifier`. This helps you to treat the opportunity as new from ACE. Once you ingest it into your CRM, you send the updates back to us with both `PartnerCrmUniqueIdentifier` and `apnCrmUniqueIdentifier`. 

 **Q: Is it possible to have more than one outbound and result JSON file in Amazon S3?**

 Yes. Sometimes we may generate more files in the outbound folder. Similarly, if you send files to the inbound folder, we process them and keep the results files in the result folder. You must tag or delete the result files after processing. 

 **Q: Does the outbound file contain more than one record?**

Yes. The outbound file can contain multiple records. 

 **Q: If 20 inbound opportunities are sent in a single input JSON file under the opportunities section, and one of the opportunities doesn’t comply with APN standard, what happens?**

If the format is incorrect, regardless of the case, the entire file is rejected. If the format is correct but only one opportunity can’t be processed on our end, the results file includes all 20 opportunities and their status, along with the error message for the failed opportunity. 

 **Q: What are the key attributes to validate if the JSON file was processed successfully?**

These are the key attributes to help you understand if the JSON file processed successfully. 

```
{
  "inboundApiResults": [
    {
      "warnings": null,  // no warnings
      "partnerCrmUniqueIdentifier": "XXXX", //uniqueId from Partner side 
      "isSuccess": true, // file successfully processed
      "errors": null, //no errors reported 
      "apnCrmUniqueIdentifier": "OXXXX" //uniqueId from AWS side
    }
  ]
}
```

 **Q: What happens if I send an invalid JSON?**

You receive this error response: "`[{input JSON}]` is not of type `object`". 

 **Q: How many lead/opportunity records can be included in a single inbound JSON file?**

A maximum of 50 records can be in one file. 

# Technical FAQ—Amazon S3
<a name="technical-faq-s3"></a>

 **Q: Where can I get the Amazon Simple Storage Service (Amazon S3) REST API documentation?**

For more information, refer to the [Amazon S3 REST API Introduction](https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html). 

 **Q: How do I get the Amazon Web Services AWS Key Management Service (AWS KMS) key details to authenticate to access the Amazon S3 bucket?**

AWS Partner Network (APN) shares a policy that includes the key name. 

 **Q: How do I authenticate Amazon S3 from Salesforce.com (SFDC)?**

Use the sample code file [S3\$1Authentication.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/S3_Authentication.cls) to authenticate the Amazon S3 from SFDC. 

 **Q: How do I upload the file from the AWS software development kit (SDK) to S3?**

Use the following AWS CLI command to upload the file to S3. 

```
aws s3 cp example.json s3://awsexamplebucket/opportunity- inbound/filename.json --acl bucket-owner-full-control
```

 The sample code file [Sample\$1AceOutboundBatch.cls](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/code-snippets/Sample_AceOutboundBatch.cls) contains code to upload the data file from SFDC. 

 **Q: Who owns the Amazon S3 bucket?**

AWS owns and manages the Amazon S3 bucket. You have programmatic access to your own Amazon S3 bucket with the AWS Identity and Access Management (IAM) user. 

 **Q: Are there separate folders or buckets for receiving and sending files?**

There is one bucket with different folders for receiving and sending the files. Refer to the user guide for further details on the folders. 

 **Q: Do I need to access the Amazon S3 bucket using AWS Lambda, or can I access it directly using the customer relationship management (CRM) system?**

You can access it both ways. 

 **Q: Is the Amazon S3 bucket secured or encrypted?**

Yes. We enable the default encryption mechanism that Amazon S3 offers. 

 **Q: Is it possible to enable Amazon Simple Notification Service (Amazon SNS) listening to the Amazon S3 bucket, so I can only act on the event, instead of polling periodically?**

No. Currently, APN Customer Engagement (ACE) doesn’t support this feature. 

 **Q: What folders do I have access to and what is the purpose of each folder?**

You can find the list of Amazon S3 folders in [Integration prerequisites](crm-integration-setting-up.md). 

# Technical FAQ—leads and opportunities
<a name="technical-faq-leads-and-opps"></a>

## Send and receive leads and opportunities
<a name="send-and-receive-leads-and-opportunities"></a>

 **Q: Is there a file naming convention?**

Each file name needs to be unique. We recommend the file name `PartnerProvided FileName+{timestamp}.json`. 

 **Q: What's the structure of the results?**

Sample files for the results (success and error) can be downloaded from the following locations: 
+  [Lead Results Success Sample.json](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Lead-Results-Success-Sample.json) 
+  [Opportunity Results Success Sample.json](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Results-Success-Sample.json) 
+  [Lead Results With Errors Sample.json](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/lead-samples/Lead-Results_With-Errors-Sample.json) 
+  [Opportunity Results With Errors Sample.json](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Results_With-Errors-Sample.json) 

 **Q: What's the naming convention of the results?**

`PartnerProvidedFileName_result.json` 

 **Q: What if I submit a second JSON file with the same name?**

We won’t process the file, and the file is moved to the archive folder. 

 **Q: What is the inbound file size limit?**

The inbound file size limit is 1MB. 

 **Q: Is there a maximum number of opportunities and leads that can be batched into one JSON file?**

Given the 1MB limit, we recommend you have one opportunity or lead per file. 

 **Q: I’m getting an access denied error message, so I’m not able to upload the files. What should I do?**

Partners receive an *Access denied* message for two reasons. 

1.  You uploaded the file into the `outbound` folder instead of the `inbound` folder. Upload the file into the `inbound` folder. 

1.  You need to provide a access control list (ACL). Use the following Amazon Web Services (AWS) CLI command for uploading the data file: 

```
aws s3 cp example.json s3://awsexamplebucket --acl bucket-owner-full-control
```

 **Q: What happens if files with extensions such as `.pdf`, `.docx`, or anything other than `.json` are uploaded?**

We reject the files and generate a `*.error.json` file with the reason details. 

 **Q: What do I do after I receive a data issue error message in production?**

1. If the data needs to be corrected in the partner’s customer relationship management (CRM) system, after you correct the data, send the revised file to Amazon Simple Storage Service (Amazon S3). 

1. If any clarifications are required for the data, reach out to your Partner Development Manager (PDM). 

1. For any other technical support, raise an AWS Partner Network (APN) support case in the APN Portal. 

 **Q: Where can I find the results files and how long are they available?**

The results files are in the `lead-inbound-results` and `opportunity-inbound-results` folders. They're available until you delete them. You can delete the files after successful pull. 

 **Q: If I need to find a results file after I delete it, where can we find it?**

You can find the results files in the `lead-inbound-results-archive/YYYY/MM/DD` and `opportunity-inbound-results-archive/YYYY/MM/DD` folders. 

 **Q: If there is any failure in APN processing the file, how am I notified?**

APN has alarms that automatically create Sev2 tickets to track the processing errors. We review, resolve, and communicate these to partners. 

 **Q: What fields can be updated after the opportunity is launched?**

The following fields can be updated only by Independent Software Vendor (ISV) Accelerate Partners:
+ `isThisForMarketplace` 
+ `isNetNewBusinessForCompany` 
+ `deliveryModel` 
+ `awsFieldEngagement` 
+ `additionalComments` 

 **Q: I received a *Record not editable* error. What does it mean?**

When a you send a new partner referred opportunity, it goes through the validation process and the APN Customer Engagement (ACE) team must approve or reject it. While the opportunity is in review and has not yet been validated, you can’t update the record, and you receive this error. 

 **Q: What happens if there is no activity on the my side (example: I'm not processing the file or not sending any inbound opportunity)?**

If you don't send any information or aren't processing the files we provide, we currently don’t have a mechanism in place to alert you. We encourage you to monitor your system to ensure the information is flowing to APN. 

 **Q: How soon are the JSON results available in the results folder following the submission of a new/updated inbound opportunity/lead?**

The processing is almost real time. You should receive the files in less than five minutes. 

 **Q: If I send an inbound opportunity CRM that doesn’t comply with the format/length restriction of the APN standard, how does the system handle it? Does it generate the error report?**

If the file isn't in the field definition format, the result file from APN calls out the file. 

 **Q: I don’t have an AWS account ID at the time of launching. What do I do?**

Per the ACE process, `Launched` means workload completed and billing started. This requires an AWS account ID. For more information, refer to the [ACE Program FAQs](https://partnercentral.awspartner.com/partnercentral2/s/resources?Id=0690h000003xjjXAAQ). 

 **Q: Following User Acceptance Testing (UAT), how should the historical data be handled during the move to production?**

By default, when any updates happen in ACE, we send those opportunities to the Amazon S3 bucket. For historical data that you don’t want to process, you need to provide the `partnerCrmUniqueIdentifier` with dummy values such as `X0001, X0002….X000N` in the extract for what you don’t want to process in your system. You need to write code to recognize these identifiers and process them accordingly. The rest of the opportunities provide the correct `partnerCrmUniqueIdentifier` value. This ensures that you have full control on what to process and what not to process in your system. 

 **Q: Does the outbound file contain more than one record?**

Yes. The outbound file can contain more than one record. 

 **Q: Why does the data send *Accept to view* for some fields?**

For an AWS referred opportunity or lead, all PII fields are masked with the label *Accept to view* until the opportunity or lead is accepted by you. Once accepted, you receive all data fields in the next sync cycle. 

 **Q: What do I do when a new AWS referred opportunity or lead is synced for the first time?**

When a new opportunity or lead is synced for the first time, you need to accept or reject it to get additional data (example: customer contacts). 

## Creating and updating opportunities/leads
<a name="creating-and-updating-opportunitiesleads"></a>

 **Q: How do I ingest new *Partner Referred (Originated)* opportunities into ACE through the integration?**

To create new opportunities in ACE through the integration, you need to ingest the required opportunity information in the defined JSON format into the `opportunity-inbound` folder. AWS processes this information, creates a new opportunity in ACE, and shares results of a successful/failed create operation in the `opportunity-inbound-processed-results` folder. 

 **Q: How does the integration differentiate between new opportunity submissions and updates?**

The field `PartnerCrmUniqueIdentifier` on each opportunity is a required unique identifier required. This identifier must be defined in the your system source CRM. AWS uses this to determine if an opportunity already exists in ACE. If it's available in ACE, we use the information shared to update the opportunity, but if it's not available in ACE, we use the information shared to create a new opportunity. 

 **Q: If I’ve already implemented the update functionality through the integration, what do I need to do to use the integration to submit (create) new opportunities?**

You need to make the following changes to the existing integration: 

1.  Start ingesting new opportunities for creation in the `opportunity-inbound` folder. Provide updates in the same folder. 

1.  Ensure that the mandatory fields required to create are available in the Opportunity JSON shared. 

1.  Verify each new opportunity has a unique `PartnerCrmUniqueIdentifier` that doesn’t exist in ACE/Partner Central. An important go-live best practice is to map and update the existing data in ACE to each `PartnerCrmUniqueIdentifier` in your CRM so we don’t create duplicates when we receive updates. For assistance, contact ACE. 

 **Q: As part of the go-live process, how do I update existing opportunities in ACE with my `PartnerCrmUniqueIdentifier`?** 

 The ACE team supplies you with a list of all open opportunities to aid in preparation for the production launch. You must map these existing opportunities in ACE to their respective `PartnerCrmUniqueIdentifier`, and return the updated file to ACE for integration into AWS’s CRM. 

 If you choose to sync only a subset of the opportunities AWS provides, you must develop logic to bypass AWS updates for any opportunities you don’t want to process. This approach should also be applied to future opportunities, post-onboarding. You must supply the associated `partnerCrmUniqueIdentifier` for opportunities that need alignment across both CRMs. Additionally, you should indicate which opportunities you won’t be updating (example: Marking closed-lost or closed-won opportunities) to exclude them from updates. It’s important that all open/active opportunities that AWS shares, and you accept, are assigned a `partnerCrmUniqueIdentifier`. 

 **Q: Can I update only specific fields in the opportunity or lead?**

Yes. You can provide only the fields that require updates, along with the necessary identifiers. 

 **Q: Is it possible to change the *ApnCrmUniqueIdentifier***?

No. This identifier remains constant for AWS and uniquely identifies each opportunity. 

 **Q: What if I provide an incorrect *partnerCrmUniqueIdentifier***?

If you provide an incorrect identifier, a new opportunity is created. Ensure accuracy to avoid data duplication. 

 **Q: Can I update opportunities that AWS submitted?**

Yes. You can update opportunities AWS submitted using the correct `partnerCrmUniqueIdentifier`. 

 **Q: How soon can I expect results for submitted opportunities?**

The processing is almost real time, and results are usually available within a few minutes in the `opportunity-inbound-processed-results` folder. 

 **Q: What should I do if there are processing errors for opportunities submitted?**

Review error details in the results files, address issues, and seek further assistance from the ACE support team. 

 **Q: Can I delete an opportunity through the integration?**

No. Direct deletion is not supported. You can update an opportunity to reflect a *Closed* status. 

 **Q: What does the *Record not editable* error mean?**

This error occurs if you try to update an opportunity in ACE review. These opportunities can’t be edited until validated. 

 **Q: What if don't send updates or new opportunities?**

No new data is received and processed if you don't send updates or new opportunities through the integration. 

 **Q: How long are the results files available?**

Results files are available for a reasonable duration. You should retrieve and manage them promptly. 

# Technical FAQ—versioning and backward compatibility
<a name="technical-faq-versioning"></a>

 **Q: What is a payload in Amazon Web Services (AWS) data exchange?**

A payload is a structured piece of data formatted in JSON, sent either inbound to AWS or outbound from AWS. Each key in this JSON structure is referred to as a *field*, and each field has an associated *value.* 

 **Q: How is the payload version determined?**

Payload version is specified within the `version` field of the payload itself. Payloads adhering to field definition v13 are considered Payload Version 1.0, while those following the format defined in field definition v14 or higher are referred to as Payload Version 2.0. 

 **Q: What does backward compatibility mean in this context, and how is it handled?**

Backward compatibility ensures that existing opportunities don’t fail when new and mandatory fields are introduced in newer payload versions. AWS maintains this by auto-assigning default values to fields required in the new version. You might notice values in the AWS Partner Network (APN) Customer Engagement (ACE) UI that you did not explicitly provide through the Customer Relationship Management (CRM) Integration. Details and conditions for each field are explained in the field description or additional details about the field. 

 **Q: Is backward compatibility a permanent feature?**

No. Backward compatibility is time-bound, designed to provide flexibility for you to plan and implement upcoming changes. It stops working beyond a specified cut-off date, which will be announced later in the year as part of a wider launch. 

 **Q: What happens when I start sending payloads with version 2.0?**

Once you send a payload with version 2.0, the system assumes that all necessary changes have been implemented, and validations for the new payload version apply to all subsequent changes. It’s essential that you don't implement features partially between version 1.0 and version 2.0 payloads. 

 **Q: Can I revert back to payload version 1.0 after updating to version 2.0?**

No. Transitioning to payload version 2.0 is a one-way process. Once you update to version 2.0, you can't revert back to version 1.0 of the payload. 

# Getting help
<a name="getting-help"></a>

For help with a CRM integration, submit a support case in AWS Partner Central.

**To submit a case**

1. Sign in to [AWS Partner Central](https://partnercentral.awspartner.com/APNLogin).

1. From the top menu, choose **Support**, **Contact Support**.

1. On the [AWS Partner Support](https://partnercentral.awspartner.com/partnercentral2/s/support) page, choose **Open New Case**.

1. On the **Open New Support Case** page, choose **CRM Integration**.

1. Complete the form and choose **Submit**. 

# AWS Partner CRM connector FAQ
<a name="crm-connector-faq"></a>

The topics in this section help answer frequently asked questions about AWS Partner CRM integration and using the CRM connector.

**Note**  
The questions and answers in this FAQ assume that you use Salesforce. For more information about using Salesforce, see the [Salesforce help](https://help.salesforce.com/s/).

**Topics**
+ [General questions](#general-questions)
+ [Setup issues](#setup-issues)
+ [Mapping issues](#mapping-issues)
+ [Synchronization and validation issues](#synchronization-validation)

## General questions
<a name="general-questions"></a>

Expand the following sections for more information about using the AWS Partner CRM connector.

### How do I get started with the AWS Partner CRM connector?
<a name="how-to-get-started"></a>

Contact your partner development manager (PDM) or your AWS point of contact. Your PDM will verify eligibility, help set up the IAM user required for authentication and submit the request internally to set up the Amazon S3 bucket required for you to exchange files. After you have access to the Amazon S3 bucket, you can install the connector and set up the integration by following the instructions in the user guide.

If you already have an AWS Partner ACE integration, [install the connector from the Salesforce AppExchange](install-connector.md), then follow the instructions in [Configuring the connector for a CRM with Amazon S3 integration](s3-config.md).

### Why move to version 3?
<a name="why-move"></a>

Version 3 provides real-time opportunity updates and eliminates the need for schedules. It also provides a set of buttons that enable partners to accept or reject leads and opportunities, update them, and send them to AWS. For information about installing version 3, refer to [Available features](crm-connector-feature-list.md) earlier in this guide.

### What is the latest version of connector?
<a name="latest-version"></a>

Version 3.0.0. You can find it in the Salesforce App Exchange.

### What does it cost to set up the AWS Partner CRM connector?
<a name="setup-costs"></a>

The AWS Partner CRM connector is available for free from the Salesforce App Exchange. It provides the following integration options:
+ A Partner Central API-based integration where the AWS service calls are free.
+ An Amazon S3-based integration where AWS hosts and bears the costs of an Amazon S3 bucket.
**Note**  
You can only use this option if you created a CRM with Amazon S3 integration prior to 2024.

Amazon EventBridge is also free because the events come from an AWS service. However, you may incur additional charges on your AWS account if you forward the events to other event buses from the primary event listener for additional processing.

For more information about the AWS Partner CRM connector, refer to [CRM connector overview](connector-overview.md). For more information about EventBridge, see [What is Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) in the *Amazon EventBridge User Guide*.

### What new features does version 3 provide?
<a name="new-features"></a>

For a list of the features provided by the AWS Partner CRM connector, refer to [Partner Central API features](crm-connector-feature-list.md#partner-central-api-features), earlier in this guide.

### Can I programmatically access the Amazon S3 bucket used to send and receive files?
<a name="s3-programmatic-access"></a>

Yes. Use the `AccessKey` and `SecretAccessKey` credentials of the IAM user from the [CRM Integration onboarding](https://partnercentral.awspartner.com/partnercentral2/s/acecrmintegration) request.

Remember, files are no longer be transferred using the Amazon S3 bucket once you port the integration over to the API based approach. However, leads are still shared using the Amazon S3 bucket based integration.

### I haven't moved to the Salesforce Lightning version. Can I still use the AWS Partner CRM connector?
<a name="sf-lightning-version"></a>

The AWS Partner CRM connector is designed for use with the Salesforce Lightning version, so version 2 may not function as intended.

### Can I use the package directly on my production systems?
<a name="prod-systems"></a>

We recommend that you install the package on production systems only after thoroughly testing in a sandbox environment.

### Who are the intended users of the AWS Partner CRM connector?
<a name="intended-users"></a>

AWS Partner CRM connector is designed for the following user personas:
+ Salesforce administrators or referral administrators who set up the connector.
+ Sales operations users who select, accept, and update opportunities and leads.

### I have an ACE integration. Can I move to the connector?
<a name="move-connector"></a>

Yes. AWS Partners that have an existing integration with ACE can move to the connector. Because the connector uses the same Amazon S3 bucket in the back end, complete the following steps:

1. Disconnect your custom app or solution from the Amazon S3 bucket.

1. Sign in to the AWS account to set up the integration. Obtain or create a secret key and access key for the IAM user that is authorized to access the Amazon S3 bucket. The user name must follow this format: `apn-ace-{partnerName}-AccessUser-prod`. For more information, see [Manage access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey) in the *AWS Identity and Access Management User Guide*.
**Note**  
If you're unable to find the AWS account, submit a [support request](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html).

1. To configure the connector to point to the Amazon S3 bucket, choose **Setup**, then **Named Credentials**, then **APN API connection**.

1. Submit a [support request](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html) to delete existing objects in the Amazon S3 bucket before scheduling a job in the connector. 
**Important**  
 You must complete this step before completing the integration and setting a synchronization schedule.

1. If the target object is different from the existing object, conduct a data backfill for your existing leads and opportunities. For more information, refer to the CRM integration *Production setup and backfill guide*.
**Note**  
During the integration switchover, all user updates queue in the `Outbound` folder of the Amazon S3 bucket. After the integration is live, the user-update records are synced.

### Is the AWS Partner CRM connector safe to use in my Salesforce organization?
<a name="connector-safe"></a>

The Salesforce application has gone through Salesforce and internal AWS security reviews. The Salesforce security review scans include the following threats:
+ Salesforce Object Query Language (SOQL) and SQL injection
+ Cross-site scripting
+ Non-secure authentication and access control protocols
+ Record-sharing violations and other vulnerabilities specific to the Salesforce platform

The code review uses the [Salesforce Code Analyzer](https://forcedotcom.github.io/sfdx-scanner/) to inspect Salesforce code. Salesforce Code Analyzer uses multiple code analysis engines, including PMD, ESLint, and RetireJS. It identifies a number of potential problems, from inconsistent naming to security vulnerabilities.

For more information on the review process, refer to [AppExchange Security Review](https://developer.salesforce.com/docs/atlas.en-us.packagingGuide.meta/packagingGuide/security_review_overview.htm) in the Salesforce documentation.

**Note**  
Partner applications are non-Salesforce.com applications as defined in the Salesforce Main Services Agreement. For more information, refer to the Salesforce [Agreements and Terms](https://www.salesforce.com/company/legal/agreements/).

Notwithstanding any security requirements set forth herein or any security review of a partner application that may occur, Salesforce makes no guarantees regarding the quality or security of any partner application, and customers are solely responsible for evaluating the quality, security, and functionality of partner applications to determine their adequacy and appropriateness for customers' installation and use.

While we cannot share specifically what our internal security audit covers, it is geared towards the native AWS components of the integration architecture, to which the Salesforce app connects and covers a number of different threat modeling scenarios such as man-in-the-middle attacks, distributed denial-of-service mitigations, and encryption standards. For more information, submit a support request.

## Setup issues
<a name="setup-issues"></a>

Expand the following sections for information about fixing set up issues with the AWS Partner CRM connector.

### What are the prerequisites for using the AWS Partner CRM connector?
<a name="set-up-prereqs"></a>

For information about the prerequisites for using the CRM connector, see the [Integration prerequisites](crm-integration-setting-up.md) earlier in this guide.

### How do I set up the named credentials for the package?
<a name="set-up-named-credentials"></a>

Follow these steps listed in [Setting up named credentials](guided-setup-apis.md#api-named-credentials) later in this guide.

### What are implications of moving from version 2 to version 3? Are there any breaking changes?
<a name="moving-implications"></a>

Moving from version 2 to version 3 of AWS Partner CRM connector has no immediate implications. All the functionality is backward compatible and works without interruptions.

For opportunity management, if you plan to use the new features, you may need to change some of your sales processes. You should evaluate the following changes and create a transition plan. 
+ Version 3 shares opportunities with AWS in real time. You no longer need to create schedules for sending opportunities to AWS. Opportunity owners on a partner's Salesforce instance must manually send data to AWS. Salesforce users need permissions to push opportunities to AWS. 
+ If you plan to use multi-object mapping, you need a transition plan for getting and posting data from new objects in your Salesforce instance. As a Salesforce admin, you should be aware of consequences of moving from object mapping with all fields mapped in a single object versus fields from a different object mapped to a single object. 

### Moving from an Amazon S3 connection (Asynchronous) to an API based connection (Synchronous), are there additional set up steps?
<a name="moving-from-s3"></a>

Yes. You *must* complete the following items:
+ In the general prerequisites, [Linking your AWS Partner Central and AWS Marketplace accounts](link-pc-mkt-accounts.md). 
+  Create named credentials for the new Partner Central APIs. For more information, refer to [Setting up named credentials](guided-setup-apis.md#api-named-credentials) earlier in this guide. 

### We have not moved to the Salesforce Lightning version. Can we still use the AWS Partner CRM Connector?
<a name="no-lightning"></a>

No. The connector is designed for use with the Salesforce Lightning version, and the app may not function as intended without it.

### We are reaching the limit on scheduled jobs in our Salesforce environment. Can we use external schedulers to trigger synching with AWS?
<a name="sf-job-limit"></a>

NEED TO VALIDATE - AWS Partner CRM Connector is managed package. You can create custom schedule invocation with third party apps against the `InboundSyncScheduler` and `OutboundSyncScheduler` apex classes. Note - With new API based integration, these classes might not work.

## Mapping issues
<a name="mapping-issues"></a>

Expand the following sections as needed for information about fixing object-mapping issues with the AWS Partner CRM connector. 

### How does multi object mapping work?
<a name="m-o-mapping"></a>

For version 3, partners can select the fields of referenced objects one level down while mapping. For example, if your Salesforce standard opportunity object has an internal reference pointing to an account object and a custom AWS sales object, you can select the standard opportunity as the parent object, then map fields from the account and sales objects.

### Can I select more than one object in the mapping tab?
<a name="select-multiple-objects"></a>

No. Instead, you map multiple fields from a selected object.

### How does the connector track the objects it uses to marshal data?
<a name="track-objects"></a>

Version 3 uses the `APNCrmUniqueIdentifier` field to reference a single parent object for mapping. The field contains the AWS record ID. After querying the parent object, the values of all other related objects are marshalled or unmarshalled based on the reference link from the parent object.

### Where can I find the types field for a particular field?
<a name="find-types-field"></a>

Version 3 of the connector works on the version 2 data model. For complete payload information, see the [AWS Partner CRM Integration Samples](https://github.com/aws-samples/partner-crm-integration-samples) on GitHub.

### Does the managed package help set up validation rules on my standard Salesforce object?
<a name="validation-rule-help"></a>

No. The package comes with the ACE custom opportunity object, which includes the field types and validation rules that run against the [standard ACE payload](https://github.com/aws-samples/partner-crm-integration-samples/blob/main/opportunity-samples/Opportunity-Outbound-Sample.json). You can copy the validation rules and fields from an ACE custom opportunity object in your standard object. *NEED TO VALIDATE* - With multi-object mapping, you can try adding a reference to an ACE opportunity object inside your standard opportunity object, then copying data into those fields using triggers to kick off validations.

### Why can't I edit the mapping for the Sync with AWS field?
<a name="cant-edit-mapping"></a>

The **Sync with AWS** checkbox determines whether a lead or opportunity synchronizes with AWS when the next scheduled job runs. The **Sync with Partner Central** field is included with the app for standard opportunities and leads. If your target object is a custom object, you must map the **Sync with AWS** field to a custom non-formula boolean field in each object.

### How does the Has Updates for AWS field work?
<a name="has-updates"></a>

The **Has Updates for AWS** formula field determines if a record is sent to AWS Partner in the next scheduled job. **Has Updates for AWS** is set to **True** when the following conditions are true:
+ **Last Modified Date** of the record is later than **Last APN Sync Date**.
+ **Last Modified User** is not the user that scheduled the integration jobs.

### Why can't I map the required APN CRM Unique Identifier field? The menu is unavailable, and I receive the message "No valid field to map"
<a name="map-unique-id-field"></a>

You must use the **Text** data type with a length of 18 characters to match the length of the **API** field.
+ Configuration: Text (18) (External ID) (Unique Case Insensitive)

### What are the connector app's troubleshooting checkpoints for outbound file push from Salesforce to AWS Partner?
<a name="troubleshooting-checkpoints"></a>

The app uses the following checkpoints:
+ **Sync to AWS** must be checked in order to sync with AWS.
+ **Has Update to AWS** must be checked in order to sync with AWS.
+ The user persona for creating the scheduling job must be different from the user persona for used to create and update leads or opportunities.
+ If the previous checks are true but the outbound batch still doesn't run, check the AWS Partner sync logs and add the **outbound IDs** column. Confirm that the sync log contains the ID of the opportunity that you want to push. If the sync log is stuck in the **API Success** state, delete the sync log record and try again.

  When **Expected Monthly AWS Revenue** is not an integer, such as `1041.67` instead of `1041`, the mismatch in data type causes a processing error. To resolve this, delete the sync log stuck in the **API Success** state and correct the data before the next job run.

### Can I configure filters and subscriptions to sync leads and opportunities? Can we add custom filters on status or stage fields?
<a name="configure-syncs"></a>

In Salesforce, you can create or update the formula field to add the dependency from the status or stage fields for a specific value. For example, you can set **Has Updates for AWS** to **True**. You can use the included field on the opportunity as a reference. The following example shows how:

```
IF(
   OR( 
      AND
      (
         OR(LastModifiedDate > awsapn_Last_APN_Sync_Date_c,LastModifiedDate = awsapn_Last_APN_Sync_Date_c),
         awsapn_Sync_with_Partner_Central_c, 
         NOT(ISNULL(awsapn_Last_APN_Sync_Date_c))
      ),
      AND(ISNULL(awsapn_Last_APN_Sync_Date_c),awsapn_Sync_with_Partner_Central_c)
   )
   , true , false
)
```

### Do I have to map the mandatory fields?
<a name="map-mandatory"></a>

Yes. You must map all mandatory fields in order to schedule an inbound or outbound integration job.

### Can I map lookup fields?
<a name="map-lookup-fields"></a>

We recommend reviewing the fields that you currently enter in Partner Central to determine the most relevant fields (in addition to the required fields). For a list of available fields and their purposes, see the *Field Definition Guide* included in the [ACE CRM Development Kit](https://partnercentral.awspartner.com/partnercentral2/s/resources?Id=0698a00000D11JsAAJ) on Partner Central.

### Should I update the record with derived fields or create them during the mapping process?
<a name="use-derived-fields"></a>

Complex logic and derivations should be done in your Salesforce organization based on your own business logic, then populate the mapped field based on it.

## Synchronization and validation issues
<a name="synchronization-validation"></a>

Expand the following sections as needed for information about fixing synchronization and validation issues with the AWS Partner CRM connector.

### What causes the STORAGE\$1LIMIT\$1EXCEEDED error?
<a name="storage-exceeded"></a>

This issue happens when you test the connector in a development organization with limited storage. To fix it, clear the sync logs from the console by running the following query:

`Listawsapn_Sync_Log_c syncLogs = [SELECT Id FROM awsapn_Sync_Log_c WHERE Status IN ('API Success', 'Processed') LIMIT 4000]; delete syncLogs;`

You can also set the sync log retention period to automatically clean up sync log records older than the retention period. For more information about setting the retention period, refer to 

### AWS referred leads or opportunities don't comply with the validation imposed on my custom object. How can I fix this issue?
<a name="validation-compliance"></a>

Some leads and AWS originated opportunities don't comply with the validation rules for each field. To allow partners to accept or reject such referrals, you can correct the data before accepting a record. To accept or reject an object that is non-compliant with the data validations, complete the following steps:

1. Navigate to the sync log details of the failed record.

1. Choose **Edit Payload** to access the JSON view.

1. Update the values of non-compliant fields.

1. Choose **Save Payload** to set up the record for sync for the next job.

If the record is accepted, you must repeat steps 1–4 again after receiving the remaining fields from AWS. For subsequent syncs, the corrected values are used. As an alternative, you can correct the values in the ACE pipeline manager on Partner Central.

### How often does AWS upload leads and opportunities?
<a name="upload-frequency"></a>

AWS uploads leads and opportunities to the Amazon S3 bucket every hour. As a result, actions that require a data update through the integration can take up to an hour to synchronize.

### Why do I get a setFieldLengthWarning message when using the mapping screen?
<a name="field-length-warning"></a>

The following warning appears when a user performing object mapping doesn't have read access to the required fields:

```
pe.setFieldLengthWarning()@ -
/modules/awsapn/fieldMappingRow.js:1:7831
set salesforceFields()@- /modules/awsapn/fieldMappingRow.js:1:5624
```

You must use a system administrator user with permissions to the source and target fields, or a user with the [APN integration permission set](crm-connector-pemissions-sets.md#integration-user).

### What do the Status and Purpose fields in the sync log mean?
<a name="status-purpose"></a>

To determine the state and action on each sync log record, refer to the tables in [Sync logs](crm-connector-sync-logs-and-reports.md#sync-logs).

### Do you provide auditing or archiving?
<a name="audit-archive"></a>

The sync log object tracks all inbound and outbound transactions. You can also specify a retention period for log records in the app configuration.

### Why do I get a throttling exception?
<a name="throttling"></a>

The Partner Central APIs have a [set of quotas](https://docs.aws.amazon.com/partner-central/latest/APIReference/quotas.html#understanding-and-managing-quotas) that ensure fair use and avoid service misuse. You might see the throttling exception when rate limiting kicks in after you reach a quota. Daily quotas reset on a rolling 24-hour cycle. If the default quotas do not meet your requirements, you can use the [Service Quotas page](https://console.aws.amazon.com/servicequotas/home?region=us-east-1#!/dashboard) to request a quota increase.

### I don't see the Send to AWS button on my standard opportunity
<a name="no-button"></a>

The **Send to AWS** button only appears for the **Partner referral** opportunity type.

# Release notes
<a name="crm-connector-release-notes"></a>

This section contains the release history for the AWS Partner Customer Relationship Management (CRM) Connector for Salesforce.

**Topics**
+ [Version 3.18 (April 16, 2026)](#3.18)
+ [Version 3.17 (March 31, 2026)](#3.17)
+ [Version 3.16 (February 26, 2026)](#3.16)
+ [Version 3.15 (February 6, 2026)](#3.15)
+ [Version 3.14 (December 17, 2025)](#3.14)
+ [Version 3.13 (October 30, 2025)](#3.13)
+ [Version 3.12 (September 16, 2025)](#3.12)
+ [Version 3.11 (September 10, 2025)](#3.11)
+ [Version 3.10 (August 6, 2025)](#3.10)
+ [Version 3.8 (April 17, 2025)](#3.8)
+ [Version 3.6 (March 18, 2025)](#3.6)
+ [Version 3.5 (January 22, 2025)](#3.5)
+ [Version 3.1 (December 2, 2024)](#3.1)
+ [Version 3.0 (November 14, 2024)](#version-3.0-november-14-2024)
+ [Version 2.2 (April 24, 2024)](#2.2)
+ [Version 2.1 (April 18, 2024)](#2.1)
+ [Version 2.0 (November 29, 2023)](#2.0)
+ [Version 1.7 (October 12, 2022)](#1.7)
+ [Version 1.6 (January 13, 2023)](#1.6)
+ [Version 1.5 (January 13, 2023)](#1.5)
+ [Version 1.4 (December 7, 2022)](#1.4)

## Version 3.18 (April 16, 2026)
<a name="3.18"></a>

AWS Partner CRM Connector version 3.18 contains the following bug fix and known issue.

### Bug fixes
<a name="bug-fixes-3.18"></a>
+ Fixed an issue where duplicate ACE Opportunity records were intermittently created when the **Solution offered** field was populated during opportunity creation, either via flow or manual entry. The duplicate record's name was set to the original record's ID, and the original record was not linked to AWS Partner Central. This issue affected connector versions 3.14–3.17

### Known issues
<a name="known-issues-3.18"></a>

**Validation rules remain active after upgrading from connector versions 3.14–3.17**

The validation rules `ACEOppNew_PreventUpdatesWhenPOSubmitted`, `ACEOpp_PreventUpdatesWhenPOSubmitted`, and `ACEOppNew_MandatorySolutionOffered` were originally shipped as active in a previous connector version. These rules were changed to inactive in the package source, but Salesforce managed package upgrades do not overwrite the active property on validation rules. This is expected Salesforce behavior — the `active` property is classified as subscriber-and-developer editable, meaning it is set only on initial install and is not updated during upgrades.

Any customer who installed the connector when these validation rules were active will still have them active after upgrading. This can cause `FIELD_CUSTOM_VALIDATION_EXCEPTION` errors that block updates and **Refresh from AWS** on ACE Opportunity records when ownership is Partner Referral and status is Submitted.

To resolve this issue, manually deactivate the validation rules in your Salesforce organization:

1. Navigate to **Setup** → **Object Manager** → **ACE Opportunity** → **Validation Rules**

1. Locate `ACEOppNew_PreventUpdatesWhenPOSubmitted`, `ACEOpp_PreventUpdatesWhenPOSubmitted`, and `ACEOppNew_MandatorySolutionOffered`

1. Edit each rule and uncheck **Active**, then save

## Version 3.17 (March 31, 2026)
<a name="3.17"></a>

AWS Partner CRM Connector version 3.17 contains the following features and improvements.

### New features
<a name="new-features-3.17"></a>

**EUR currency support for European Sovereign Cloud opportunities**
+ Partners can now create and manage opportunities using EUR currency for the European Sovereign Cloud (ESC) region
+ New **AWS Partition** field on the **ACE Opportunity** page to designate ESC opportunities
+ Currency fields automatically default to USD when no currency is specified
+ When the currency code is set to EUR, the AWS partition field value must be set to `aws-eusc`. EUR currency is only valid for the `aws-eusc` partition and cannot be used with any other partition

**Backfill tool — targeted backfill for S3-to-API migration**
+ New sync mode option: `Only refresh opportunities missing Last Modified Date`
+ Partners migrating from S3-based to API-based integrations can selectively backfill legacy opportunities without refreshing their entire pipeline. Deactivate all S3-based scheduled jobs before running the backfill (**Setup** → **Scheduled Jobs** → Delete jobs with `APN` prefix)
+ Added confirmation step to ensure S3-based scheduled jobs are deactivated before running backfill

### Bug fixes
<a name="bug-fixes-3.17"></a>
+ Fixed an issue where adding a solution or AWS product value using the field (instead of the **Associate** button) and then submitting the opportunity would fail validation, and the solution value would disappear on page refresh
+ Fixed an issue where certain picklist values containing special dash characters in **Closed Lost Reason** and **Sub Use Case** fields caused API errors when submitting opportunities. Existing data is automatically corrected on upgrade
+ Updated the `Unified Standard-ACE Sync Flow` template defaults: changed `Partner_Primary_Need_From_AWS` from "Do Not Need Support from AWS Sales Rep" to "Co-Sell - Architectural Validation", and added `solutionOffered` and `otherSolutionOffered` fields with default value "Other" to support solution tracking on ACE Opportunities
+ Relaxed the validation rule that prevented updates to ACE Opportunity records when ownership is Partner Referral and the opportunity status is Submitted. This was incorrectly blocking the connector from updating records during the sync process

## Version 3.16 (February 26, 2026)
<a name="3.16"></a>

AWS Partner CRM Connector version 3.16 contains the following features and improvements.

### Bug fixes
<a name="bug-fixes-3.16"></a>
+ Fixed an issue where solution fields were not persisting during opportunity creation. In version 3.15, when partners created opportunities with solution fields populated, the solutions were not being associated with the opportunity in AWS Partner Central. The connector now properly chains the CreateOpportunity and AssociateOpportunity API calls to ensure solutions are correctly associated during opportunity creation
+ Fixed a permission gap where the **Source Opportunity** field was missing edit permissions in the **APN Business Admin** permission set. This field, added in version 3.10 for the `Unified Standard-ACE Opportunity Sync Flow`, now has proper read and edit access, enabling business administrators to use automations that create ACE Opportunity records from Standard Opportunity records
+ Fixed an issue where postal code was incorrectly enforced as a mandatory field for all countries, including those without postal code systems (such as United Arab Emirates, Hong Kong, and Bonaire). The postal code field is now optional, aligning with the AWS Partner Central API specification and allowing partners to create opportunities for customers in countries that do not use postal codes

## Version 3.15 (February 6, 2026)
<a name="3.15"></a>

AWS Partner CRM Connector version 3.15 contains the following features and improvements.

### AWS Partner Central API
<a name="aws-partner-central-api-3.15"></a>

**Automatic AWS data sharing enhancement**
+ Enhanced automatic record synchronization with AWS to work seamlessly on both opportunity creation and updates
+ Eliminates the need for the `Sync ACE Opportunity to Partner Central API` flow for data sharing

**Refresh from AWS capabilities**
+ Added ability to refresh opportunity data directly from AWS Partner Central without the need for events
+ Allows partners to pull the latest updates from AWS Partner Central on demand through a button on the **ACE Opportunity** page layout
+ Ensures data consistency between Salesforce and AWS Partner Central

### Bug fixes
<a name="bug-fixes-3.15"></a>
+ Fixed an issue where opportunities with "Other" specified in the **Industry** field were not being included in the API payload when syncing to AWS Partner Central, causing opportunities to remain stuck in draft status
+ Fixed a scientific notation formatting issue in currency and revenue fields that was causing API validation failures for large monetary values

## Version 3.14 (December 17, 2025)
<a name="3.14"></a>

AWS Partner CRM Connector version 3.14 contains the following features and improvements.

### AWS Partner Central API
<a name="aws-partner-central-api-3.14"></a>

**Opportunity data backfill**
+ Added dedicated **backfill** feature that allows partners to initiate data synchronization directly from the connector interface for all existing opportunities from AWS Partner Central to Salesforce
+ Implemented user defined criteria for opportunity selection based on stages and other filtering options

**Opportunity association enhancement**
+ Consolidated the four-field approach into three clear, searchable fields with consistent behavior
+ Implemented searchable dropdown fields with type-ahead functionality for **Solutions**, **AWS Products**, and **AWS Marketplace offer**
+ Improved **AWS Products** field to display friendly names (e.g. “AWS Amplify”) while maintaining correct API identifiers

**Opportunity owner assignment on creation**
+ Added support for setting opportunity owner during opportunity creation through the CreateOpportunity API
+ Implemented proper mapping of OpportunityTeam members with BusinessTitle “OpportunityOwner”

### Bug fixes
<a name="bug-fixes-3.14"></a>
+ Fixed validation issue on OpportunityTeamMember email validation to share payload with AWS only when First Name, Last Name or Phone Number is provided
+ Updated National Security field logic to share selected picklist values correctly
+ Updated tooltips for Partner Account Manager fields

## Version 3.13 (October 30, 2025)
<a name="3.13"></a>

AWS Partner CRM Connector version 3.13 contains the following features and improvements.

### AWS Partner Central API
<a name="aws-partner-central-api-3.13"></a>

**Bulk accept and bulk assign opportunities**
+ Added ability to **accept** or **assign** multiple ACE Opportunities simultaneously, improving efficiency in opportunity management

**Opportunity synchronization logs**
+ Users of the AWS Partner Central API integration can now view corresponding synchronization logs directly within the ACE Opportunity object. This feature provides visibility into the synchronization process for each opportunity

### Bug fixes
<a name="bug-fixes-3.13"></a>
+ Resolved an issue where the Customer DUNS number field (`customerDuns`) was rejected during opportunity submission due to data type mismatch
+ Increased the error message field (`awsapn__Error_Message__c`) size from 32KB to 128KB in sync log details to prevent truncation of error messages and avoid disruption to Apex job processing during high-volume synchronization errors
+ Fixed an issue where opportunities would appear as submitted but remain stuck in draft status when postal or zip codes were in invalid format. The connector now surfaces async API validation errors, allowing partners to correct postal or zip code formatting before submitting to AWS
+ Resolved an issue where opportunities with "Other" specified in the Solution Offering field would remain stuck in Draft status instead of progressing to Submitted. The connector now properly handles "Other" solution values and correctly parses API responses to allow opportunity progression through the ACE validation process. Partners can now also associate valid solutions even when they have "Other" in the other solution description field

## Version 3.12 (September 16, 2025)
<a name="3.12"></a>

AWS Partner CRM Connector version 3.12 contains the following features and improvements.

### Bug fixes
<a name="bug-fixes-3.12"></a>
+ Set the `Unified_Standard_ACE_Sync` flow template to be in a **draft** state as opposed to an active state. Some customers were experiencing installation errors with the flow template in an active state.

## Version 3.11 (September 10, 2025)
<a name="3.11"></a>

AWS Partner CRM Connector version 3.11 contains the following features and improvements.

### AWS Partner Central API
<a name="aws-partner-central-api-3.11"></a>

**Enhanced logging**
+ Expanded detailed logging capabilities for AWS Partner Central API integration and opportunity synchronization processes
+ Added additional troubleshooting information for opportunity synchronization processes

### Bug fixes
<a name="bug-fixes-3.11"></a>
+ Fixed an issue preventing disassociation of solutions/offers/services from the Solution Offered field
+ Increased maximum number of Solution Listings that can be synchronized from AWS Partner Central from 50 to 100
+ Fixed visibility issues for solutions in Solution Offerings when solutions are in a 'delete' state
+ Resolved an issue causing duplicate opportunities to appear in Salesforce when changes were made in AWS Partner Central
+ Fixed display of full names in AWS Partner Success Manager and AWS ISV Success Manager fields in the ACE object

## Version 3.10 (August 6, 2025)
<a name="3.10"></a>

AWS Partner CRM Connector version 3.10 contains the following features and improvements.

### AWS Partner Central API
<a name="aws-partner-central-api-3.10"></a>

**Automatic AWS data sharing**
+ New **Enable Share with AWS Integration** setting in AWS Partner Central custom settings
+ Automatic record syncing with AWS when updates occur
+ Eliminates need for manual **Share with AWS** button clicks
+ Seamless data flow to AWS on record updates

**Simplified entity association**
+ Built-in functionality to associate offers and products on their respective field without having to click on **Associate** or **Disassociate**
+ Automatic backend API call handling based on selection

**Streamlined invitation management**
+ Accept/reject invitations directly from **Partner acceptance status** field dropdown
+ Automatic backend API call handling based on selection

**Automation improvements - New Unified Standard-ACE Opportunity Sync flow template**
+ Enables automated synchronization between standard Salesforce opportunities and ACE opportunities
+ Supports co-sell opportunity sharing when using the CRM connector
+ Includes pre-configured field mappings for standard opportunity fields
+ Handles both creation and updates of ACE opportunities
+ Features automatic state/country mapping and default value handling

## Version 3.8 (April 17, 2025)
<a name="3.8"></a>

AWS Partner CRM Connector version 3.8 contains the following features and improvements.

### Bug fixes
<a name="aws-marketplace-3.8"></a>
+ Fixed an issue where the **APN CRM ID** was not getting updated on the Opportunity post synchronization.
+ Fixed an issue when trying to refresh Marketplace products where a seller had more than 50 listed products.
+ Fixed an issue where the AWS Sales Rep and AWS Account Manager fields in the ACE object were not displaying the full name.

## Version 3.6 (March 18, 2025)
<a name="3.6"></a>

AWS Partner CRM Connector version 3.6 contains the following features and improvements.

### AWS Marketplace
<a name="aws-marketplace-3.6"></a>
+ Added support for 8 decimal places (increased from 3) in pay-as-you-go pricing for software as a service (SaaS) products, which aligns with AWS Marketplace pricing standards.

### Bug fixes
<a name="bug-fixes-3.1"></a>
+ Partners can now create opportunities directly in Partner Central. These opportunities automatically sync with the partner's Salesforce organization via AWS Partner CRM connector. This improves the referral process and enhances collaborations between partners and AWS.
+ Fixed an issue where an opportunity sync fails with `NUMBER_VALUE` and can't be converted to a string when SaaS revenue recognition program (SRRP) fields are updated.
+ Resolved data sharing issue to prevent AWS referrals from being incorrectly processed as partner opportunities during APN synchronization.
+ Fixed `ReviewStatus` field from changing to null on an approved opportunity after updating an allowed field.
+ Implemented new field mapping for `Next Step History` to accommodate larger data volumes and prevent sync failures.
+ Resolved ACE opportunity activation flow issues by implementing proper update logic for `APN CRM Unique Identifier` field in an ACE opportunity record.
+ Updated and corrected guided setup instructions for a better user experience.

**Note**  
If you upgrade to version 3.6, you must map the `Next Step History` field on the **ACE Mappings** tab.

## Version 3.5 (January 22, 2025)
<a name="3.5"></a>

AWS Partner CRM Connector version 3.5 contains the following features and improvements.

### AWS Partner Central API
<a name="partner-central-api-3.5"></a>
+ You can now enable sandbox catalog using the **PC API Sandbox Enabled** checkbox in **Custom Settings**, **AWS Partner CRM Connector Settings**.
+ Updated product catalog.

### AWS Marketplace
<a name="aws-marketplace-3.5"></a>
+ You can now import details of resale authorizations created outside the CRM connector.
+ Added support to view up to 8 decimal points, where applicable.

### Bug fixes
<a name="bug-fixes-3.5"></a>
+ Fixed issue with a new installation of CRM connector Version 3.1, sync failure reporting with error message `Field Level Security error on field: awspn_Campaign name_new_c`.
+ Fixed issue with duplicate AWS Markeplace product names causing upsert failure.
+ Fixed issue preventing the **ACE opportunity** tab from being set as the default view for the ACE permission sets.

## Version 3.1 (December 2, 2024)
<a name="3.1"></a>

AWS Partner CRM Connector version 3.1 contains the following features and improvements.

### Bug fixes
<a name="bug-fixes-3.1"></a>
+ Fixed the production URL for AWS Partner Central API.
+ Fixed issues with change to Engagement Invitation Payload.

## Version 3.0 (November 14, 2024)
<a name="version-3.0-november-14-2024"></a>

 AWS Partner CRM connector 3.0 contains the following features and improvements:

### Core features
<a name="con-core-features"></a>

**Multi-object mapping**
+ Partners can now map fields from multiple Salesforce objects, including lookup and master-detail relationships, to the APN opportunity and lead schemas. 
+  Improved UI for mapping fields, including expandable views for lookup fields. 
+ Support for up to two levels of object relationships in a single mapping. 

### ACE CRM Integration features
<a name="v3-ace-features"></a>

**AWS Partner Central API Support**
+ The ACE integration user is not required for AWS Partner Central integrations 
+ Inbound and outbound synchronization schedules between Salesforce and AWS Partner Network (APN) are no longer required. 
+ The AWS Partner CRM connector handles synchronous errors. 

**AWS Partner Central API support for AWS originated opportunities (AO) and partner-originated opportunities**
+ Partners can use the **Share with AWS** button to create and update opportunities. 
+ Partners can use the **Approval Status** button to accept or reject AWS referred opportunities. 
+ Partners can use the **Associate or Disassociate** buttons to associate or disassociate opportunities with Partner Solutions, AWS Products, and AWS Marketplace Offers throughout the opportunity lifecycle. 
+ Partners can use the **Assign** button to reassign opportunities to other users in their Partner Central account. 
+ Partners can use the **Solution offering** tab to view a list of available solutions. 
+ Partners can view the events on the **AWS Marketplace Notification** tab, such as **Opportunity Created**, **Opportunity Updated**, or **Engagement Invitation Created**.
+ Three new fields added for opportunities:
  + `Opportunity Engagement Invitation ARN`
  + `Opportunity Type`
  + `Visibility`

### Bug fixes
<a name="v3-bug-fixes"></a>
+ Fixed an issue where the connector, upon receiving inbound data, overrides the account associated with opportunities to a default account provided in the custom settings, leading to internal Salesforce conflicts and validation errors 
+ Fixed an issue where the connector encountered errors in inbound and outbound sync logs due to an invalid `SalesActivity` field value of `Finalized Deployment Needs`. 
+ Fixed an issue when trying to refresh shared resale authorizations. 

## Version 2.2 (April 24, 2024)
<a name="2.2"></a>

AWS Partner CRM connector version 2.2 contains the following features and improvements.

### Core features
<a name="core-features-2.2"></a>

Enhancements to the existing resale authorization feature to support non-legacy products.

## Version 2.1 (April 18, 2024)
<a name="2.1"></a>

AWS Partner CRM connector version 2.1 contains the following features and improvements.

### Core features
<a name="core-features-2.1"></a>

Channel Partners can create a synchronization schedule for shared resale authorizations.

### AWS Marketplace integration for ISV sellers and Channel Partners
<a name="aws-marketplace-2.1"></a>
+ You can modify the usage duration on released offers for eligible products.
+ Support for future dated agreements (FDA) for private offers.
+ You can import details of private offers created outside of the CRM connector.
+ You can save private offers and resale authorizations as drafts.
+ You can retrieve and view agreements for private offers and public offers.
+ You can create agreement-based offers across multiple seller accounts for SaaS Contract products and SaaS Contract products with consumption accounts.

### ACE CRM integration
<a name="ace-integration-2.1"></a>
+ Enhanced Salesforce Lightning record form for AWS delivered ACE opportunity objects.
+ You can surface sync log detail records per opportunity on AWS delivered ACE opportunity objects.
+ You can link available AWS Marketplace private offers to an opportunity on the AWS delivered ACE opportunity object.

## Version 2.0 (November 29, 2023)
<a name="2.0"></a>

### Core features
<a name="core-features-2.0"></a>
+ Modularized Application–single SF AppExchange app for both ACE CRM Integration and AWS Marketplace Seller integration features

### APN Customer Engagements (ACE) integration
<a name="ace-integration"></a>
+ Support for new data model (v14) with the ACE CRM integration.
+ Creates custom objects for ACE opportunities and leads which contains all the attributes/values as defined by the ACE CRM integration with new data model validations on the custom opportunity objects.
+ One-click automapping capability for new ACE custom objects to expedite mapping with installed custom objects for opportunities and leads.
+ Fix for mapping missing attributes on opportunities.
+ Fix for associating AWS opportunities to an account if using a standard opportunity for mapping.

### AWS Marketplace integration
<a name="marketplace-integration"></a>
+ As an ISV seller:
  + Synchronize available MP Products into Salesforce organization.
  + Create, view and manage ISV Private Offers on SaaS, AMI, and Container products.
  + Cancel and modify private offers.
  + Clone private offers to create new offers.
  + Create resale authorizations on SaaS, AMI, and container products.
  + Cancel and modify resale authorizations.
  + Clone resale authorizations.
  + Receive notifications when buyers subscribe to private offers.
  + View dashboard of private offers and shared resale authorizations created through the connector.
+ As an AWS Channel Partner:
  + Synchronize and view shared resale authorizations created by the ISV seller.
  + Create and manage AWS Channel Partner private offers for SaaS, AMI, and container products from shared resale authorizations.

## Version 1.7 (October 12, 2022)
<a name="1.7"></a>

### Change log
<a name="change-log-1.7"></a>

**User interface**
+ Add AWS Partner Network review comments optional field to mapping screen.
+ Move the help section to the **Guided setup** page.

**Bug fixes**
+ Fix an issue where incorrect payload was being displayed in `synclog` detail source record in partial failure case.
+ Fix an issue where partners already updated the partner CRM unique identifiers in ACE to auto correct based on target object in organization.
+ Fix an issue to stop opportunity updates being sent that have not yet been approved after the initial create request to AWS Partner. This is to prevent validation error responses being received back from AWS Partner due to the opportunity not being in approved status.

**Known issues**

Not applicable.

## Version 1.6 (January 13, 2023)
<a name="1.6"></a>

### Change log
<a name="change-log-1.6"></a>

**User interface**
+ Add component to allow partners to raise support cases through AWS Partner Central. This is available on the **Guided Setup** page in the app.
+ Administrators can correct data received in inbound payload to fix incorrect picklist values so they can be processed.

**Sync log cleanup**

Old sync log records are cleaned up automatically based on the application custom setting **Sync Log Retention**. This feature allows partners to configure how long they want to retain inbound and outbound synchronization log records.

**Bug fixes**
+ Update validation message when an unmapped picklist value is present in inbound payload to indicate the incorrect value.
+ Update outbound job filter to utilize configured retry count and retry days in application custom setting to auto retry the transaction once data is corrected, until number of retries is exceeded.

**Known issues**

Not applicable.

## Version 1.5 (January 13, 2023)
<a name="1.5"></a>

### Change log
<a name="change-log-1.5"></a>

**User interface**
+ Update labels on scheduling modal.
+ Update validation error messages on scheduling screen to provide more context to users on scheduling failures.
+ Update the title of the application in all references with "AWS Partner CRM connector".
+ **Opportunity/lead** page
  + Update **Eligible to Sync with APN** field label to **Has Updates for AWS**.
  + Update **Sync with Partner Central** field label to **Sync with AWS**.
+ **Guided Setup** page
  + Update **Enter Authentication details** field label to **Set up the APN AWS connection**.
  + Update **SPMS** field label to **Partner ID**.
  + Update **Map APN AWS** fields to **Salesforce** fields.
+ **Mapping** page
  + Update **ACE pipeline manager** fields to **AWS** fields.
  + Update **Enable APN updates** fields to **Enable Inbound Updates** fields.
+ **Sync Logs** page
  + Replace references to "APN" with "AWS" (direction).
  + Update the following sync log purpose fields labels: **Inbound Orchestration** to **Inbound File Retrieval**, **Inbound Orchestration—Record Retrieval** to **Inbound Record Retrieval**, and **Outbound Orchestration** to **Outbound File Retrieval**.

**Instantaneous synchronization**

Administrators can initiate a specific outbound synchronization for a single record through an added quick action. The quick action **Send to AWS** was added to the standard opportunity and lead object for reference. It can be added to any integrated standard or custom object to provide the option to immediately invoke the synchronization for a single record outside of the scheduled jobs.

**Bug fixes**
+ Fix an issue on the sync log that showed an incorrect FLS exception error.
+ Fix an issue on the Lead object when the `campaignMemberStatus` field is mapped.
+ Fix a mapping issue where the `awsFieldEngagement` and `awsAccountId` fields were being excluded from the outbound mapping, when mapped.
+ Update bundled dashboards from dynamic to static so they don't use the installed organization's limit for dynamic dashboards.

**Known issues**

Not applicable.

## Version 1.4 (December 7, 2022)
<a name="1.4"></a>

### Change log
<a name="change-log-1.4"></a>

**User interface**
+ Simplify interface for sync logs.
+ Simplify interface for mapping modal.
+ Add confirmation modal to reset button on **Mapping** screen.
+ Disable **Next** option on picklist mapping until all fields are completed.
+ Add help text to tab titles in mapping modal.
+ Update app label from **APN CRM Administration** to **AWS Partner CRM connector**.

**Reports and dashboards**

Add new reports and dashboards for tracking sync log statuses.

**Flow template**

Add flow template to the package for setting custom push notification to business administrators on sync log errors.

**Bug fixes**
+ Fix issue on date offset with UTC in mapping.
+ Fix an issue when a partially processed sync log was picked for reprocessing, when encountering an error, the status on the sync log doesn’t change to **Error**.
+ Update eligible `to sync` formula on standard opportunity and lead.
+ Hide read-only fields.
+ Update to loading spinners.
+ Update label for modal subtitle.
+ Retain `apnValues_ on _tab3` in the mapping modal.
+ Update the **Edit** option so it takes the user to the current page.
+ Disable tab selection unless in `read-only` mode.
+ Disable `field required` error when optional.
+ Change modal checkmarks to green.
+ Add mapping tab components and utilities.
+ Add new dashboard and dashboard folder for sync logs.
+ Remove permission for deprecated custom report tab.

**Known issues**

Error when mapping the `CampaignMemberStatus` on the Lead object. Currently, AWS Partners can skip mapping this non-mandatory field when mapping leads. Fix will be in the next version.