BizUnitExtensions_v3.0 Beta-1

BizUnitExtensions_v3.0 Beta-1

Finally made some progress on BizUnitExtensionsand have released Beta-1 for the new version which now complies with BizUnit 3.0’s object model. This release specifically centres around the main Extensions and the Extensions.BizTalk libraries.
Main changes

The Altova library has now been deprecated as there is much better xml validation support in the .NET Framework so the altova […]

US Southwest: BizTalk Server 2009 “First Look” tour

Folks,

Last week in Salt Lake City, we kicked off a 6-city tour of the US Southwest featuring BizTalk Server 2009 and ESB Toolkit 2.0. This week I’ll be in L.A. and Phoenix. Remaining dates are as listed below. This is a free event, but you need to register. If you’re in one of the listed cities c’mon by, it’s a really interesting event.

Salt Lake City

(you missed it!)

May 20, 2009

8:30 am – 11:30 am

Click here to register

Invitation Key: 6F671A

Microsoft Salt Lake City Office

123 Wright Brothers Dr.

Suite 100
Salt Lake City, UT 84116

Phone: (801) 257-6400

Los Angeles

May 26, 2009

8:30 am – 11:30 am

Click here to register

Invitation Key: 2206BE

or call 877.673.8368 with

Event ID: 1032414717

Microsoft Los Angeles Office

333 South Grand Avenue

Suite 3300

Los Angeles, CA 90071

(213) 806-7300

Phoenix

May 28, 2009

8:30 am – 11:30 am

Click here to register

Invitation Key: B899AD

or call 877.673.8368 with Event ID 1032414811

Microsoft Phoenix Office

2929 N. Central Ave., Suite 1400
Phoenix, AZ 85012

Phone: (602) 280-8600

Irvine

June 4, 2009

8:30 am – 11:30 am

Click here to register

Invitation Key: C11DF2

or call 877.673.8368 with

Event ID: 1032414721

Microsoft Irvine Office
3 Park Plaza
Suite 1600

Irvine, California 92614

Phone: (949) 263-3000

San Diego

June 16, 2009

8:30 am – 11:30 am

Click here to register

Invitation Key: 4E9A14

or call 877.673.8368 with

Event ID: 1032414722

Microsoft San Diego Office

9255 Towne Center Drive

4th Floor
San Diego, California 92121

Phone: (858) 909-3800

Denver

June 23, 2009

8:30 am – 11:30 am

Click here to register

Invitation Key: B185E8

or call 877.673.8368 with Event ID 1032414999

Microsoft Denver Office

7595 Technology Way, Suite 400
Denver, CO 80237

Phone: (720) 528-1700

Please join us for a “First Look” at BizTalk Server 2009!

Enterprises across the world need to build applications that span their network and bring together services, systems, and people. The new BizTalk Server 2009 enables this connectivity while eliminating many of the cost and complexity challenges enterprises currently face.

Microsoft product specialists and experts from gold-certified partner Neudesic will give you a “first look” at BizTalk Sever 2009 and how they can help streamline and integrate business processes while reducing cost and complexity.

AGENDA:

8:30 – 9:30 What’s new with BizTalk Server 2009

9:30 – 10:30 Using Microsoft ESB Toolkit 2.0 to reduce cost and complexity

10:30 – 11:30 Interactive Q&A discussion about SOA and ESB and emerging technologies

WHO SHOULD ATTEND

Application Development Directors/Managers and Architects, Supply Chain Directors, Process Analysts, and Developers who are interested in learning more about the features available in BizTalk Server 2009 and their impact on SOA and BPM solutions.

Technorati Tags: BizTalk,SOA,ESB

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!

"The security validation for this page is invalid" when calling the SharePoint Web Services

When working with the out-of-the-box SharePoint web services, it may have happened to you that the Web Service response contained the following exception embedded in the XML:

Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ was thrown.
The security validation for this page is invalid. Click Back in your Web browser, refresh the page, and try your operation again.
Error code: 0x8102006d

