Thursday, October 23, 2008

Biztalk 2006: Oracle adapter namespace problem

Problem

I was deploying a Biztalk project from the development enviroment to the test enviroment when I encountered an error with Oracle adapter. That's because I have a different database schema name in both enviroments and database schema name is hard-coded to the schema.

This means that I can't use same SOAP header action in a send port for test and development enviroment and I didn't want to generate different schemas for different enviroments.

Solution

In a generated schema file I had namespaces with schema name on it:
http://Microsoft.LobServices.OracleDB/2007/03/NAMEOFSCHEMA/View/MYVIEWNAME

I removed schema name from the namespace:
http://Microsoft.LobServices.OracleDB/2007/03/View/MYVIEWNAME

Then I deployed project again. Next thing I did was changing the send port properties. Database schema name must be in SOAP header action even when schema name is not declared in a namespace

<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Operation Name="portOperationName" Action="http://Microsoft.LobServices.OracleDB/2007/03/NAMEOFSCHEMA/View/MYVIEWNAME/Select" />
</BtsActionMapping>


I also changed couple of send port binding-properties EnableBiztalkCompabilityMode=true and useSchemaInNamespace=false.

Now I can deploy my Biztalk project to several enviroments without generating different schemas for each enviroment

No comments:

Post a Comment