locked
Creating maps by clients and plugging them into BizTalk application RRS feed

  • Question

  • I am BizTalk novice. Assuming we want multiple clients ( from different companies)  to create certain maps somehow, ideally test them , deliver to us, and plug into our Biztalk solution, then rebuild/deploy .
    Would it be feasible to automate the process completely  using Microsoft or third party tools ?  
    Tuesday, January 19, 2010 4:25 AM

Answers

  • I don't see why I you need to redeploy your solution. Have you tried adding the new schema & map DLLs to your BizTalk application using BTSTASK? Like:

    BTSTask AddResource /ApplicationName:myappname /Type:System.BizTalk:BizTalkAssembly /Overwrite /Source:path-to-dll
    /Destination:%BTAD_InstallDir% /Options:GacOnAdd

    This will add the DLLs to your BizTalk application and into the GAC.

    Mike

    • Marked as answer by MSMit Thursday, January 21, 2010 5:44 AM
    Wednesday, January 20, 2010 9:26 AM

All replies

  • Hi,

    This does not seem practical to me.  First of all BizTalk maps can be generated using BiZtalk mapper and all your clients may not (most probably) will have BizTalk.  The normal practice is that you get the client schemas and create appropriate maps yourself using BizTalk mapper.



    Regards,

    Tariq Majeed



    Please mark it as answer if it helps
    Tuesday, January 19, 2010 5:30 AM
  • I am BizTalk novice. Assuming we want multiple clients ( from different companies)  to create certain maps somehow, ideally test them , deliver to us, and plug into our Biztalk solution, then rebuild/deploy .
    Would it be feasible to automate the process completely  using Microsoft or third party tools ?  

    Hi

    If they have BizTalk, then sure that is feasible. They should just provide you with an assembly with the needed schemas and maps, and you can then deploy that and use the maps in your receive ports and send ports.

    Be aware, though, that when you do this, you allow all sorts of different schemas and maps to be deployed to your BizTalk Server. You need to make sure you are handling the case where multiple map-suppliers provide you with schemas that have the same MessageType for instance, since that is generally a bad thing :)

    eliasen, representing himself and not the company he works for.
    Three times MVP and three times MCTS in BizTalk.
    Blog: http://blog.eliasen.dk
    Tuesday, January 19, 2010 8:07 AM
  • Hi,

    look at the syntax of the BTSTASK BizTalk utility - it will allow you to script deployment of these maps & schemas.

    Using the ESB Toolkit could make life a lot easier for you. With the ESB Tookit you use an itinerary to describe what services are applied to a message. You could have an itinerary like this:

    receive msg - transform (map) - send msg

    The great thing about the ESB toolkit is that at the transform stage you don't have to specify the map, you can use a BizTalk Business Rule to determine the map name, e.g. the map names could be stored in a config file or a database table which could be looked up according to some message data rule. Thus when you deploy new maps (using BTSTASK), you would simply update this configuration source. This way you don't have to redeploy your application, since it dynamically picks up the map name.

    You can do something similar from within an orchestration - see this example: http://www.codeproject.com/KB/biztalk/DynamicMaps.aspx. Or see the standard BizTalk docs: http://msdn.microsoft.com/en-us/library/aa950573(BTS.10).aspx.

    Mike
    • Proposed as answer by MikeGBUK Tuesday, January 19, 2010 6:05 PM
    • Marked as answer by MSMit Wednesday, January 20, 2010 1:02 AM
    • Unmarked as answer by MSMit Wednesday, January 20, 2010 5:38 AM
    Tuesday, January 19, 2010 5:45 PM
  • I extended  http://www.codeproject.com/KB/biztalk/DynamicMaps.aspx

    "Although in this example we have used a simple Decide shape to figure out which map to load, in real life implementations, this could be a database helper class which returns the name of the map assembly from a SQL database or a similar design. This design is useful since you can add more maps and systems even after the original system has gone live. This is possible because you can add a new subscriber into the database and have a new DLL with the corresponding schema and maps. This provides a loose-coupling which is highly desired in these scenarios".

    by simply adding map selection from separate DLL to ELSE in decider shape.  This separate DLL is just another solution with another map which uses schemas from the original one , plus schema for the new map. 

    tMap = System.Type.GetType("DynamicMapsMore.Map_ELSE, DynamicMapsMore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f85be9e4dd36fb1d");

    Now the problem seems to be in order for this DLL to work properly after adding to GAC this new schema should be present in the original solution and deployed which requires  original solution redeployment. Am I missing something ?  

    When testing, message is routed  properly but output xml is empty, unless schema ( we thought a client will create it also )  for output was deployed with original solution.  Does ESB toolkit make it possible ?
    To re-iterate the original question we want client to prepare everything for new transformation to happen and just plug in her DLL into  our solution, ideally without redeploying it.
    Wednesday, January 20, 2010 6:07 AM
  • I don't see why I you need to redeploy your solution. Have you tried adding the new schema & map DLLs to your BizTalk application using BTSTASK? Like:

    BTSTask AddResource /ApplicationName:myappname /Type:System.BizTalk:BizTalkAssembly /Overwrite /Source:path-to-dll
    /Destination:%BTAD_InstallDir% /Options:GacOnAdd

    This will add the DLLs to your BizTalk application and into the GAC.

    Mike

    • Marked as answer by MSMit Thursday, January 21, 2010 5:44 AM
    Wednesday, January 20, 2010 9:26 AM
  • Wellllll,

    I Don't know if i understand correct...... You want your clients to develop maps right, Then you want to deploy that map in your own environment.
    Well just let them figure out how to do the map with xslt. Then you can easily create a map that uses this custom xslt.

    Sounds like a solution ?

    Well0549, Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread
    Wednesday, January 20, 2010 2:45 PM