Dynamics 365 vs Salesforce.com – Is It Time to Take a Second Look?

Danny serves as Vice President of Marketing at ThreeWill. His primary responsibilities are to make sure that we are building partnerships with the right clients and getting out the message about how we can help clients.

FULL DISCLOSURE : ThreeWill is both a Microsoft Gold Partner and Salesforce Product Development Partner.  We have 2 free products that integrate Salesforce with Office 365 called Trove and Channel.  We currently use Salesforce internally for our CRM, but wondering if it’s time to take a second look at Dynamics 365.

Here’s the backstory and why we’re taking a second look.

The Backstory

I can remember about a dozen or so years ago trying to install Microsoft CRM on a server in our office.  After a couple of frustrating days away from what I should have been focusing on (sales prospecting), I signed up for a 30-day trial of Salesforce.com.  Within a couple of hours I had our accounts, contacts and the current state of our pipeline imported and up to date.  Now I just needed to convince others at ThreeWill that it was worth the cost.

Play this forward seven years or so and coming off and on Salesforce two times (I lost the cost battle twice), I got an interesting email from someone in product management at Salesforce.  I somehow convinced them to have us build a SharePoint Connector and our formal relationship with Salesforce started.  I got set up as a partner and as a part of the benefits received 2 enterprise licenses of Salesforce CRM (stingy compared to Microsoft’s generous allocation of 100 licenses).

The Current Story

I’ve always said that you can take Salesforce from my cold, dead hands…but I’m opening up to the idea of looking at Dynamics 365 again (yes, Tommy Ryan, I can see you rolling your eyes).

Here’s why…

Reason 1 – Dynamics 365 is under Scott Guthrie

We have a long history with Scott Guthrie – one of the first things that Tommy and I did as founders was to write a book on ASP.NET (he and Mark Anders were co-developers of ASP.NET).  Since then, he has proven himself at Microsoft time and time again.  More recently, he has been the leader behind Azure – a product that is improving at a staggering pace.  Now that Dynamics 365 is under his purview, we expect the product to take off…

Reason 2 – The LinkedIn Acquisition

Let’s face it – keeping data in your CRM fresh and clean is a full time job.  Salesforce has data.com.  Microsoft now has LinkedIn.com.  I have no idea how this is going to get integrated – but for the hefty purchase price you know Satya is thinking how to leverage the asset in Dynamics 365 (and Office 365).  When this does happen, I do not want to miss out.  I’m tired of updating Accounts and Contacts, aren’t you?

Reason 3 – AppSource and PowerApps are Microsoft’s Answer for Line of Business Apps

We’ve got a couple of apps in the Office Store – but for the typical vertical or horizontal app that we create for customers, the place for these apps is AppSource.  PowerApps may be in it’s early days, but if Microsoft can continue to invest it could represent the new way that we build apps for customers.

Reason 4 – Office 365 has been a Great Move for Customers (and for Us)

If Dynamics becomes the natural complement to Office 365, we’ll see a huge influx of customers making the move.  Already, with the recent release of Dynamics 365 you see a common user experience and tight integration with Office 365 (beginning with things like Office 365 Groups).

Reason 5 – Project Service Automation (PSA)

This reason is more specific to our type of business (professional services).  Dynamics 365 comes with a PSA solution built in.  We currently rely on a Sass solution called Autotask and there will be no love lost if we could consolidate.

Reason 6 – Everyone on the Same Page

There is a loss of data in the customer lifecycle for us right now.  We have a handful of people on Salesforce (primarily due to cost, but even if we did have licenses the preference from delivery folks is to stay out of Salesforce).  Once an Opportunity closes and turns into a project there is context and history that is lost (including things like sales notes, contact information, etc).  Giving everyone access to pertinent information from Marketing and Sales is key to keeping customers happy.

Reason 7 – Being a Good Microsoft Partner

Even if we won’t be helping customers get set up on Dynamics 365 (anytime soon), it would be good for us to use Microsoft’s offering as a long-term partner.  Granted, we’re still going to use Dropbox for certain use cases and GoToMeeting/GoToWebinar for customer meetings and webinars.  Since Microsoft and Salesforce have been playing the friendly competitor game I don’t feel that this is the most important reason, but it doesn’t hurt our relationship.  Anyhow, Microsoft gives us 100 licenses vs the 2 licenses from Salesforce so everyone will be included in the party.

Concerns and Risks

I do have concerns about making the move – here’s a short list of my initial concerns:

  1. Performance – One of my favorite things about Salesforce is the speed.  It looks like Dynamics 365 has made some significant improvements, but I don’t want to wait 8 seconds to open a contact.
  2. AppExchange vs AppSource – Like Apple and the App Store, Salesforce is miles ahead with regards to both the number and quality of apps.  I need to evaluate whether the apps that I need are “good enough.”
  3. Impact of the Migration – I don’t want to impact our economic engine so I’d look to roll this out in phases over the next year or so.
  4. Cost of the Migration – I’m not sure how easy it will be to get up and running on Dynamics 365.  As a small business, I’m afraid this will need to be a do-it-yourself project (for me).

So, What are Your Thoughts?

Leave a comment below and I’ll respond.  And if I do decide to make the move (or do a proof of concept), I’ll be sure to blog my experiences.  Thanks for reading.

read more
Danny RyanDynamics 365 vs Salesforce.com – Is It Time to Take a Second Look?

Integrating Knowledge Based Content Inside of Salesforce

Tim is a Senior Consultant at ThreeWill. He has 15 years of consulting experience designing and developing browser-based solutions using Microsoft technologies. Experience over the last 8 years has focused on the design and implementation of SharePoint Intranets, Extranets and Public Sites.

Danny Ryan:Hello, and welcome to the ThreeWill Podcast. This is your host, Danny Ryan, and I have Tim here with me today, Tim Coalson. How are you doing, Tim Coalson?


Tim Coalson:I’m doing well, doing well.


Danny Ryan:Excellent. Good to see you.


Tim Coalson:Thank you. Good to be here.


Danny Ryan:Thanks. We’ll get our little quarterly get-together here.


Tim Coalson:Yes.


Danny Ryan:You’ve been busy. You’ve been very busy lately.


Tim Coalson:Yeah, we’ve been doing some integration of a support site with Salesforce. Our first integration was with cases: Salesforce has case objects that employees for this particular company use to manage cases on the backend; and then we display those through a support site, through a public support site, so that customers can log in and see the status of any of their ongoing cases they have going on or view a closed case to understand what the resolution was.


Danny Ryan:Nice.


Tim Coalson:For this integration, we are integrating with the knowledge base content inside of Salesforce; so basically on the Salesforce side, they customize the knowledge base to have a particular version of that knowledge base that’s specific for this company that has various attributes that this company cared about. Then on the support site, we are consuming that content.


Danny Ryan:Okay.


Tim Coalson:What was interesting is, normally we hook into an index, like with a product like Solr that indexes content, and we interface with that index, while with Salesforce they don’t really open up, give you immediate access to that index, so all of our search capability, to be able to search knowledge base content … A customer logs in, they have questions around a certain product, they can either type in a keyword search, or they can specify, click on a product, and we’ll go pull content from knowledge base based upon that product. Our integration with Salesforce in this case … In our earlier integration, we went through an enterprise service bus. In this case, we’re actually going directly against Salesforce using their APIs.


Danny Ryan:Very nice.


Tim Coalson:For search capability, you use a language called SOSL, S-O-S-L, versus another language inside of, query language inside of Salesforce is SOQL, which is S-O-Q-L, so query language, so this is a search language. It has a little bit different syntax, but it seems to be, so far, very powerful, so it’s just interesting learning all the ins and outs of, “How do I get the most out of the Salesforce search through a REST interface?”


Danny Ryan:Let me get this straight. What are you using, again? What’s the front-end technologies?


Tim Coalson:The front end is a .NET technology.


Danny Ryan:Okay, and then, so you’re using that for the UI and all that good stuff.


Tim Coalson:Right, so we’re using .NET and all of the modern plugins too: .NET, and CSS, Bootstrap, and other things to provide …


Danny Ryan:It’s a responsive site that …


Tim Coalson:Provides some of the responsive, and also some other plugins to provide some other features on the site, like breaking news, scrollable-type content, things like that.


Danny Ryan:Nice.


Tim Coalson:Then …


Danny Ryan:Then-


Tim Coalson:Yeah, so in this case, from the .NET side, we’re making REST calls into the … In this case, it’s actually a custom REST interface that we created, because not only did we want to get results, but we also wanted to have facet values; so certain values like product names, types of forms, other things that are proprietary or specific to this industry, we wanted to be able … Customers to be able to drill into their search results based upon these different facets. Not only is this service retrieving the content using the SOSL language, so we’re actually building this SOSL query on the fly based upon whatever text they input or whatever products or other facets they select, we’re building this SOSL query on the fly, we get back the results. Then, part of the result set, we actually do counts of the content so we can provide various facet values on the left that will allow them to further drill into this content.


Danny Ryan:Very nice. Very nice. Then you were mentioning, with the search that they, who is, what’s indexing that content … Is that something that you’re using from Salesforce, as far as the search, or is the search something that you’ve built, or what is it?


Tim Coalson:No, the search is, it’s part of the Salesforce cloud platform. Now, what I’ve been told is, behind the scenes, Salesforce also uses Solr.


Danny Ryan:Okay.


Tim Coalson:I don’t know if that’s true or not, and for us, it really doesn’t matter, because we’re accessing all the content through the API, through the SOSL language, so …


Danny Ryan:Solr is this, is like an open source search engine, or something along the lines, something like that?


Tim Coalson:Yeah, it’s … I don’t know if it’s open source, I think it’s maybe a …


Danny Ryan:It’s a popular search engine, yeah.


Tim Coalson:Right, it’s a pretty popular one. It was one that this, in fact, this customer was already using to crawl their content. One of the challenges with our search results is we really have two sources of search content, or knowledge base content. We actually have help files which are still indexed by Solr, and then we have Salesforce content, and because they’re kind of like two separate engines, search engines, there’s really no common factor between the two result sets to be able to merge those in any kind of meaningful way. Right now, we’re just alternating our responses between knowledge base content and help content until one or the other runs out, but …


Danny Ryan:Okay.


Tim Coalson:In the future, as we learn more, we may find there’s a better way to integrate the two results, but for now, we’re just kind of interweaving those together.


Danny Ryan:Got you, got you. This is … This is, you’re working on an upcoming release of the site, I’d imagine? Something in the next couple of months or so, or …


Tim Coalson:Yeah, we’ve got different … This, we’ve actually gone live with, and now we’re making some changes as we’ve learned more and seen customers interact with it. We’re making further refinements to the knowledge base search, so that’s kind of what we’re working on now. We’ve actually got some future releases where we’ll be integrating with some other backend systems, and this time, we’ll probably be going through the enterprise service bus to actually retrieve customer, or sales representative information; so when a customer wants to identify, “Who do I talk to, to get further information about a certain product,” this will be a new system that will … A new functionality that we’ll add that will allow the customer to go through a wizard, and if they already have an account, they can specify their account number, and we’ll pull the appropriate information.


