Monday, December 30, 2013
Monday, July 4, 2011
Expert day 2011
Check it out on: http://www.facebook.com/experts4d
Monday, February 15, 2010
How to test a pipeline
Wednesday, December 23, 2009
How to build a message in helper
Friday, August 7, 2009
Thursday, July 23, 2009
Connecting to Oracle via SQL Adapter
One was simple, we needed a table rows to start a process. This was eazy using BizTalk Oracle Adapter. Installing Oracle client, defining TNS, and connection establish.
The other data we needed was a bit more complex. We needed the employee courses including subject learned in the course.
The Oracle adapter can not receive XML queries as result, so we preffered to define a linked server from SQL to Oracle, define the query SQL with the linked server like that:
Select *
from
OpenQuery(Ora,"Select empid,courseid,x1....xn from courses") course,
OpenQuery(Ora,"Select empid,courseid,y1...ym from subjects") subject
where
course.empid = subject.empid and
course.courseid = subject.courseid
for xml auto
the query worked fine in SQL Managment studio. But the receice location query failed in the adapter since the BizTalk tried to add the Oracle DB to the distributed transaction belongs to the SQL Server, over the linked server.
When searching this issue, I came accross a blog, Joe unfiltered: BizTalk, SQL linked servers and DTC trying to do the same.
Following the post solution, we created new linked server, adding the string "DistribTX=0" to Provider settings (and selecting Oracle OLE DB Provider - instead of MSDAORA), which solve the issue.
Shimshon Fishler
שמשון פישלר
Sunday, July 12, 2009
Sending email attachments from BizTalk orchestration
There are some ways to add attachments to outgoing email from BizTalk orchestration.
One method is the use dynamic send port and to set output message content with the attachments paths.
The syntax for the "SMTP.Attachements" property is File1File2...
Sample:
Msg(SMTP.Attachements)="C:\Temp\smpt1.jpgC:\Temp\smpt2.jpg";
Shimshon
Tuesday, April 28, 2009
My project award
Tuesday, March 10, 2009
BizTalk 2006 / 2009 SQL Adapter
When working with SQL Server data in BizTalk Server, there are several differences between using the BizTalk SQL Adapter vs. using .Net assemblies for executing SQL stored procedures and manipulating data using CRUD (Create, Read, Update, Delete –see more on http://en.wikipedia.org/wiki/Create,_read,_update_and_delete
One of there is the behavior of persistency points when orchestrations are involved.
Using the SQL Adapter, by adding one or more receive and send ports to the scenario, the orchestration will stop and a persistency point will be created by BizTalk, and followed by sending (or receiving) the message to (or from) the port.
Contrary, when using .Net assemblies, the SQL command performed is part of the transaction, and not causing any persistency points.
Since working with SQL adapter cause persistency points and therefore increase overall required time needed to complete the operation, comparing to execute a custom stored procedure via Expression share.
But when working with long running SQL Stored procedures, invoking them via Expression shape will keep the orchestration in active state wasting BizTalk resources. Executing the same SP via SQL Adapter will cause the orchestration to be dehydrated when sending the message to port, and resume when SP will end.
Although using SQL Adapter is a bit complicated (see: http://msdn.microsoft.com/en-us/library/cc507804.aspx) there are benefits to use it.
Note that the current BizTalk 2006 SQL Adapter is obsolete in BizTalk 2009 (meaning it will be discontinue to the next version) and BizTalk 2009 introduce new WCF based SQL Adapter.
Shimshon.
(Posted also on: http://www.g-s.co.il/193.html)
Sunday, February 22, 2009
Race condition when working with BizTalk SQL Adapters in Cluster or Group
When working with adapters on multiple hosts group (or in a cluster), keep in mind that enabling an adapter (especially SQL Adapter) perform the command (Select or Stored procedure) on every host at the same time and can cause a race condition.
While FTP, MSMQ and POP3 adapters are listed in the guide to be clustered (and not grouped) the SQL adapter is not listed and therefore can be groups – and will be running on every host.
In this case, the SP road should be taken (and not Select directly from the table) and implementation of locks should be executed in the SP.
See http://msdn.microsoft.com/en-us/library/cc507804.aspx for more details (Recommendation 5).
Shimshon
Tuesday, January 6, 2009
Using Script when developing BizTalk projects
After evaluating some reference options, I decided that the best way to reference a DLL in BizTalk project environment is to create a Bin folder that holds the last compiled version of every DLL and in the other projects, add reference to this Bin folder.
It's quite easy to do when non-BTS projects are used. Just add the copy command to the post build events. I'm also adding the command to GAC the DLL (gacutil).
But a BTS project doesn't have the build events option.
So we are using some batch files to do these commands, controlled by the developer.
First we are copying the DLL to our BIN folder. Next we are GACing this DLL, using gacutil command.
Later on we are using the BTSTask command to deploy the DLL into BizTalk management.
We are also holding a batch file that creates the proper application in the management tool (again, using BTSTask).
These batch files, if written properly, can be used later on to deploy the project into the build machine, testing environment (UAT, INTG) and even the production environment.
For me, using these batch files, shorten the development time (especially when solving bug and recompile, redeploy are involved) and simplify the deployment to higher environment
Samples:
Creating the application:
BTSTask AddApp -ApplicationName:%BTSApp%
GAC dlls:
gacutil -if %InstalBin%\GS.BTS.Meches.CustomPipelineComponents.dll
if ERRORLEVEL 1 EXIT /B 0
Copy to Bin folder:
XCOPY %Root%\BTS\GS.BTS.Meches.CustomPipelineComponents\bin\%DLLEnv%\GS.BTS.Meches.CustomPipelineComponents.dll %InstalBin%\
if ERRORLEVEL 1 EXIT /B 0
BTSTask:
BTSTask AddResource -ApplicationName:%BTSApp% -Type:System.BizTalk:Assembly -Source:%InstalBin%\GS.BTS.Meches.CustomPipelineComponents.dll -Destination:%%BTAD_InstallDir%%\GS.BTS.Meches.CustomPipelineComponents.dll -Overwrite
if ERRORLEVEL 1 EXIT /B 0
Wednesday, December 31, 2008
BizTalk max receive locations using FTP Adapter and File Adapter
When considering developing of a business process which receive the incoming messages in mass multiple receive location using FILE or FTP adapters, one should know that a limitation exists depending on hardware performance which runs BizTalk servers.
In a particular project, we encounter this limit where 200 receive locations activated, both File and FTP adapters.
When large amount of messages arrives to those receive locations, BizTalk stops to collect these messages, and large amount of waiting threads can be found using performance monitor.
Our solution was to develop a specific .NET service which locate the messages in the locations and move the messages to one location, defined as the only one receive location.
Sunday, October 26, 2008
Software add-ons solutions – BizTalk, MsCrm, MOSS and more
One of the main business lines of my company (Guardian information systems: http://www.g-s.co.il) is to provide solutions for customers using Microsoft products, in the form of add-ons over the Microsoft products.
For that we are delivering in the near future a new web site in this address: http://www.softaddons.com
The site will hold the complete list of add-ons created by specialist in those areas (BizTalk, Dynamics CRM, MOSS and SharePoint).
Please see the complete list in the near future.
Shimshon
Wednesday, August 6, 2008
Saying no to: Complete BizTalk project processes without orchestrations
I'm thinking about this post for awhile now.
I was interviewing a developer which was candidate for a BizTalk development team leader.
One of his "sentences" was: "I'm only developing BizTalk processes which are not involved orchestrations. Rather than I'm developing everything needs to be done with port to port routing, pipelines and pipelines components".
It took me time to fully realize that this is, in my opinion, is not BizTalk. Although this can be done - as this guy already proves – I think that in cases my design would lead to the conclusion not to use orchestrations at all in the project, I would leave BizTalk aside in the project.
If everything that the project is needed is routing, probably that BizTalk overhead overcome the benefits from using BizTalk.
What do you think? I'll be glad to hear your opinions
Monday, May 12, 2008
Design patterns
Hello again,
I found out an explanation about design patterns in the blog of Gil Fink.
It is a fluent, short and summarizing explanation, which is, in my opinion the ideal explanation.
http://blogs.microsoft.co.il/blogs/gilf/archive/2008/05/10/factory-method-pattern.aspx
Shimshon
Wednesday, April 30, 2008
Semaphores vs. Singleton in order to manage limited resources in BizTalk
Everybody needs semaphores. In the last couple of months I myself encounter 3 times the need to use semaphores.
Since my primary job is BizTalk – I need a semaphore solution for BTS.
Searching the net for open source semaphore solution results with such solutions, but (the best I found) limited to the current server running the application.
Since my production environment of BizTalk servers holding more than one server, these solutions don't work for me.
BizTalk has an option to use singleton as a mechanism to control resources. This is how to do it using singleton:
- Create orchestration A (Main) to handle the process
- When need to use the limited resource do that
- Send a message using direct binding to orchestration B
- Receive response message from orchestration B
- Send a message using direct binding to orchestration B
- Continue the business process required in
- Create orchestration B
- Create a correlation set that will be used to identify the similarity between the messages arrives to this orchestration to make it unique BizTalk.
- Receive the request from orchestration A and initial the correlation set.
- Do the resource limited operation
- Create a loop
- Add a listen shape
- On one hand Receive another message
- On second hand add a timeout
- On one hand Receive another message
- If timeout occurred exist loop, and leave orchestration
- If message received handle (again) the limited resource operation
- Create a correlation set that will be used to identify the similarity between the messages arrives to this orchestration to make it unique BizTalk.
(Detailed instructions can be found here: http://aspalliance.com/1208_Singleton_Orchestration_in_BizTalk_Server.3)
Here is a picture of orchestration demonstrating this solution:
Challenges when using this way:
- Unable to limit the number of resources in case the number of resources is larger than 1.
- There is no easy way to trace direct binding ports, and therefore to debug errors in the mechanism.
- There is no accurate time to leave the singleton orchestration (how much time to set in the timeout hand).
- It might cause a zombies message (although it pretty rear) when a message coming to the MessageBox after timeout event already fired and orchestration still did not complete termination.
We found out a different way to handle the limited resource problem and to offer a solution for it.
How about using an adapter to get a semaphore?
In this way the solution is very simple.
Once configure the adapter, many resources can be managed, and number of items per resource can be defined.
Construct a message including the semaphore name and number of resource items need to be obtained (not only 1, but 1 is the default), and send a message to the adapter to get the semaphore. After getting it do the business process required the resource and then release the resource by sending the same message again to the adapter.
The next picture demonstrates the same operation using the semaphore adapter.
Shimshon Fishler
Monday, April 14, 2008
BizTalk Best Practice Analyzer v1.1 RTM
Hello,
I've found a great tool in a blog of an employee of Microsoft Israel named
The tool overview (from MS site)
The BizTalk Server 2006 Best Practices Analyzer performs configuration-level verification by reading and reporting only. The Best Practices Analyzer gathers data from different information sources, such as Windows Management Instrumentation (WMI) classes, SQL Server databases, and registry entries. The Best Practices Analyzer uses the data to evaluate the deployment configuration. The Best Practices Analyzer does not modify any system settings, and is not a self-tuning tool.
The blog post located here: http://blogs.microsoft.co.il/blogs/adlaim/archive/2008/04/14/biztalk-best-practice-analyzer-v1-1-rtm.aspx
The tool can be downloaded from there: http://www.microsoft.com/downloads/details.aspx?familyid=dda047e3-408e-48ba-83f9-f397226cd6d4&displaylang=en
Sunday, April 13, 2008
MOSS2007 Workflow and BizTalk2009
Here is a link to: http://blogs.microsoft.co.il/blogs/adlaim/archive/2008/04/01/moss2007-workflow-and-biztalk2009.aspx
שמשון
Shimshon Fisher
Gaurdian
Welcome to the BizTalk Blog
Hello everybody,
My name is Shimshon Fishler and Current I'm the manager of the integration group at Guardian information systems (www.g-s.co.il).
We are located at Petah Tikva, a large city in Israel, near Tel-Aviv.
This blog is about BizTalk useful stuff.
Guardian is part of Malam-Team group which is (in these days) the second large IT Company in Israel.
Guardian holds some major certification by Microsoft in the area of Dynamics CRM, SharePoint and MOSS.
The Guardian integration group is willing to help you solve any of your integration issues. Don't hesitate to contact me at ShimshonF@g-s.co.il.
Using Separate BTS Projects for Schemas and Maps
As we all know from BTS basics tutorials a developer should split the BTS solutions into at least these parts:
- BTS project containing the Schemas.
- BTS project containing the Maps, Orchestrations and other stuff.
This post is about changing this list.
In one of my projects we encounter a big performance issue in the testing environment (lucky me J ).
As we deep into it, we found the issue is about the large amount of maps involved in the project.
We found out that there is a memory leak from the BTS service running this application, consuming more and more memory up to a limit (which is much less than the server physical memory). When reaching this unexplained limit, the service stops serving any more requests.
After involving our support, we got some answers:
- There is an issue with way the XSLT runtime engine handles the map inline scripts, causing this issue.
- In order to avoid it, we recommended by the support to split the maps to a separate project other from the BTS stuff.
Keep in mind that doing it is a big mess when you already have the code running so keep it in your mind to the next project (or the current one if you must due to circumstances).
The Schemas project should include beside the schemas, the web reference, thus it's include more the schemas for the web reference.
By the way, splitting the projects parts in my case, solve the performance issue and reduce the memory consumption approximately by 60%.
Shimshon.