Undoubtedly this exception is quite strange in the context of a web service call; there is no Back button you can click. But in my cases the exception was just plain wrong, the issue had nothing to do with security whatsoever. It turned out that when you make a web service call to the SharePoint web services, in some cases you need to set the SOAPAction header  in the HTTP Request, in other cases it’s not necessary to do this (but it won’t do any bad if you do). When you consume web services from .NET code, you probably have Visual Studio generated proxies; they pass the correct header so you don’t need to do anything special. But if you construct your own HTTP Request to make the Web Service call, for example using Javascript and jQuery, you need to think about this. Check out following Javascript code for example, which creates a new List item by using the Lists.asmx web service (discussed in more detail in my previous post):

var soapEnv =
    “<?xml version=\”1.0\” encoding=\”utf-8\”?> \
    <soap:Envelope xmlns:xsi=\”http://www.w3.org/2001/XMLSchema-instance\” \
        xmlns:xsd=\”http://www.w3.org/2001/XMLSchema\” \
        xmlns:soap=\”http://schemas.xmlsoap.org/soap/envelope/\”> \
      <soap:Body> \
        <UpdateListItems xmlns=\”http://schemas.microsoft.com/sharepoint/soap/\”> \
          <listName>Tasks</listName> \
          <updates> … Updates XML … </updates> \
        </UpdateListItems> \
      </soap:Body> \
    </soap:Envelope>”;

$.ajax({
    url: “http://yoursite/_vti_bin/lists.asmx”,
    type: “POST”,
    dataType: “xml”,
    data: soapEnv,
    complete: processResult,
    contentType: “text/xml; charset=utf-8”
});

This code will cause the Security Validation exception, because the SOAPAction Header is not correct. How do you know what value you need to set the SOAPAction Header to? Well, that’s very easy to figure out! Just navigate the the Lists.asmx web service (or UserGroup.asmx, Webs.asmx, Sites.asmx, SiteData.asmx or any Web Service you want to call of course) in your browser, and drill down to the Web Method you want to invoke.

 

As you can see, the required value of the SOAPAction value is displayed in the generated web page for the Web Method, so you can just copy and paste it in your code. When using the jQuery ajax function, you can use the beforeSend option so set additional Headers:

$.ajax({
    url: wsURL,
    beforeSend: function(xhr) {
        xhr.setRequestHeader(“SOAPAction”,
        “http://schemas.microsoft.com/sharepoint/soap/UpdateListItems”);
    },

    type: “POST”,
    dataType: “xml”,
    data: soapEnv,
    complete: processResult,
    contentType: “text/xml; charset=utf-8”
});

That’s it, now the Web Service call will work without the irrelevant Security Validation exception.

Windows Application Server Enhancements known as Dublin Presentation in Sweden

On Thursday June 4th I will be presenting in Sweden to the BizTalk Users Group. I am excited to be making the trip to Sweden and it will be great to see so many BizTalk enthusiasts all in one place.  I will be presenting two sessions both on Microsoft’s new Window Application Server Enhancements – known as “Dublin”.  The details of the sessions are below.  If you are in Stockholm and want to attend you can get information on the BizTalk Users Group home page. 

Meeting Title:  Inside the Windows Application Server Enhancements known as Dublin

Session 1: Walkthrough of Windows Application Server Enhancements code named Dublin

In this session we will review the features of the Windows Application Server Enhancements code named Dublin.  This session will show how to use new and enhanced concepts in the .Net 4.0 framework to empower Services hosted in Windows allowing users insight into service health and activity.

Session 2: Managing, Monitoring, and Deploying Services using Windows Application Server Enhancements

This session takes a deeper dive into Windows Application Server Enhancements by looking in detail at the hosting of a Workflow Service.  This will cover reviewing a web service aggregator Workflow Service, setting up custom tracking, monitoring running services, and import and export of applications.  

Recent Links of Interest

Recent Links of Interest

It’s the Friday before a holiday here in the States so I’m clearing out some of the interesting things that caught my eye this week.

BizTalk “Cloud” Adapter is coming.  Check out Danny’s blog where he talks about what he demonstrated at TechEd.  Specifically, we should be on the lookout for a Azure adapter for BizTalk.  […]