HI Everyone,
I have the following scenario where we have a web service (External hosted) and we would like to integrate it with an internal application with Biztalk in the middle. Both of the application supports web service (SOAP). I would like to break it into two parts:
Part 1: Receiving message from Web service (External Hosted) to Biztalk
Part 2: Sending message from Biztalk to internal application.
For this discussion i will be focusing on Part 1 only. So to send the message from external app to Biztalk, i have the WSDL info, i have deployed the Biztalk server and Visual studio.
1) What are my next steps after starting a new biztalk project in VS. If it can be highlighted stpe by step , would be appreciated. Once i have the steps, i will start my lab.
2) Although not for part 1 : but both platform supports xml , so do i still need orchestration?
Thanks
Hi,
Have a look at the following BizTalkgurus blog describing how to call a web service from BizTalk in a messaging-only scenario (even though it's from version 2006, but it's still applicable to version 2009):
http://www.biztalkgurus.com/biztalk_server/biztalk_blogs/b/biztalksyn/archive/2007/02/11/calling-web-service-from-biztalk-2006-in-a-messaging-only-scenario-_2800_aka-content-based-routing_2900_.aspx
Hope this helps. Good luck.
"Google skills are more important than your coding skills."
HI,
Thanks for your reply.
So far i have done the following I created a project in VS where i used file adapter to pass the value in input folder and then some orchestration and generate the output xml file. This was just to understand the biztalk process and flows. Now the next step i want to do is that from my external we service i would like to create records in my internal system via Biztalk. I guess for that i need to publish the biztalk web service. Can you guide me for that. Do i need to publish orchestration or schema.
All i need is when i push the record from external web service , it should come to Biztalk and then biztalk will do some kind of processing and will pass the values to the internal system. If i can see the value in biztalk itself (without putting in the internal system ,it is still fine as its a proof of concept). Scanario is : When the external system creates a record for remote warehouse (e.g. City = Dublin), then send that record to Biztalk. My external web service support outbound SOAP etc. So how do i publish the web service in biztalk to be consumed by my external web service.
Here's an article on the pros and cons of publishing a BizTalk orchestration as a web service vs. publishing BizTalk schema as a web service:
http://lostechies.blogspot.com/2011/03/orchestration-vs-schemas-as-web-service.html
If you choose the route of exposing BizTalk schemas as a service, I would suggest you look into publishing it as a WCF service, and here's an article that walks you through the steps:
http://mscerts.programming4.us/application_server/biztalk%20server%202009%20%20%20exposing%20wcf%20services%20from%20schemas.aspx
Good luck.
Thanks for your reply. I tried to expose the schema as a webservice. It looks fine but when i am trying to invoke the Generate sample SOAP messages from external client web site, it gives me error :
"Unable to load WSDL: org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 10000 ms"
pls help, although from the IE i can see the WSDL.
This could be a proxy server issue on BizTalk SOAP adapter. Navigate to Biz Talk Group -> Platform Settings -> Adapters -> SOAP in the BizTalk Administration Console application, and check the configuration of the BizTalk server host's SOAP adapter (which is what your external web site uses to make the call) to use your company proxy server correctly. Double click on the 'send' SOAP adapter and go to Properties under adapter name.
Thanks for your reply. I checked the settings of the Send SOAP adapter and there is no proxy configuration. In addition i dont have any proxy server in my network and the Biztalk is on the same server where IIS is installed (This server is directly facing the internet (just a lab) and I changed the host header to match my dns name, which resolves fine when i generally open the web service from outside with my public dns)
Also when i deployed the my biztalk application i used WCF-Basichttp for send/receive port rather than SOAP. Actually i just used the example from the web to expose web services as below :
rusteddev.wordpress.com/.../expose-wcf-service-with-biztalk-2010-tutorial
Once done i used my external web application to Generate sample SOAP messages thats when i get the error:
""Unable to load WSDL: org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 10000 ms""
You exposed Biztalk schema as WCF service, so you shouldn't be sending SOAP requests to it. From the error message that you are getting, are you calling the wcf service from a Java application? If so, look at the following article to see how to implement the call in Java code:
romenlaw.blogspot.com/.../consuming-wcf-web-service-using-java.html
SO how can i expose it work as a SOAP service. I thought WCF accepts SOAP requests too. Since i cannot change the way third party application works and its only compliant with SOAP/WSDL. Is there any step by step dcument showing the same thing exposing WCF but in SOAP compliant manner?
Here's some information on how to call a WCF service using SOAP:
http://stackoverflow.com/questions/1477344/call-wcf-using-soap-call
Actually i am bit confused, so what i am trying to achieve is to show kind of proof of concept to integrate 3rd party system with Biztalk. 3rd party system only understand SOAP messages. Biztalk would be a publisher of a web service where 3rd party will generate SOAP message based on a particular scenario. e.g. 3rd party system will have an inventory system where if the item is to be stored in london, the ticket goes to Biztalk and its stored in Biztalk.
How shall i approach this? What do i need to do in Biztalk to achieve this?
You have to decide how you want to expose your BizTalk artifacts, as a WCF service or a web service, and then configure it properly so that your 3rd party system can call it using SOAP. I have pointed you to resources that should give you pretty much all the information you need to do so.
Hi Harry,
I was not able to browse the URL of the BizTalk web service you sent me in a private email, so this leads me to believe that it's a connectivity issue and that you have not properly configured the firewall settings of the server that host your service and opened the required port for outside parties to call it. This is what is causing the particular error that your third party web application is getting when trying to call the web service. Look into that to resolve this issue.
Hope this helps.
Actually i had switched off the server for some troubleshooting. It should be accessible now. So i have tried to invoke message from web service studio and get some messages in my Biztalk admin but i see the following event:
"The published message could not be routed because no subscribers were found. This error occurs if the subscribing orchestration or send port has not been enlisted, or if some of the message properties necessary for subscription evaluation have not been promoted"
Make sure that your orchestration and associated ports are started, and that your Receive Location is enabled in the BizTalk Administration console application.