> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flexagon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# createB2BTradingPartnerConfigPlan

> This operation creates a template Trading Partner Config Plan file from B2B Trading Partners on the current OIC Target. The plan can be applied during

This operation creates a template Trading Partner Config Plan file from B2B Trading Partners on the current OIC Target. The plan can be applied during Trading Partner import / partial deploy (after the Trading Partner is imported). Its purpose is to allow environment-specific properties to be replaced for Trading Partner transports, outbound Host identifiers, and inbound/outbound agreement settings prior to deployment. This prevents manual updates of those settings between deployments to different environments.

> [!NOTE]
>
> Either **FDOIC\_CLOUD\_ACCOUNT\_CODE** target property value or **FDOIC\_INP\_CLOUD\_ACCOUNT\_CODE** plugin input value should exist. When both exist, the plugin input value will take precedence. See [Creating/Editing a Cloud Account and Provider](https://docs.flexagon.com/flexdeploy-11-2-documentation/flexdeploy-users-guide/integrations/cloud-account-and-provider.md) for details on how to setup Cloud Account for OIC.

# Target Properties

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Property Name**</th><th>**Property Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>OIC Account</td><td>`FDOIC_CLOUD_ACCOUNT_CODE`</td><td>No</td><td>The OIC account with all the required properties like Base URI, Username and Password for connecting to an OIC Instance</td></tr></tbody></table>

# Inputs

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Input Name**</th><th>**Input Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>OIC Account</td><td>`FDOIC_INP_CLOUD_ACCOUNT_CODE`</td><td>No</td><td>The OIC account with all the required properties like Base URI, Username and Password for connecting to an OIC Instance. Typically, this will not be used because the value will come from the property `FDOIC_CLOUD_ACCOUNT_CODE` instead.</td></tr><tr><td>Trading Partner List</td><td>`FDOIC_INP_B2B_TRADING_PARTNER_LIST`</td><td>No</td><td>CSV list of Trading Partner ids to include. Leave blank to include all non-project Trading Partners (and, depending on Project List, project Trading Partners as described below). Use `PROJECTID:TRADINGPARTNERID` for a project Trading Partner.</td></tr><tr><td>Project List</td><td>`FDOIC_INP_B2B_PROJECT_LIST`</td><td>No</td><td>CSV list of project ids whose Trading Partners should be included. Leave blank to include Trading Partners from all projects when that path is used.</td></tr><tr><td>OIC Trading Partner Config Plan File</td><td>`FDOIC_INP_B2B_TP_CONFIG_PLAN`</td><td>No</td><td>Optional input to specify a different Config Plan file name. If not specified, it defaults to `TradingPartnerConfigPlan.properties`. An absolute path can be specified. Otherwise, the location is relative to the temp directory (create / utility) or resolved from artifacts on deploy, then copied to temp for property replacement.</td></tr></tbody></table>

If neither the Trading Partner List nor the Project List is given, Config Plan entries for all non-project Trading Partners and Trading Partners in all projects are created.\
If either is given, Config Plan entries for those listed are created.\
If both are given, Config Plan entries for the listed of both lists are created (listed Trading Partners plus all Trading Partners in the listed projects).

# Artifacts

This operation doesn’t consume or produce any artifacts.

# Endpoint Selection

This operation will select all available endpoints associated to the Target.

# Endpoint Execution

This operation will execute on any one of the selected endpoints and will be random in the determination of which one.

# Special Considerations

* This plan is separate from the Trading Partner Identifier Plan (`TradingPartnerIdentifiersPlan.properties`), which covers partner identifiers and control numbers.

* Only fields that should change per environment should remain in the file. Delete lines you do not want to update.

* Transport Host identifiers (AS2 / AS4 / RosettaNet) and outbound agreement Hosts use UI format Type | Value (example: AS2 Identifier | FLEXAGONOIC\_AS2). The Type and Value must exist on the target Host Profile at apply time.

* Config Plan apply runs after Trading Partner import. Transport updates that change a REST Send URI require the transport integrations to allow that update in OIC (integrations must not remain activated in a state that blocks URI update). Prefer a full undeploy/import/apply/deploy path.

* Hand-edited keys outside the generate allow-list for that transport/agreement type are ignored. Allowed plan keys that are missing on the OIC object cause apply to fail with a clear error.

# Sample Properties

```
#Add values for any properties you wish to change when deploying the Trading Partner.
#Delete any lines that you don't want to update.
#FlexDeploy properties or plain text are allowed.
#See the documentation at https://wiki.flexagon.com for more information.

######################## ACME_TRADING_PARTNER ########################

# Transports
# ACME_TP1
# Receive
ACME_TRADING_PARTNER.transports.ACME_TP10AF408301A01F81323000000643EABCA.LIST_PhysicalDirectory=/pub/
ACME_TRADING_PARTNER.transports.ACME_TP10AF408301A01F81323000000643EABCA.Recursive=false
ACME_TRADING_PARTNER.transports.ACME_TP10AF408301A01F81323000000643EABCA.IncludeFilesWildCard=*
ACME_TRADING_PARTNER.transports.ACME_TP10AF408301A01F81323000000643EABCA.MinimumAge=0
ACME_TRADING_PARTNER.transports.ACME_TP10AF408301A01F81323000000643EABCA.MaxRaiseSize=100
# Send
ACME_TRADING_PARTNER.transports.ACME_TP10AF408301A01F81323000000643EABCA.WRITE_PhysicalDirectory=/pub/
ACME_TRADING_PARTNER.transports.ACME_TP10AF408301A01F81323000000643EABCA.FileNamingConvention=order_%SEQ%.dat

# ACME_TP2
# Send
ACME_TRADING_PARTNER.transports.ACME_TP20AF42BE41A11AF3CB72000003477DC16.SEND_REST_URI=/test

# ACME_TP3
# AS2 identifiers
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.host_as2_id=AS2 Identifier | FLEXAGONOIC_AS2
# Receive
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.allowAnyAs2Identifier=true
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.dontValidateAS2ToHeader=true
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.isForcedSignVerificationInbound=false
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.isForcedEncryptionCheckInbound=false
# Send
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.message_subject=test
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.payload_content_type=
# Packaging options
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.sign_algo=SMIME 3.2 with SHA1-RSA
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.encrypt_algo=SMIME-3_0-RC2-40
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.signCompressOrder=NONE
# MDN options
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.mdn_return_method=Sync
ACME_TRADING_PARTNER.transports.ACME_TP30AF417EC1A11AF8789700000703740A5.signed_mdn=false

# ACME_TP4
# AS4 identifiers
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.host_as4_id=Application Partner ID | RGT
# Send
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.payload_content_type=application/EDI-Consent
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.pmode_id=test
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.pmode_agreementref=test4
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.send_payload_as_attachment=true
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.usePasswordDigestForOutbound=false
# Packaging options
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.sign_algo=RSA_SHA1
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.encrypt_algo=TRIPLE_DES
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.isCompressed=false
# MDN options
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.mdn_return_method=Sync
ACME_TRADING_PARTNER.transports.ACME_TP40AF417EC1A11AF9C3B800000703740A7.signed_mdn=false

# ACME_TP5
# RosettaNet identifiers
ACME_TRADING_PARTNER.transports.ACME_TP50AF42BE41A11B001756000003477DC18.host_duns_id=DUNS | this2
# Send
ACME_TRADING_PARTNER.transports.ACME_TP50AF42BE41A11B001756000003477DC18.additional_transport_headers=dd
# Packaging options
ACME_TRADING_PARTNER.transports.ACME_TP50AF42BE41A11B001756000003477DC18.sign_algo=NONE
ACME_TRADING_PARTNER.transports.ACME_TP50AF42BE41A11B001756000003477DC18.encrypt_algo=NONE
ACME_TRADING_PARTNER.transports.ACME_TP50AF42BE41A11B001756000003477DC18.signCompressOrder=NONE

# OutboundAgreements
# ACME_OUTBOUND_AGREEMENT
# Host identifiers
ACME_TRADING_PARTNER.outboundAgreements.ACME_OUTBOUND_AGREEMENT1787223755223.hostIdentifiers.1=Application Partner ID | RGT
ACME_TRADING_PARTNER.outboundAgreements.ACME_OUTBOUND_AGREEMENT1787223755223.hostIdentifiers.2=DUNS | this2
# Configure agreement settings
ACME_TRADING_PARTNER.outboundAgreements.ACME_OUTBOUND_AGREEMENT1787223755223.validate=true
ACME_TRADING_PARTNER.outboundAgreements.ACME_OUTBOUND_AGREEMENT1787223755223.acceptGroup=
ACME_TRADING_PARTNER.outboundAgreements.ACME_OUTBOUND_AGREEMENT1787223755223.acceptGroupName=
ACME_TRADING_PARTNER.outboundAgreements.ACME_OUTBOUND_AGREEMENT1787223755223.rejectGroup=
ACME_TRADING_PARTNER.outboundAgreements.ACME_OUTBOUND_AGREEMENT1787223755223.rejectGroupName=
# Generate functional acknowledgment
ACME_TRADING_PARTNER.outboundAgreements.ACME_OUTBOUND_AGREEMENT1787223755223.fa=true

# InboundAgreements
# ACME_INBOUND_AGREEMENT
# Configure agreement settings
ACME_TRADING_PARTNER.inboundAgreements.ACME_INBOUND_AGREEMENT1787223670033.validate=true
ACME_TRADING_PARTNER.inboundAgreements.ACME_INBOUND_AGREEMENT1787223670033.acceptGroup=
ACME_TRADING_PARTNER.inboundAgreements.ACME_INBOUND_AGREEMENT1787223670033.acceptGroupName=
ACME_TRADING_PARTNER.inboundAgreements.ACME_INBOUND_AGREEMENT1787223670033.rejectGroup=
ACME_TRADING_PARTNER.inboundAgreements.ACME_INBOUND_AGREEMENT1787223670033.rejectGroupName=
# Generate functional acknowledgment
ACME_TRADING_PARTNER.inboundAgreements.ACME_INBOUND_AGREEMENT1787223670033.fa=true
ACME_TRADING_PARTNER.inboundAgreements.ACME_INBOUND_AGREEMENT1787223670033.duplicateCtrlNumCheck=false

##############################################################
```

## Empty Properties

> [!NOTE]
>
> Only identifier and control number entries that need to be overridden should be included in the Trading Partner Identifier Plan file. If a line is present with no value (as shown above), the corresponding Trading Partner identifier or control number setting will be updated to an empty value.
