Welcome to MSDN Blogs Sign in | Join | Help

WCF LOB Adapter SDK and BizTalk Adapter Pack

The BizTalk Adapter Pack, comprising of the SAP, Siebel, OracleDB, OracleEBS and SQL WCF Bindings / Adapters which can be used with BizTalk Server 2006 R2 and R3. The Windows Communication Foundation (WCF) Line Of Business (LOB) Adapter SDK.

Syndication

News

CTP4 released (Adapter Pack V2, Adapter SDK V1 SP2) on October 21, 2008

Other Blogs Related to BizTalk Adapter Pack

Inserting parent child records with Identity column using WCF-SQL Adapter in one transaction

The following blog post by Atin nicely explains how to go about doing this

 http://blogs.msdn.com/biztalkcpr/archive/2009/10/05/inserting-parent-child-records-with-identity-column-using-wcf-sql-adapter-in-one-transaction.aspx

Posted Tuesday, October 13, 2009 4:58 AM by SandeepP | 0 Comments

Using the WCF SQL Adapter to submit messages to SSB queues from BizTalk

This post is a follow-up to http://blogs.msdn.com/adapters/archive/2008/06/30/using-the-wcf-sql-adapter-to-read-messages-from-ssb-queues-and-submit-them-to-biztalk.aspx and explains how to push a message using the WCF SQL Adapter from BizTalk to a SQL Service Broker (SSB) queue.

 

Scenario

 

1.       An XML message is dropped to a file share

2.       This XML message is made available to the WCF SQL Adapter by using the File Adapter

3.       The WCF SQL Adapter then pushes this XML message to a preconfigured SSB queue by invoking a Stored Procedure

 

Create the database artifacts required for the SSB conversation

 

1.       A message type, which denotes the format of the message in the queue

2.       A contract, which denotes the conversation between a sender and a receiver and also includes the type of message flowing between them

3.       The Initiator & Target queues, where messages are stored

4.       The Initiator & Target services, which utilize the above queues

 

USE master;

GO

ALTER DATABASE <your db name here>

    SET ENABLE_BROKER;

GO

USE <your db name here>;

GO

 