Otherwise, we’ll take them through a series of questions that will help identify what particular type of company they are, how big their company is, where are they located. Using all that criteria, we’ll make a call to this enterprise service bus which will reach out to several backend systems and determine, based on that information, “Who is this person’s sales representative.” Then we’ll give the customer an option: They can either call the sales rep based upon the information returned, or we’ll allow them to click a button and enter in some minimal information and actually have the sales representative contact them. From that perspective, we’ll be creating a lead inside of Salesforce, or just some further integration with Salesforce.


Danny Ryan:Is there any online chat or anything like that that’s for real time?


Tim Coalson:They do have online chat. We haven’t worked on that piece out, that was a piece that already existed …


Danny Ryan:Okay.


Tim Coalson:… so I’m not really familiar, too much, with what technologies or what company they’re using for them, but they do have that capability.


Danny Ryan:After these, integrating with a knowledge base, and, what, is there something … Is that, sort of, the end of the next version, and moving on to new things after that, or what is that?


Tim Coalson:Yeah, we’ve got some other things coming up. We’re going to enhance the customer’s ability to make various types of payments to their account, so we’ll give them more flexible payment arrangements.


Danny Ryan:Nice.


Tim Coalson:That’s coming up in a future release as well, so … Just trying to give the customer as much capability as they can online. First of all, it helps the customer. Most people don’t want to have to call a company and deal with a person if they can do it online, so that’s … Excuse me, one advantage.


Danny Ryan:Self-service is always good.


Tim Coalson:Exactly. Yeah, and for the company, obviously. Fewer calls means fewer people necessary to support it, which is also a benefit for the company, so …


Danny Ryan:Absolutely. Well, cool, I appreciate you doing this little update. It sounds like you’re a little hungry, your tummy’s been growling over this whole podcast. People were listening …


Tim Coalson:I think that’s the thunder outside, so …


Danny Ryan:Oh, yeah, that … That’s what it is. If you’re listening in, sorry, we had a little action going on outside with a thunderstorm, so you probably heard that every once in a while. It’s not Tim’s stomach. It’s not my stomach, but, yeah, a little rain coming down in Georgia today. Well, I appreciate you doing this. It sounds like you’re doing great work on the project. Thanks for all your hard work there.


Tim Coalson:All right. Thank you, Danny.


Danny Ryan:Awesome. Thanks so much, Tim. Thanks, everybody, for listening. Take care. Bye bye.


read more
Tim CoalsonIntegrating Knowledge Based Content Inside of Salesforce

A Runscope Primer – Tools of the Trade

Eric Bowden has over 19 years of software development experience around enterprise and departmental business productivity applications.


Runscope has recently become a must have tool for me when building integrations with cloud applications such as Office 365 and Salesforce. This past week I used Runscope to debug an issue with a remote event receiver I’d written for Project Online. This is such an awesome and easy to use tool, I wanted to be sure all the cloud devs are aware and know how to make use of it.


I built a WCF service which serves as the endpoint for an event receiver in Project Online, hosted in Office 365. The WCF service is hosted on Windows server, on a dev box virtual machine in Azure. In testing, it appeared as though Project Online was not calling my WCF service. Since this was a dev environment, I attached the Visual Studio debugger and enabled WCF logging. Neither of these options indicated that the call from Project Online was making it through to my WCF service.

In an ideal world, I could view the ULS log in Project Online for easy access to errors generated as a result of the failed event receiver, but this is not an ideal word; it’s the multi-tenant cloud world of Office 365.


Runscope serves as a middle tier proxy which can be inserted between Project Online in Office 365 and my WCF service hosted in Azure. Once configured, Runscope will record all requests from Project Online to my WCF service. I can view the results, edit, and replay requests! Sounds complicated, but it’s not.


Navigate to www.runscope.com and sign up for an account. Once you are logged, create a new bucket and name it anything you like.

Click the link for Traffic once the bucket has been created.

The start page for the new bucket includes a form you can use to create the runscope url. In the example below, I entered the url path to my WCF service at https://cloud-app.threewill.com. Just below, Runscope provides an endpoint which can be used to log requests.

In this example, I originally configured my Project Online event receiver to call into the WCF service at https://cloud-app.threewill.com/projectonline/StatusingEventReceiver.svc. Using Runscope, I configured Project Online to call the event receiver at https://cloud–app-threewill-com-mv9k3q9xyz3v.runscope.net/projectonline/StatusingEventReceiver.svc. As a quick test, simply place the url in your browser. You should see an entry appear in the runscope log.

Runscope Logging

Watch as Runscope logs server to server activity, errors and more.

From the traffic log (shown above) you can view the full detail of the request and response. And, you can easily edit and resend any request!

As for my issue, Runscope revealed that the request was making it to my server, and the server replied with a 404. This helped by confirming that Project Online was attempting to make the call and basic connectivity between Project Online and my WCF service was successful. The 404 reply led me to find that my WCF bindings were incorrect for a service hosted over SSL.


Runscope is a must have in my toolbox for cloud service integrations such those hosted in Office 365 and Salesforce. Of course, there are other ways to debug cloud integration issues such as the one I encountered, but this is so easy, I recommend it as your first step.

Do you have any favorite tools for debugging cloud app dev projects? Have you used other features in Runscope that are a must have for app dev in the cloud? I’d love to discuss in the comments section below.

read more
Eric BowdenA Runscope Primer – Tools of the Trade

The Satya Nadella Strategy – Why It Is Working

Danny serves as Vice President of Marketing at ThreeWill. His primary responsibilities are to make sure that we are building partnerships with the right clients and getting out the message about how we can help clients.

I’m a fan of Satya Nadella – he had my vote as CEO early on and I couldn’t be happier with what he has done so far as CEO of Microsoft.  Last week was Microsoft’s most exciting event in years (or maybe ever) and a chance to see how his strategy is manifesting itself in reality. Internally at ThreeWill, we started talking on Yammer about how much we wanted the Microsoft Book as our next standard for our laptops.  This got me thinking about what has happened since the “Sayta Nadella strategy” took over at Microsoft and why his strategy is working.

Act Win/Win

Satya Nadella believes in win/win. Rather than compete, he sees working with some of the traditional competitors. This is probably most evident with the relationship between Microsoft and Salesforce. A couple of weeks ago, Satya was a Keynote speaker at Dreamforce – if you told me that the CEO of Microsoft would be keynoting at Dreamforce five years ago I would have called you crazy. Now, the two companies are cranking out integrations (we helped with Chatter for SharePoint and have built other integrations like Trove and Channel).  I’d still like Microsoft to acquire Salesforce – maybe today’s news about Dell and EMC will help with that cause.

The Microsoft Experience

Part of the reason why I was attracted to the Apple ecosystem is because of how the products worked together. My first Apple device was an iPhone 3G and I’ve stuck with Apple loyally with the 4S and 5S upgrades. Through the years I started using an iPad for a larger screen and finally a MacBook Air because of my positive experience with other Apple devices and the integration between the products. I could see the reverse happening – getting a Microsoft Book later this year (covering both my laptop and table use cases), maybe trying out the Microsoft Band and eventually going with a Microsoft Phone when my contract expires. I’m not saying I’m going to do this – just that the thought has entered my mind.

What Customers Want

Customers want choice. Customers want the big three (Apple, Google and Microsoft) to compete and to work together. With Microsoft building compelling apps on iOS and Android (Satya’s Apps Everywhere strategy), customers are beginning to expect app availability regardless of mobile operating system. Customers want Apple to open up more (imagine Cortana on iOS) and Google to build for Microsoft (imagine native Google apps on Windows 10).  In the end, the competition from the big three will benefit everyone.

Net Promoter Score

One of the key takeaways from watching this intimate video of Satya’s vision for Microsoft is that he is focusing on metrics like Net Promoter Score more than other traditional metrics. The Net Promoter Score, itself, is calculated based on responses to a single question: How likely is it that you would recommend our company/product/service to a friend or colleague?  This reflects his long term focus on the customer experience and will result in higher loyalty and ultimately higher revenues.

Smart Acquisitions

Microsoft purchased one of my favorite apps – Wunderlist Satya mentions it’s his favorite app as well in the video above. Many of these acquisitions have been of apps that worked just as well on iOS and Android. I’m sure this has helped as many of the traditional Microsoft apps have made their appearances on other platforms. Like the purchase of Yammer and the side benefit from learning how to put out software on quicker cycles, Microsoft has benefited from purchasing recent companies and has built an impressive quantity and quality of apps for the big mobile platforms.

The Culture of Microsoft is Improving

Perhaps the most difficult thing to do inside a company is improve the culture. From an outsider looking in,things are looking up for Microsoft. I’m seeing Facebook posts from colleagues at Microsoft about how proud they are to work at Microsoft. I’m listening to podcasts about Microsoft and rather than being apologetic about Microsoft, you get a sense that Microsoft has their mojo back.

What do you think about the Satya Nadella strategy? Why do you think it is (or isn’t) working?

read more
Danny RyanThe Satya Nadella Strategy – Why It Is Working

How to Add Aurelia to Visualforce Pages in Force.com

Eric Bowden has over 19 years of software development experience around enterprise and departmental business productivity applications.

