If you are developing a custom adapter, you can register it with BizTalk Server by modifying and running one of the registry files included with the Sample File Adapter in the Software Development Kit (SDK), or you can use the Adapter Registration Wizard to create a registry file from scratch.
After you create these registry entries, you can add the adapter in the BizTalk Administration console or programmatically by using BizTalk Windows® Management Instrumentation (WMI) methods. This topic discusses each of the registry entries and then shows you where and how to modify the existing registry files for your custom adapter.
For instructions on using the Adapter Registration Wizard, see Adapter Registration Wizard. For instructions on modifying the sample registry files included in the SDK, see Modifying the Adapter Registration File.
Registry keys
You need to create the following registry entries to deploy an adapter:
Registry key location
The location to write to in the registry.
[HKEY_CLASSES_ROOT\CLSID\{%uuid of custom transport%}\BizTalk]
@="BizTalk" Type name
Adapter type name identifies the type of adapter in the BizTalk Server computer.
"TransportType"="MyTransportAdapter"
This is a required key for any adapter.
Constraints
Adapter constraints define the capabilities of the adapter's functionality.
This is a required key for every adapter. Depending on the type of adapter you are creating, you may want to modify the bitmask value of the constraints.
"Constraints"=dword:00003C0b
The value that describes the capabilities of the adapter can be a combination of values shown in the following table.
| Value | Hex value | Flag | Description |
| 1 | 0x0001 | eProtocolSupportsReceive | Adapter supports receive operations. |
| 2 | 0x0002 | eProtocolSupportsTransmit | Adapter supports send operations. |
| 4 | 0x0004 | eProtocolRequireSingleInstancePerServer | Adapter requires a single instance per server. |
| 8 | 0x0008 | eProtocolReceiveIsCreatable | Receive handler of adapter is hosted in-process. |
| 16 | 0x0010 | eProtocolIsApplicationProtocol | Adapter is application protocol. |
| 32 | 0x0020 | eProtocolDeleteProtected | Adapter is delete protected. |
| 64 | 0x0040 | eProtocolStaticHandlers | Adapter supports static handlers. |
| 128 | 0x0080 | eProtocolSupportsRequestResponse | Adapter supports request-response operations. |
| 256 | 0x0100 | eProtocolSupportsSolicitResponse | Adapter supports solicit-response operations. |
| 512 | 0x0200 | eProtocolSupportsSOAP | Adapter supports the SOAP protocol. |
| 1024 | 0x0400 | eOutboundProtocolRequiresContextInitialization | Adapter uses Adapter Framework user interface for send handler configuration. |
| 2048 | 0x0800 | eInboundProtocolRequiresContextInitialization | Adapter uses Adapter Framework user interface for receive handler configuration |
| 4096 | 0x1000 | eReceiveLocationRequiresContextInitialization | Adapter uses Adapter Framework user interface for receive location configuration. |
| 8192 | 0x2000 | eTransmitLocationRequiresContextInitialization | Adapter uses Adapter Framework user interface for send port configuration. |
| 16384 | 0x4000 | eSupportsOrderedDelivery | Adapter supports ordered delivery. |
| 32768 | 0x8000 | eInitTransmitterOnServiceStart | Send adapter starts when the service starts instead of when it sends the first message. |
The constraint of the sample static file adapter is 3C0b, which is equivalent to 15371. This means the adapter has the following capabilities: eProtocolSupportsReceive (1), eProtocolSupportsTransmit (2), eProtocolReceiveIsCreatable (8), eOutboundProtocolRequiresContextInitialization (1024), eInboundProtocolRequiresContextInitialization (2048), eReceiveLocationRequiresContextInitialization (4096), and eTransmitLocationRequiresContextInitialization (8192).
Namespace
Each adapter must define its properties namespace. BizTalk Server stores adapter-specific properties on the message context under this namespace. This is a required property for all adapters.
"PropertyNameSpace"="namespace"
Aliases
Each adapter may have a set of prefixes that uniquely identify the adapter type within BizTalk Server. The adapter needs to specify the list of its prefixes at registration time. Prefixes must be unique within BizTalk Server.
"AliasesXML"="<AdapterAliasList><AdapterAlias>foo://</AdapterAlias></AdapterAliasList>"
Property pages for receive handlers, send handlers, receive locations and send ports
The adapter must have configuration property pages to configure its receive locations and send ports. Each adapter registers its property pages by specifying their respective class IDs.
"InboundProtocol_PageProv"="{%CLSID for inbound protocol prop page%}"
"OutboundProtocol_PageProv"="{%CLSID for outbound protocol prop page%}"
"ReceiveLocation_PageProv"="{%CLSID for receive location prop page%}"
"TransmitLocation_PageProv"="{%CLSID for transmit location prop page%}" If the adapter uses the Adapter Framework's user interface for property page generation, it must specify the following values for the registry keys:
"InboundProtocol_PageProv"="{2DE93EE6-CB01-4007-93E9-C3D71689A281}"
"OutboundProtocol_PageProv"="{2DE93EE6-CB01-4007-93E9-C3D71689A283}"
"ReceiveLocation_PageProv"="{2DE93EE6-CB01-4007-93E9-C3D71689A280}"
"TransmitLocation_PageProv"="{2DE93EE6-CB01-4007-93E9-C3D71689A282}" Note that if one of the endpoints is not required (the adapter is send or receive only), the unused registry keys can be deleted from the registry.
Runtime components registration
The adapter registers its runtime components by specifying their class IDs (for COM and .NET), type names, and assembly paths (for .NET) for receive and transmit runtime components.
Note All the OutboundEngineCLSID and the InboundEngineCLSID keys must be unique. For a single row in a database, the OutboundEngineCLSID and the InboundEngineCLSID may be the same.
"OutboundEngineCLSID"="{%CLSID of outbound transport%}"
"InboundEngineCLSID"="{%CLSID of inbound transport%}"
"InboundTypeName"="BizTalk.Samples.Adapters.MyReceiver"
"OutboundTypeName"="BizTalk.Samples.Adapters.MyTransmitter"
"InboundAssemblyPath"="C:\Program Files\MyTransport.dll"
"OutboundAssemblyPath"="C:\Program Files\MyTransport.dll" Registration of adapter properties for SSO configuration store
The adapter needs to register its properties with the BizTalk Server Credential database to be able to store and retrieve the properties at design time and run time.
ReceiveHandlerPropertiesXML
ReceiveLocationPropertiesXML
SendHandlerPropertiesXML
SendLocationPropertiesXML
These values contain the definitions (schema) for the allowed properties of the corresponding entities related to the adapter, which can be stored in the Configuration store. These definitions are kept as an XML string being deserialized by the property bag, with property types, but without values. A nonempty value of the property element means that the property is masked. (Masked means that it is write-only, and is not returned by the Secure Store API when called in administrative mode; the Secure Store API returns VT_NULL for such properties.)
Example
The HTTP adapter registers its properties for the HTTP send port by defining the SendLocationPropertiesXML registry key with the following value:
<CustomProps><Username vt="8"/><Password vt="8">Encrypted</Password><Certificate vt="8"/><RequestTimeout vt="3"/><MaxRedirects vt="3"/><ContentType vt="8"/><UseProxy vt="11"/><ProxyName vt="8"/><ProxyPort vt="3"/><ProxyUsername vt="8"/><ProxyPassword vt="8">Encrypted</ProxyPassword><UseHandlerSetting vt="11"/><AuthenticationScheme vt="8"/><UseSSO vt="11"/><AffiliateApplicationName vt="8"/></CustomProps>
Registration of the component as a transport provider
[HKEY_CLASSES_ROOT\CLSID\{%uuid of custom transport%}\Implemented Categories]
[HKEY_CLASSES_ROOT\CLSID\{%uuid of custom transport%}\Implemented Categories\{7F46FC3E-3C2C-405B-A47F-8D17942BA8F9}] See Also
Custom Adapter Configuration