Posts

Showing posts from 2005

Biztalk 2004: Per-Instance pipeling - Tool

Just found this interesting article . For each pipeline (Receive Locations and Send Ports each have a Receive and Send Pipeline respectively, but if a port uses a Request-Response message exchange pattern it will also have a corresponding pipeline for the other direction, so the Receive Port will have a Send Pipeline and the Send Port will have a Receive Pipeline) the configuration database holds another piece of configuration. In the ExplorerOM this can be found as the ReceivePipelineData (on the ReceiveLocation or SendPort object) or SendPipelineData (on the SendPort or ReceivePort object) property. This "data" is generally empty in most cases, but can be an XML document that overrides some or all of the properties of the components configured in the pipeline (note that the XML cannot add any addtional pipeline components)

Introduction ... better late than never ...

I've been running this blog for a few months now, without proper introduction. So now, I thougth, the time is ripe. My real name is Kenneth. I've been dragging the kennywest alias around since my first hotmail acount (which was also my first real e-mail address), which is why I used this alias for my blog as well. I'm a consultant implementing architectures/solutions for B2B and A2A scenario's. For the moment I am using Biztalk to do this. I've also used plain Java, Seebeyond's e*Gate and Crossworlds. Although I am working with Biztalk and .NET . I am not a, how should I put it, Microsoft supporter. I'm more into Open Source and Linux or UNIX. I first heard about linux 8 or 9 years ago. At that time we were doing labs on a DOS box telnetting to a Linux server to learn about a database called PostgreSQL. A friend of mine had a 6 CD box containing RedHat, SuSE and Slackware distros. He told me he'd installed it and loved it very much. I decided to take it

Biztalk 2004: Mime revisited ...

I had to deploy a flow in production today that has been working fine for 2 months in our test environment. The flow receives a mail from an IIS maildrop folder, gets all attachments and sends them to an orchestration. Mails are in .eml format which is actually a mime message following the RFC2557 specification. Below you can find a sample file that enters Biztalk: From: a@a.com To: b@b.com Subject: hello world Date: Mon, 14 Nov 2005 23:31:17 -0000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_000_01C5E973.82A5C520" ------_=_NextPart_000_01C5E973.82A5C520 Content-Type: multipart/alternative; boundary= "----_=_NextPart_001_01C5E973.82A5C520" ------_=_NextPart_001_01C5E973.82A5C520 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit hello world, content ------_=_NextPart_001_01C5E973.82A5C520 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: 7bit <HTML> <HEAD

Linux: Problems with Ubuntu, X and NVidia

When I started my computer the other day, X was not starting. Nothing happened. Just a cold, black screen. I had no idea what triggered this, so I decided to reinstall the NVIDIA driver for my graphics card. All went well and X was working again. After reboot, same problem. After googling for a while, I found this discussion. Seems the Debian's/Ubuntu's own nvidia runlevel scripts are cleaning up modules they shouldn't. So the solution is to uninstall all nvidia stuf you installed from Debian/Ubuntu (with --purge option), reinstall the NVIDIA driver from the official website and switch to runlevel 2 to see the result. Aah, don't you just love if everything falls back into place ;)

Visual Studio .NET 2003: resx files ...

I have a project containing custom pipeline components. Each component has its own .resx -file. For some reason the .resx -file for ComponentA was included in the project as a seperate file and the .resx -file for ComponentB was only visible if you clicked the [+] -sign left of my component. I had no idea why there was a difference between the visualization for both .resx -files. When I edited the .csproj -file, I saw why it happened: <File RelPath = "ComponentB.resx" DependentUpon = "ComponentB.cs" BuildAction = "EmbeddedResource" /> If you remove the DependentUpon property, the file becomes visable in your project. Dunno how to do it without editing the project file though ...

Biztalk 2006 on Linux ... yes, it's possible (2)

Image
So I finally installed the second Biztalk 2006 beta on my Ubuntu Linux box. My machine is a Pavilion 5080.be with 1GB of RAM. I thought running VMWare and Windows 2003 Server would really slow the machine down ... but it didn't. In the above screenshot you can see my first flow (ProcessOrder) I've developed in Biztalk 2006. Let's start doing some more advanced things ;)

Biztalk 2006 on Linux ... yes, it's possible (1)

I'm currently running Ubuntu Hoary on a custom 2.6.13 kernel. I will be using this to run Windows 2003 Server and Biztalk 2006. To be able to run Windows on Linux (Ubuntu), you'll need VMWare . Apparently the most recent version (5) is having problems on kernels later than 2.6.11. The VMWare network modules causes the network to lock up from time to time. You can read all about it and how to solve it here . Right now, I've managed to install 2003 Server, SQL Server 2000, Analysis services and Visual Studio 2005 beta. Later this week, I'll be installing the second Biztalk 2006 beta. Very exciting stuff ...

