by community-syndication | Jun 23, 2008 | BizTalk Community Blogs via Syndication
During the MVP Summit this past April, I saw a presentation of UML capabilities that are part of Visual Studio Team System “Rosario” April 2008 Preview. I immediately downloaded the monstrous virtual machine containing the bits … and finally took a quick look at things today.
In my current job, I find myself creating a fair […]
by community-syndication | Jun 23, 2008 | BizTalk Community Blogs via Syndication
I did a webcast on using WCF from Silverlight 2.0 this morning – I think you can see
the replay here in about 24-hours – http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032380766&EventCategory=5&culture=en-US&CountryCode=US
If you watched (or watch the replay) here is the code:
webcastcode.zip
(3.46 MB)
Check out my BizTalk
R2 Training.
by community-syndication | Jun 23, 2008 | BizTalk Community Blogs via Syndication
This Wednesday (25 th ) I will be presenting a MSDN WebCast about deep WCF-WF integration techniques . The session is rated 400 which means that I don’t intend to spend too much time on PowerPoint :). Instead, I am planning to cover in depth (meaning…(read more)
by community-syndication | Jun 23, 2008 | BizTalk Community Blogs via Syndication
Below is an idea how to improve SOAP exception handling in BizTalk to WCF communication. Let’s consider approach recommended in BizTalk SDK documentation (Catch Typed Fault Exception sample):
- Add custom WCF fault to the service contract and add corresponding exception handler in the BizTalk orchestration.
- In BizTalk orchestration add hander that expects System.Web.Services.Protocols.SoapException to catch any general SOAP exceptions
This allows catching any custom WCF faults and handling them gracefully. It also handles general SOAP exceptions but the downside is that SOAP exception caught will not be original SOAP fault that came over the wire from the service. It’s going to be secondary SOAP exception thrown by the adapter. Receive pipeline will try to match incoming message type using XPath expressions defined in the send port configuration. Since custom WCF faults are embedded as content of Detail node of the soap:Fault message there will be XPath expression like this: /*[local-name()=’Fault’]/*[local-name()=’Detail’]/* | /*[local-name()=’DivideResponse’], where the first part is matching any child of Detail element. In case if WCF service returns general SOAP fault it will put original exception in Detail element as ExceptionDetail node (QName: http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail). Since the schema for ExceptionDetail is unknown to pipeline it will throw SOAP exception with generic description and all original details will be lost. This secondary SOAP exception is the one that actually caught by our generic handler:
There was a failure executing the response(receive) pipeline: “Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35” Source: “XML disassembler” Send Port: “WcfSendPort_BatchEntityService_BasicHttpBinding_IBatchEntityService” URI: “http://100-bztlk-d-009.absg.net/Absg.eCommerce.Ordering.ServiceHost/BatchEntityService.svc” Reason: Finding the document specification by message type “http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail” failed. Verify the schema deployed properly.
One solution to this problem is to define http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail schema and include it as a fault contract for the WCF operation on the client side. That way all original SOAP fault details can be captured and propagated as ExceptionDetail fault. So that’s how I modified BizTalk orchestration in SDK sample:
- Declared new schema ExceptionDetail.
- Created new multi-part message type IOperation_Divide_SoapFault that has part of type ExceptionDetail
- Added to Divide operation new GenericSoapFault fault of type IOperation_Divide_SoapFault
- Added exception handler CatchSoapExceptionDetails for this new fault
Notice no changes required on the service side, all I had to do is on the client. But I did one thing in the service code to throw SOAP exception if numerator equal to 0 (just to be able to test such scenario):
if (numerator == 0)
throw new System.Web.Services.Protocols.SoapException(“Test exception”, new XmlQualifiedName(“A100”));
Dropping input file with 0 as numerator (DivideGenerateSOAPExceptionInput.xml) will create following message in the Fault folder:
<?xml version="1.0" encoding="utf-8"?><MyOperationException xmlns="http://schemas.datacontract.org/2004/07/Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Error><ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><HelpLink i:nil="true" /><InnerException i:nil="true" /><Message>Test exception</Message><StackTrace> at Service.Operator.Divide(Int32 numerator, Int32 denominator) in C:\Projects\TestBed\Typed Fault Exception Handling\WcfService\Program.cs:line 37
at SyncInvokeDivide(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]&amp; outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</StackTrace><Type>System.Web.Services.Protocols.SoapException</Type></ExceptionDetail></Error>
<Operation>Divide</Operation>
</MyOperationException>
Note it contains exception detail section with original “Test exception” message.
Another approach would be to use exclusively SOAP faults for all kind of custom and system faults, reducing number of exception handlers in orchestrations to one. It can be achieved by implementing custom XML Disassembler pipeline component where incoming message would be inspected and if SOAP Fault is detected all properties can be copied to secondary SOAP fault thus preserving all original exception details.
Notice that we received original exception detail with the “test exception” in this message.
by community-syndication | Jun 23, 2008 | BizTalk Community Blogs via Syndication
Hi folks, we’ve got a great night coming up on this Wednesday – Jun25th
Wednesday
This session we need to do *testing* of our developing RFID Event
Tracking system. This planned to be deployed right throughout TechEd08!!!!
Your help is needed – you’ll get Tags, walk through RFID Readers
and get hands on with the gear.
We’ll show you how it’s being developed, the Silverlight V2.0 Beta
2 Duplex HTTP WCF Services that drive the UI screens.
So if you’re looking at tracking clothes, wheelchairs, beers in
the fridge or any sort of warehouse tracking then this is a must see session for you.
(RFID is much more than just ’production line’ or ’supply chain’
tracking)
We will cover:
(1) The
components of BizTalk RFID
(2) Connecting
and using the RFID H/W
(3) Different
forms of RFID Readers (including windows mobile readers)
(4) How
to manage 70+ RFID Devices through System Center Operations Manager and the BizTalk
RFID Management Pack
What
is in store for our June 25th Session (add to Outlook)
Where:
Microsoft, North Ryde
1 Epping Road
When:
6pm – Beer + Pizza
6.30pm – Kick off
June
25th
Feel
free to forward this to any of your colleagues/friends I may have missed (tell them
to register on the Sydbiz.org site to be included)
Call
for Speakers/Other People to take Tyre Kicking Sessions
If you’ve got any aspect of BizTalk (& related) that you want to share with us….let
me know, love to hear what you’ve got to say.
Don’t forget – we’re launching a email forum group ’[email protected]’
Great to see a lot of you already joined – it’s a *private* group open to BizTalk
User Group members (we currently have Brisbane, Auckland and Sydney on)
Invite only – send me an email if you want to join and I’ll send you out an
invite.
Love
to see you there – and reply to this email to let me know for catering.
Cheers,
Mick Badran (MVP
– BizTalk) | Microsoft Readiness Instructor
Collaboration and Integration Specialist
Breeze|
m: +61 404842 833
http://blogs.breezetraining.com.au/mickb
| im:
by community-syndication | Jun 23, 2008 | BizTalk Community Blogs via Syndication
As the first in what I hope will be an on-going series of scenario challenges, I have uploaded a pack of information to the South African BizTalk User Group website ( http://biztalkug.co.za/media/p/61.aspx ). This pack includes a scenario overview…(read more)
by community-syndication | Jun 21, 2008 | BizTalk Community Blogs via Syndication
A quick heads up for those of you UK/London folk who arent aware that the UK SOA & BPM user group meeting for July has been fixed for Thursday the 17th July at the Microsoft offices in Victoria, London. Theres an accomodation limit of only 40 people so if you are keen, then please sign […]
by community-syndication | Jun 21, 2008 | BizTalk Community Blogs via Syndication
… or how automatic formatting of XML files can make you miserable.
During the last few days I’ve been helping out a client get ready for deploying a
BizTalk solution. One of those things this involved was taking the existing BizTalk
Binding XML files and making minor edits to them so they would match the new environment.
I did the changes, and the BizTalk Administrator used the updated Binding Files to
import them into the new BizTalk Servers. They imported without any errors at all.
A couple hours later he noticed some test messages were getting incorrectly routed
to the wrong send ports (there’s a lot of messaging only stuff in this solution).,
so he checked the send port configuration.
There were no filters defined at all! We checked the Binding files again,
and yes they were clearly defined there. Why were they not getting imported?
The culprit turned out to be Visual Studio. I had edited the binding files in VS and,
for several reasons, this involved doing copy-and-pasting the entire XML content of
the binding files between machines. Normally this isn’t a problem, but this time it
was.
VS will reformat XML content when you paste it into VS. This is usually a welcomed
feature, but not now. Turns out that VS reformatted the <Filter> elements
of the Send port configurations like this:
See anything weird? I didn’t see it either at first. The problem is the line break
and extra white space caused by the indentation between the opening <Filter>
element and the actual string-encoded XML of the filter expression.
Apparently, BizTalk can’t deal with this at all and simply treats it as if the <Filter> element
had been empty when it imports the binding file. No warnings, no errors, it simply
ignores it silently.
I removed the space leaving it like this:
And now it was imported correctly and all the Filters were recreated successfully.
This was maddening to say the least, and it’s one of those pesky bugs that can make
deploying BizTalk solutions an even more miserable experience than it already is.
Definitely a very annoying bug in the Binding importer code.

BizTalk
Server 2006, XML
by community-syndication | Jun 20, 2008 | BizTalk Community Blogs via Syndication
In early October 2008 the first annualy international SOA Symposium will be held in the Amsterdam Arena. A lot of international speakers will be there, amongst them Thomas Erl and Brian Loesgen!
There are 40 speaker sessions across the following 10 tracks:
– SOA Architecture & Design
– Service Modeling & BPM
– SOA & Business
– SOA & REST
– SOA & Web 2.0
– SOA Governance
– SOA Programming
– SOA Innovations
– SOA Infrastructure & Technology
– SOA Project Delivery & Methodology
Post-conference there will be three five-day certification workshops:
– Certified SOA Consultant
– Certified SOA Architect
– Certified SOA Analyst
The workshops are organised by SOASCHOOL.com.
The symposium and the workshops look great, so I’m really looking forward to going there!
by community-syndication | Jun 20, 2008 | BizTalk Community Blogs via Syndication
My old colleague Mike Stephenson just e-mail me to help promote the inaugural UK SOA/BPM User Group Meeting, which will be taking place on Thursday 17th July 2008 at Microsoft’s London office.
The meeting will include a presentation on Oslo (Microsoft) and Enterprise Computing in 2015 (SunGard), plus the obligatory beer and pizza – full details […]