# Configure Custom AS2 Connections

Veeva Safety supports AS2 (system-to-system) communication to exchange ICSRs with other organizations.

<div class="note-border alert-info">
  <div class="alert alert-info" role="alert">
    <div><i class="far fa-info-circle"></i></div>
    <div class="alert-text">
      <p><strong>Note</strong>: Safety <em>AS2 Connections</em> replace Safety Gateways. <em>AS2 Connections</em> provide significant technical improvements including Admin management of Internet Protocol (IP) lists, more concise outbound IP lists, and improved Certificate Management. Though Gateways are still supported, we recommend replacing any Custom AS2 Gateways in your Vault with an equivalent Custom <em>AS2 Connection</em>. See <a href="/en/lr/01460/">Replace a Gateway Profile with an AS2 Connection</a> for instructions on how to do this.</p>
    </div>
  </div>
</div>



To configure Safety to communicate with another organization through an _AS2 Connection_, you must set up a _Transmission Profile_ and an <a href="/en/lr/703946/">_AS2 Connection_</a>. Create a _Transmission Profile_ and _AS2 Connection_ for each organization that you want to exchange information with. You need only one profile and connection per trading partner, which includes both sending and receiving transmissions.

Safety supports both synchronous and asynchronous AS2 interchange. Set up your _AS2 Connection_ to match the external gateway with which you want to communicate.

<div class="note-border alert-info">
  <div class="alert alert-info" role="alert">
    <div><i class="far fa-info-circle"></i></div>
    <div class="alert-text">
      <p><strong>Note</strong>: If you are configuring a CRO Vault, which multiple sponsor organizations can access, consider setting up multiple <em>AS2 Connections</em> for sponsor <em>Transmissions</em> to a common destination. A unique <em>AS2 Connection</em> for each sponsor enforces organization-specific <em>Transmission</em> security.</p>
    </div>
  </div>
</div>




## Prerequisites

In addition to enabling <a href="/en/lr/01459/">_AS2 Connections_</a>, your environment must meet the following requirements before you set up an _AS2 Connection_:
* You must have your own public and private certificate pair set up for communication with the destination gateway.
* You must send your public certificate and URL to the destination gateway.
* You must have the public certificate and URL for the destination gateway.

## Create an AS2 Gateway Transmission Profile {#create-as2-gateway-transmission-profile}

You must first create a _Transmission Profile_ of the type _AS2 Gateway_. <a href="/en/lr/01202/">Manage Transmission Profiles</a> provides instructions on setting up _Transmission Profiles_.

## Add a Safety Rule Set

To support transmissions to the desired agency, you can create and configure your own <a href="/en/lr/873466/">custom _Safety Rule Set_</a> to meet agency requirements.

## <a id="create-as2-connection"></a> Configure a Safety AS2 Connection

1. Navigate to **Admin > Connections**, then select **Create**.
2. For the **Connection Type**, select **AS2**, then select **Continue**.
3. Complete the applicable <a href="#as2-connection-fields">fields</a>.
4. Select **Save**.

### AS2 Connection Fields {#as2-connection-fields}

With the exception of <a href="#transfer-fields">_Transfer Connection_</a> fields and fields populated by Vault, complete all fields in the following sections:

* <a href="#details-fields">AS2 Details Fields</a>
* <a href="#partner-fields">AS2 Partner Details Fields</a>
* <a href="#sponsor-fields">AS2 Sponsor Details Fields</a>

#### AS2 Details Fields {#details-fields}

