Posts

Showing posts from 2011

IASA Architect Core training completed

I’ve completed the IASA Architect Course and have completed the exam for “IASA Foundation Certification”. My review of the course is that it is really good, in direct applicable aspects of architecture and for long-term development of personal skills. This is what “IASA Foundation” stands for: · The foundation phase of an architects career is focused on understanding the skills, capabilities and knowledge a practicing architect possesses. Although many architects have already reached significantly higher phases in their career, very few did so in a standard way. Most learned through trial and error, often in the most difficult ways. The foundation phase of an architects career will be a time of discovery to understand how an architect practices, what it means to specialize, and what an architect will need to know to be successful. Iasa calls those that are looking to become architects, Aspiring Architects. Whereas, the first full phase in an architects career is marked by reaching th

Changing BizTalk Mapper Item templates

Image
  To be able to configure default value for artifacts that are created from within Visual Studio we can leverage the ‘Item Template‘ functionality. I have done this to adjust the mapping behavior , specifically the value for setting ‘GenerateDefaultFixedNodes’ which is default ‘YES’. See my previous post on this subject. Tags van Technorati: Item Templates BizTalk Mapper Mapper behavior Below are the steps to follow The ItemTemplates is a folder that contains the template files used when you create a new item. The map template can be found in the folder: Map Files This is a .zip file that contains a .BTM file. Change the value of ‘GenerateDefaultFixedNodes’ to one of the above values and save the .zip file. After changing the value, the template is not working, why??? The templates are cached in the folder: C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ ItemTemplatesCached \BizTalk\ Map Files You have to register the value by entering the following co

BizTalk Mapper vs Attributes with Defaults….Schema Elements with an attribute having a default value are ALWAYS generated

Image
  ‘Challenge’: Schema Elements with an attribute having a default value are ALWAYS generated, this is because of the default mapping behavior. Structure of this post: What is the problem Why is this How to overcome this Change BizTalk behavior using visual studio templates What is the problem Attributes with a Default Value are generated even though the element is optional. Consider this schema, which has an Data element. The element ‘OptionalAttributeDefault’ is optional (minoccurs:0) and has an attribute with a Default value: ‘LINUX’ The element ‘RequiredAttributeDefault’ is mandatory (minoccurs:1) and has an attribute with a Default value: ‘CAT141.12’ The element ‘RequiredDefaultValue’ is mandatory (minoccurs:1) and has a default value: ‘Test’ When we execute the map which does not map the ‘Data’ element like this: The XML output generated is: <ns0:Destination xmlns:ns0=" http://AttributeTest.Schema2" >     <Name>Name_0</Name>  

BizTalk Scripting functoid explorer (codeplex)

  I came across this tool to extract the scripts from maps found in a folder and really like it. Running the tool on my project BizTalk 2010, I had some errors (minor), I have posted a patch with some minor modifications. If anyone is an Xslt Guru, please contribute because this would make it a perfect tool to generate Mapping documentation!   Cheers, Sander

Flat File schema - The tag overlaps one or more fields that contain a fixed data value

Image
  I recently had to patch up a schema that was defined but had to be evaluated for re-usability. This warning was generated: Warning    1    Record "RecepientOrderShipDetail" - The tag overlaps one or more fields that contain a fixed data value.    \OrderShipped_FF_<System>.xsd   The record RecepientOrderShipDetail had a TAG identifier which was correct, however for some reason a child atrribute @RecordID has a FIXED value with the same value as the parents TAG identifier. Since both the TAGS were working on the same Offset the positional ‘bandwidth’ was used by the Attribute. To prevent this warning I removed the fixed value of the Attribute   Since this error is rather unclear I hope this helps in solving the problem when you run into this.   Regards, Sander

BizTalk Deployment Framework – Always provide the OutputPath!

