Vishal Modi

Architect

  Home  |   Contact  |   Syndication    |   Login
  44 Posts | 0 Stories | 88 Comments | 0 Trackbacks

News

Tag Cloud


Archives

Post Categories

Blogs

Links

Tags

Hi All,

Recently in my last client engagement I was involved in an Integration project which had Salesforce.com as one of the Enterprise System.

The company was using SFDC as their CRM system. Our team consisted of 3 members. One Salesforce.com guy, me as BizTalk/.Net guy and a core .Net/SQL guy. Our requirement was embed data flow in both direction i.e. from Salesforce.com and company db say “xxx” and from xxx to Salesforce.com. This was to be done in both real-time and scheduled or batch basis.

 

Initially we did lot of research about SFDC adapter available in market but we just found on company called Two Connect which had developed those adapters. We even spoke with many of the Salesforce.com guys working since years and if they have anytime involved in such a integration project.

Anyways, TwoConnect has pretty decent adapters but few factors due to which we did not use them.

One of them was their cost and was not fitting company budget.

Secondly, when I was in that project MS had released BizTalk 2009 version and the company had BizTalk 2006R2 version and that company may anytime upgrade to 09 version. Then what about the adapter compability with the newer server. May be there would be a patch out and they would tell us to install and all. I was the only BizTalk guy there and me being the contractor, the company did not want to go in such hassle so we did not opt using the TwoConnect  SFDC Adapter.

 

If I go in more details about the TwoConnect SFDC Adapter than it was very straight forward (“looking at their documentation and videos”), similar like you use a SQL Adapter, i.e. Add generated Items and wizard pops up and few configuration parameters, like which methods of the SFDC Apex API you need to call and stuff similar.

 

Now coming back to the architecture we opted: For the first scenario i.e. data coming from Salesforce.com to xxx (company db), we had a WCF Svc sitting in between xxx and BizTalk. So I consumed the WCF Svc and I had my receive and send ports exposed as Web Svc, which later on the Salesforce.com API consumes. There is huge internet cloud sitting in between  and lot of firewalls and IP configuration issues we came up. But eventually resolved.

HLD architecture : Salesforce.com - Apex API - BizTalk - WCF Svc - xxx

(Here Biztalk exposed as WS and Apex API consumes it, initially we had exposed it as a WCF Svc and later on found out that somehow the APEX Api does not like WCF so had to step down on Web Service.)

 

Next is for the data going from xxx to SFDC, this was a challenge as in order to communicate with SFDC Apex API lot of stuff had to be done dynamically. Also we had time and budget constraints. Simplest BizTalk design is having a master orchestration which talks with the API and later on calling other child orchestrations according to function performed i.e. either update, insert, delete, create etc. Here for the first time BizTalk talks with apex API and it responds back with a URL and BizTalk has to dynamically next time send actually data to this URL so some dynamic bindings we did. And for getting the data from xxx, there was a WCF Svc sitting there BizTalk talks with that svc which is pretty much straight forward.

HLD architecture: xxx – WCF Svc – BizTalk – Apex API – Salesforce.com

(Here BizTalk exposed as WCF Svc and the other WCF Svc talks with endpoint)

 

One the most quickest option to complete this integration is having 2 WCF svc’s or WS sitting around BizTalk and BizTalk acting just as a pipeline in between. Here we did not do any transformation nor applied any business rules or any other process on the data. Just a pure messaging solution.

So the architecture will be like: XXX – WCF Svc – BizTalk Server – WCF Svc – Apex API – Salesforce.com .

 

It was a challenge for the data going from xxx to SFDC but was fun though. That was my experience working with Salesforce.com

 

If you anyone has done integration with SFDC than I would love to hear their experiences.

 

 

Thanks,

 

Vishal Mody

 

 

 

 

posted on Friday, June 19, 2009 4:23 PM

Feedback

# re: Experince of BizTalk and SalesForce.com Integration 10/23/2010 8:27 AM Siddharth Sethi
Regarding some good projects..Please let me know if we can work on together on few projects
Siddharth Sethi
CEO
ZesTech
www.zestech.in

# re: Experince of BizTalk and SalesForce.com Integration 11/4/2010 12:17 PM arun
was "xxx" database SQL server?
Thanks