<table>
    <thead>
        <tr>
            <th>
                Field
            </th>
            <th>
                Description
            </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <em>Name</em>
            </td>
            <td>
                Enter a name for the <em>AS2 Connection</em>.<br>
                This name must be unique in your Vault.
            </td>
        </tr>
        <tr>
            <td>
                <em>API Name</em>
            </td>
            <td>
                Enter an API Name for the <em>AS2 Connection</em>.<br>
                This name must be unique in your Vault.<br>
            </td>
        </tr>
        <tr>
            <td>
                <em>Description</em>
            </td>
            <td>
                Enter a description for the <em>AS2 Connection</em>.
            </td>
        </tr>
        <tr>
            <td>
                <em>Contact Email</em>
            </td>
            <td>
                Enter the Sender's Email.
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Vault Gateway State</em><a id="as2-vault-gateway-state"></a>
            </td>
            <td>
                Vault populates this field with the current state of the AS2 Vault Gateway, which consists of one (1) of the following options:
                <ul>
                    <li>
                        <strong>Unregistered</strong>: The <strong>Sync to Gateway</strong> action has not yet been run for this <em>AS2 Connection</em>.
                    </li>
                    <li>
                        <strong>Registered</strong>: The <em>AS2 Connection</em> is synchronized with the Gateway.
                    </li>
                    <li>
                        <strong>Out of Sync</strong>: Changes have been made to the <em>AS2 Connection</em> or its Connection Allowed List since the last time the <strong>Sync to Gateway</strong> action was run. From the <strong>All Actions</strong> menu, select <strong>Sync To Gateway</strong> to resync the <em>AS2 Connection</em> with the Gateway.
                    </li>
                </ul>
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Encryption</em>
            </td>
            <td>
                The algorithm Vault uses to encrypt outbound AS2 messages and decrypt inbound messages.<br>Vault supports the following algorithms:
                <ul>
                    <li>Triple DES (3DES)</li>
                    <li>AES-256-GCM</li>
                    <li>AES-256-CBC</li>
                </ul>
                
                        Select the AS2 Encryption algorithm used by the partner organization.
                
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 MDN Setting</em>
            </td>
            <td>
                Whether the Message Delivery Notification (MDN) can be exchanged synchronously (<strong>Sync</strong>) or asynchronously (<strong>Async</strong>).<br>
                
                        Select the AS2 MDN Setting used by the partner organization.
                
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Signature</em>
            </td>
            <td>
                The method Vault uses to sign outbound AS2 messages. Vault supports the following signing methods:
                <ul>
                    <li>SHA-1</li>
                    <li>SHA-256</li>
                </ul>
                
                        Select the AS2 Signature method used by the partner organization.
                
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Additional ACK Stages</em>
            </td>
            <td>
                If required, select one (1) or more of the following options:
                <ul>
                    <li>
                        <strong>HTTP Handshake</strong>: Used primarily for asynchronous requests.
                    </li>
                    <li>
                        <strong>PRE-ACK</strong>: Used mainly for FDA VAERS, but can be used with synchronous or asynchronous requests.
                    </li>
                </ul>
                <div class="note-border alert-info">
  <div class="alert alert-info" role="alert">
    <div><i class="far fa-info-circle"></i></div>
    <div class="alert-text">
      <p><strong>Note</strong>: We do not recommend using any additional ACK stages.</p>
    </div>
  </div>
</div>


            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Partner Sends ACK on MDN URL</em><a id="partner-ack-on-mdn-url"></a>
            </td>
            <td>
                <p>
                    The default setting for this field is <em>No</em>, as Vault expects an AS2 partner to send the ACK using a different URL than that used to send the MDN.
                </p>
                <p>
                
                        Unless the partner specifies otherwise, select <strong>No</strong>.
                    
                </p>
                <p>
                    For more information about AS2 gateway communications, see <a href="/en/lr/01266/#what-is-as2-gateway-communication">Send a Gateway Transmission</a>.
                </p>
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Compression Settings</em><a id="as2-compression-settings"></a>
            </td>
            <td>
                
                        <p>
                            Select how Vault compresses and signs AS2 messages before they are sent, as specified by the agency:
                        </p>
                        <ul>
                            <li><strong>Compress After Sign (Standard)</strong>: Vault compresses messages after applying the Signing Algorithm.</li>
                            <li><strong>Compress Before Sign</strong>: Vault compresses messages before applying the Signing Algorithm.</li>
                            <li><strong>Uncompressed</strong>: Vault applies the Signing Algorithm to messages but does not compress them.</li>
                        </ul>
                
            </td>
        </tr>
    </tbody>
</table>

#### AS2 Partner Details Fields {#partner-fields}