Excel ... aaaargh ...

I am working for a client that is using a lot of automated B2B scenarios. These include, next to normal EDI (Edifact and X12), ordering by mail. My client’s client sends orders as mail attachments. This has been working for quite some time, until recently, I got a phone call. Apparently, something was wrong in _my_ code because the requested delivery date was wrong by a day. The requested delivery date is, well, quite special. It is an integer indicating the number of days that passed since 01/01/1900. “Why?” you might ask. No idea. But hey, no problem, I can count. So this is the code that was parsing the “number of days passed since 01/01/1900” to a real date:             DateTime baseDate = DateTime.ParseExact("01011900", "ddMMyyyy", null );             int days = int .Parse(numDays);             return baseDate.AddDays(days - 1).ToString("yyyyMMdd", null ); I didn’t quite understand why this code could lead to a wrong requested delivery date. So I as

Linux: Swap, file systems and such ...

Just found this interesting read on KernelTrap , posted by Mr Z . Allow me to elaborate. UNIX filesystems have a concept of "inodes" that store the body of the file, its permissions and its ownership. The inodes get linked into directories via names--aka. directory entries. The same inode can be linked into the filesystem in multiple places. (Hence the concept of a "hard link.") The filesystem keeps track of how many links an inode has, and the kernel keeps track of how many processes have opened a given inode. This concept is important, and I will come back to it. When an executable runs, the executable's file as well as the files for all the libraries it depends on get opened. The pages for these files get mmap()'d into the process' address space as file-backed virtual memory. The memory gets marked copy-on-write, so that any changes to the mmap()'d code result in a fault, and break the file backing. In any case, the file-backed portions are backed

Biztalk: Explorer

Just found this nifty tool to manage and configure your Biztalk server running in production. It's called Biztalk Explorer and allows you to configure/manage a Biztalk 2004 without having Visual Studio installed. So this tool is ideal for administrators configuring production/QAS environments. I know you should use binding files, but if you want to change something quickly, this is the tool you need.

Firefox: Figures on MSDN not showing ...

When browsing some articles on Biztalk on the MSDN sites, figures were not showing (e.g.: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/bts_2004wp/html/956fd4cb-aacc-43ee-99b6-f6137a5a2914.asp ) in Firefox. I was wondering why the figures were showing in Internet Exploder and not in Firefox. Seems that Firefox is having problems with the back slashes. Well ... problems ... shouldn't be back slashes in the first place (damn Micro$ofties), right? The solution is to install Slashy . Look mom, I can now read MSDN articles too ;)

Biztalk: Creating documentation

Here are a few possibilities to create your documentation for Biztalk deployments. Generate it with BiztalkDocumenter Create it with VISIO Using the stencil from Enterprise Integration Patterns Using the stencil from André Dammeyer Maybe you came accross some better options ... let me know.

Biztalk: Delete ReceiveLocation using WMI and VBScript

The default samples that are shipped with the Biztalk SDK do not contain code to delete a ReceiveLocation. Here is something I've written that will delete a ReceiveLocation, specified on the command line. Please note that: this is a very-very basic script (e.g. no checks on primary ReceiveLocation) I know nothing about VBScript, so if you want parts of it nominated as a WTF , go ahead, make my day ;) Option Explicit   RemoveRecLoc Sub RemoveRecLoc()     Dim objArgs: Set objArgs = WScript.Arguments       'error handling is done by explicity checking the err object rather than using     'the VB ON ERROR construct, so set to resume next on error.     'on error resume next       Dim strReceiveLocation        strReceiveLocation = objArgs(0)       Dim InstSet, Inst     set InstSet = GetObject ("winmgmts:\root\MicrosoftBizTalkServer").InstancesOf("MSBTS_ReceiveLocation")       Dim objReceivePort       'Check for error condition before continuing

Mime Decoder Pipeline Component in Biztalk 2004 (the solution)

I promised to publish a solution to read the .eml files. This solution works for both Biztalk 2004 and Biztalk 2004 SP1 installations. Step 1: Create a custom decoder component You can download a wizard that will create any pipeline component here . Use this to create your decoder component. Make sure you have the following design time properties defined: FromRegex : this will contain the regular expression to find the sender FromMatch : this will contain the index of the Group and Capture ToRegex : this will contain the regular expression to find the receiver ToMatch : this will contain the index of the Group and Capture SubjectRegex : this will contain the regular expression to find the subject SubjectMatch : this will contain the index of the Group and Capture PropertyNamespace : this will contain the namespace of the properties we're promoting (don't forget to create your property schema with MessageContextPropertyBase properties) If you're not familiar with regula

The Daemon, the GNU and the Penguin (12)

Read all about it here . Very interesting series. I've read to chapter 4 the other night ...

Mime Decoder Pipeline Component in Biztalk 2004

