Answered by:
Reg consuming same web service in different application in a same biztalk group

Question
-
Hi,
i have a scenario as ,
I dont have pre production environment , so i have deployed same application in production environment(with changing name and schema target name spaces). so as of now i can manage properly.
means i am using production environment as production and pre production.
Now my issue is i am consuming a web service in application .now how can i mange this application in same production and pre production.
please help me .
Friday, August 5, 2016 10:02 AM
Answers
-
I dont have pre production environment , so i have deployed same application in production environment(with changing name and schema target name spaces). so as of now i can manage properly.
So, you cannot do this. You don't have 'PreProd' and 'Prod', what you have to two different apps.
What you're trying do to will cause problems, 100% guaranteed. We are happy to explain this to you management.
You need a completely separate TEST BizTalk Group, even if it's just one VM. You can even run the VM on you desktop which would by much, much better than munging PreProd and Prod.
- Proposed as answer by Pushpendra K Singh Friday, August 5, 2016 2:36 PM
- Marked as answer by Angie Xu Sunday, August 14, 2016 9:11 AM
Friday, August 5, 2016 2:16 PMModerator
All replies
-
Hi DineshNad,
This is actually not a good idea!!. Leave the production environment be...Production environment should always host the applications and process which are used in actual real world for doing business .....adding extra application and running them on production just because you don't have pre production environment is not a justifiable use case for any scenario...in your case my best suggestion is
Get a Preproduction environment and remove the Applications which are installed considering Prod as Pre prod environment...LEave production alone from the testing
now to answer you second part in case you want to consume the same webservice for two different applications, host the same webservice on a website running on a different port on IIS.
You can try this approach on the UAT server but please don't try it on PRod.
Regards,
Mandar Dharmadhikari
Friday, August 5, 2016 10:31 AMModerator -
hi ,
Actually i am consuming service of other client. so how can i manage.
Also want to know , My client has prod and pre prod environments, if i consume the service that is hosted in production and pre production in different applications, were thay give the same schemas that causes me ERROR
Cannot locate document specification because multiple schemas matched the message type #####"
Please help me.
- Edited by DineshNad Friday, August 5, 2016 11:24 AM
Friday, August 5, 2016 11:18 AM -
Hi Dineshnad,
Well if the namespaces of both the services are different, then there is no issue with the schema spec property resolution. But in case you want to use the same webservice (though from different applications), set the DocSpecNames property to the fully qualified name of the schema (i.e, Name of Schema s taken from the properties in Admin Console, Assembly name containing the schema) on the send port for each of the application. Once you set the property then you will be able to achieve what you need.
But the important thing is why you want to do it on the production????
Regards,
Mandar Dharmadhikari
Mandar Dharmadhikari
Friday, August 5, 2016 11:43 AMModerator -
Hi,
As of now i dont have preproduction and i am using biztalkserver 2010.
it is a urgent requirement so i am planning like this.
If i have at least 15 days , already 2013 migration is under progress. there i have UAT, Preprod and Prod environments separate .
so no option for me.
That's why i am thinking about all these alternatives.
ALSO i have another plan is it going to work for me.
After consuming service i got schemas and orchestration , if changed the orchestration name and schemas target name spaces am i get out of this error.
- Edited by DineshNad Friday, August 5, 2016 12:00 PM
Friday, August 5, 2016 11:50 AM -
Well DineshNad,
Still you should explain it to you Management that using same box as production and pre production is not viable idea. Let them understand the consequence of scenario like this. There can be any number of issues or no issues at all, there can be performance issues there can be latency issues...or they mey not arise at all...but why to take the risk because Production ultimaltely going to bring Money to client. So ask them to avoid it and to get a pre prod environment.
When you say you have the UAT on 2013, does that mean your 2010 architecture has no UAT in it??? If it is there better club pre prod to it.....
Now again answering your second question
:After consuming service i got schemas and orchestration , if changed the orchestration name and schemas target name spaces am i get out of this error??The schemas are generated in accordance to the metadata of the service exposed(if it has metadata enabled)..so it already has the defined namespaces so no changing the target namespace would not work because the service end point would no longer recognize the message from BizTalk as a valid request and you would end up with a suspended message.
I understand your predicament of not having a preprod but seriously don't do these experiments on the production because if any thing happens on Production you will have to solve it later on...why create issues when there are none???
Regards,
Mandar Dharmadhikari
- Proposed as answer by Mandar DharmadhikariModerator Friday, August 5, 2016 2:50 PM
Friday, August 5, 2016 12:27 PMModerator -
For security reason there is no access from prod/preprod to UAT.
Also as u said i am already using a service with different target namespace exposed by client, and iam using the same in different applications of same production server.
So i will ask my client to expose same service with different targetnamespace and i will try.Most probably it will work because i have already same scenario,but not for preprod for production only.here i will send different systems data to to this same service with different target name spaces in different applications.
- Edited by DineshNad Friday, August 5, 2016 1:09 PM
Friday, August 5, 2016 1:02 PM -
I dont have pre production environment , so i have deployed same application in production environment(with changing name and schema target name spaces). so as of now i can manage properly.
So, you cannot do this. You don't have 'PreProd' and 'Prod', what you have to two different apps.
What you're trying do to will cause problems, 100% guaranteed. We are happy to explain this to you management.
You need a completely separate TEST BizTalk Group, even if it's just one VM. You can even run the VM on you desktop which would by much, much better than munging PreProd and Prod.
- Proposed as answer by Pushpendra K Singh Friday, August 5, 2016 2:36 PM
- Marked as answer by Angie Xu Sunday, August 14, 2016 9:11 AM
Friday, August 5, 2016 2:16 PMModerator -
So i will ask my client to expose same service with different targetnamespace and i will try.Most probably it will work because i have already same scenario,but not for preprod for production only.
No, do not do this, it may appear to work but will break down the line.
The problem is not the app or service, the problem is lack of at TEST kit.
Friday, August 5, 2016 2:17 PMModerator -
Hi Johns,
I have a service in uat and i am using in one application,
now i got another requirement need to use the same service in uat itself.
How can i manage
Tuesday, August 9, 2016 5:15 AM -
Hi Dinesh,
You have two ways to do this
1) Add the service schema to your application by consuming the service via add generated items
2) Set the DocumentSpecNames property to the fully qualified name for the service request schema in the xml disassembler component on the receive location of the service in BizTalk admin console if the service which you want to consume is a BizTalk service
If it is a third party service then one possible solution is create a centralized application which holds the schemas for the service and the dll reference of this project into your BizTalk projects in which you want to consume the service. The problem with this approach is that whenever the schema for the service changes and you want to deploy the change then in such cases you will have to undeploy and delete all the dependent applications.
Regards,
Mandar Dharmadhikari
Tuesday, August 9, 2016 7:41 AMModerator -
Hi,dharmadhikari,
As You siad
The problem with this approach is that whenever the schema for the service changes and you want to deploy the change then in such cases you will have to undeploy and delete all the dependent applications.
Whai it means Can u please elobrate.
Am i need to delete the reference that i am using in an another application or,the application that is using the reference.
Because to do changes in service , deleting existing application is meaning less.
Please suggest.
Tuesday, August 9, 2016 10:44 AM -
Hi DineshNad,
When you want to make changes to the schema which is being referenced in other application, you need to deleted the dependent application. That is the way BizTalk works, if you do not want to do that other option you have is add the schema in each of the application and then do your work. Well con in this approach is lets say there are 50 applications which depend on the schema, then if you need to change the schema, then you need to make the change in 50 different applications in place of one.
Both approach have some pros and cons
Common Schema Approach:
Pros: Easy for development
Cons: Deployment Nightmare when number of dependent applications is high(Though this can be automated offcourse)
Individual Schema Approach:
Pro: Easy in deployment
cons: Development has to be done across all the applications ....
Yet again if the service which you are consuming is a BizTalk service then setting the documentSpecNames propertry on the receive location of the service application in the xml Disassembler stage will solve your purpose.
IN case you don't want to go for doing all of this there is a third way,
Using the inline send port i.e. calling a method of C# class library on the send port.(i.e . done using SOAP adapter but yet again...I wont recommend using that)
Regards,
Mandar Dharmadhikari
- Edited by Mandar DharmadhikariModerator Tuesday, August 9, 2016 12:26 PM
Tuesday, August 9, 2016 12:21 PMModerator