<table>
    <thead>
        <tr>
            <th>
                Field
            </th>
            <th>
                Description
            </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <em>AS2 Partner ID</em>
            </td>
            <td>
                
                        Enter the partner ID. This value cannot include spaces. Instead, use a hyphen (<code>-</code>) or an underscore (<code>_</code>).
                
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Partner URL</em>
            </td>
            <td>
                
                        <p>
                          Enter the partner URL.
                        </p>
                        <div class="note-border alert-info">
  <div class="alert alert-info" role="alert">
    <div><i class="far fa-info-circle"></i></div>
    <div class="alert-text">
      <p><strong>Note</strong>: <em>AS2 Connections</em> send only to the following standard AS2 ports: 4080, 8080, and 443. If the partner does not use these ports to receive, request that they update their system to use these standard ports.</p>
    </div>
  </div>
</div>


                
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Partner Certificate Expiry</em>
            </td>
            <td>
                Vault populates this field when your Admin <a
                href="#upload-certificates">uploads the partner certificate</a>.
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Partner Certificate Serial Number</em>
            </td>
            <td>
                When you upload a new partner certificate for this connection, Vault sets this field to the Serial Number of the certificate in decimal format.
            </td>
        </tr>
    </tbody>
</table>

#### AS2 Sponsor Details Fields {#sponsor-fields}

<table>
    <thead>
        <tr>
            <th>
                Field
            </th>
            <th>
                Description
            </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <em>AS2 Vault ID</em>
            </td>
            <td>
                
                      Enter the AS2 ID of your Vault. This value cannot include spaces. Instead, use a hyphen (<code>-</code>) or an underscore (<code>_</code>).
                
            </td>
        </tr>
        <tr>
            <td>
                <a id="as2-vault-url"></a>
                <em>AS2 Vault URL</em>
            </td>
            <td>
                
                <p>
                    Enter the AS2 URL of your Vault in the following format, replacing <code>&lt;SponsorName&gt;&lt;Partner&gt;&lt;Environment&gt;</code> with the corresponding values of your Vault:
                </p>
                <p>
                    <code>https://&lt;SponsorName&gt;&lt;Partner&gt;&lt;Environment&gt;.gateway.veevavaultsafety.com:4080</code>
                </p>
                <p>
                    The following example demonstrates how to form the AS2 Vault URL for a Vault with the following values:
                </p>
                <ul>
                    <li><code>&lt;SponsorName&gt;</code> = vern</li>
                    <li><code>&lt;Partner&gt;</code> = custom</li>
                    <li><code>&lt;Environment&gt;</code> = validation</li>
                    <li>AS2 Vault URL = <code>https://verncustomvalidation.gateway.veevavaultsafety.com:4080</code></li>
                </ul>
                <p>
                    <strong>Informing the Partner of your AS2 Vault URL</strong>
                </p>
                <p>
                    When informing the partner of the URL they need to use for this <em>AS2 Connection</em>, use the value you entered in this field appended with <code>/api/v1/inbound/transmission</code>
                </p>
                <p>
                    In the example shown above, this is <code>https://verncustomvalidation.gateway.veevavaultsafety.com:4080/api/v1/inbound/transmission</code>
                </p>
                
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Vault Certificate Expiry</em>
            </td>
            <td>
                Vault populates this field when your Admin <a
                href="#upload-certificates">uploads the sponsor certificate</a>.
            </td>
        </tr>
        <tr>
            <td>
                <em>AS2 Vault Certificate Serial Number</em>
            </td>
            <td>
                When you upload a new sponsor certificate for this connection, Vault sets this field to the Serial Number of the certificate.
            </td>
        </tr>
        <tr>
            <td>
                <a id="as2-vault-domain-ip-config"></a>
                <em>AS2 Vault Domain / IP Configuration</em>
            </td>
            <td>
                <p>
                    Select the method the partner uses to interface with the <em>AS2 Connection</em>.
                </p>
                <ul>
                    <li><strong>AS2 Vault URL: Domain Name (typical)</strong>: A standard domain name that resolves to dynamic IP addresses.</li>
                    <li><strong>AS2 Vault URL: Domain Name bound to static IP addresses</strong>: A standard domain name that resolves to static IP addresses.</li>
                    <li><strong>AS2 Vault URL: IP URL (uncommon)</strong>: A non-standard IP address domain name that resolves to an IP address.</li>
                </ul>
                
            </td>
        </tr>
    </tbody>
