none
Biztalk 2009 Oracle Adapter two Package Procedures with same schema/package name/function name in two different databases RRS feed

  • Question

  • (This question was first post under General Biztalk Discussion)
    thread: http://social.msdn.microsoft.com/Forums/en-US/biztalkgeneral/thread/9391eff2-e1c7-4a07-95d8-93372debda70/

    ------

    Hi,

    I have the same Schema.Package.Procedure on two different Oracle Database PDO.PO_CE_WS.PROCCESS_MESSAGE

    Let's say one is Spain database and other Italy one.

    When I generate an assembly for Italy and deploy everything goes well, when I deploy spain that uses the same procedure (but in his own database), even if they are in separate applications, as schema should be unique on Management Database I run into a problem that both schema namespace+rootnode generated from Oracle Adapter has the same matching type, so Italy assembly is load.

    I tried to use Prefix and Generate Unique Schema names options on Oracle WCF Adapter generator with no luck....

    Is there a configuration option or workaround I can apply to solve this, (final scenario handles up to six database with same use case)

    Thank you so much

    Friday, November 27, 2009 9:03 PM

Answers

  • All you need to ensure is that your root name + namespace combination is unique for each schema. Yes - I think your approach will work just fine. The adapter currently does not have a way to solve this problem on the Send side. The Namespace Unique Id property is only used for the polling scenario.

    • Marked as answer by VS Anywhere Monday, November 30, 2009 1:52 PM
    Monday, November 30, 2009 1:06 PM
  • Hi Manas,

    We found a better solution than to create a pipeline component, it is to use synonyms for packages on Oracle Databases...

    In this way original package is unmodified and we create a new synonym package name with _SPA or _ITA sufix, so Adapter generate unique schema names, so no problem at all

    Anyway if it is possible to request this feature to Adapter team, please do... ...


    Thank you!!

    jesús

    • Marked as answer by VS Anywhere Monday, November 30, 2009 2:44 PM
    Monday, November 30, 2009 2:44 PM
  • For closure: Oracle synonyms are supported in BizTalk Adapter Pack 2.0
    • Marked as answer by VS Anywhere Tuesday, February 23, 2010 8:12 PM
    Tuesday, December 1, 2009 9:16 AM

All replies

  • Very interesting scenario. Let me think if this can be solved somehow, and then I'll reply.

    Thanks!
    Manas
    Saturday, November 28, 2009 7:26 AM
  • Hi Manas,

    More information:

    It fails when Response message comes back from Oracle...

    Call is made correctly and executed properly, incoming response message is what is not right processed

    I'll generate the error again to give to you a copy but if I remember correctly it was a cast error because biztalk recognises the incoming message to be routed to sender port but as it matchs schema type to the other assembly (first installed) then cannot cast to the internal type bound to the response operation in the orchestration port...

    thank you for your tim!


    Saturday, November 28, 2009 9:59 AM
  • Question: why are your input schemas not conflicting just like response message? I can think of the following solution:

    1. Hand Edit each schema generated by the adapter to become unique
    2. Write a custom pipeline component that reads the message created by the adapter. The pipeline component is tied to the port, and therefore knows that the message from the adapter would be from Italy. Pipeline component on another port knows that the message coming in is from spain.
    3. The custom pipeline component modifies the messages to correctly map to the hand edited schema.

    I hope this makes sense!

    Thanks,
    Manas

    Saturday, November 28, 2009 11:46 AM
  • Hi Manas,

    I install again the assemblies to generate the error to copy it here and now is when I get a conflict on input schemas as well.... I can't tell you why this not happen before

    About the solutions you propose I think is a nice workaround, but also this means you tie the Send Port to a Pipeline that is going to handle only one schema, if you generate a set of operations on the same binding you need to handle for each operation a different schema and maintain a configuration for each pipeline....

    Really there is no an option on WCF Adapter to isolate this scenario?

    I think, (basic approach), simply allowing to add a "Unique ID" to message namespace when sending (removing it) and receiving (adding) should be enough to let biztalk do its regular work without more interefence...


    http://[Adapter Namespace]/PDO/Pacage/PO_CE_WS#PROCESS_MESSAGE
    http://[Adapter Namespace].[UNIQUEID]/PDO/Pacage/PO_CE_WS#PROCESS_MESSAGE

    Maybe I can create a simple pipeline that do this on sending and receiving....

    What do you think? I think is a more generic approach than to tie a pipeline to some specific schema.

    If we cannot find a standar solution with out-of-the-box adapter...

    jesus








    Sunday, November 29, 2009 3:51 PM
  • All you need to ensure is that your root name + namespace combination is unique for each schema. Yes - I think your approach will work just fine. The adapter currently does not have a way to solve this problem on the Send side. The Namespace Unique Id property is only used for the polling scenario.

    • Marked as answer by VS Anywhere Monday, November 30, 2009 1:52 PM
    Monday, November 30, 2009 1:06 PM
  • Hi Manas,

    Then I have only two questions,

    do you know it is possible from pipeline preassembler stage access binding properties where pipeline component is executing?

    and

    it is possible to elevate this issue to a new feature request to Biztalk Adapter Team for their consideration?


    Thank you so much for you help anyway...

    • Edited by VS Anywhere Monday, November 30, 2009 1:53 PM none
    Monday, November 30, 2009 1:52 PM
  • If you are taking about the Adapter's binding properties, AFAIK, no, you cannot access them. Others on the forum, please correct me if I'm wrong.

    I will ensure that this request is considered appropriately for the next release. Thanks for the feedback, it is much appreciated!

    Regards,
    Manas

    Monday, November 30, 2009 2:10 PM
  • Hi Manas,

    We found a better solution than to create a pipeline component, it is to use synonyms for packages on Oracle Databases...

    In this way original package is unmodified and we create a new synonym package name with _SPA or _ITA sufix, so Adapter generate unique schema names, so no problem at all

    Anyway if it is possible to request this feature to Adapter team, please do... ...


    Thank you!!

    jesús

    • Marked as answer by VS Anywhere Monday, November 30, 2009 2:44 PM
    Monday, November 30, 2009 2:44 PM
  • Great! I had assumed that it is not possible to modify things on the Oracle database side :) Renaming the procedure / creating synonym is the easiest fix.
    Monday, November 30, 2009 3:42 PM
  • Well in our case we cannot modify the "real" Package or Procedure Name because we are not the unique to use that package, so yes renaming package or procedure was impossible,

    But Oracle permits to create synonyms on practically all objects, so adding a synonym (alias) for the package make it to become unique without disturbing anyone :)


    Thank you again for your time Manas

    jesus
    Tuesday, December 1, 2009 8:03 AM
  • For closure: Oracle synonyms are supported in BizTalk Adapter Pack 2.0
    • Marked as answer by VS Anywhere Tuesday, February 23, 2010 8:12 PM
    Tuesday, December 1, 2009 9:16 AM