# re: Experince of BizTalk and SalesForce.com Integration 11/4/2010 12:47 PM Vishal Mody
@Arun.

Yes the XXX DB was SQL Server.

# re: Experince of BizTalk and SalesForce.com Integration 11/4/2010 6:06 PM Aaron
since there is already traffic on this post today..

1. what was the relative size of the company DB ?
2. how long did it take your team of 3 developers to deliver the system?
3. We are evaluating tools to coordinate the interaction of data between SFDC and our internal CRM system (SQLServer). I’ve been looking at tools like Cast Iron, Scribe and Boomi. I probably don’t foresee us using BizTalk (we don’t have anyone experienced with that tool), but was interested in opinions on time/expense of integrating with BT vs. these other third-party integration tools.

Thanks for posting your experiences.

# re: Experince of BizTalk and SalesForce.com Integration 11/8/2010 11:41 AM Vishal Mody
@Aaron

1. I dont remember it but pretty average size. Not a huge one though.

2. How long it took... We had finished the design, requirements, development and testing in around 300hrs. It was simple messaging solution.

3. I am not very sure about these third party tools but talking about BizTalk in few lines, BizTalk Server is one of Microsoft’s flagship products for System Integration, message brokering, and service bus designs. It comes packed with a collection of tools and libraries that extend normal middleware Server capabilities by supporting a loosely coupled and dynamic messaging architecture. It functions as middleware server product that provides rapid mediation between services, endpoints, line of business systems and their consumers. Enabling maximum flexibility at run time, BizTalk Server simplifies loosely coupled composition of service endpoints and management of service interactions. There are many components that allows BizTalk Server solutions to be agile in its execution.

And regarding the time and expense, all depends upon how complex is your architecture. Say, if you got pretty simple messaging solution then that should not take much time to integrate with the SFDC API Calls.

-Vishal

# re: Experince of BizTalk and SalesForce.com Integration 11/10/2010 7:51 PM arun
how many transactions were happening in this interface per day? also what was the max no of transactions happening simultaneously?
was there any need for clustering or scaling?

thanks again for the information!


# re: Experince of BizTalk and SalesForce.com Integration 12/14/2011 12:44 AM virendra
Do you have any thoughts to integrate Navision with SFDC?

We want to integrate the navision with SFDC using biztalk. Please provide your inputs on this.

# re: Experince of BizTalk and SalesForce.com Integration 7/12/2012 4:45 PM Jinesh
Hi Vishal,

Your posts has been of great help for the folks who are doing similar kind of work.I just wants to know how did you resolve Ip conflict error.Did you add anything in salesforce to resolve those errors.

I know you are not salesforce guy but if u remember anthing from your experience please share it.









# re: Experince of BizTalk and SalesForce.com Integration 7/13/2012 10:38 AM Vishal Mody
@Jinesh, It was very long time ago and if I remember it correct, i did not had any of those ipconflict error. Can you please elobrate on what kind of issue are you having?

-Vishal

# re: Experince of BizTalk and SalesForce.com Integration 12/5/2013 12:24 PM KanakaRaju
Hi Folks,

Can you guys help me the below error.

I used the code snippet in MSDN as below links

http://msdn.microsoft.com/en-us/library/dn198272(v=bts.80).aspx

Here is the Code sample

http://code.msdn.microsoft.com/Integrating-BizTalk-Server-f31e4286

Please help me to resolve the below error

The adapter failed to transmit message going to send port "SalesforceREST" with URL "https://na15.salesforce.com/services/data/v24.0". It will be retransmitted after the retry interval specified for this Send Port. Details:"System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at https://na15.salesforce.com/services/data/v24.0/query?q=SELECT+AmountThe system cannot find the file specified.c+IdThe system cannot find the file specified.c+NameThe system cannot find the file specified.c(SELECT+QuantityThe system cannot find the file specified.c+ListPriceThe system cannot find the file specified.cPricebookEntry.UnitPriceThe system cannot find the file specified.c+PricebookEntry.Name+FROM+OpportunityLineItems)+FROM+Opportunity+Where+Name+The system cannot find the path specified.d+'Opportunity4+with+Customer+1' that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 96.43.146.88:443
at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
--- End of inner exception stack trace ---

Server stack trace:
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)".

Post A Comment
Title:
Name:
Email:
Comment:
Verification: