BizTalk – WCF-SQL Issues

Just some issues I experienced using WCF-SQL…

Error: Value cannot be null

ErrorValueCannotBeNull

Solution: Specify a SOAP Action Header. This can also be found in the XSD of the generated metadata

SolutionValueCannotBeNull


 

Error: Received unexpected message type, does not match expected type

ErrorDoesNotMatchExpectedType

Solution: Change the receive pipeline to XMLReceive

SolutionDoesNotMatchExpectedType

BizTalk how to use same message inside and outside loop

  1. Create two Orchestration messages of same type. In this case I refer to them as Message1 and Message2
  2. Create a Orchestration variable of type System.Xml.Document. Tn this case I refer to it as xmlDocument
  3. Construct Message1 outside, before the loop with a Transform ect.
  4. Inside loop, within a single Construct Shape:
    1. Assign xmlDocument to Message2
    2. Manipilate Message2
    3. Assign Message2 to xmlDocument
  5. Outside, after the loop, assign xmlDocument to Message1
  6. Return Message1

BizTalk – Rename Output File Based on Some Attribute in Orchestration

  1. Create an Orchestration string variable (in this case testVAR)
  2. Add assignment shape with code below
  3. Change the send location output file name to %SourceFileName%

    [sourcecode language=”csharp”]
    outputMessage = outputMessage ;

    testVAR = xpath(outputMessage,"string(/*[local-name()=’SomeName1′ and namespace-uri()=’SomeSchema’]/*[local-name()=’SomeName2′ and namespace-uri()=”]/*[local-name()=’SomeName3′ and namespace-uri()=”]/text())");

    outputMessage(FILE.ReceivedFileName) = testVAR + ".TXT";
    [/sourcecode]

     

BizTalk – Using Tag Identifiers on Optional Records

Problem: I have a flat file with optional records for which I need to create a schema. Validation of schema only succeeds when a file is selected that contains all the possible records and fails if any is removed.

Resolution: Change the Parser Optimization (located on the schema node) to “Complexity” instead of “Speed” optimization.

BizTalkOptionalTagIdentifiers

BizTalk – Publishing Message Transformation Orchestration as WCF Web Service

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

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

 

 

2

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

 

 

3

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

 

 

4

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

 

 

5

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

 

 

6

6) Repeat step 2 and add a “Map”

 

 

7

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

 

 

8

8) Values for the first “Mathematical Functoid”

 

 

9

9) Values for the second “Mathematical Functoid”

 

 

10

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

 

 

11

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

 

 

 

12

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

 

 

13

13) Repeat step 2 and add an “Orchestration”

 

 

14

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

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

 

 

16

16) Add port and give it a name.

 

 

17

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

 

 

18

18) Leave at “Specify later”.

 

 

19

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

 

 

20

 

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

 

 

21

 

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

 

 

22

 

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

 

 

 

23

 

23) Build solution

 

 

24

 

24) Deploy solution

 

 

25

 

25) GAC deploy assembly after each build

 

Part 2 – Publish

p1

 

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.

 

 

p2

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

 

 

p3

 

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

 

 

p4

 

4) Ensure ports are shown

 

 

 

p5

 

5) Specify namespace

 

 

p6

 

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

 

 

p7

 

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

 

 

p8

 

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.

 

 

p9

 

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

 

 

p10

 

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

 

 

p11

 

11) Start the BizTalk application.

 

 

p12

 

12) After these step, the web service test page should display correctly.

 

Part 3 – Testing

t1

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