Image
A hard lesson I learnt….as I was fiddling around with the BizTalk Deployment Configuration, ALWAYS make sure to define a property group applicable to your configuration and be sure to set the OutputPath. I had defined several propertygroups and modified the conditions to make sure it would work on a build server (provided additional MSBuild properties), however I forgot one combination, the PropertyGroup for the ‘Release’ configuration. I had set my BTDF project to configuration ‘Release’….which led to a not so cool outcome…files were removed from C:\ This is caused by the WixTargets file (MSBUILD\Deployment Framework For BizTalk\5.0\BizTalkDeploymentFramework.WiXSetup.targets;       <!-- Delete any existing output files -->     <CreateItem Include="$(OutputPath)\**\*.*">       <Output TaskParameter="Include" ItemName="OutputsToClean" />     </CreateItem> If the $(OutputPath) is not provided the value become “.” causing the effe

ESB Toolkit ‘DSL Itinerary error (XML Node not serializable)’

Today I received this error; Cannot save 'C:\Projects\<SolutionFolders>\<NameOfItinerary>.itinerary': Type 'System.Xml.XmlNode' in Assembly 'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.   As stated in the Biztalk social forum ; - Somehow one of the shapes led to a corrupted itinerary - Remove the shapes one by one to identify the one generating the error - Recreate the shape - It now works…magic!   Also make sure that everything is properly deployed   (when using an orchestation extender) before changing the itineraries.   HTH, Sander

WCF-Oracle and Oracle Advanced Queing (AQ) – tips

Image
If you use the WCF-Oracle adapter to communicate with Oracle Advanced Queing you are in for a treat. We followed the steps suggested in a very good MSDN post . There are however some caveats; Username is case sensitive The generated schemas have a reference to the package, and Database schema, make sure this is consistent throughout the environments The generated schemas are slightly different then what the WCF-Oracle adapter expects in some cases (more on that below) Use a count procedure to determine if there are messages Generated the schemas is done by following the standard ‘Add Generated items’ wizard so that should not be hard to do. When you generate schemas for Oracle they will typically have the targetnamespace: /Package/http://Microsoft.LobServices.OracleDB/2007/03/ <DATABASESCHEMA> /Package/ <PACKAGENAME > Where the <DATABASESCHEMA> could be something like ‘DBOWNER’ and the packagename could be whatever. When you implement thi

New look and feel

Hi there, Minor update on my blog, I completely changed to look and feel, hopefully it’s now more accessible. I will try to update my blog more often!   Regards, Sander

Use ETW to Trace messages inside an orchestration

I've been using the ETW framework heavily and it works great. Before i knew ETW i would use: System.Diagnostics.Trace.Writeline("Message data: " + xmlDoc.OuterXml) which works geat. I wanted to log the data using ETW, however i can not get it to work with ETW, anyone knows what the deal is? CODE xmlDoc = inboundMessage.XmlMessage; Microsoft.BizTalk.CAT.BestPractices.Framework.Instrumentation.TraceManager.WorkflowComponent.TraceInfo( "message data: {0}", xmlDoc.OuterXml ); OUTPUT IN DEBUGVIEW : [11992] [1]1B4C.1638::09/23/2011-17:41:53.583 [Event]: ŽS?S Note: when i use the old scool Trace it works as expected, so it's now the message/encoding BOM etc.

Build notification tray

Image
In my last post I described how to set up a build server for Biztalk well….a build server isn’t completed with a build monitor tool! Installing VS.Net + TFS Client installs a tool out of the box; It provides a clean interface and even allows you to view the details of the build!   If you have the ability to setup a machine with TFS access and a dedicated monitor you can use the BuildMonitor …   Happy building!   Sander

Setting up a build server with the BizTalk Deployment Framework

Image
This chapter describes the steps to a TFS Build Server to set up BizTalk deployment with the following functionality: • Build solution • Perform unit testing Using BizUnit • Create Deployment Packages Using BDTF • Deploy to Server Using R packages created in previous step • Create documentation BizTalkDocumenter For this the following steps are required: • Installation Components (30 min) • Configuring a build account (30 min) • Setting up the build service (30 min) • Scrum template installation (30 min) • Share for the build output directory (10 min) • Adjustments Build Template for use BTDF (30 min) • Design of build definitions (60 min) • Setting BTDF (60 min) • Use BTDF • Build execution / scheduling UPDATE (21-06-2013) - When using sharedassemblies, the following URL is a big help http://mohamedradwan.wordpress.com/2013/01/31/set-custom-assemblies-path-for-host-build-service-on-the-cloud/ - For viewing the basic instructions a video is available on the following blog http:

BizMock using it for orchestration unit testing

Image
BizMock is a tool that allows for testing BizTalk artifacts without having to deploy artifacts. This is done by a private BizMock adapter that receives the messages. BizMock generates a class based on an XML configuration file where the mapping to schemas, sample files, maps, orchestrations, mapping from logical to (virtual) physical ports are defined (all in your head ). Advantages : The generated code to perform the test is simple, powerful and compact. Disadvantages : It uses T4 templates; errors in the XML file are very difficult to debug and resolve. There is little documentation available and sample code does not show all possibilities. Note: According to the developer a DSL tool is on the way providing an easy mechanism to manufacture the Xml file! In the segments below are some code snippets that shows the usage of BizMock; Application The figure below is a sample project with two schemas, a map and an orchestration. The sample orchestration receives a me

Command shell – shortcuts

I’ve visited the Daydays and there was mentioned that Scott Hanselman was superior in his knowledge of tools and shortcuts. I was particularly interested in the shortcuts he used in the command shell…. Finally today I decided to look it up and found 2 I will regularly use; ALT+SPACE+E+K <-- for copy . and ALT+SPACE+E+P <-- for paste.   Hth, Sander

MSMQ Dynamics Sendport – TimeToReachQueue not Infinite

Image
When using a Dynamics MSMQ SendPort, be aware to set the TimeToReachQueue to a higher value then 0! I had created an Itinerary and could not see any messages…It turns out that the TimeToReachQueue interval is somehow ignored when using Dynamic MSMQ send ports. If the interval specified by the TimeToReachQueue property expires before the message reaches its destination, Message Queuing discards the message in one of two ways. If the message's UseDeadLetterQueue property is true, the message is sent to the dead-letter queue. If UseDeadLetterQueue is false, the message is ignored. In my case the solution was to set the interval to a higher value than 0, otherwise the message has to be submitted to the queue very quickly! (I noticed this only during bulk/stress-testing so I might slip you attention!) http://msdn.microsoft.com/en- us/library/system.messaging.message.timetoreachqueue.aspx http://www.44342.com/BizTalk-f20-t14495-p1.htm Cheers, Sander   Tags van Technorat

Configuring ESB Portal resubmit

When setting up the ESB Portal we didn’t see the receive ports. After some digging around it seems that the content type is not correctly set resulting in not showing up the available receive locations. A minor change in the SP solves this problem… Modify the Stored Procedure: EsbExceptionDb. usp_insert_Message   IF (@ContentType = 'text/plain' AND LEFT (@MessageData,1) = '<' ) BEGIN SET @ContentType = 'text/xml' END   See the very useful post on the BizTalk forum   HTH, Sander Nefs

MSMQ with ‘Authenticate’ enabled for communicating with Dynamics AX

Image
Hereby my findings on how to communicate with a remote MSMQ with the ‘Authenticate’ property set (required for Dynamics AX MSMQ inbound Channels). There are 2 ways how MSMQ (4+) works, either in workgroup mode (when you only install MSMQ) or in active directory mode (when you choose 'Directory Integration'). The Logon Info only works when you work in workgroup mode. When you set the 'Authenticate' flag on the Queue the Logon Info is useless...implicitly you are using personal user certificates that are installed when you logon to the machine. So my issue was resolved once i got it working with the certificates, although i would expect that the Logon Info should work hereby my resolution: - Logon to the client machine where the Send port is defined using the Host instance account - Open Features\MSMQ\Properties - Go to the tab 'User Security' - Click on 'Register' to Register the public part of the certificate in the active directory (

BizTalk ESB Dynamic port – 3 filter properties

Image
This is a quick post for you (and me!) to remember….whenever you want to use the ESB Toolkit and are wondering which filters you need to set to be able to get the send port to send a message…. SET THESE 3 FILTERS: Microsoft.Practices.ESB.Itinerary.Schemas.ServiceName Make sure that the name of this filter matches the Dynamic Send port that you have chosen in you itinerary!! Microsoft.Practices.ESB.Itinerary.Schemas.ServiceState To ensure that the process continues and that the itinerary is continued…set the state to ‘Pending’. The Toolkit will worry on the actual states. Microsoft.Practices.ESB.Itinerary.Schemas.ServiceType Depending on the scenario you can set the ‘ServiceType’ to ‘Messaging’ for a messaging based subscriber or to ‘Orchestration’ for an Orchestration based subscriber. Note: the IsRequestResponse property might be useful for solicit response port.   HTH, Sander   Tags van Technorati: BizTalk , ESB , ESB Toolkit

ESB Portal – powershell error on 64-bit machine

Image
Yesterday I was having an issue when trying to install the ESB management portal. Although I opened the gates security wise I still got PowerShell errors… I could not figure out what the problem was….then my colleague Tomasso Groenendijk asked….”is it a 64-bit machine? Good luck with that!” It was so simple, kuch, (if you would think of it)….configure this for 32-bit AND 64-bit. a) Start PowerShell 32-bit Right click and choose ‘Run as Administrator’) Execute the following command: Set-ExecutionPolicy RemoteSigned a) Start PowerShell 64-bit Right click and choose ‘Run as Administrator’) Execute the following command: Set-ExecutionPolicy RemoteSigned   Hope this helps someone….   Sander Tags van Technorati: BizTalk , BizTalk ESB , PowerShell