Welcome to MSDN Blogs Sign in | Join | Help

Quick Tips: DTA DB Purge without Archiving

BizTalk provides an out of the box job that can be configured to archive and purge BizTalk databases. But sometimes you might be in a situation where archival not necessary and you might as well save that time and simply purge the tracking data.

If you want to do that, here is a quick tip –

  • Open the SQL Management Studio, connect to the BizTalk tracking database server
  • Run the following sproc on the DTADB - dtasp_PurgeAllCompletedTrackingData

This stored procedure takes care of purging all the data without archiving. This link (http://msdn.microsoft.com/en-us/library/dd745781.aspx) will provide further details for BizTalk 2006 R2.

It's very handy when cleaning off the database for production go-live after performing a quick smoke test.

--Sanket

Required NTFS permissions for BizTalk File Adapter connecting to network share

When connecting to a network file share using BizTalk File adapter, you might've noticed that just specifying "Modify" rights is not sufficient. In simple configuration terms, you would need to have a minimum of "Full Control" or the BizTalk Host Service Account. Obviously this would not gel well with the system administrators.

Tom Canter (http://blogs.neudesic.com/blogs/enterprise_integration/archive/2007/02/22/4260.aspx) has put down the exact permissions that you would require for the FILE adapter that would help alleviate some of the concerns for the admins.

 

Overall, here is what it boils down to –

 

For the FILE Receive Adapter

  • After you provide "Modify" rights, Click on "Advanced" button and on the Advanced Security Dialog, edit the permission entries for the BizTalk Service Account
  • Here you will notice that the "Delete Sub Folders and Files" option is not given by default. This is exactly the missing link for the receive adapter.
  • Simply set this property and you are good to go without "Full Control"

 

For the FILE Send Adapter

  • If you are NOT USING the "use temporary file while writing" attribute on your send port, only the following permissions are required on the permissions entry dialog
    • Create Files / Write Data

       

  • If you are using the "use temporary file while writing" attribute on your send port, the following permissions are required on the permissions entry dialog
    • Create Files / Write Data
    • Delete Files
    • Delete Sub Folders and Files
    • Read Permissions
Posted by Sanket Bakshi | 3 Comments
Filed under: ,

Trouble setting the BizTalk Backup Job?

Recently, I faced some of the issues below when configuring BizTalk Disaster Recovery at one of my customers. The BizTalk solution was implemented on HyperV and since earlier clustering was not supported for SQL 2005 (BTW, it is supported now), we had to separate the Message Box database and the Management, SSO & Tracking databases to ensure better solution performance. The overall configuration looked as below –

Due to this configuration, there were some minor complications that kicked in when setting up the backup jobs.

When configuring BizTalk with the above topology, the BizTalk configuration will create a SQL Linked Server between the Management database and the Message Box database. The backup jobs resides on the management database and the linked server is supposed to help communication with message box server and facilitate the backups.

 

 

 

 

 

  • When we first started with testing the backups job, we ran into the following issue –
    • <Msgbox DB Server Name> is not configured for RPC. SQLSTATE 42000. Error 7411

    As the error message points out, the first suspect is usually to check if the RPC service is working on the message box SQL Server. If BizTalk is performing its required tasks, then chances are that the issue is elsewhere. Since DTC requires RPC. And BizTalk cannot live without DTC.

    The second step is to check the Linked Server properties and ensure that the "RPC Out" property is enabled. Enabling this allows RPC communication between the servers.

  • Secondly, if both the SQL Servers are configured to use different service accounts, make sure that both the service accounts should have access to the network share that creates the backup and log files. In the above case, the service account that was configured for the message box server did not had access to the network share. The BizTalk backup job in turn "instructs" the message box database server to perform the backup. Hence, the actual writing of the backup file happens with the SQL service account configured on the message box server. If you do not have this setup right, chances are that you will see the familiar "Access is denied" error message and the Backup job will fail.

Hopefully these experiences might save some time the next time you run into this configuration.

--Sanket

IE8: Web Slices – Keep yourself updated!

Another amazing feature that IE 8 has pulled out of the hat is – the Web Slices. Today, a very common way of keeping the visitors updated about what's happening on your website is using the RSS. However, maintaining these feeds usually require the websites to duplicate the data access in multiple locations – on the page as well as on the RSS feeds.

With the IE 8 web slices feature, your web site customers can now subscribe to parts of the web page which they would want to get updated about. Areas within a particular webpage can be marked as a web slice by the web developers when creating the sites. Web Slice button on IE toolbar

These web slices can then be subscribed to by the web site visitors. Subscribing is as simple as clicking the green web slice button on the IE 8 toolbar when you visit the site. Once subscribed, that area can be accessible and visible through the Favorites menu. In other words you don't have to go to the website every time to see what's updated.

The possibilities are end-less – You might want to keep yourself updated about the new releases on the codeplex, or just get the latest news right in your browser window, or even watch out for the stock that you bought last week.

 

Web Slices for Web Developers

It is quite amazing how simple it is to build discoverable web slices for the web developers. The web slices is based on the hAtom.Microformat with a few additional properties. It uses the HTML tags with specific properties & classes to create a section of the web page that can be subscribed to. IE 8 detects the web slices by scanning for elements that use the class hSlice, have a unique id property and have at least one child using the class entry-title.

To try this out real quick – here is how you can develop your web page. Once you have your web page ready with content, determine which sections you need to expose as web slices. For those sections, simply wrap them in a div as –

    <div class="hslice" id="myWebSlice">

        <h2 class="entry-title">My Web Slice Title</h2>

            <!-- My dynamic content goes here à

    </div>

Whenever visitors visits this page in IE8, they will be able to subscribe to this web slice by clicking on the green web slice button in the IE8 toolbar. Alternatively, they can also hover over to content to get the web slice button right besides it.

The web slices offer a lot of flexibility in terms of controlling the update frequency or providing an alternative data source to update, etc. This article on MSDN covers the web slices in a good details.

Happy Browsing,

--Sanket

Posted by Sanket Bakshi | 1 Comments
Filed under:

IE 8: The onset of an amazing browsing experience

OK. So there has already been a lot of buzz about the amazing features that IE 8 now has to offer for the ultimate browsing experience.
There are some articles out there which go ga-ga over the awesome feature set and then there are others who say that Microsoft is just catching up with the other players already in the market. Well, for this post, I leave the decision to you. I recently installed the IE8 and am enjoying the amazing feature set it has to offer. As I go on with exploring the features, do expect further post to contain a lot more details.

Some of the cool feature-lets (that's a term I came up with – it just says – a small feature) that I found right on the first look –

  • Starting with what I do the most – searching. Yes that's enhanced. The top right hand instant search box is a lot friendlier and provides real time suggestions and images. I choose to search from Wikipedia and it also gives me the related images in the search – that's so awesome. Well, for those who have earned the MS critiques reputation – you can always go ahead and choose the search provider you want.
  • OK. So what's next? Looking for an address? No more copy pasting of the address into the live maps (or the G* maps) anymore. Simply highlight the address and click on the blue button that appears above & hover on "Map with Live Search". That's it. You get your address located in the live maps. Well, I hear you all – it allows choosing the mapping service that you like.
  • There is a whole bunch of things related to "in-private" browsing. It allows you to browse in a private session. Any pages that you browse in here do not end up having the cookies lingering on your machine after the browser session. That's browsing with no trail left behind. I leave it upto your imagination on how you would want to use this feature. ;)
  • Another cool feature-let, it groups the pages together. For instance, let's say you are researching about "Oslo" (not Norway's Capital, but the amazing new Microsoft technology) & "How Diet Pepsi is made?" in the same browser window. Now whenever you open the pages in the new window from any of these tabs, the browser detects the thread and relates all the tabs together with a single color. So now you can quickly make out if a given tab is for Oslo or for Diet Pepsi.
  • Apart from this, there are a bunch of security related features that would ensure that you are always protected from the malicious software lurking on. And still more features that allow the developers to provide exciting features that you will discover along the way. I will cover those in separate posts.

Seems Interesting? Well, why don't you try it out for yourself? Microsoft has just released the RC1 bits for IE8. You can download it here.

Let me know what you think about this.

 

Happy Browsing,
-- Sanket

Posted by Sanket Bakshi | 1 Comments
Filed under:

Need a list of server patches?

Most of the Windows machines use the automatic updates to install the latest updates from Microsoft. Recently, we ran into an issue where the Biztalk configuration started failing on one of the servers. Having to investigate if this was caused by a patch, we were looking at a quick way of figuring out if there is an easy way to get a list of the updates made to the operating system.

A quick search suggested the command line tool WMIC that can be used for this purpose. Using WMIC as below would give you the complete details of the patches that were installed on the machine -

C:\>WMIC QFE LIST

WMIC is the command line interface for WMI & works from Windows XP & Windows Server 2003 onwards. Complete details for WMIC can be found here.

--Sanket

The Bloggers Guide to "Connected Systems"

There is a new bloggers guide recently published by Alan Smith. This guide provides a good overview of the next wave of the connected systems technologies.
It starts with the WCF & WF 4.0 and makes its way to the Biztalk 2009, Oslo, Dublin and finally even the Azure (a.k.a BizTalk Services).

Plus it includes bloggers like - Alan Smith (himself), Darren Jefford, Charles Young, Don Box, Brian Losegen, Aaron Skonnard, Jeff "Pinkey" Pinkston, Martin Fowler, Andreas Erben, Imran Shafqat.

Definitely a must-read to keep up to the CS pace. You can find the guide here.

 --Sanket

 

BizTalk 2006 R2 Pre-requisites CAB Files

I had earlier compiled this list for BizTalk 2006 pre-requisites CAB files here.

Now that we have BizTalk 2006 R2, it needs a complete separate list of pre-requisites. The CAB files for 2006 dont work with 2006 R2.

So here is a list of those for R2 (in EN language) for a easy reference.

 

Windows 2003 Server 32 bit

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

 

Windows 2003 Server 64 bit

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

 

Vista 64 bit

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

 

Vista 32 bit

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

 

Windows XP 32 bit

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

 

Windows XP 64 bit

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

 

For a complete list of all the downloads in all the languages, you can use this link -

http://msdn.microsoft.com/en-us/library/aa578652.aspx

 

--Sanket

India to introduce Mobile Number Portability

In a landmark decision for the Indian telecom industry, the Department of Telecom has decided to introduce wireless Number Portability in India.

http://timesofindia.indiatimes.com/Mobile_numbers_get_mobile/articleshow/2536732.cms

It will be definitely interesting to see how this decision shapes the telecom landscape in India.

For more about Number Portability, refer to my previous post here.

Understanding window handling of IE Modal Dialogs

One of the things that I was working on in last couple of months was to do with Internet Explorer. One of the things was to explore what are the different ways in which I can host a web page within my windows app. But still interesting was the part that followed - how do I manage the IE modal dialog boxes? For instance, lets say in my MDI application, one of the dialogs display a web page. This web page opens a new modal web dialog. Now when I move to another screen in my MDI application, I want this dialog to disappear. That led me on an interesting quest to understand how the modal web dialogs behave.

Usually, the window of a modal dialog would have an owner and its modality would be restricted to that owner.  For instance, if you open a modal dialog in your windows application, the application main window owns the new modal dialog and then the dialog retains its modality only to the parent. In case of the IE modal dialogs however, these dialogs belong not to the IE window or document, but to the desktop. Yes that's exactly where it starts behaving quite unlike the normal dialogs. So if you iterate on all the windows belonging to the IE window, be assured that you will not find the modal dialogs.

This is the behavior when we use the window.ShowModalDialog() function in javascript.  In case you use the window.open() (without the modal='yes' parameter), the resulting child window will still belong to the IE window hence making it easier for you to enlist it with a EnumChildWindows() Win32 API call.

So as we see, in case of modal dialogs, things get slightly more complex. Here is the approach that we figured out in order to find all the modal dialogs for a given IE instance -

- Use the EnumChildWindows() Win32 API to enumerate all the child windows belonging to the desktop. In order to do this, the parent hWnd parameter should get its value from the GetDesktopWindow() API.

- Each EnumChildWindows() API call requires a postback that is called whenever the window is found. In this postback method, derive the process Id from the Window Handle of the dialog using the GetWindowThreadProcessId() API and then match it with your IE process.

I am not sure if there is still a better way of doing this thing. But if you know of a better way, I would be glad to take a second look here. :)

--Sanket

I am Alive

Well, just if some of you are wondering about what happened to the mere insignificant mortal who used to vent his rants in this space, let me tell you, I am still very much alive and kicking. Yeah I haven't been really active writing the stuff that I used to. But then there were a lot of other things happening as well.

First of all, since I stopped writing, I had a really nice vacation when I was off for a looonnnnggg hike to Khatling. It was a nice time. We walked for over 13 days and during that time, I got some really beautiful photographs with my new Canon Rebel XT. Yeah! that's my new baby. So as it goes, I am kind of getting hooked to photography these days and I have been spending a lot of my non-office time - nights and weekends just developing my skills with this art. Psst. Do let me know if you like my work in that space.

Apart from that, I have been pretty much disconnected with Biztalk since last 2 months. So you can guess - no new jabber. But then I have been working with .Net winforms and I think that's an exciting area as well.

A few days ago, it just dawned on me, that I was no longer active on my blog. OMG... I am not blogging! Worse, I wasn't even answering the comments. Over last couple of weeks, I had become reclusive and I had to do something about it. So I started with answering some of the comments/ queries that I had got on some of my age old posts.

Now, I know that I am really bad at sticking to resolutions, but nevertheless, here is something that I am trying one more time - In all its probabilities, you should be getting a lot more updates to this space in near future than you have been getting in the 'near' past. I might not be busy talking about Biztalk, but hey - its the dot before the Net. So almost anything I do qualifies to be here (Unless I succumb to the dark side of the 'non Microsoft world'.)

Posted by Sanket Bakshi | 3 Comments
Filed under:

Consuming webservices from within BizTalk

BizTalk 2006 allows some really good interacting with webservices. If it is a simple webservice, we can very well consume it by adding a reference to it and then consuming it using the orchestrations. Here are some interesting scenarios that I encountered when dealing with webservices.

 

Can I consume the service?

Although Biztalk offers fairly good support for consuming webservices, there are some considerations that might affect the way these interactions are developed. 

For instance, the Add Web Reference feature in BizTalk does not understand the import element in the WSDL. Multi dimensional arrays are not supported from within BizTalk & so on. An elabortate list of these considerations can be  found here.

In some cases, you might run into one of these limitations - most probably when using non .net webservices. There can be a couple of ways in which we can deal with this scenario. This webservice call can be either wrapped within a .Net component or a webservice that can in turn be consumed by BizTalk.

 

Using SOAP Headers when consuming the webservice

When consuming a webservice with SOAP headers, the headers need to be written to the context of the web request message. In order to consume these webservices from within an orchestration We need to promote a property with same name as the SOAP Header & assign it to the message context. To achieve this, create a new property schema with target namespace as http://schemas.microsoft.com/BizTalk/2003/SOAPHeader. Each root element in this schema must match the name in the defined SOAP Header. Also, each root element that corresponds to the SOAP header should have its "Property Schema Base" property set to "MessageContextPropertyBase". Setting this property ensures that the element is visible in the list of elements in the message context.

Once done, then this property can be used in the expression editor to set the property on the request message as -

 

myWebserviceRequestMsg(MyPropSchemaName.MyHeaderName) = "<?xml version='1.0'?> <MySOAPHeaderName xmlns='http://SOAPHeaderSchemas.MyHeader'> <HeaderInfo>abcxyz</HeaderInfo></MySOAPHeaderName>"

 

The myWebserviceRequestMsg can now be sent directly to the webservice along with the associated SOAP Header.

 

Using Webservice request & response messages in Mapper

Most of the times, you need to resort to transformation either for the request message - before sending to the webservice or the response message after recieving from the service. In atrading sceanrio, where the trader hosts the suppliers catalog, the orchestration would need to get the catalog from the webservice & then use the transformation to include catalog in the traders database. However, if you are thinking of creating the map directly by adding a new map, the mapper UI does not allow specifying the webmessages as source or desctination parameters.

To overcome this, we can simply use the transform shape to create a new map for us. Specifying the web response message as the input to the transform shape allows it to create a new map with the web response schema. So instead of creating a new map, just drop a transform shape in the orchestration, create two message - one with the web response schema & other of your destination schema. Open the transformation configuration page & just select new map option there. After specifying your source & destination message, a new map will be created by using those schemas.

 

Hope this alleviates some blues for anyone trying to deal with webservices from BizTalk.

--Sanket

Posted by Sanket Bakshi | 13 Comments
Filed under:

Creating public orchestrations

I am currently working on one of the Biztalk projects that contains a lot of lengthy orchestrations. In order to split them in manageable chunks, we are making intensive use of the call orchestration and start orchestration shapes. As long as the orchestrations remain in a single assembly, it works great. However, for complex solutions, it makes great sense to split these orchestrations into separate deployable assemblies - probably spanning across several BizTalk applications. 

In such cases, orchestrations in an assembly are by default not visible to orchestrations in another assembly. This is due to the default type modifier for the orchestration. The Type Modified for the orchestration is similar to the access qualifier of C#. By default this is set to "Internal". Obviously, with Internal, the orchestration is not visible outside the assembly within which it is coded. So if you are trying to call this orchestration from some other assembly which has referenced this assembly, you would need to explicitly make the orchestration "visible" outside the assembly. This can be done by setting the Type Modifier as "public".

This helps a lot in componentization of the orchestrations in a complex Biztalk solution.

Posted by Sanket Bakshi | 1 Comments
Filed under:

Adding Environment Specific Binding Files from Command Prompt

Biztalk 2006 provides the btstask utility to carry out most of the deployment operations from command prompt. However, the help available at the command prompt does not talk anything about adding environment specific binding files. 

You can get elaborate information about it on MSDN at this location.-

In order to add the environment specific binding files, you need to run btstask.exe with the -P:TargetEnvironment parameter as-

btstask AddResource -ApplicationName:MyBTSAppName -Type:System.BizTalk:BizTalkBinding -Overwrite -Source:"MyProductionBindingFile.xml" -P:TargetEnvironment="PRODUCTION"

--Sanket

Posted by Sanket Bakshi | 0 Comments
Filed under:

Alice in Wonderland

I just love what technology has done to our lives. I had never in my life thought that I would be able to read "Alice in Wonderland" the original version of Lewis Carol in his own writing.

Microsoft has just launched a version of the Turn the Pages section of the British Library for Windows Vista. It runs on the latest .Net 3.0 framework and does some really cool stuff. Take a look at it here.

I bet thats just the starting. We need to see for ourselves - how deep the rabbit hole goes :)

 

--Sanket

Posted by Sanket Bakshi | 9 Comments
Filed under:
More Posts Next page »
 
Page view tracker