Aurelia is a next gen JavaScript client framework for mobile, desktop and web that leverages simple conventions to empower your creativity (http://aurelio.io).

From my view, I see it as serving a similar purpose as AngularJS, with several key benefits:

  • No more IIFE‘s!
  • ECMAScript 2016
  • jspm package manager
  • Configuration by convention means less setup code

In all fairness, three of the four benefits I’ve listed above are provided by Javascript libraries and code that is outside of Aurelia. But, I’m lumping all of these benefits together under the Aurelia umbrella because they work well together, and I’m working with them because of Aurelia.

I recently got my feet wet with Aurelia thanks to Building Applications with Aurelia from Scott Allen on pluralsight. As usual, Scott does an awesome job of making this topic easy to learn and understand. Though Scott’s examples are created in Visual Studio, he explains that they could be accomplished in any web browser.

Naturally, I wanted to bring Aurelia to Salesforce! However, there are a few twists and turns, and I’ve listed the steps below. You can skip to the bottom and download the source code, if you’re looking to dive into this.

Setup the Developer Environment

Create and configure the project

Create a simple project which includes a Visualforce page and a single static resource. I named my Visualforce page AureliaAppPage and my static resource is named AppJS. Also, create a folder in the project titled “assets.” When finished, your project should appear as shown below.

Before going any further, confirm that you can edit and render your new Visualforce page and that the static resource can be edited and saved to Salesforce, without any errors.

Configure packages

Open a command prompt and navigate to the assets folder that you created as part of the project above and execute the following commands:

  • npm install jspm –g
  • npm install –global gulp
  • npm install –save-dev gulp
    • You can ignore any warning which appear about the Description, README and repository being empty.
  • jspm init
    • Accept the defaults, except for those listed below
    • Which ES6 transpiler would you to like to use, Traceur or Babel? Babel
  • jspm install aurelia-framework
  • jspm install aurelia-bootstrapper
  • jspm install aurelia-http-client
  • jspm install bootstrap

Project Configuration and Source files

Retrieve the following files from the attached zip and place these into the assets folder:

  • config.js
  • gulpfiles.js
  • The “js” folder

Your project should now look like the screen snap below


You can copy the code for the Visualforce page from the attached zip, and I’ve included it below so that I can highlight a few elements.

Notice the following:

  • The baseUrl is set dynamically to the URL of the static resource which will hold our javascript files.
  • We must pass the Salesforce session Id to the our application since it will be necessary when making API calls back into Salesforce.
<apex:page docType="html-5.0" showHeader="false" sidebar="false" applyBodyTag="false" standardStylesheets="false">



<link rel="stylesheet" type="text/css" href="{!URLFOR($Resource.AppJS, 'jspm_packages/github/twbs/[email protected]/css/bootstrap.css')}"></link>

<link rel="stylesheet" type="text/css" href="{!URLFOR($Resource.AppJS, 'styles/styles.css')}"></link>


.container {

margin-left: 10px;

margin-right: auto;




<body aurelia-app="js/app/main" >

<script src="{!URLFOR($Resource.AppJS, 'jspm_packages/system.js')}" ></script>

<script src="{!URLFOR($Resource.AppJS,'config.js')}" ></script>



"baseURL": "{!URLFOR($Resource.AppJS)}",

"apiSessionId": "{!$Api.Session_Id}"







Save to Salesforce

Run the following command from command prompt: gulp build

The gulp build command will zip all of the assets into APPJS.resource. The Force.com IDE will automatically upload assets to Salesforce, but it needs a kick in order to upload the static resource file which is created as a result of the gulp build. To get it going, simply right click on APPJS.resource. After doing so, you should notice that the file is uploaded to Salesforce.

Run the app

You should now be able to navigate to login to Salesforce and navigate to https://yourserver/apex/aureliaapppage to view a listing of Opportunities, using Aurelia.

Download the attached zip file to see the full source code and compare it with your results.

Are you building with Aurelia and Salesforce?

I’d love to hear about it. Leave me a comment below.

read more
Eric BowdenHow to Add Aurelia to Visualforce Pages in Force.com

New Trove Installation Video

Danny serves as Vice President of Marketing at ThreeWill. His primary responsibilities are to make sure that we are building partnerships with the right clients and getting out the message about how we can help clients.

Robert:            Hello, my name is Robert Bowden and here with me today we have Eric Bowden, who will be helping us with the installation of Trove. Eric, tell us a little bit about the app and where to get it.

Eric:                 Sure. Trove is best described as a means for replacing file attachments, what are file attachments, in Salesforce today. A common use case is that users are accustomed today to attaching documents to Accounts and Opportunities in Salesforce but what they’d rather do is store these documents in SharePoint. What Trove does is allows users from the Salesforce UI, from the Salesforce side of things, to both upload documents into SharePoint and also to be able to easily access those documents. They can just click on a link to the documents which are related to an account or an opportunity in Salesforce and those will be opened in Office Web Apps if they’re supported Office document types, or they’ll be downloaded directly from the Salesforce UI. It’s a great value add. It’s a great way to combine SharePoint and Office 365 with Salesforce.

Robert:            Okay, great. Where do we get this app?

Eric:                 Trove is available on the AppExchange. Trove is a free application today. To find it you can simply go to the AppExchange or appexchange.salesforce.com and I can search for Trove and then you’ll see a listing appears for Trove. If I click the “More” link there, it’ll open up the listing for Trove. You can find out a little bit more about Trove right here without needing to install it. There are screen snaps provided and also a demo video that’ll give you an idea of what’s available in Trove.

Robert:            Okay, great. You just hit the “Get It Now,” and it’ll take care of itself or do you have to help set it up?

Eric:                 Yep. There are installation steps required, so let me show you … If I go to the ThreeWill site … I can go to ThreeWill.com/trove and there’s a landing page for Trove which includes a link to view it in the AppExchange. There’s also an Office store component. I’ll be going through that and what we want now is to give you an idea of what the installation steps look like. If I click the installation guide, you can see they’re separated out into parts. There’s installing it from the AppExchange. You need to be sure that you have a site collection in SharePoint in which to store these documents. There is an Office store component and then there are configuration settings that are accomplished in Salesforce. Then the last step is, there is a Visualforce page component which needs to be added to the layouts for Opportunities and Accounts.

Robert:            Okay, great.

Eric:                 Let me step us through actually performing that installation in my environment. I’m going to do that … I found the application now and I’m going to start by choosing “Get It Now” from the AppExchange and it’s going to ask me do I have an account already or not, and I do. I’m going to choose, “Login to the AppExchange.” Next it’s going to ask me would I like to install it in Production or in a Sandbox. I’m going to install mine in my Production environment. My environment, by the way, is a developer edition environment of Salesforce which corresponds to Production environments of Salesforce. I’ll accept the Terms and Conditions and I’ll choose,”Confirm and Install.” It’s going to ask me to login again. I’ll just key in my credentials. It’ll ask me who would I like to make this application available for. I’m going to choose “All Users” and then select “Install.”

While that’s installing I’m going to go back over into SharePoint, because as I mentioned earlier, one of the requirements is that you need to have a site or site collection available to store your documents in SharePoint and I’ve already created a site collection called Sales Docs. The person performing this installation needs to be a site collection administrator of the site on which it’s going to be installed, and I am. The next thing that you’re going to want to do, once you have your site or site collection available, is you’re going to need to install Trove from the Office store. To do that I’m going to click the gear and choose “Add an App” and I’m going to choose SharePoint Store on the left-hand side. Then I’m going to choose, just key in, Trove so that I can find Trove in the Office store.

Now, you’ll notice there’s two versions of Trove. There’s a version of Trove and then another version of Trove that has Sandbox in parentheses. As implied, the one without Sandbox is for Production environments. I’m going to choose that and it’s a free application. Now I’m just going to choose “Add it,” and it presents me with the confirmation dialogue asking me if I trust Trove for these permission requirements, and I do. Now it’s installing Trove into my SharePoint environment. We’re just going to let that continue to install, it normally only takes just a few minutes, while we go back over to Salesforce and perform the configuration in Salesforce.

Next step over in Salesforce is I’m going to go to the Setup Menu and I need to configure the Remote Site Settings. I choose “Remote Site Settings,” choose ” New Remote Site,” and here I’m going to need to put in the URL of the site in SharePoint where I’m going to host these documents.

Robert:            Okay.

Eric:                 We’ll give it a name and then specify the URL. You can accept the rest of the defaults and just choose “Save.” All this is doing is this is giving Trove permissions to make API calls, web services calls, out to this site. We’ll choose “Save.” Next step is we’re going to need to go to our Installed Packages. We’re going to find Trove again and click “Configure” and here it’s asking me a number of questions. The first one is the URL for the site for the server which is going to host my Trove documents: ebowden.sharepoint.com, in my example. All the tool tips here will provide guidance for what’s expected here. For example, you can see https:blackblackcontoso.sharepoint.com is the example here.

Next is the SharePoint server relative site URL, and in my case it’s /sites/trove. Then it’s going to ask me the Document Library in which I want to store Trove documents and if the Document Library does not exist, Trove will create it for you. Now we’re finished with this page. We can “Accept” the defaults for the rest of the settings. I’m going to choose “Save” and “Verify Connection.” Oh, I did not name my … My site collection is not named Trove, it’s named Sales Docs. Let me go back and make sure that that’s the case. Yeah, it’s named Sales Docs, not Trove. There we go. We’re just keeping it real here.

Now that I have /sites/salesdocs for my SharePoint server relative site URL, the Document Library, we’re going to leave the default; we can change this to any name that we’d like. If the Document Library does not already exist, it will be created. Then just choose “Save” and “Verify Connection.” It’ll ask me, “Do you trust Trove?” A similar trust dialogue as we saw previously. I’m going to say, “Trust it.” It’ll return us back to Salesforce and it’ll say, “The validation has been successful.” Click “Next.”

Next question is it’s asking me … Here’s the one where Trove will create the Document Library, if I choose, or I can configure the Document Library on my own. I recommend that you let Trove configure the Document Library for you. I’m going to just choose, “Finish” and now it has completed it’s configuration. The configuration of Trove is really complete at this point. What remains is for us to add Trove onto the layout pages for Opportunities and Accounts. To do that I’m going to go open an Opportunity. I’ll choose, “Edit Page Layout” and I’m going to choose Visualforce pages. As a first step, I’m going to add in a new section and I’ll put it just below the Opportunity information. I’m going to call it, “Files,” and we’ll choose the One Column layout, and then we’ll drag in our Trove for Opportunity’s Visualforce page. I want to configure that, and I want to make it a little bit higher, not two hundred pixels but three hundred pixels, and I want to tell it to “Show scroll bars.” Choose,”Save.”

Okay, now that I have the layout page for Opportunities configured with the Visualforce page for Trove, next step is simply to test it. I’m going to choose a file. Click “choose file,” and it will open me to a folder where I can browse files that are locally on my PC. I have a document here available for this test and I’m just going to choose “Save.” It uploads that into SharePoint online and then displays that document in a listing of documents which are associated with that Opportunity. Now if I select the link for that document, it’ll open the document in Word Online so I can view it right away and then I can also edit it directly in this view. Further, I can choose “View All Files in SharePoint” and it’ll open up the folder in SharePoint online which is hosting all of the documents for this particular Opportunity.

Next is we’ll need to go to Accounts, and we’ll perform the same activity. I’ll just open any Account and edit the layout and I’m going to scroll down to Visualforce Pages, add in a section, and same as I did for Opportunities, and I’ll call it “Files” and one column, and now I’ll drag in Trove for Accounts. Give it a height of three hundred pixels and “Show scroll bars,” the same as I did for Opportunities. Now the Visualforce page is now appearing for Trove and same as I did for Opportunities, I’m going to test it and just upload another test document. That document appears and I’ll just open it just to confirm that it’s appearing in Word Online, and it is. Then similar, I can choose “View All Files in SharePoint.”

That completes the installation. We installed it … Just to recap what we did, initially we installed Trove from the AppExchange. Next we confirmed that we have a site collection in which to store these documents and then we installed Trove from the Office store. There’s two applications: there’s one in the AppExchange and one in the Office store. We installed it from the Office store into our site in SharePoint, and then we’re returned back to Salesforce and we chose to configure the Trove package that had been installed in Salesforce. Then last, we added Trove onto the layout pages for Accounts and Opportunities.

Robert:            Okay, great. Does that complete the installation? That’s all you need to do?

Eric:                 Yup. That’s all you need to do. Easy steps. Now one caveat to mention is that if you do install Trove into a Sandbox environment, don’t forget that there’s a different application. It’s the Trove open parentheses sandbox that you’ll want to install from the Office store but you should be all set. If you have any questions contact me at ThreeWill.com and we’re always happy to help.

Robert:            All right. Well, thank you very much. That concludes the installation of Trove. Thank you.

Eric:                 Thank you.

read more
Danny RyanNew Trove Installation Video

What’s the Difference between Trove and Files Connect?

Danny serves as Vice President of Marketing at ThreeWill. His primary responsibilities are to make sure that we are building partnerships with the right clients and getting out the message about how we can help clients.

At first blush, our new app called Trove sounds like it shares a lot of the same features as an offering from Salesforce called Files Connect. But, as you peel the onion you find out that there are many differences.

What is Files Connect?

Files Connect is an offering from Salesforce that lets user’s “access, share and search external data from systems like Google Drive or SharePoint.” It provides a lot of plumbing or infrastructure for connecting Salesforce to SharePoint.

What is Trove?

Trove is an app from ThreeWill that provides Office 365 integration for storing files in Salesforce for Opportunities and Accounts. You can upload and edit files in Office 365 directly from Salesforce.

It’s Not Files Connect vs Trove

We expect to build solutions with both Files Connect and Trove. One of the points made in the announcement for Files Connect is that it’s designed for building customized solutions. The purpose of this post is help you decide when one option is more appropriate for your situation – there will be pros and cons for each.

Also, as we compare Files Connect in this discussion, we are focusing on using Files Connect through a Related List to map files to an Opportunity or Account.

Let’s Dive Into Differences

With Files Connect, there are a few key points:

  1. There is a well-documented setup process for getting Files Connect set up – https://help.salesforce.com/HTViewHelpDoc?id=admin_files_connect_overview.htm&language=en_US .
  2. It uses metadata for associating files to objects in Salesforce (example – using the Opportunity ID in Salesforce to associate to a field in SharePoint that stores the Opportunity ID).
  3. The search index is used for showing results in Salesforce when displayed through a related list. That means that what you see in Salesforce will rely on when files are indexed. For example, if you upload a file (with the correct metadata) you won’t see the file in Salesforce for at least a couple of minutes or up to a couple of hours.
  4. Can be used with all custom and standard objects, Chatter, SharePoint 2010 on premise, and Salesforce 1.

With Trove, here are the key points:

  1. For Trove, there are actually two apps that you need to install. One from the Salesforce AppExchange and one from the Office Store. The setup process is wizard driven, and it even creates the document library for storing the documents in Office 365.
  2. It uses a folder structure for associating files to objects in Salesforce (new version uses the convention of /Account Name/Opportunity Name to make it easy to work with files in Office 365).
  3. It does not use the search index, but rather shows you the latest files when the page is rendered.
  4. You can upload, one-click to edit and delete files in Salesforce.
  5. Trove can also use metadata when uploading files to Office 365, and this metadata can be used by Files Connect.

A Visual Would Be Helpful

Here’s a table with the key differences/similarities.

Trove Files Connect
Wizard Driven Install Process YesNo
View Files for Accounts & Opportunities in SalesforceYesYes
Upload and Delete Files for an Opportunity or Account Directly from SalesforceYesNo
One-click Open of Files in Word, PowerPoint or Excel Online for Convenient EditingYesNo
One-click Access in Salesforce to the Office 365 Folder for the Account/OpportunityYesNo
Updates in Office 365 are Available Immediately in SalesforceYesNo
Share Files with Chatter NoYes
Works with Office 365YesYes
Works with SharePoint 2010 On PremiseNoYes
Works with Salesforce 1NoYes

Pros of Files Connect

  • Offering from Salesforce and will have improvements in the future
  • If you are using Enterprise Version or higher, you are licensed to use Files Connect
  • Files Connect can be extended to add required functionality
  • Can be used with all custom and standard objects, Chatter, SharePoint 2010 on premise, and Salesforce 1

Pros of Trove

  • You can stay in Salesforce to upload, delete and one-click edit of files where they open in Word, PowerPoint or Excel online
  • Trove aims to be a solution that uses the best from Salesforce and from Office 365
  • Consistent experience because updates in Office 365 are available immediately in Salesforce (that is, you won’t have to wait on indexing of files)
  • Works with Files Connect

Let’s Discuss Security

Trove uses a service account for document uploads, deletes, and retrieving the list of documents from SharePoint. Users navigate directly to SharePoint, using their own credentials when viewing and editing documents in SharePoint online. Files Connect users either a service account or user account for retrieving the list of documents from SharePoint.

Are You Trying to Connect Salesforce to Office 365?

Let’s talk about what you are trying to do to make sure you don’t make missteps. We can demo both Files Connect and Trove in a short 30 minute meeting.


read more
Danny RyanWhat’s the Difference between Trove and Files Connect?

Two Steps Forward, One Step Back – Our Latest Update to Trove (Version 1.3.2)

Danny serves as Vice President of Marketing at ThreeWill. His primary responsibilities are to make sure that we are building partnerships with the right clients and getting out the message about how we can help clients.

Introducing Trove

A couple of months ago, we announced a new integration between Salesforce and Office 365 called Trove. We’ve just released our latest update to Trove, and it feels a bit like two steps forward, one step back.

What is Trove?

Trove provides Office 365 integration for storing files in Salesforce for Opportunities and Accounts.

  • Upload and edit files in Office 365 directly from Salesforce
  • Files open in Word, PowerPoint or Excel online for convenient editing
  • No more downloading files, editing and uploading

What’s Been Updated?

We needed to change how we saved files to Office 365 based on a new issue that we found through testing. We’re working closely with Microsoft to address this. In the meantime, we have a limitation of saving files up to 512K in size. In the update to Trove, we found that the work around for this issue is to initially add a file less than 512K to the Account/Opportunity and then add larger files directly through the Office 365 interface.

What Are the Limitations?

This version of Trove limits the file size upload to 512K due to a reproducible issue with opening files in Office Web Apps. We will address this issue as soon as the underlying issue is addressed by Microsoft. The user interface for Trove does not include paging or scrolling. You will need to be sure that scrolling is enabled when you add the Visualforce page for Trove to the layout page for Accounts and Opportunities. See the installation guide for more details.

read more
Danny RyanTwo Steps Forward, One Step Back – Our Latest Update to Trove (Version 1.3.2)

Why Did Microsoft Reject My App? Lessons Learned Publishing to the Office App Store

Eric Bowden has over 19 years of software development experience around enterprise and departmental business productivity applications.

Over the past couple weeks, I’ve been working with Danny Ryan to get an application published into the Office App Store (read more about it in Danny’s recent blog post). I’d like to share with you a few tips and some of the reasons why our app was rejected on the first pass.

Tips for Publishing to the Office App Store

  1. Although it is not required for all apps, I recommend that you create an environment which the engineers at Microsoft can use to test/evaluate your application. Because our application, Trove, is a Salesforce to Office 365 connector and requires a Salesforce account, Microsoft requested an environment in which to test. You can speed things up by creating the environment and providing login credentials as part of the initial submission, just in case Microsoft needs it for testing.
  2. Based on the IP address, it appears that the testers are working from Ireland and are thus 5 hours ahead of me in Atlanta. When they had an issue with one of the login accounts I provided, the email came in at 4:30 am Atlanta time. I was fortunate to catch it at 6:30 am, resolve the issue, and they continued testing on that workday. If it’s important to you to speed through the approval, I recommend that you try to watch your email over working hours in Ireland.
  3. Our experience after submitting the application 2x is that testing begins in less than 24 hours. So, if you’re watching emails during odd hours (prior tip), you hopefully won’t need to do so for more than a couple days.

After our first submission, the folks at Microsoft provided a Validation Test Results report. Since our app failed, the report included a helpful listing titled Breakdown of Changes Required. I found the list of issues and requested repairs to be reasonable and clear. You can find the full set of validation policies here.

  • Your app must work according to your description and must not be in an unfinished state: Seems like a reasonable request. Our app threw an exception due to a configuration error and the cause/remedy was not apparent to the engineers testing. We decided to resolve this by providing an environment in which they could test the app.
  • If your app requires a login/password, you must give Microsoft a pre-existing working login for test purposes: This is where the testers came back and requested an environment in which to test. To their credit, the test engineers did create a “trial” Salesforce environment in order to test the app, but they eventually ran into the error above. We resolved this by creating an environment in which they could test.
  • If your app depends on additional services or accounts, this dependency must be clearly called out in your app description: Since our application requires Salesforce, we added this requirement to the description of our application.
  • You must specify language support for your app in your app’s manifest: The testers provided a link which explains the property that must be included in the application manifest to specify the languages that our app supports (http://aka.ms/supportedlocalesblog). Easy.
  • The version number you specify for your app on the Seller Dashboard submission form must exactly match the app version number in the app manifest: We initially submitted the Seller Dashboard submission as version 1.1.1 and the app manifest as Remedied this by updating the Seller Dashboard submission version to read
  • Apps can fail validation for issues related to Apps for Office and SharePoint UX guidelines which impede the customer experience within Office and SharePoint: The link for our app, from the Site Contents page in SharePoint, led to a page from which users could not easily return back to the SharePoint site from which they started. Fairly basic, and we resolved this issue by ensuring that the link for our app leads to a page from which users can easily return.

We applied the repairs, resubmitted the application, and the Microsoft engineers started testing again in less than 24 hours. Hopefully our next blog post will be to announce that Trove is available in the Office store!

Update – here is a link to that blog post – http://threewill.com/the-eagle-has-landed-trove-now-in-the-office-app-store/

How is your experience going with publishing an app in the Office App Store? Need help?

Comment below or contact us if we can assist.

read more
Eric BowdenWhy Did Microsoft Reject My App? Lessons Learned Publishing to the Office App Store

Integrating Office 365 and Salesforce Webinar

Eric Bowden has over 19 years of software development experience around enterprise and departmental business productivity applications.

Danny:                    Hi everybody, this is Danny Ryan from 3Will and I welcome you all to today’s podcast. I have with me Eric Bowden. Eric is a principle consultant and is going to help out today with covering some questions in particular about integrating Salesforce and Office 365.

Just a couple of things before we get started. One is if there’s questions that come up, please feel free to ask your questions at GoToWebinar questions panel. This will be recorded so you’ll get an email next week from me that has a link to the recording. If you want to share this with other colleagues that perhaps couldn’t make it, you should see an email from me on that. What I wanted to cover with regards to content today was to cover a recent blog post that Eric had do on the top 10 things that you should know about integrating Salesforce and Office 365.

I’d like to get started here … First off, welcome Eric.

Eric:                          Thank you Danny.

Danny:                    You bet ya, thank you for joining me for this. I appreciate you writing a blog post, I appreciate that. I know that this is something that you’re really passionate about, both Salesforce and Office 365.

You started the blog post out with some information about Gartner’s application platform as a service and noticed that both Salesforce and Microsoft were the leaders in that. In fact, you put a little link to that as well. They seem to be leaders as far as enterprise application platform as a service. I think I got that right, yeah there we go.

That’s nice to see them putting out solid products there. What we wanted to do in this conversation was maybe just focus in on integration between Salesforce and Office 365. Maybe to get us started off, I know you got sort of a progression of things you want to cover with regards to integration. The first thing you start off with is considering off-the-shelf offerings. Tell me more about that Eric.

Eric:                          Yeah and before that [inaudible 00:02:54] let me introduce a little bit about what that progression looks like. As I go through these top 10, just kind of be listening and thinking about that … We’re going to start off by talking about what others have built in the past. What are products off the shelf that I can use and then we’ll sort of enter another step of complexity where we’re saying “Okay, how can I use the platform capabilities in order to build my own integration.” Then we’ll end up with “What about if I pull out, what are the deep developer skills am I really getting into writing code.” Then I’ll finish off by talking about what are some strategies and things that you need to be thinking about across all of these areas.

To start off with we’re talking about off the shelf offerings. Salesforce and Microsoft both had an app store. On the Salesforce side there’s the app exchange. The AppExchange is a great resource. Many, many, many products to choose from. You’re best place to start is you’re going to appexchange.Salesforce.com and search for Office 365. Execute a search for Office 365 you’ll see a number of options that come right up and these are … Many of the other products you see are free. One product you’ll see is called Trove. Trove is a product that we created, released within the last month. Trove is a product that allows users in Salesforce to save attachments for accounts and opportunities over into SharePoint sites and Office 365. It’s intended to really mirror that experience for attachments. That’s just one example of an app that’s in the AppExchange. The other applications that you’ll see tend to be focused on Outlook and Exchange integrations.

With the AppExchange in Salesforce, there are really a number of easy ways to get started. The very easiest way is that developer environment for Salesforce. Those can be created … Those are free environments that anyone can … You can create your own developer or get started and experiment with apps off the AppExchange or you can install them into production and sandbox orgs.

Danny:                    Great. Go ahead Eric, sorry.

Eric:                          I was just going to … On the Microsoft side, there’s the Office store. You’re going to office.microsoft.com, excuse me, store.office.com I think is what it is. The similar storage you have on the Salesforce side where you can search for Salesforce, in this case, and you’ll see a number of applications that come up. Similar as you saw of the Salesforce side. These tend to be focused on integrations with Outlook.

Danny:                    Great. It also looks like you mentioned some developer tooling like the MuleSoft integration and those types of things as well.

Eric:                          Yeah exactly. Don’t just stay in the App Store but expand out beyond the App Store. There are products that are created for really integrating applications like Salesforce and Office 365 together. They are in the AppExchange. MuleSoft is one of them. Layer2 Connect is another one I’ve seen.

Danny:                    Awesome. The next one you go and cover is the files connect. Tell me more about what is Files Connect.

Eric:                          Sure, so [inaudible 00:06:58] first off we’re looking at products and now we’re kind of step in and see what are the platforms providing for me that are kind of built in. Files Connect is a great place to start. Files Connect, as the name implies, it’s a files integration. The best use for that is I’m in the social tool in Salesforce, which is called Chatter, and from that Chatter experience, I can share files with other users. Sort of bring attention and have conversation around these files; that’s a built in experience, but with Files Connect, I can actually browse documents and document libraries that are in SharePoint. Browsing [inaudible 00:07:42] and sharing them in Chatter into the Salesforce user interface.

There are 2 different modes; there are 2 different ways that Files Connect works.  One is that you can share files as a copy or you can share files, from SharePoint into your Chatter feed, as a reference or just a link. The benefits there, kind of the pros and cons, is that if you share your file as a copy, then there’s a viewer. There are viewers built into Salesforce that will let you view that content right in the Salesforce UI. Kind of the drawbacks are that you’ve now been transitioned control and the permissions controls that you have around that document because you just made a copy, sort of transitioned that over into Salesforce.

Danny:                    We had a nice comment from somebody from Salesforce about the you can also support external objects. Like SharePoint files, seeing them as a related list.

Eric:                          Yeah, exactly. That’s a good point. That’s my next point there. Learning about external objects in Salesforces. Files Connect for that option, you’re thinking about file based integration and an external objects that is for records space integration or requirement. With external objects, you can render a custom list which lives in SharePoint. You can render that object into UI within Salesforce. That custom object, as the person who commented mentioned, it can be added as a related list, kind of a look up list to existing objects that are in your Salesforce environment. They can also be their own tab, for those who are using custom Salesforce, you go to a tab to see an object and you can create views around that object.

One thing to keep in mind, to note that in the blog that the external object and Files Connect those are read only experience so you can read information from SharePoint and render that in Salesforce but you write back to it.

Danny:                    Great. Another comment, you also have the ability to do more about full text search within SharePoint so just searching beyond what the title is. That’s some nice integration there as well. Had another question from someone else about is this functionality, does this work on PRIM or Office 365 or both? Do you know that?

Eric:                          Yeah. The majority of the experience that I have with external objects and Files Connect is with SharePoint and Office 365. If that on PRIM environment, if it’s exposed through the firewall which that would be the first step in order for Salesforce to connect to it. The next step is around authentication. I don’t have an answer right off on that. I’ve seen where the auth providers in Salesforce, they’ll support forms authentications. If you had a website in SharePoint that [works 00:10:55] to using forms auth, then it would be able to authenticate. I haven’t seen the more popular options for authenticating SharePoint in NTLM or Kerberos or [clayton 00:11:04] authentication. I haven’t seen that myself but I haven’t really drove down that route.

Danny:                    We are fortune enough to have the Files Connect product manager on the line. Some of the things that were pointed out was that if Files Connect supports with SharePoint online, SharePoint 2010, 2013 or PRIMs. It doesn’t sound like you do need to have SharePoint exposed. Not sure, we can probably go into more detail on that in a separate conversation but just letting you know about that.

Eric:                          Okay, good to know.

Danny:                    I love the interaction. Any more questions folks have or any more comments? [Laura 00:11:46] thanks for the input here, really appreciate it.

Next one, it looks like what the heck are named credentials?

Eric:                          Yeah, with this 4th bullet now is where we’re starting to pull out our custom app dev skills. In Salesforce, there are what are called Visualforce pages, the equivalent to ASP.net pages. In the Microsoft world, APEX is programming language, roughly the equivalent C# in the .net land. Main credentials, this is just one of the infrastructure features that exist in Salesforce, on which, we can build our custom solutions. The first 2 that we talked about, which were Files Connect and external objects, these build on something in Salesforce which are call auth providers. I kind of touched on that briefly. We touched on it with talking about authentication to the on PRIM. Instances of SharePoint, one of the things it supports is OAuth connections to SharePoint and Office 365. That same auth provider that might configured for [inaudible 00:12:57] or external objects or in the same way you have configured it, there’s a feature called Named Credentials which can leverage that same auth provider. What this does is it really helps the developer get out from under the pain of needing to custom code the OAuth authentication into SharePoint instead we can leverage the authentication that’s really built into the platform.

One thing to highlight here that’s kind of neat, I think about the auth providers and Named Credentials, is that it supports service accounts out of the box. As part of configuring this Named Credentials, I can say that I want to use a service principle and what it will do is it will ask me to authenticate right there and I’ll authenticate as the user that I want that Named Credential to use in the future, and it will store it. It will reuse that credential for future [call 00:13:59]. Named Credentials are a great feature. Also, you can build with external objects. There is the ability to create your own custom connectors. There are a number of external objects, for example the underlying connectivity option that’s used for calling into SharePoint Office 365 is an OData, it’s expecting an odata enabled data source and you have the ability to create your own custom connectors for data sources that don’t support OData or don’t support some of the other protocols that are supported out of the box.

Danny:                    Awesome. Looks like that’s something as well you ended up using within Trove as well?

Eric:                          Yeah, exactly. Actually, with Trove the [inaudible 00:14:57] you really have full control. Apex with the Salesforce platform is quite powerful. You can make call outs, https requests to any endpoint you desire, you can form redirects and so forth. Very powerful. What we did for Trove was use really custom code for authenticating in Office 365. We did that because we wanted to make what are called application principal authentication or app only calls into SharePoint. You really do have the full capability for your integration if you don’t want to use the, or have the need not to use, the capabilities of the platform.

Danny:                    I know we’ve got a lot of people who since we’ve done a lot of Microsoft integrations, they might not be as familiar with some of the stuff on the Salesforce side. What is Apex? What is the equivalent of that on the Microsoft side?

Eric:                          Sure. Apex it’s a programming language that is proprietary to the Force.com platform. I see it described as being very Java like. I’m not a Java developer myself so I see it as being very C# like. It supports the same class, method, properties type programming paradigm that you’re used to. There are, of course, key differences. They don’t end up being major architectural difference and you kind of learn those over time. I mentioned also, kind of goes along side Apex is Visualforce. That’s how custom webpages are programmed in on [inaudible 00:16:50] platform and it’s equivalent to ASP.net application, ASPX page. You can also think of it as similar to MVC razor forms, that sort of thing. Both of these are very powerful and really give you almost unlimited customization capabilities on the platform.

Danny:                    Cool. It sounds like we’ve hit a couple of things on the Salesforce side, as far as technologies that you’d want to take advantage of … At least take a look at if you’re integrating between Salesforce and Office 365. The 5th one is about the synchronization of data as part of a scheduled task. Tell me more about that one.

Eric:                          Right. This ones maybe a little bit of a detour from the path that we’ve been taking but it [inaudible 00:17:43] step back because often times when folks are thinking about integrating two systems, they almost always go right to a real time integration. By that, I mean I want to render a page in Salesforce and have it, in a real time fashion, pull that data from SharePoint and render it Salesforce. The external objects and credentials will give that to you because those are real time calls but don’t forget what are the, I’ll call it the old school data synchronization options, where you’re really just taking a copy of the data that exists in SharePoint and you’re copying it over to Salesforce or maybe copying it from Salesforce into SharePoint. There are a couple of neat advantages of that. One is that it can be technically a lot simpler, like if you were moving parts. Another advantage is that you get the full fidelity experience of both platforms. If I copy my data from [inaudible 00:18:53] into Salesforce, copying those in the custom objects in Salesforce will then … I have the full experience. I can use formula fields, I can include those custom objects in reports. Those are some features I wouldn’t be able to use if I were using external objects.

I threw that one in there just to … Don’t discount that right off the bat because sometimes a batch synchronization, it’s a simple option but often times that can be cost effective and meet the integration needs.

Danny:                    Sometimes it does make sense to roll your own in this case.

Eric:                          Right.

Danny:                    Yeah. I have to drink more coffee because I don’t know if I picked up all of what you just said. All right. Number 6.

Eric:                          Yeah let’s jump over to the SharePoint side.  [crosstalk 00:19:53] … in a similar track as we rolled through with Salesforce, let’s think about what are the integration options on the SharePoint side. Business connectivity services is the … That has been the integration story for SharePoint for some time. It’s a very powerful option that provided read/write experience you’re really rendering this external data and really the experience of a custom list. In SharePoint, at the moment, it doesn’t support direct connectivity to Salesforce.  What you’re going to be looking for there is a middle tier application, a middle tier service that really brokers that communication from SharePoint through to Salesforce. On the surface, it may sound like a lot of moving parts but being able to easily render that Salesforce as a custom list, there’s a big value in that.

There are some 3rd party product companies out there, I think Layer2 is another one that I saw, they kind of popped up in a couple of places, serving as that middle tier. I think there are some other options or of course, rolling your own.

Danny:                    Awesome.

Eric:                          The next on is power BI. Power BI, I think on the … It’s kind of hard for me to decide for sure which of these rise to the top for me but I think Power BI would probably be my first stop on the SharePoint side upon render Salesforce data from my SharePoint users because it is so easy to get started. 5 or 6 clicks and you have connectivity with Salesforce in your SharePoint environment. It comes with 2 dashboards, there’s one that supports the sales managers and there’s one that supports the sales reps that’s pre configured and of course you have the ability to customize that. It’s handling the authentication for you and just doing a great job at helping to get you started. That’s kind of the easy button. Similar as external objects on the Salesforce side but Power BI forces a read only experience. It won’t meet all of your needs but it’s a great choice for report options.

Danny:                    For those folks who … Last month we actually we covered a similar top 10 around what you need to know about Power BI. We did record that and we’ve also got a [deck 00:22:57] that you can go through as well as you want to. I’ll put that in the chat window as well. I think that’s another topic we’re pretty excited about, it’s Power BI.

Number 8, provider hosted apps. What’s a provider hosted app just to get started.

Eric:                          Provider hosted apps  on the SharePoint side of things is where we’re really pulling out are custom app dev skills. Provider hosted apps, this is where you can develop an ASP.net web application and you can really render that within the user interface of SharePoint. Because it is an ASP.net web application, typically hosted in Azure, you have full control over the rendering, you’re really serving as the middle tier broker between Salesforce and SharePoint.

One example of a provider hosted app, 3 Wheel as built a Chatter integration between Office 365 and Salesforce which is a provider hosted app. It surfaces a Chatter feed. It’s read/write so users can not only view a [inaudible 00:24:19] but they can also like, post and so forth. In the SharePoint UI, it renders what is called an App Part.  It’s right within the user interface of, let’s say, a SharePoint site. One of the things that allowed us to do, just to kind of talk about the heavy lifting in example in a provider hosted app, is that we use a certificate based authentication into Salesforce.  Salesforce has a number of authentication options that are very well documented. OAuth authentication options. One of them is called the saml bear flow and that’s what this integration uses. What it allows us to do is it allows our integration to trade certificates with Salesforce and we can then sign requests using that certificate for making API calls into Salesforce and we can assert the users identity.

What that really ends up doing is it provides users with a single sign on experience so that they don’t need to authenticate to Salesforce and neither do they need to authorize the OAuth connection, the user consent flow that you may be accustomed to.

Provider user apps definitely are a great option to look at. Starting with Visual Studio 2015, there is what’s called Salesforce Services, which were built in to Visual Studio. That is a great option. If you’re a developer and you want to say “Hey, I want to sit down in an afternoon, create an application that connects to Salesforce and renders a UI.”, using Visual Studio 2015 and the Salesforce Services extension is a great way to do that because it does a number of things for you that were somewhat difficult in the past. Some of the things it does is that it sets up that OAuth connection for you. Within the Salesforce side of things, there’s something called Connected Apps and that is the OAuth endpoint, the OAuth authorization for apps to call into Salesforce. The Salesforce Services extension configures all of that for you. The Salesforce Services extension it also works with NVC apps. It creates the model for you, there is sample code. There’s a walk through, I have a link kind of down toward the bottom of this post, that really walks you through a great walkthrough of getting started with your first app. That walkthrough will guide you through creating my model, creating my controller, and VU so that you’ll really be … The walkthrough has full prod capabilities. You can edit, view, and delete records right from your first walkthrough.

I can’t say enough about that option. It’s really a neat step for the Salesforce Services extension.

Danny:                    It sounds like, Eric, you’re doing a lot of, I just wanted to point this out a while back. I remember you did this blog post which was after you went to one of the Dream Forces, you ended up covering kind of what Salesforce is for SharePoint devs. I think a lot of this is sort of hitting one platform versus the other. I just wanted to point this out for folks too, I would probably have a pretty Microsoft heavy crowd; if you’re wanting to learn more about the similarities between Salesforce and SharePoint, Eric does a good job. I’ll put this in to the chat window as well. I’m just interested, what have been your experience, Eric, of doing more SharePoint Office 365 development versus starting to do some stuff with Salesforce. Has it been pretty easy mapping?  Tell me a little bit more about that experience.

Eric:                          Yeah.  Thanks for bringing up that blog post and great point. For my Microsoft developer friends who are interested in getting into Salesforce, as Danny mentioned, there is a great mapping. As I already pointed APEX versus C#, Deferral force versus ASP.net web applications, MVC Razor and so forth and as you go along, you’re constantly coming across great parallels. Connected apps is what you have of the Salesforce side of things. On the SharePoint side of things, you have application principals, and so there’s another parallel. Their provider hosted apps on the SharePoint side of things, which is hosted in Azure. On the Salesforce side of things, there’s something called Canvas Apps, which are hosted on a platform Heroku. Heroku being, and I don’t have a deep knowledge of Heroku, but it seems to be equivalent to an Asure based environment. If you head down that Salesforce app realm, you will very pleased to see a lot of things that are very familiar to you. A lot of times it comes down to the fact that, I think, great minds think alike and a lot of times kind of arrive at very similar solutions. It’s been a great experience, I’ve been thrilled.

Danny:                    Awesome. Thank you for sharing that. The number 9.

Eric:                          Sure. SharePoint authentication. This is one of those … I think kind of a strategy or a thought. Honestly, I can probably build on a few more but you need to be thinking about all along is … Your sort of traveling over “Okay, am I going to use an out of the box product? I use app dev, if I use app dev which side is it going to be on? Is this going to be synchronization or real time?” Really travelling through all of those decisions in authentication.

A lot of the authentication comes down to “Am I going to use a service account? Or are users going to authenticate on their own?” There are pros and cons. A lot of time, the service account is a much simpler way to accomplish an integration because you don’t need to require users to authenticate themselves or create the UI for it but, on the other hand, the questions you need to ask “Iis the security trimming important?” If security trimming is important then you certainly wouldn’t want to use the service account. And of course, audit trails, if you’re using a service account, anything that’s deleted, updated, added and so forth that’s going to all be attributed to your service account.

Of course, is there going to be an interactive user? Is anyone even present to authenticate, that’s something that [inaudible 00:31:26] impact your authentication. 3rd bullet point there is around storing of secrets. There are a number of secrets with the OAuth authentication and even if you’re using a service account where you have a user name and password, of course that’s a secret. Does your integration have an option? The methods that have the ability to store secrets are usually those that have server site code. Like a provider hosted app or a Visual course page with APEX running behind it. Those that can’t store secrets tend to be those that are maybe running in JavaScript, maybe you have a pure JavaScript application. You’re not really going to store … You maybe have some options, you’ll have to think about it, for storing secrets.

The last bullet there is around certificates, signed credentials. Which that has come up more around our Chatter integration, where the particular OAuth flow that we’re using for [impersonating 00:32:33] users. Kind of be thinking about what are our authentication requirements because that’s really going to impact any of your decision all along the way.

Danny:                    Cool. Number 10. Online training, sounds like an important one.

Eric:                          This is a topic [inaudible 00:32:58] passion around lately. It comes down to the fact that things are changing fast and we all need to be efficient in the way that we learn new things. We need to find data that gives us the right answer and that has been designed and well tested.

I listed out a few here, really my top 3. Top is Pluralsight, I love Pluralsight … Subscriptions, there are numerous courses on Salesforce and Office 365 and of course a myriad of courses which are technologies that applied to both like OAuth, Angular, Bootstrap. You name it. Pluralsight is a great place. You can search the catalog on Pluralsight before you sign up. If you’re looking for something in particular and you’re not already subscribing to Pluralsight, you can check and see if it’s there; check with some friends or check with me “Is this a good course, do you recommend that I sign up for just this course?” In some cases, the answer is yes. It’s worth the cost for one key course.

Next is the Microsoft Virtual Training Academy.  That’s a free resource. Excellent courses online. Also, not only Microsoft focus but plenty of generic content. Salesforce has the Trails End which are a number of online trailing content, it’s also a free resource.

The last 4 here, kind of going into specific areas that I recommend that you focus in on. As I mentioned earlier, kind of trying to pick out what I think are the sort of top. The most interesting things for folks to go after, Lightning Connect is definitely one of the most interesting ones. Which external objects, which I covered earlier, are really part of Lightening Connect. That’s where you learn about that.

[Power Be Guy 00:35:06] seems to be also right up at the top that I recommend that you look at. It’s really fast and I’m not a deep [Power BI Guy 00:35:21] person myself I just sort of clicked sign up and nexted my way through it and kind of dug into it a little bit. This is really a great, easy option to explore.

Danny:                    Sorry, I’m playing a little Vanna White there for you.

Eric:                          Yeah, no worries. Connected services and digital [inaudible 00:35:45]. That is a link, I think, to a Salesforce blog which is the … Let’s see if that pops up here, I think that’s the walk though. Yeah. And that is an excellent introduction to Salesforce Services. When you get to the end of the wizard, which you can see a screen snap of the wizard there where they’re selecting out Salesforce objects, when you get to the end that wizard it opens up a webpage for you. It’s titled like “Getting Started” a lot of times those webpages pop up and we just sort of dismiss them right away; don’t dismiss that one because it has your walkthrough on it. You’ll see on that left hand side it walks you through creating your controller and your views and so forth and so on. I’m definitely recommending you look at that. The last one there is just kind of a getting started with provider hosted app in SharePoint 2013. I just recommend you have a look at that because that is just kind of a key foundation for customizing SharePoint and Office 365 or provider hosted apps. That’s something you’ll definitely want to become familiar with because there’s so many things that build on it.

Danny:                    I’ve got a couple more things I know I want to cover after you finish off this blog post but if you could just get through these parting thoughts put together sort of a summary of what you’ve covered so far, that would be great.

Eric:                          Yeah. Just kind of summarizing the themes that these top 10. I think the first one there, determining if your data … Does it need to be in real time or could it be delivered as a scheduled task. Again, we want to look at the most simplest and the most cost effective way to solve your integration needs. A lot of times it going to be the task will be that can be really simple option.

Take a look at 3rd party products. A lot of products have been built, there are companies that are really focused on connecting applications together. Mulesoft is one that I mentioned, Layer2 and maybe some others, I’m certain there are.

Look at your custom app dev options in Salesforce and Office 365. That’s really my specialty, custom app dev, that kind of a favorite of mine. Don’t forget to evaluate the costs of the solutions. Is it a custom built solution or is it a product that you’re going to purchase. There are going to be licensing costs for most products. Of course app dev costs. Normally, for building a product now but then maintaining it in the future. Another aspect, which I don’t think I mentioned earlier about buying products, if you use an out of the box product or a feature that’s already been built, one of the advantages there is that you’re joining on to the product roadmap for that product. Not only are you buy and adopting it now, but you may see better value over time as those features are built. You’ll definitely want to, as part of products, think about where’s this product going. They’ve built some things, maybe it doesn’t do all I need, but will it do more in the future?

The last bullet there, once again, find the training and learn more. Folks have been really humming the delivery of content. Everybody’s struggling to keep up and are [inaudible 00:39:51] with the online resources that are out there.

Danny:                    I want to, maybe before … We’re coming up on about 20 minutes left here but I probably want to use about 10 of them. What I wanted to do, I think you’ve been mentioning Trove quite a bit and talking about that maybe as an example on integration between Salesforce and Office 365. What I’m interested in here is the approach of the Salesforce side and even some of the recent approach that you’ve taken with building an Office app. Mind going into any more detail on that at all?

Eric:                          Sure, I kind of talked through some of the technical pieces of that application, just to give you an idea of what a custom integration app can look like. What this is made up of, I don’t know if you maybe have a screen snap there if you need it. I think the second on might be appropriate. You can see at the bottom it says click on the file name to edit. What that box is right there is, let’s see if you’re going to [crosstalk 00:41:09] Visual Force page.

Danny:                    All right. I think I got a little too aggressive on the zoom in there. I was just going to pick it out. Does that help?

Eric:                          Yeah, that works. What you can do in Salesforce is you can take, what is a custom page, a Visual Force page, and again equivalent to the ASP.net web application. You can take that Visual Force page and you can embedded it in what’s called a layout page in Salesforce.

Layout page is sort of what the name implies lays out a record for you. You can see right here that this is the layout page for an account and what we’ve done as part of Trove, is that there’s a Visual Force page, which you can sort of see a line there and you see files. The section right below [inaudible 00:42:04] that is a Visual Force page. For folks who are familiar with provider hosted apps on SharePoint side, this is a lot like, in terms of the eye framing, and it’s rendering a Visual Force page there on the layout for that account. In the back end, there is APEX code, which is behind this Visual Force page and that APEX code is handling things like authentication to Office 365 it also handles the file upload. For example, Visual Force pages have a lot of AJAX style support built in and one of the things accomplished on this page is called remote actions. In Visual Force, when you upload a file it’s using a remote action which you can think of it as a JavaScript http request. Back to the controller to upload that file so it’s uploading a file in chunks.

On the Office side of things … In our first version of Trove, one of the things that you would have to do, we would have our users go through this process of creating an application principal on the SharePoint side of things. For those who are familiar, you go to [accregnew.aspx 00:43:35] and you create an application principal and then you give this application principal the permissions so forth and so on. For the Salesforce folks on the phone what I just described is the equivalent of creating a connective app but you’re creating it Salesforce side. To make that installation process easier, we’re in the process right now of working on getting Trove into the Office store. Once we get Trove into the Office store, the client ID, the client secret and the permissions for that client, those are all really installed as part of or set and configured as part of installing the application to SharePoint.

That’s kind of the Office store side of things. Trove, then, there may be other examples of this, if not now probably more in the future where really it has 2 components. There’s sort of an app exchange component for Trove and then there’s an Office store component for Trove.

Danny:                    Awesome. Very cool. I’m sorry, I’ve been just going around as you’ve been talking here just pulling up a couple of different pages I though would be relevant.

For folks who are on the phone, any other questions that folks might have I’ll keep an eye out on questions as we’ve covered this. Eric, I appreciate you taking the time to both write this up. I know you’ve been pretty busy with some of these integrations. Appreciate you taking the time to share with everybody in the community about this. If you want to get in touch with Eric, the blog post that I shared … I have a nice comment about Trailhead I think a lot of people, internally, have been using Trailhead to learn more about Salesforce. It’s been a pretty important place. If you wanted to connect with Eric, just on any of the blog posts he’s written, if there’s a hyperlink over his name from there you would be able to connect up with him through LinkedIn.

Eric:                          Yeah absolutely. I am happy and eager to [inaudible 00:45:58] any questions if you’re working on integration. If you have any stopping points or looking for high level strategies, feel free to send me a note.

Danny:                    The key thing from this is we hope that this has given everybody sort of an overview of 10 different things that you’ll want to take a look at, both on the Salesforce Side and on the Office 365 side. If there are follow up questions or more or you want to dive into more detail, if you go to the contact us section of our website this will actually schedule a meeting with me and I’ll pull Eric in on it as well if you want to maybe dive into both the BI subject, I’ll pull [Bowin 00:46:44] for that or if you want to talk more about integrating Salesforce with Office 365. Feel free to set up a follow up call with me, I’d love to talk to you more about that.

Really appreciate everybody taking the time today to learn more about this important subject. Also, you’ll get an email from me next week that will have a link to this recorded session and with that I hope … Eric, once last time, thank you for taking the time to do this.

Eric:                          Great, thank you for having me.

Danny:                    You bet. And everybody have a wonderful week and enjoy yourself this weekend and thanks again for taking the time to join us today. Thank you. Bye. Bye.

read more
Eric BowdenIntegrating Office 365 and Salesforce Webinar

Top Ten Things You Should Know About How to Integrate Salesforce with Office 365

Eric Bowden has over 19 years of software development experience around enterprise and departmental business productivity applications.

For the second consecuitive year, Salesforce and Microsoft have both been named as leaders in Gartner’s aPaas Magic Quadrant for Enterprise Application Platform as a Service with their respective offerings, Force.com and Office 365. Lately, the options for integrating data between the leaders has been growing, including out of the box features, developer tooling, and third party products.



Do you need to integrate Salesforce with Office 365?

Below, I’ve collected a top ten list of what you should know about how to integrate Salesforce with Office 365.

1. Consider Off the Shelf Offerings

Salesforce ISV partners market applications on the App Exchange. Salesforce administrators and users who have been assigned the “Download AppExchange packages” can install apps from the App Exchange. Apps can be installed and evaluated in test, sandbox, or developer environments and deployed into production. The easiest way to start is to access the AppExchange and search for Office 365. You’ll find a number of apps like Trove (for file sharing), integrations with Outlook, document process automation and others.

Microsoft ISV’s market applications in the Office store. Site Owners can install apps in sites or request an app install by the Office 365 administrator. Apps require permissions, and the user installing the app must have sufficient permissions to grant access to the app, thus an Office 365 administrator may be required to install certain apps. Searching for Salesforce in the Office store is the best place to start. SharePoint apps include integrations for workflow and list/library connections.

Also, look beyond the app store for companies that create product connectors and developer tooling [e.g. MuleSoft)]

Next, I recommend that you learn about the integration features that are provided as part of the platform, Salesforce and Office 365.

2. Learn About Files Connect in Salesforce (for File Based Integration Requirements)

Files Connect allows you to browse and share files from a SharePoint site into your Chatter feed. Files Connect can be configured to share files from SharePoint either as a link or as a copy. A built-in viewer in Salesforce allows users to view files that have been shared as a copy, directly in the Salesforce UI. Further, Files Connect allows users to find documents, searching for a keyword within the document title.

3. Learn about External Objects in Salesforce (for Records Based Integration Requirements)

While Files Connect is for displaying SharePoint files in Salesforce, use External Data Objects to display list data in Salesforce. External Objects can be added as a tab or added as a related list to existing objects.

External Objects and Files Connect are both read-only. Also, additional charges may apply.

4. Learn about Named Credentials (for Custom Integrations Created in Salesforce)

Named Credentials in Salesforce function as a service layer for API calls into SharePoint in Office 365, isolating the developer from the pain of OAuth authentication. Named Credentials use the same authentication providers that are used by Files Connect and External Objects, mentioned above. The Salesforce administrator can configure access into SharePoint to use a single service principal, or allow users to authenticate on their own.

Authentication can also be accomplished as custom app dev for integration projects for those that have unique authentication requirements that are not supported by Named Credentials.

Trove is an example of a Salesforce hosted application which uses custom code for authenticating API calls into SharePoint in Office 365. The most recent version of Trove supports application principal authentication into SharePoint in Office 365. This feature requires that authentication is coded as a custom feature.

5. Consider Synchronization of Data as Part of a Scheduled Task

Consider out-of-the-box or custom built applications which can be used to synchronize data between Salesforce and Office 365. Copying data can have benefits such as allowing for full fidelity of the platform experience. For example, although External Objects are not supported by Salesforce reports, reporting can be achieved by copying data from SharePoint in Office 365 into custom objects in Salesforce.

6. Review the Integration Options for SharePoint in Office 365

Business Connectivity Services for SharePoint in Office 365 provides a list based, read/write experience for external data. However, because BCS for SharePoint in Office 365 does not support OAuth authentication, you will need to build custom, middle-tier web services to support a BCS connection. There are also products which can be used as the middle tier between SharePoint and Office 365.

7. Learn about Power BI

Power BI is another option to consider for integrating Salesforce data with SharePoint in Office 365. The Salesfore Connector for Power BI includes two predefined dashboards, and you can create your own.

8. Learn about Provider Hosted Apps for SharePoint

Provider Hosted apps are ASP.net web applications, typically hosted in Azure, which render as part of the SharePoint user interface. Developers can exercise full control over authentication, retrieving and rendering data. Using Visual Studio 2015 and the Salesforce Services extension, developers can configure a connection to Salesforce, including the OAuth configuration.

The Chatter integration that ThreeWill built for a prospective customer is one example of a Provider Hosted app that integrates with Salesforce. This application uses a certificate based OAuth flow, providing a single sign-on experience for users. The user interface and all data access are accomplished through the custom application, hosted in Azure.

9. Plan for Authentication

Authentication questions you should ask include:

  • Does the integration require user authentication or impersonation for security trimming and audit trails?
  • Will the integration always have an interactive user, and will that interactive user have credentials required to authenticate an API connection?
  • Does the integration support storing of “secrets,” such as those used for several aspects of OAuth authentication?
  • Does the integration support certificate signed credentials?

The answers to these questions will help determine which authentication flow you choose and thus the experience for end users. The authentication options and out-of-the-box features vary between SharePoint and Salesforce, and as a result, some of the requirements and design decisions may influence how much of the integration is built in Salesforce, SharePoint in Office 365, or in a middle tier service such as Azure.

10. Find Effective Online Training for a Deeper Dive

Online webinars and training courses can be a very efficient method to ramp-up on the technologies described above.

Parting Thoughts:

  • Determine if your data integration needs require data in real-time, or if the data can be delivered as a part of a scheduled task.
  • Consider if your integration needs can be met by third party or out-of-the-box features.
  • Consider custom app dev options in both Salesforce and Office 365.
  • Evaluate the licensing costs for third party solutions and balance these against the costs for a custom built solution.
  • Find effective training and learn more.

Join Us this Friday for a Webinar on Integrating Office 365 and Salesforce

read more
Eric BowdenTop Ten Things You Should Know About How to Integrate Salesforce with Office 365

How to Publish to the Salesforce AppExchange

Eric Bowden has over 19 years of software development experience around enterprise and departmental business productivity applications.

As a developer, it has been a great experience to methodically work through the process for building and publishing an application on the Salesforce AppExchange. Earlier this week, we were thrilled to announce the fruit of our labor, the latest version for Trove! Naturally, there are numerous details to consider, and the ISVforce guide should be your primary resource; however, we’d like to share with you the high level steps required.


In summary, the process for publishing an application on the AppExchange is largely about creating Salesforce orgs and requesting that features are enabled. There is also a security review required. And, of course, you’ll need to develop and test your app.

Step by Step

  1. First, identify your Salesforce business org. This is typically a paid for org which is used for tracking leads, accounts, opportunities, and so on.
  2. Submit a request for Salesforce to provision the Environment Hub application in your business org. The Environment Hub application is required in order to associate related orgs, and it is used for creating orgs for testing your app.
  3. Login to the AppExchange, select the Publishing Console, and create a listing for your application, even if your application hasn’t been developed yet. The listing will not be public, but you must create the listing and decide if it will be paid/free before you can proceed to the next step.
  4. Submit a request for Salesforce to provision the License Management Application in your business org. The License Management Application is used to track organizations which subscribe to your app, licenses, and so on.
  5. Use the Environment Hub to create a Developer Edition org which will serve as the packaging org. Or, if you have already created a packaging org, you can use the Environment Hub to associate the pre-existing packaging org with the Environment Hub.
  6. Create separate developer edition orgs to build and test your product. Use the Eclipse based Force.com IDE to write/debug code and store the source in your favorite source code repository. There are other tools that can be used for app dev such as the developer console and the Salesforce setup menu. The following is an awesome overview of the app the dev lifecycle for Salesforce projects: Team Development and Release Management for ISVs.
  7. Once app dev is complete, create a managed package in your packaging org and upload your source. Note: Many attributes of managed packages are difficult to change once they’ve been set and after a managed package has been released.
  8. Next, you’ll upload a beta version of your application to the AppExchange for testing. Click Upload from the package in the packaging org and be sure to select “Beta.” Note: Do not upload a Release package until the application has completed all testing. Some aspects of the managed package cannot be modified after it has been uploaded as a release.
  9. Use the link from the beta upload (prior step) to install and test your application. Since beta versions cannot be installed in production orgs, you’ll need to use the Environment Hub to create test orgs to test different editions of Salesforce (e.g. Group Edition, Professional Edition, Enterprise Edition, etc…).
  10. Upload a release version of your application once testing has completed.
  11. Login to the AppExchange, access the publishing console, and confirm that your application appears in the section titled Your Uploaded Packages. It may take 30 minutes or longer for your application to appear in the publishing console.
  12. Next, it’s time to begin the security review. Your application cannot be listed publicly in the AppExchange until it has passed the security review. Click start review and work your way through the wizard. A few hints: You’ll need to have completed the automated Force.com security code scanner and repair any issues found. You’ll also need to create an environment in which Salesforce engineers can test your app.
  13. Submit a request for Salesforce to enable the patch feature in your packaging org. This will allow you to create patch upgrades which can be published to the AppExchange and can be pushed to existing subscribers. You may not need to create a patch just yet, but you’ll want to be ready if/when a patch is needed.
  14. Did your app pass the security review? Congratulations, you are ready to set your listing on the AppExchange to public!
  15. Now that your app is live on the AppExchange, you can use the License Management Application to monitor the installations. In the Subscribers tab of the License Management Application, you’ll see a line item for each org in which your application has been installed, including test orgs.
  16. Submit a request to have the Usage Metrics application installed. The Usage Metrics application will let you know how your application is being used, such as which Visualforce pages and custom objects are being accessed by your subscribers.

Easy, right? We’ve learned a lot through study and experience. Ask below or contact us if you have questions about publishing your app in the Salesforce AppExchange.

read more
Eric BowdenHow to Publish to the Salesforce AppExchange

Our Lastest Update to Trove (Version 1.1.1) – Free Office 365 Integration for Salesforce

Danny serves as Vice President of Marketing at ThreeWill. His primary responsibilities are to make sure that we are building partnerships with the right clients and getting out the message about how we can help clients.

Introducing Trove

A couple of weeks ago, we announced a new integration between Salesforce and Office 365 called Trove. We’ve made a bunch of improvements and added some new enhancements in our latest release.

What is Trove?

Trove provides Office 365 integration for storing files in Salesforce for Opportunities and Accounts.

  • Upload and edit files in Office 365 directly from Salesforce
  • Files open in Word, PowerPoint or Excel online for convenient editing
  • No more downloading files, editing and uploading

What’s Been Updated?

  1. Trove now supports use of an application principal for authentication from Salesforce to SharePoint. This means that Trove does not need to use an Office 365 user account (and license) for making calls into SharePoint on behalf of the current user.
  2. Users can now delete SharePoint files that are attached to an Account or Opportunity via the user interface for Trove.
  3. A link is now available which allows users to navigate to the folder in SharePoint which stores documents for the selected Account or Opportunity in Salesforce.
  4. A link is available which allows users to navigate to a search center site in SharePoint. This is an optional feature. The link will only appear if the Search Center Url setting is defined.
  5. Existing users of Trove should repeat the installation steps after upgrading to version 1.1. See the installation guide for more details.

We help companies craft modern digital workplaces on the Microsoft Cloud.

  • We are ranked in the top 5% of Microsoft partners based on four independent surveys.
  • We have built over ten connectors for SharePoint for over twelve software firms including Atlassian, Jive, and Salesforce.
  • We are a Microsoft Partner with Gold Application Development and Gold Collaboration & Content competencies.
  • We are a Salesforce Product Development Partner.
  • Established in 2001, we are based out of Alpharetta, Georgia (the Technology City of the South).
    All our consultants are Microsoft certified (many at the highest level), and each has an average of over ten years of Microsoft development and/or product development experience.
  • We have been a part of one of the largest enterprise implementations of SharePoint (over 250K users).
  • We have published books, articles, and have produced materials for Microsoft on technologies such as SharePoint, ASP.NET, C#, Office Development, and InfoPath.
  • Our focus is not just technology, but also project management and effective and agile processes that ensure predictable results.

Partnerships are central to ThreeWill’s success. We have been a Microsoft Gold Partner for over fifteen years. We currently hold the Gold Application Development and Gold Collaboration & Content competency. We are ranked in the top 5% of Microsoft partners based on four independent surveys.

Our promise to our business sponsors:

1. Control – We provide the structure for our clients to control priority of features and budget throughout the lifetime of the project.

2. Choice – Because we deliver working software every two weeks, we earn our client’s business every two weeks.

3. Commitment – We take on your challenges like they are our own; you will not find another business partner more committed to your success.

read more
Danny RyanOur Lastest Update to Trove (Version 1.1.1) – Free Office 365 Integration for Salesforce

Introducing Trove – Free Office 365 Integration for Salesforce

Danny serves as Vice President of Marketing at ThreeWill. His primary responsibilities are to make sure that we are building partnerships with the right clients and getting out the message about how we can help clients.

Introducing Trove

Over the last couple of months we’ve been working on an integration between Salesforce and Office 365.  We are excited to announce today that the app in now available on the Salesforce AppExchange.

What is Trove?

Trove provides Office 365 integration for storing files in Salesforce for Opportunities and Accounts.

  • Upload and edit files in Office 365 directly from Salesforce
  • Files open in Word, PowerPoint or Excel online for convenient editing
  • No more downloading files, editing and uploading

Key Benefits to End Users

  • Keep content centralized in Office 365 without ever having to leave a Salesforce record
  • Share content via Office 365 with external, non-Salesforce users as needed
  • Save time and increase productivity when searching, accessing, and updating files associated with an opportunity or account
  • Replaces the clunky process of working with file attachments
  • Use Office 365 and the popular Office applications like Word, Powerpoint and Excel (Web, Windows & Mac versions)

Key Benefits for Sales Management, IT Decision Makers and CIO

  • Allows admins to keep content centralized and secured on Office 365, while making it available at any time within a Salesforce record and across applications and devices – arming their users to get more done, easier
  • With granular permission levels, activity tracking/reporting, and integrations with hundreds of business and productivity apps, Office 365 gives admins significant insights into how content is being shared, used, and accessed
  • Office 365 can be used beyond Salesforce for collaboration and file sharing by any department in the company
  • Significant cost savings from file storage fees from Salesforce
read more
Danny RyanIntroducing Trove – Free Office 365 Integration for Salesforce

Store Your Salesforce Files in Office 365 (Part 2)

Eric Bowden has over 19 years of software development experience around enterprise and departmental business productivity applications.

We have customized the initial integration presented in the recent blog post Store Your Salesforce Files in Office 365 to allow Salesforce users easily work with and categorize a large volume of documents that are part of working an opportunity. Further, document sets, search refiners, and a custom search center allow Salesforce users to work directly in SharePoint (if desired) to search for, add, and edit documents.

In the screen snap below, notice there are two related lists that appear beneath the opportunity: Sales Documents and Proposals. Sales Documents and Proposals are not documents. Instead, these are a custom objects inside Salesforce to which documents in SharePoint will be attached. Take a look first, and scroll down to the next screen snap.


At first glance, this doesn’t look very interesting. In the screen snap above, we see the Opportunity object and two related lists: Sales Documents and Proposals. We need to open one of these related objects to view document attachments (shown below).


Illustrated above, we can view the list of documents in SharePoint which have been attached to the Proposal/Price Quote for Edge Company Intranet Sales Document.

In the earlier integration, all documents were attached directly, either to the Account or to the Opportunity. In this latest revision, a hierarchy of objects (e.g. Sales Document and Proposal Document) has been created. This design allows users to easily find and categorize documents that are used as part of an Opportunity.

From this view, users can select a file link and navigate to Office Online (a feature of Office 365) to allow for viewing and editing of Office documents (Word, Excel, PowerPoint), directly in the browser! Document types that are not supported by Office Online can be downloaded using the hyperlinks provided.

Salesforce users can easily add new attachments from this page. Those that have read my prior post may recall that I mentioned a challenge with file sizes. That concern has been addressed, and the integration now supports file sizes up to 1G.

Users can navigate directly to SharePoint for more value-add from Office 365. Select View all files in SharePoint, and the browser is directed to a document set in SharePoint that has been created for the selected Sales Document. For those not familiar with document sets, these are a convenient means to codify collections of content, and they include a nice landing page. The screen snap below shows a view of the document set of the selected Sales Document.


Select Search all files in SharePoint to leverage the search capabilities of SharePoint. The screen snap below displays the custom search center that has been created for searching Sales Documents and Proposal Documents. Notice on the left that there are search refiners allowing users to filter on metadata such as the type of Sales Document or Proposal, and other metadata that came from Salesforce such as the Industry.


Some Salesforce users will prefer to stay in Salesforce and will not want to use links which lead into SharePoint (prior two screen snaps). While there is a great value-add for working directly with SharePoint for use case such as keyword searches, users can choose to find, view, upload, and edit documents all by working with objects in the Salesforce UI and Office Online.

We are continuing to look for ways to bring the best of SharePoint in Office 365 to users in Salesforce. Any ideas? Share them below.

read more
Eric BowdenStore Your Salesforce Files in Office 365 (Part 2)