This is so funny. I've been struggling for a while to be able to read .eml files through Biztalk. Seems the the MIME decoder that ships with Biztalk 2004 tries to find "MIME-VERSION" in the first 1024 bytes of the .eml -file. The problem is that, in my file, the MIME-VERSION -string was near byte 1324 (or so). So the decoder tells me the file is not valid. Seems this problem is resolved in SP1. In a next post, I'll post some code ...

Biztalk: RIP

Biztalk died on me today after choking on an 18 MB IDOC (= flat file message from SAP) message. A catastrophic failure occurred in the BizTalk service. The service will shutdown and auto-restart in 1 minute. If the database is still unavailable, this cycle will be repeated. Error message: Parameter is incorrect Error source: System BizTalk host name: BizTalkServerApplication Windows service name: BTSSvc{940AAE5E-0C6F-401E-83B2-D00BFF7792BB} I already ran the Config Framework wizard, but untill now, no joy :(   Update! I found why I was getting the above error. It seems one of the IDOCS I was using for testing lost some trailing spaces in one of its segments. This resulted in the above error ...

Xbox 360

Ok, I must have been away from this world for some time. Apparently Microsoft's new game console will be called Xbox 360. You can read all about it here . A few years ago, when Microsoft released its first Xbox, there was some student analyzing traffic that was crossing the encrypted bus (between CPU and peripherals I think), for its thesis. As a result, different small companies released mod chips that were able to hack this bus. After mod'ing your Xbox, you were able to run copied games (not that I approve that). You could even run Linux on your Xbox. After all, the first Xbox was a normal PC, with some proprietary stuff from Microsoft. When the new Xbox will be released, the OpenSource community will be ready ... I can't wait ;)

The Daemon, the GNU and the Penguin

For those of you interested in the history of Unix, OS2, Minix, Linux ... (or in short those decent OSes that don't originate from Redmond) there's a series of tales you can read on Groklaw. The latest is chapter 9 .

Where did my functoids go ...

Ok, yet another Biztalk post. The other night, I was working for a client, trying to get a map right. Normally I don't use these things. I know XSLT well and tend to use this instead of the clumsy Biztalk Mapper . This time, however, I was obliged to use the mapper. My colleague was using it and I had to fix his map. Anyway, opening the toolbox startled me, as there were no functoids. After Googling for a while, it seemed I had to add Microsoft.BizTalk.BaseFunctoids.dll (which you can find near C:\Program Files\Microsoft BizTalk Server 2004\Developer Tools ) to my toolbox. After that, everything was working as it should. I'm not sure how MS Visual Studio ever forgot about the location of my functoids ...

Star Wars Episode III: Revenge of the sith ...

Ok, I admit it, I'm a nerd ;) This morning, at 00h10, I went to see the final part of the Star Wars saga. Better than the first 2, I must admit. Even though you know how it's going to end (you do know how it's going to end ... if not, were have you been the past 6 years or so), Lucas managed to bring enough entertainment, drama and suspension to keep me awake for almost 3 hours. So in short, a must see ... may the force be with you ...

Duplicate message types part II

In a recent post I was talking about duplicate message types deployed to the Biztalk management database. The following link describes duplicate message types in more detail.

Long classpaths in Java

Yesterday, a colleague had a problem setting the classpath for an application we use. Apparently, the length of environment variables is restricted in Win32. Unfortunately our application is using a lot of external jars , so classpaths tend to grow. While google'ing for a solution I came accross this post. There is another solution to solve this issue. Just add the following line to your config.sys file: shell=command.com /e:4096 I must admit, I like the Runner.class solution though ;)

GAC and M$ Visual Studio .NOT

A colleague of mine was having trouble adding references to C# projects, of DLL's that are in the GAC. Apparently, M$ nows about this issue: http://support.microsoft.com/default.aspx?scid=kb;en-us;306149 I really love the last part: It is highly recommended that you not install your assemblies to the GAC, unless you want to share your assemblies with other applications running on that system. Also, note that it is not possible to directly reference an assembly from the GAC in your project. If you want to use an assembly from the GAC, you should drop your assemblies to a local folder, and then add a reference to the assembly from this folder.

Checking for duplicate message types in Biztalk

Ever been annoyed with the following message in the event viewer after deploying your freshly created Biztalk 2004 project: There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive" Source: "XML disassembler" Receive Location: "AAA.BBB.CCC" Reason: The disassembler cannot retrieve the document specification by using this type: "http://foo.com/bar#something". Either the schema is not deployed correctly, or more than one schema is deployed for the same message type. You can check for the assemblies that are causing this by querying the Biztalk Management database: select d1.id, d1.msgtype, d1.docspec_name, d1.clr_assemblyname from bt_DocumentSpec d1, bt_DocumentSpec d2 where d1.id != d2.id and d1.msgtype = d2.msgtype