CREATE MESSAGE TYPE

    [//SqlAdapterSSBSample/RequestMessage]

    VALIDATION = WELL_FORMED_XML;

 

CREATE CONTRACT [//SqlAdapterSSBSample/SampleContract]

    ([//SqlAdapterSSBSample/RequestMessage]

    SENT BY INITIATOR

    );

 

CREATE QUEUE InitiatorQueue1DB;

 

CREATE SERVICE

    [//SqlAdapterSSBSample/InitiatorService]

    ON QUEUE InitiatorQueue1DB;

 

CREATE QUEUE TargetQueue1DB;

 

CREATE SERVICE

    [//SqlAdapterSSBSample/TargetService]

    ON QUEUE TargetQueue1DB

    ([//SqlAdapterSSBSample/SampleContract]);

 

5.       A stored procedure, say InitiatorSP, that will take the message as an argument and push it to the SSB queue. Let’s use the name RequestMsg for the argument.

 

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[InitiatorSP]

      @RequestMsg xml

AS

BEGIN

      DECLARE @DlgHandle UNIQUEIDENTIFIER;

      BEGIN DIALOG @DlgHandle

      FROM SERVICE

      [//SqlAdapterSSBSample/InitiatorService]

      TO SERVICE

      N'//SqlAdapterSSBSample/TargetService'

      ON CONTRACT

      [//SqlAdapterSSBSample/SampleContract]

      WITH ENCRYPTION = OFF;

      SEND ON CONVERSATION @DlgHandle

      MESSAGE TYPE

      [//SqlAdapterSSBSample/RequestMessage]

      (@RequestMsg);

END

GO

 

Create the BizTalk artifacts

 

1.       Start the BizTalk Server 2009 Administration Console

2.       Create a new BizTalk application, say SSBSendApplication

3.       Create a new Receive Port, say FileReceivePort and add a new Receive Location, say FileReceive

a.       Set the Type to File and configure the Receive Folder to point to a local share, say c:\in

4.       Create a new Static One-way Send Port, say SqlSendPort

a.       In the General tab,

                                                               i.      Set the Type to WCF-SQL

                                                             ii.      Click Configure and set the properties as follows

1.       In the General tab, set

a.       Address – the format is “mssql://<servername>/<instancename>/<databasename>”. For example, on my machine (using the default instance of SQL server), mssql://localhost//SSBTestDb (where SSBTestDb is the name of my database)

b.      Action – the format is “TypedProcedure/<schemaname>/<storedprocedurename>”. For example, in my case, it is TypedProcedure/dbo/InitiatorSP

2.       In the Messages tab, select Template and fill in the XML box with the following

 

<InitiatorSP xmlns="http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo">

<RequestMsg>

<bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="string"/>

</RequestMsg>

</InitiatorSP>

 

*Note that this approach requires that the xml encoding is string.

 

                                                            iii.      Leave the other properties as is

b.      In the Filters tab, add a filter BTS.ReceivePortName == FileReceivePort

5.       Create a new Static One-way Send Port, say FileSendPort

a.       In the General tab, set the Type to File and configure the Receive Folder to point to a local share, say c:\out

b.      In the Filters tab, add a filter BTS.SPName == SqlSendPort

6.       At this point the configuration of BizTalk application is completed, so start the application.

 

Send the message to SSB queue

 

1.       Drop a request file to the c:\in share (one that file receive port is using). Note that this exact message will show up in the SSB queue. Here’s a sample message

 

<RequestMessage>Hello World</RequestMessage>

 

Consume the message from SSB queue

 

1.       You can now consume the message from the SSB queue. On running the below query, you will see the above message.

 

DECLARE @DlgHandle UNIQUEIDENTIFIER;

DECLARE @RecvMsg XML;

RECEIVE TOP (1)

@DlgHandle=conversation_handle,

@RecvMsg = CAST(message_body as XML)

FROM TargetQueue1DB;

IF NOT (@DlgHandle IS NULL)

BEGIN

END CONVERSATION @DlgHandle;

SELECT @RecvMsg AS ReceivedMessage;

END

Posted Wednesday, October 07, 2009 5:11 AM by SandeepP | 0 Comments

Filed under: , ,

Introducing the Migration Tool for Microsoft BizTalk Adapters for Enterprise Applications

For customers currently using the Microsoft BizTalk Adapters for Enterprise Applications (aka the LOB adapters) and willing to migrate their existing projects to the WCF-based LOB adapters, here's a tool that will help you migrate your projects to work with BizTalk Adapter Pack 2.0.

Before we start talking about the tool and the adapter projects it can be used against, let us set the ground by laying the rules for the naming convention that we will be using here:

  • Microsoft BizTalk Adapters for Enterprise Applications adapters are referred to as non-WCF LOB adapters.

  • Adapters part of BizTalk Adapter Pack 2.0 are referred to as WCF-based LOB adapters.

What does the tool do?

The migration tool accepts BizTalk project/Solution files containing schemas generated by non-WCF LOB adapters and generates corresponding new BizTalk project/solution files having schemas corresponding to the WCF-based LOB adapters, with the maps and orchestrations modified accordingly. This tool helps you to migrate the projects for the following adapters:

  • BizTalk ODBC Adapter for Oracle Database
  • BizTalk Adapter v2.0 for mySAP Business Suite
  • SQL adapter

 Where to get the tool from?

You can download the tool from http://go.microsoft.com/fwlink/?LinkID=153328. The tool also includes a migration guide that describes:

  • How to run the tool
  • What steps to follow after the tool has finished migrating the project
  • Limitations of the migration tool.

Posted Tuesday, June 16, 2009 4:03 PM by nitinme | 2 Comments

Filed under:

Why does the OracleEBS adapter say “Could not retrieve User ID, Responsibility ID, and Application ID”?

Sometimes, the Oracle EBS adapter throws this error while invoking artifacts like Concurrent Programs, Interface Tables, Interface Views and a few PL-SQL APIs.

The message in the event viewer looks like the following (snipped some portions to improve readability):

Event Type: Warning
Event Source: BizTalk Server 2009
...

Description:
The adapter failed to transmit message going to send port "<your_send_port_name>" with URL "oracleebs://<YourURI>". It will be retransmitted after the retry interval specified for this Send Port.

Details:"Microsoft.ServiceModel.Channels.Common.ConnectionException: Could not retrieve User ID, Responsibility ID, and Application ID. These values are required to set the application context. Make sure that you have specified correct values in the binding properties or the message context properties for setting the application context.

---> Microsoft.ServiceModel.Channels.Common.MetadataException:

---> Oracle.DataAccess.Client.OracleException ORA-01403:

....

at Microsoft.Adapters.OracleEBS.OracleEBSConnection.InitializeApps(...)
at Microsoft.Adapters.OracleEBS.OracleEBSConnection.OpenConnection(...)  

 

The Oracle adapter throws this error when it is not able to set app context using the Responsibility-Name (or responsibility-key), application-short-name and apps-user provided by the user. You can read up on app-context in earlier blogs posts (http://blogs.msdn.com/adapters/archive/2008/10/14/oracle-ebs-adapter-application-context.aspx  and http://blogs.msdn.com/adapters/archive/2008/10/17/precedence-while-setting-application-context-in-oracle-ebs-adapter.aspx).

 

One of the commonly asked questions is "How do I determine the correct responsibility name to be used?".

 

Here is a tool that you can use to determine the responsibility that you need to set app context. The tool will prompt will prompt you for relevant details like credentials, application short name etc.

 

Usage: CheckAppContext [/Responsibility:<Responsibility>]

 

-          If the responsibility name is not provided, the tool lists the valid responsibilities that could be used for the apps user <AppsUserName> in the application <AppsShortName>.

 

-          If the responsibility name is provided, the tool checks whether the provided combination of <AppsShortName> and <Responsibilty> can be used to set app context for the Apps User <AppsUserName>.

 

NOTE: The responsibility should be enclosed in quotes if it has spaces else quotes are not required .

Posted Wednesday, June 03, 2009 6:59 PM by Murali Narumanchi | 0 Comments

Filed under:

Attachment(s): CheckAppContext.exe

Using Oracle Database or Oracle EBS adapter for Oracle AQ (Advanced Queuing)

Here is a simple way to get started on Oracle AQ (Advanced Queuing) using the Oracle Database and/or Oracle E-Business Suite adapters. Here is what I did, right from defining my queue - one step at a time.

Step 1 - Define the queue payload type
CREATE TYPE AQ_MESSAGE_TYPE AS OBJECT (ID VARCHAR2(30), INFO VARCHAR2(200));

Step 2 - Define the queue table
EXEC  DBMS_AQADM.CREATE_QUEUE_TABLE(QUEUE_TABLE => 'INFO', QUEUE_PAYLOAD_TYPE => 'AQ_MESSAGE_TYPE');

Step 3 - Create the queue
EXEC DBMS_AQADM.CREATE_QUEUE(QUEUE_NAME => 'AQ_MESSAGE_QUEUE', QUEUE_TABLE => 'INFO');

Step 4 - Start the queue
EXEC DBMS_AQADM.START_QUEUE(QUEUE_NAME => 'AQ_MESSAGE_QUEUE');

Step 5 - Create a function to enqueue
CREATE OR REPLACE FUNCTION ENQUEUE_AQ_MESSAGE_QUEUE(PAYLOAD IN AQ_MESSAGE_TYPE) RETURN RAW
AS
 PROPERTIES DBMS_AQ.MESSAGE_PROPERTIES_T;
 MSGID RAW(16);
 OPTIONS DBMS_AQ.ENQUEUE_OPTIONS_T;
BEGIN
 DBMS_AQ.ENQUEUE('AQ_MESSAGE_QUEUE',
    OPTIONS,
    PROPERTIES,
    PAYLOAD,
    MSGID);

 RETURN MSGID; 
END;

Step 6 - Create a function to dequeue
CREATE OR REPLACE FUNCTION DEQUEUE_AQ_MESSAGE_QUEUE(PAYLOAD OUT AQ_MESSAGE_TYPE) RETURN RAW
AS
 PROPERTIES DBMS_AQ.MESSAGE_PROPERTIES_T;
 OPTIONS DBMS_AQ.DEQUEUE_OPTIONS_T;
 MSGID RAW(16);
 NOTHING_TO_DEQUEUE EXCEPTION;  
 PRAGMA   
 EXCEPTION_INIT (NOTHING_TO_DEQUEUE, -25228);
BEGIN
 OPTIONS.WAIT := DBMS_AQ.NO_WAIT;
 DBMS_AQ.DEQUEUE('AQ_MESSAGE_QUEUE',
    OPTIONS,
    PROPERTIES,
    PAYLOAD,
    MSGID);
 RETURN MSGID;
EXCEPTION
 WHEN NOTHING_TO_DEQUEUE
  THEN RETURN NULL;
END;

A word on dequeue and enqueue functions - these are simplistic in this example. You might want to modify them to take more inputs (for example - more message properties or enqueue/dequeue properties as input). The dequeue function returns immediately if a message is not available for dequeue and returns null in that case. You could tweak that too.

Step 7 - Call the functions using the adapter!
It is easy calling these from the adapter now. The reason why the DBMS_AQ.ENQUEUE and DBMS_AQ.DEQUEUE cannot be called directly from the adapter is that they use complex data types that are not supported by ODP.NET. One can now even call the dequeue function in a polling context, and get messages delivered to them as they are pushed into the queue! The links to portions of the Oracle Database adapter help that will help you do this are:

Thanks to Mustansir for suggesting this blog idea!

Posted Monday, May 25, 2009 12:31 PM by manasg | 0 Comments


Attachment(s): AqSqlScript.sql

WCF Siebel Adapter - Query fails because of misconfigured fields

 

Siebel adapter uses the COM interface to invoke calls on Siebel. For business component query, Siebel supports two ways of retrieving the field values for records. One can either use GetFieldValue to retrieve one field at a time or the other option is to use GetMultipleFieldValues to retrieve values for a bunch of fields in one go. The latter is better from a performance standpoint and is what the adapter uses. The problem with this approach though is that even if one of the fields, whose values are being retrieved, is mis-configured, the entire query call fails.

In development environments, it can happen that some of the customizations have issues, resulting in query failure as described above. The first step towards diagnosing the problem is identification of those problematic fields. The error message doesn’t always help identify the fields. When in such situation, one can use the attached Siebel COM sample code to narrow down the fields. You will need to add a reference to sstchca.dll (present in the Siebel install folder, in the bin sub-directory).

Once you have narrowed down the fields, you can either fix the issue with the field or if it’s not of interest, mark them as inactive on Siebel backend. You can then query using the Siebel adapter without any issues. Alternately, you can also use the QueryFields (optional) argument passed to the query operation to retrieve only the fields of interest.

Posted Monday, May 11, 2009 12:24 PM by SandeepP | 0 Comments

Filed under:

Attachment(s): Program.cs

BizTalk Adapter Pack 2.0 is now available

The BizTalk Adapter Pack 2.0 was released to manufacturing and is now generally available .

For BizTalk 2009 users (except branch edition), the Adapter Pack 2.0 license comes free and can be downloaded from the volume licensing site.

Biztalk 2006 R2 users can get the Biztalk Adapter Pack if they have Software Assurance for Biztalk.

Others will have to buy it seperately.

The prequsite for this is the WCF LOB Adapter SDK SP2.  A 120 day evaluation version of the Adapter Pack 2.0 is also now  available . The below table summarizes all the links you need to get started with the Adapter Pack 2.0 .  

Item

Link

Product

WCF LOB Adapter SDK SP2(pre-req for BAP 2.0)

http://go.microsoft.com/fwlink/?LinkId=147367

Adapter Pack 2.0 120 day Evaluation Version

 http://www.microsoft.com/downloads/details.aspx?FamilyID=76736ba7-3c05-4436-9353-1c33f9005194&displaylang=en

Adapter Pack on volume licensing site (requires access)

http://www.microsoftvolumelicensing.com/userights/ProductPage.aspx?pid=281

MSDN Subscribers (requires access)

http://msdn.microsoft.com/subscriptions/downloads  under BizTalk Server Accelerators and Adapters

SQL Adapter SKU Download(For BizTalk branch edition customers)

http://go.microsoft.com/fwlink/?LinkId=147379

Documentation and Samples

 

MSDN Location of Adapter Pack 2.0 docs

http://go.microsoft.com/fwlink/?LinkId=149364

Download location for individual CHMs in Adapter Pack 2.0

http://go.microsoft.com/fwlink/?LinkId=147355

Download location for Adapter Pack 2.0 Installation Guide

http://go.microsoft.com/fwlink/?LinkId=147364

Download location for SQL Adapter Installation Guide and CHM

http://go.microsoft.com/fwlink/?LinkId=147377

Download location for all the samples for Adapter Pack 2.0

http://go.microsoft.com/fwlink/?LinkID=145144

The Forum to ask any questions or look for answers is here  .  This version also includes the Customer Experience Improvement Program. Do turn it on so that we get some valuable feedback that can be used for future improvements.

 


 

Posted Monday, May 04, 2009 6:40 AM by Vivek Krishna | 6 Comments

Connection failure when using the WCF Siebel Adapter

I have seen quite a few instances where people run into issues while using the WCF Siebel adapter because of

 

a.       Siebel Web Client is not installed correctly on the machine

b.      Or the URI passed to the adapter, that eventually gets transformed to the connection string passed to Siebel, is incorrect

 

In order to eliminate the above 2 as possible causes, you can try out the following sample code that will use the Siebel COM interface to directly talk with Siebel (adapter is not involved). Please make sure you don’t see any error messages.

 

/// Application that will issue Login-Logoff request to Siebel

///

/// To run this program,

/// - Set ConnectString, Username and Password. ConnectString is of the format

///     siebel://host/EnterpriseServer/AppObjMgr/SiebelServer

///   (SiebelServer is required in case of Siebel 7.5)

///   For an example, please see the code below.

/// - Add a reference to sstchca.dll (found in siebel client install folder)

/// - Compile and run the program

/// - If the login fails, you will see an error message

 

using System;

using System.Runtime.InteropServices;

using SiebelBusObjectInterfaces;

 

namespace Sample

{

    class Program

    {

        const string ConnectString = "host=\"siebel://adapsblsrvr77:2321/ent77/SSEObjMgr_enu";

        const string Username = "abc";

        const string Password = "def";

 

        static void Main(string[] args)

        {

            SiebelDataControl sdc = null;

            bool loggedIn = false;

 

            try

            {

                /// Create a connection

                sdc = new SiebelDataControl();

                sdc.EnableExceptions(1);

                sdc.Login(ConnectString, Username, Password);

                loggedIn = true;

            }

            catch (COMException ex)

            {

                Console.WriteLine("ERROR: " + ex.ToString());

            }

            finally

            {

                if (sdc != null)

                {

                    if (loggedIn)

                    {

                        sdc.Logoff();

                    }

                    Marshal.ReleaseComObject(sdc);

                    sdc = null;

                }

            }

 

            Console.WriteLine("Press any key to terminate...");

            Console.ReadLine();

        }

    }

}

 

Posted Friday, April 17, 2009 5:07 AM by SandeepP | 0 Comments

Filed under: ,

Things to consider when writing WCF LOB Adapters for consumption through BizTalk

 

If you are writing a WCF LOB adapter that can be consumed through BizTalk, you need to be aware of certain issues that can manifest because of the way BizTalk interacts with WCF adapters. Some of these can have performance and scalability impact and hence you should consider them when designing/configuring the adapter.

  1. Processing in IConnection/IConnectionFactory instance – When using SSO, for each message, BizTalk will end up creating a new IConnectionFactory and a new IConnection instance. If your adapter is doing a lot of processing in either of those instances, it can cause significant performance impact. So you will need to think of alternatives – possibly doing the processing upfront and caching.
  2. Caching of LOB artifacts on IConnection instance – Typically you will have some LOB artifacts that will comprise the context associated with an IConnection instance. If your adapter is using WCF LOB Adapter SDK’s connection pooling, in the non SSO scenario, the IConnection instances will be closed only when the idle connection timeout expires. So you need to think about freeing up the LOB resources that comprise your connection context. If you make idle connection timeout too small, it would impact performance since LOB connection creation will incur an overhead and if you keep it at a large value then you will be holding on to LOB artifacts for a longer time than you really need to, possible scalability/performance impact.
  3. Throughput stall – You can find more details about the issue on http://blogs.msdn.com/adapters/archive/2008/08/18/throughput-stalls-when-using-adapters-developed-against-the-wcf-lob-adapter-sdk-in-biztalk.aspx.  Note that if you don’t limit the number of concurrent connections through your adapter, you won’t run into this problem. The problem happens the contention between Open and Send/Execute for thread pool threads.
  4. Writing/promoting properties to BizTalk message context – When the adapter receives a WCF message from BizTalk, it will have all the properties comprising the BizTalk message context. For messages that originate from the adapter, if you want to have properties either written/promoted to BizTalk message context, you can look at http://technet.microsoft.com/en-us/library/bb246105.aspx on how to go about doing that.  
  5. Transaction overhead – BizTalk will by default start a transaction and send the message/process the response in that transaction scope. This can cause a significant overhead particularly if say the LOB doesn’t support transactions. In BizTalk 2009, there is an option on the Send port that lets you configure whether transactions should be enabled or not.

Posted Thursday, March 12, 2009 6:22 AM by SandeepP | 0 Comments

Connect to WCF LOB Adapter hosted as WCF service using ClientCredentials

On the website http://msdn.microsoft.com/en-us/library/dd451003.aspx, we have a step by step guide to publish the Siebel adapter as a WCF Service in IIS and then have MOSS consume the data using that service. In this approach, credentials are pass by MOSS to the adapter using custom HTTP headers.

 

If instead you want to consume this service from a .net application or any client that wants to pass the credentials using the ClientCredentials object, this is how you will go about doing it. Follow the steps on http://msdn.microsoft.com/en-us/library/dd450994.aspx that gives detailed instructions about publishing the WCF service. There are 2 differences though

 

1.       In the “Configure service and endpoint behaviors” page, for “AuthenticationType” you will need to select “ClientCredentialUsernamePassword” (as opposed to “HTTPUsernamePassword” that the tutorial specifies)

 

 

 

2.       In the “Configure the service endpoint binding and address” page, click on the BindingConfiguration (the … following BasicHttpBindingElement) to customize the binding. Set Security Mode to “TransportWithMessageCredential”

 

 

 

Follow the rest of the instructions for publishing the service. You can now connect to the service using a .net proxy application and pass the credentials using the ClientCredentials object.

Posted Tuesday, March 10, 2009 11:00 AM by SandeepP | 0 Comments

Filed under:

Adapter Pack 2.0 Beta released

Hi all,

 We are pleased to announce the release of the Adapter Pack 2.0 Beta.As this is a public beta, customers can also download a 120 day evaluation version here .The features we added are listed below in brief . In addition, we are shipping a free to use migration tool which will help users migrate their projects which used older adapters to the Adapter Pack adapters (details below)

 

 

Oracle EBS

·         64 bit support

·         Synonyms

·         Added performance counters

·         Notification support

 

OracleDB

·         64 bit support

·         Synonyms

·         UDTs

·         Notifications

·         Polling stored procedures

·         Performance counters

 

 

Adapter SDK

·         Display complex binding properties 

·         Display metadata wsdl in web control

 

SAP data provider

·         Support for more operators in Sap Queries

·         SAP SSRS support in VS2008

 

Samples

·         New Samples for SQL and Oracle eBiz Adapters

 

 

The BizTalk Adapter Pack Migration Tool  is a utility that helps developers migrate BizTalk projects using the  BizTalk 2006 SQL or the BizTalk Adapter v2.0 for mySAP Business Suite to their corresponding WCF-based versions from BizTalk Adapter Pack v2!

 

With the help of this utility you will be able to compile and deploy your application within minutes. Some of the highlights for the Migration Tool are:

  • Works on the source project files
  •   Generates equivalent schema definitions for the operations used in the existing project
  •   Generates new maps to convert messages from older formats to the new format
  •   Modifies any existing maps to work with the new schemas
  •   A new project is created upon completion, which uses the SQL and/or SAP adapters from the BizTalk Adapter Pack v2

 

The tool works for most common scenarios of maps and orchestrations, however it is only meant to be a starting step towards migration to BAP and we are open to receiving feedback to add scenarios,.

Posted Friday, February 20, 2009 4:40 AM by Vivek Krishna | 5 Comments

Oracle EBS/DB Adapter Changes in Beta

As the Beta release for the Adapter pack approaches, here's a list of changes in the Oracle EBS/DB Adapters so that you can prepare for it:

 

·         Now support Windows Vista and Windows Server 2008

 

·         Based on Oracle ODP.Net 11.1.0.7

 

Both adapters now _require_ ODP.Net 11.1.0.7 installed on the client as compared to ODP.Net 11.1.0.6 which was the base for CTP 5 and earlier. Doing this enables us to deliver x64 support.

 

·         Added Synonym support

 

Both adapters now support synonyms. Synonyms show up in the object tree wherever the underlying artifact (table/view etc.) of that type can occur. Synonyms are supported for the following types.

  • Tables
  • Views
  • Materialized views
  • Sequences
  • Procedures
  • Functions
  • Packages

Synonyms are not supported for:

  • Types
  • Synonyms

In addition, synonyms pointing to DB links are not supported.

 

·         Added performance counters

 

We’ve added performance counters to both Adapters which are described in the online help.

 

·         Added notification support, support for User Defined Types (UDTs)  in the DB Adapter

 

Please note that this is not a complete list of changes. That list is available in the online documentation.

Posted Wednesday, January 28, 2009 5:48 AM by Sai Shankar | 2 Comments

BizTalk Adapter Pack v2 CTP

BizTalk Adapter Pack team has released a CTP. This is  the 5th CTP and the first one available publicly for everyone to try.  The specific enhancements in this CTP  are mostly to the OracleDB adapter(included in the BAPv1) to which we added features like support for polling stored procedures and composite operations. We also added 64 bit support for the Oracle EBS adapter.In addition we have addressed some feedback we got from the other adapters .

 

To re-iterate here is the complete list of features BAPv2 is adding . The downloads are available at the connect site for public download(requires sign up with live id)

 

BizTalk Adapter Pack V2 - Themes

 

New Adapters

·           Oracle EBS Adapter

Ø  Browse and search metadata for each Oracle application

Ø  Support Interface tables, Interface views

Ø  Support for PL/SQL APIs

Ø  Concurrent Programs, Request Sets

Ø  Support for polling tables, Stored Procedures

Ø  Notification support

Ø  App context initialization

Ø  Supports REF cursors, User Defined Types, LOB types, RECORD types

Ø  Support for PL/SQL Tables, boolean data types

Ø  Support for MLS EBS installations

Ø  Microsoft Office SharePoint Server Integration

Ø  Versions supported – ODP.NET  11.1.0.6.21 (available only on 32bit), Oracle EBS 11.5.9, 11.5.10 and 12

·           SQL Server Adapter

Ø  Insert/Update/Delete/Select operations on tables and views

Ø  Invoke (SQL and CLR) Stored procedures, scalar valued functions , table value functions

Ø  Supports execution of generic T-SQL statements, via the ExecuteReader(), ExecuteNonQuery() and ExecuteScalar() operations

Ø  Configurable polling – polling statement, polling interval, receive multiple result sets

Ø  Support for x86 and x64  platforms

Ø  Support for new data types in SQL2005 and SQL2008 (notably FILESTREAM, varbinary (max))

Ø  Support for UDTs

Ø  Ability to pass table value parameters

Ø  Composite operations - invoke operations on multiple tables and call any number of stored procedures in the same transaction

Ø  SQL query notifications

Ø  Ability to directly call stored procedures which used the ‘for xml’ style supported by the BizTalk 2006 SQL adapter to ease backward compatibility

Ø  Versions supported – SQL 2000, SQL 2005, SQL 2008

 

Enhancements to the existing V1 Adapter Pack

 

  • Include hot fixes built since the V1 Adapter Pack released
  • Support new Microsoft Platform releases – BTS 2009, VS 2008, Windows Server 2008
  • Oracle DB Adapter:

Ø  Polling support for Stored procedures and Functions

Ø  UDTs, PL/SQL tables 

  • SAP Adapter:

Ø  Support for Table Types

Ø  Customization of adapter behavior when “special” values obtained for DATS/TIMS/NUMC

Ø  SAP ADO Provider Enhancements:

o   Support for SSRS

o   Support for SAP Queries

o   Ability to specify the result set to give to SSIS when executing BAPIs

  • Siebel Adapter:

Ø  MVG operations (associate, dissociate, query) in design time enabled

Ø  Bounded pick list fields supported per recommended approach

Ø  Context specific custom messages generated for exceptions

 

Posted Monday, December 15, 2008 6:47 AM by Vivek Krishna | 0 Comments

Filed under: ,

Using sequences inside Composite Operations with Oracle EBS adapter

Consider a scenario where I want to insert data into two tables in a single transaction. The tables have a field that should be populated using the same sequence - one using SEQUENCE.NEXTVAL, and the other using SEQUENCE.CURRVAL, so that both tables get the same key value in these fields – a typical scenario when inserting into Interface Tables that have a dependency on each other.

The adapter performs all the operations in the Composite Operation in a single transaction and in order - however that does not mean that they are performed in a single session or connection to the Oracle server.

Sequences in Oracle are designed in a way such that their value does not reflect across sessions unless NEXTVAL is called on them. If you put 'SEQUENCE.NEXTVAL' in InlineValue for the first table and 'SEQUENCE.CURRVAL' in InlineValue for the second table in the Composite Operation, the result will not be what you’d normally expect.  To elaborate, I defined a sequence named MYSEQUENCE, and opened two SQL-Plus sessions. I performed the following steps side by side as shown below:

Session 1

Session 2

SELECT MYSEQUENCE.CURRVAL FROM DUAL;

ORA-08002: sequence MYSEQUENCE.CURRVAL is not yet defined in this session

 

 

SELECT MYSEQUENCE.CURRVAL FROM DUAL;

ORA-08002: sequence MYSEQUENCE.CURRVAL is not yet defined in this session

SELECT MYSEQUENCE.NEXTVAL FROM DUAL;

 >>21

 

SELECT MYSEQUENCE.CURRVAL FROM DUAL;

 >>21

 

 

SELECT MYSEQUENCE.CURRVAL FROM DUAL;

ORA-08002: sequence MYSEQUENCE.CURRVAL is not yet defined in this session

 

SELECT MYSEQUENCE.NEXTVAL FROM DUAL;

 >>22

SELECT MYSEQUENCE.CURRVAL FROM DUAL;

 >>21

 

SELECT MYSEQUENCE.NEXTVAL FROM DUAL;

 >>23

 


As you see, the current value of the sequence does not get updated in all the sessions, and so if you need to use sequences in your inserts, straightforward logic does not work. We came up with two workarounds to make this work:

1.       Fetch the value of the SEQUENCE.NEXTVAL beforehand (you can use the generic operation ExecuteScalar), and populate the final value in your message – works well if you’re using an orchestration.

2.       Create two  stored procedures on the Oracle backend – one for NEXTVAL, and another for CURRVAL that store the value of the sequence in a table (see attached sample script), so that the latest value is available across sessions.

In general, if a value that is session dependent needs to be used in various inserts in a composite operation, it should either be pre-fetched, or stored in a temporary table and accessed using functions called from InlineValue.

Posted Thursday, December 04, 2008 11:37 AM by manasg | 0 Comments

Filed under:

Attachment(s): SampleScript.zip

Adapter Pack v2 - CTP4 !!

Adapter Pack CTP 4  is here and we have added a lot more features based on some feedback we have been getting from various channels. So here is the list of major enhancements

SQL adapter

  • Support for “for xml” style procedures used commonly with v1 SQL adapter

Oracle EBS Adapter - support for

  

  • Request Sets
  • Selecting Application Context using BizTalk Message Context Properties
  • Oracle EBS installations with Multi language systems
  •  Windows integrated authentication of the DB user
  • Setting Print/Repeat/General options and submitting the request in a single operation for Request Sets and Concurrent Programs

 

As always, if you want to try this CTP  you need to join the TAP(Technology Adoption Program). You can see the details for joining TAP here .  Feedback is welcome and please write back to us on the forums or on the blogs to let us know what you think about the latest Adapter Pack  releases.

 

Thanks

Vivek Krishna

Posted Thursday, October 30, 2008 12:30 PM by Vivek Krishna | 0 Comments

More Posts Next page »
Page view tracker