</table>

#### Transfer Connection Fields {#transfer-fields}

Leave the fields in this section blank.


### Upload the Partner and Sponsor Certificates {#upload-certificates}

Safety uses
<a href="/en/lr/872385/">partner and sponsor certificates</a>
to communicate securely with the partner. You will have received the partner certificate as part of creating your account with the partner.

Complete the following steps to create and upload these certificates:
* <a href="/en/lr/872385/#upload-partner-cert">Upload the partner certificate for the connection</a>.
* <a href="/en/lr/872385/#create-sponsor-cert">Create a sponsor certificate for the connection</a>.

### Add Connection Allowed IPs

Specify one (1) or more Allowed Connections for the _AS2 Connection_. These are Internet Protocol (IP) addresses that Vault will allow to connect with this _AS2 Connection_.

Perform the following steps for each Allowed Connection you want to add to the _AS2 Connection_:

1. Navigate to **Admin > Connections > [Connection] > Connection Allowed Lists**, then select **Create**.
2. On the **Create Connection Allowed List** window, complete the following information:
  * **Name**: Enter a name for the Allowed Connection.
  * (Optional) **Description**: Enter a description for the Allowed Connection.
  * **IP**: Enter the address of the Allowed Connection. \
  Ensure the format of the **IP** address is `XX.XX.XX.XX` or `XX.XX.XX.XX/{subnet mask}` where the `{subnet mask} `is a number between 24 and 32.
3. Repeat the above steps for each Allowed Connection.
4. When you have added all the Allowed Connections, select **Save**.

<div class="note-border alert-info">
  <div class="alert alert-info" role="alert">
    <div><i class="far fa-info-circle"></i></div>
    <div class="alert-text">
      <p><strong>Note</strong>: By default, Vaults are limited to 512 Allowed Connections. If your organization requires more, contact your Veeva Representative.</p>
    </div>
  </div>
</div>



### Synchronize the Connection {#sync-as2-connection}

Once you have entered all the details of the _AS2 Connection_, the Connection must be synchronized with the Gateway.

From the **All Actions** menu, select **Sync Connection to Gateway**.

When Vault successfully completes this action, the Connection's [AS2 Vault Gateway State](#as2-vault-gateway-state) changes to **Registered** and Vault can send and receive messages using this Connection.

<div class="note-border alert-info">
  <div class="alert alert-info" role="alert">
    <div><i class="far fa-info-circle"></i></div>
    <div class="alert-text">
      <p><strong>Note</strong>: If the <em>Sync Connection to Gateway</em> action is not successful, ensure each field value on the <em>AS2 Connection</em> is correct before retrying the action again. If the issue persists, <a href="/en/lr/728014/">troubleshoot the connection</a>.</p>
    </div>
  </div>
</div>



If you make any changes to the **Connection** object or its Connection Allowed List, the **AS2 Vault Gateway State** changes to **Registered - Out of Sync**. Vault cannot send or receive any messages using this Connection while it is in the **Registered - Out of Sync** state. You will need to repeat the **All Actions > Sync to Gateway** action to restore the Connection to the **Registered** state.


**Result**

The _AS2 Connection_ is active and available to use to exchange data with external organizations.

<div class="note-border alert-info">
  <div class="alert alert-info" role="alert">
    <div><i class="far fa-info-circle"></i></div>
    <div class="alert-text">
      <p><strong>Note</strong>: For partner gateways that transmit MDNs asynchronously, the partner gateway should send the MDN to the URL included in the header of the Safety <em>Transmission</em>.</p>
    </div>
  </div>
</div>



## Configure Transmission Lifecycles and Workflows

We recommend that you configure _Transmission_ lifecycles and workflows to align with your organization's standard operating procedures. The following items are best practices and recommendations:
* Configure a _Case Transmission Error_ workflow to handle transmission errors.
* Configure a workflow to prevent a _Transmission_ record from entering a _Ready for Submission_ state until a _Transmission Profile_ is specified.

<a href="/en/lr/29798/">About Object Lifecycles</a> and <a href="/en/lr/33498/">About Object Workflows</a> provide more information about configuring lifecycles and workflows.
