The following details the steps required to publish a very simple message transformation orchestration as a WCF web service via BizTalk
Part 1 – Project

1) Open Visual Studio and create an “Empty BizTalk Server Project”

2) Right click project in Solution Explorer and select “New item…”

3) Add a “Schema” file that will be used to define the request message

4) Define the request message schema. The schema in example has two attributes, “Amount” and “Quantity”. Define namespace.

5) Repeat step 2 and add another “Schema” for the response message. In this example it has one attribute called “Tax”. Define namespace.

6) Repeat step 2 and add a “Map”

7) In map the transformation is defined from a request message to a response message.

8) Values for the first “Mathematical Functoid”

9) Values for the second “Mathematical Functoid”

10) Right-Click map and select “Test Map”

11) CTRL-Click the first test map to see test request map

12) CTRL-Click the second test map to see response map with value calculate from test request map

13) Repeat step 2 and add an “Orchestration”

14) Add a “Receive Shape”, “Transform Shape” and a “Send Shape”. Create a two messages, one for a request schema and another for the response schema.

15) Configure the “Transform Shape” with the map created in step 6.

16) Add port and give it a name.

17) Create a new port type and give it a name. The port must be public and a request-response pattern.

18) Leave at “Specify later”.

19) Configure messages in the “Receive Shape” and “Send Shape” from the messages created in step 14.

20) Connect the “Request” and “Response” ports to the “Receive Shape” and the “Send Shape”. Set the orchestration to public.

21) Specify the BizTalk application name otherwise it will deploy in default application on BizTalk.

22) Add a key to sign assembly. Assembly will be GAC deployed and a key file is required.

23) Build solution

24) Deploy solution

25) GAC deploy assembly after each build
Part 2 – Publish

1) Start the “BizTalk WCF Publishing Wizard”. In this example the “WCF-WSHttp” transport type is used. Ensure that “Enable on-premise metadata exchange” and “Create BizTalk receive locations in the following application:” has the application published in part 1 selected.

2) Select “Publish BizTalk orchestrations as WCF service”.

3) On the next page browse to the assembly created in part 1.

4) Ensure ports are shown

5) Specify namespace

6) In this example the WCF service will allow anonymous access.

7) If we at this stage browse to web service location we get this error.

8) To resolve error in step 2, change the identity of the application pool used by the web service, to one with appropriate BizTalk rights.

9) If we at this stage browse to web service location we get this error.

10) To resolve error in step 9, configure the orchestration in the published BizTalk application.

11) Start the BizTalk application.

12) After these step, the web service test page should display correctly.
Part 3 – Testing

After the orchestration is published, it is available and transformation can be tested