Free ThreeWill Webinars for 2017

We’re excited to announce our Webinar Schedule for 2017 (all times in EST)…

  1. Moving from SharePoint Online Dedicated to Multi-Tenant – 1/26/17 @ 1:00pm – Listen Now
  2. Migrating from Jive to Office 365 – 2/23/17 @ 1:00pm – Listen Now
  3. Complex SharePoint Online/2016 Migrations – 3/30/17 @ 1:00pm – Listen Now
  4. Creating Award-Winning SharePoint Intranets – 4/27/17 @ 1:00pm – Watch Now
  5. Find Anything in SharePoint with Amazon-Like Faceted Search – 6/29/17 @ 1:00pm – Watch Now
  6. Budgeting for 2018 SharePoint Initiatives – 10/26/17 @ 1:00pm – Register
  7. Successful SharePoint Farm Assessments – 11/30/17 @ 1:00pm – Register

The schedule is subject to change (especially if presenters get overloaded on projects). Let us know in the comments if you have other topics that you would like us to cover.

Sign up below to get notified about upcoming events or follow us on twitter.

SharePoint is a web application platform in the Microsoft Office server suite. Launched in 2001, SharePoint combines various functions which are traditionally separate applications: intranet, extranet, content management, document management, personal cloud, enterprise social networking, enterprise search, business intelligence, workflow management, web content management, and an enterprise application store. SharePoint servers have traditionally been deployed for internal use in mid-size businesses and large departments alongside Microsoft Exchange, Skype for Business, and Office Web Apps; but Microsoft’s ‘Office 365’ software as a service offering (which includes a version of SharePoint) has led to increased usage of SharePoint in smaller organizations.

While Office 365 provides SharePoint as a service, installing SharePoint on premises typically requires multiple virtual machines, at least two separate physical servers, and is a somewhat significant installation and configuration effort. The software is based on an n-tier service oriented architecture. Enterprise application software (for example, email servers, ERP, BI and CRM products) often either requires or integrates with elements of SharePoint. As an application platform, SharePoint provides central management, governance, and security controls. The SharePoint platform manages Internet Information Services (IIS) via form-based management tooling.

Since the release of SharePoint 2013, Microsoft’s primary channel for distribution of SharePoint has been Office 365, where the product is continuously being upgraded. New versions are released every few years, and represent a supported snapshot of the cloud software. Microsoft currently has three tiers of pricing for SharePoint 2013, including a free version (whose future is currently uncertain). SharePoint 2013 is also resold through a cloud model by many third-party vendors. The next on-premises release is SharePoint 2016, expected to have increased hybrid cloud integration.

Office 365 is the brand name used by Microsoft for a group of software plus services subscriptions that provides productivity software and related services to its subscribers. For consumers, the service allows the use of Microsoft Office apps on Windows and OS X, provides storage space on Microsoft’s cloud storage service OneDrive, and grants 60 Skype minutes per month. For business and enterprise users, Office 365 offers plans including e-mail and social networking services through hosted versions of Exchange Server, Skype for Business Server, SharePoint and Office Online, integration with Yammer, as well as access to the Office software.

After a beta test that began in October 2010, Office 365 was launched on June 28, 2011, as a successor to Microsoft Business Productivity Online Suite (MSBPOS), originally aimed at corporate users. With the release of Microsoft Office 2013, Office 365 was expanded to include new plans aimed at different types of businesses, along with new plans aimed at general consumers wanting to use the Office desktop software on a subscription basis—with an emphasis on the rolling release model.

read more
Danny RyanFree ThreeWill Webinars for 2017

Join ThreeWill at the Atlanta SharePoint User Group Meeting on March 16th

Session Information

Topic: Hybrid SharePoint Security – Providing Seamless Access Using Azure AD, ADFS and Active Directory

Today’s complex business environments present IT organizations with many challenges to provide internal users, external users and partners access to enterprise resources seamlessly and securely. Today’s enterprises want to take advantage of the cloud and all of the flexibility and benefits cloud computing has to offer. But how can you integrate on premises and cloud resources, providing all your users and partners seamless access across environments and devices while remaining secure? This presentation describes and demonstrates the integration of Azure AD, ADFS and an on premises Active Directory to enable internal users to maintain their typical authentication experience, allow seamless access to corporate resources for mobile users, and enable external partner access to resources.

Specially, we’ll discuss a real world Microsoft Azure based IaaS SharePoint 2013 implementation which enables secure internal and external access to SharePoint content, including video for iPhone and iPad, for all internal and external users. We’ll also cover a demo of a development environment which demonstrates the solution.

Speaker – Lane Goolsby

Lane is a Senior Software Engineer with ThreeWill. He is a strong technology expert with a focus on programming, network and hardware design, and requirements and capacity planning. He has an exceptional combination of technical and communication skills with a strong emphasis on troubleshooting, problem determination, customer relations, and identifying quick paths to resolutions. Lane is a strong mediator between programmers, end users, and clients. His experience in design, installation, implementation, maintenance, support, and client/end user training of various software and hardware packages is put to use in everything from large-scale enterprise applications to small deployment limited traffic web sites.

Register Now
read more
Danny RyanJoin ThreeWill at the Atlanta SharePoint User Group Meeting on March 16th

ThreeWill’s Thoughts on the Future of SharePoint

It is great to have such a wealth of thought leaders in the SharePoint Community. I read a recent blog post from Dan Holme (@danholme) on IT Unity. He had a great follow-up blog post up to Julia White’s (@julwhite) post on “Evolution of SharePoint“. Ok, it might look a little silly to have a blog post to a blog post that was a follow-up to another blog post, but we like things in 3’s here at ThreeWill!

IT decision makers, developers, administrators and consultants who have made significant architectural and career commitments to the platform are watching the evolution and direction of SharePoint closely.  At ThreeWill, we have our ear to the ground on SharePoint’s future so we can best advise our clients what direction is best for their particular situation.  Therefore, seeing mature views of SharePoint’s direction is refreshing.

In his blog post, Dan mentions some key points on how SharePoint is evolving in light of Microsoft’s move to the cloud and within the reality of what enterprises need from their current collaboration platforms.  Based on my review of Dan’s post (The Evolution of Microsoft, SharePoint & Office 365), I had two key takeaways…

The SharePoint Pie is Now Multiple Mini-Pies

Dan made the following observation of the transformation of SharePoint Services into Office 365:

Microsoft has broken apart “the SharePoint product into its constituent parts and services in Office 365. We went from having one ‘SharePoint pie’ in the sky to having individual mini-pies. SharePoint social began to be replaced with Yammer… My Site document libraries became OneDrive for Business… SharePoint business intelligence has been broken off to PowerBI and Excel.”

Having these “mini-pies” emerge as products that could stand on their own is exciting to see.    With having service-oriented architecture for Office 365 and Office Graph as the a way to interrelate content with context, the silos of communication in SharePoint, Exchange, Lync and others can come together into new services/portals like Delve or Office 365 Groups.  It is interesting to see these new services emerge and how Microsoft is giving examples of how content from different collaboration mechanisms (email, Yammer discussions, calendars, etc) can be seamlessly aggregated through the underpinnings of new architectural services such as the Office Graph.

SharePoint Fades to the Background in Office 365 and Hybrid SharePoint Model is a Reality

Another key takeaway for me on the evolution of SharePoint is what Dan pointed out on SharePoint Online.  He says SharePoint Online has lost its traditional identity of an independent server product and has moved from a monolithic platform to a set of composable services in the cloud.  But on-premises, SharePoint will live on for the foreseeable future.  In particular, Dan stated that:

     “Microsoft has seen this coming. Those of us who pay close attention to the space have had no doubt. Now it’s clear. SharePoint is dead. But only as an identity, and only in the cloud. It will live on, on-prem. But in the cloud, we’ve reached the tipping point where we leave behind SharePoint Online as a monolithic platform-in-the-cloud, and begin to see it as an evolved higher being, where each of its strengths are now individual services crafted into experiences.

Julia’s blog post emphasizes a point I’ve been making for years: Office 365 is different than SharePoint. It’s more. It’s better (as a broad statement). But it’s not enough. On-prem SharePoint will continue to support key use cases for many customers, and Microsoft’s investments in the on-prem server product will continue for the near-to-foreseeable future.”

I know statements like “SharePoint is Dead” has been used in titles of several articles and blog posts for the past year or two and these articles tended to highlight losing the traditional SharePoint capabilities and not looking at how this change creates better options for the SharePoint community.  It is good to see more mature views of the future of SharePoint.  Organizations that have SharePoint as core platform (or a services providers for SharePoint like ThreeWill) all know that it is just “a matter of when and not if” when it comes to companies going to the cloud with SharePoint.   When they do go to the cloud, we believe it will be in a hybrid model for most large enterprises that have made a significant investment in SharePoint on-premises.  Also, each of these hybrid models will be unique to that business’ need.

Because of the investments enterprises have made with SharePoint on-premises and Microsoft’s promise to continue to release new versions of SharePoint Server (i.e. SharePoint 2016), SharePoint on-premises will be here for years to come. Is that 5 or 15 or 30 years, who knows.  What we do know is Microsoft is committed to bringing us to the cloud, but giving us freedom to do that on our own terms and in a way that gives us more options than any other cloud provider.

Where are you in this journey to the cloud? Please take our informal survey to share your progress and learn about where others are.

read more
Tommy RyanThreeWill’s Thoughts on the Future of SharePoint

Free Office 365 / Azure / Salesforce / SharePoint Webinars for 2015

We’re excited to announce our Webinar Schedule for 2015 (all times in EST)…

  1. OneDrive for Business – Tommy Ryan – 1/23/15 @ 1:00pm – Registration –
  2. Migrating to Office 365 – Chris Edwards – 4/17/15 @ 1:00pm –
  3. Moving from Full Trust Code to the New Cloud App Model – Pete Skelly – 5/22/15 @ 1:00pm –
  4. Get Up To Date on Microsoft’s BI Offering – Bo George – 6/26/15 @ 1:00pm –
  5. Integrating Office 365 and Salesforce – Eric Bowden – 7/17/15 @ 1:00pm –
  6. Getting Started with Salesforce Development – Tim Coalson – 8/21/15 @ 1:00pm –
  7. Moving from Office 365 Dedicated to Multi-Tenant – Kirk Liemohn – 9/25/15 @ 1:00pm –
  8. Integrating Visual Studio Online and Office 365 – Lane Goolsby – 12/11/15 @ 1:00pm –

The schedule is subject to change (especially if presenters get overloaded on projects). Let us know in the comments if you have other topics that you would like us to cover.

Sign up below to get notified about upcoming events or follow us on twitter.

SharePoint is a web application platform in the Microsoft Office server suite. Launched in 2001, SharePoint combines various functions which are traditionally separate applications: intranet, extranet, content management, document management, personal cloud, enterprise social networking, enterprise search, business intelligence, workflow management, web content management, and an enterprise application store. SharePoint servers have traditionally been deployed for internal use in mid-size businesses and large departments alongside Microsoft Exchange, Skype for Business, and Office Web Apps; but Microsoft’s ‘Office 365’ software as a service offering (which includes a version of SharePoint) has led to increased usage of SharePoint in smaller organizations.

While Office 365 provides SharePoint as a service, installing SharePoint on premises typically requires multiple virtual machines, at least two separate physical servers, and is a somewhat significant installation and configuration effort. The software is based on an n-tier service oriented architecture. Enterprise application software (for example, email servers, ERP, BI and CRM products) often either requires or integrates with elements of SharePoint. As an application platform, SharePoint provides central management, governance, and security controls. The SharePoint platform manages Internet Information Services (IIS) via form-based management tooling.

Since the release of SharePoint 2013, Microsoft’s primary channel for distribution of SharePoint has been Office 365, where the product is continuously being upgraded. New versions are released every few years, and represent a supported snapshot of the cloud software. Microsoft currently has three tiers of pricing for SharePoint 2013, including a free version (whose future is currently uncertain). SharePoint 2013 is also resold through a cloud model by many third-party vendors. The next on-premises release is SharePoint 2016, expected to have increased hybrid cloud integration.

Office 365 is the brand name used by Microsoft for a group of software plus services subscriptions that provides productivity software and related services to its subscribers. For consumers, the service allows the use of Microsoft Office apps on Windows and OS X, provides storage space on Microsoft’s cloud storage service OneDrive, and grants 60 Skype minutes per month. For business and enterprise users, Office 365 offers plans including e-mail and social networking services through hosted versions of Exchange Server, Skype for Business Server, SharePoint and Office Online, integration with Yammer, as well as access to the Office software.

After a beta test that began in October 2010, Office 365 was launched on June 28, 2011, as a successor to Microsoft Business Productivity Online Suite (MSBPOS), originally aimed at corporate users. With the release of Microsoft Office 2013, Office 365 was expanded to include new plans aimed at different types of businesses, along with new plans aimed at general consumers wanting to use the Office desktop software on a subscription basis—with an emphasis on the rolling release model.

read more
Danny RyanFree Office 365 / Azure / Salesforce / SharePoint Webinars for 2015

Join Us at SharePoint Saturday Atlanta on June 21st

SharePoint Saturday Atlanta

Join us Saturday, June 21st from 8:00 am to 5:30 pm at the Georgia State Student Center.  Cost is free.  ThreeWill will be leading up two sessions.

Session 1 – SharePoint App Model Architecture & Design Considerations

Level: 300
Track: Developer, Business
With the release of SharePoint 2013 and the rise of SharePoint Online and Office 365, choosing the best SharePoint architecture model for your needs has become murky business. Farm Solutions, SharePoint-Hosted or Provider-Hosted? What about Remote Only? When do Hybrids make sense? Are Sandbox Solutions all dead or just mostly dead? And how will these decisions affect my architecture, my development process, and my code?

In this session ThreeWill will share our experiences working across all of these models, point out real-world considerations as demonstrated by real-world code, and offer a framework for selecting the best solution architecture based on your application and organizational needs.

Topics covered in the session will include:
•    Review of recent changes in SharePoint solution architecture
•    Introduction of the high-level solution considerations
•    In-depth comparison of strengths and weaknesses of the App Model options
•    Review coded examples that demonstrate key topics and considerations
•    Offer a framework for comparing and selecting the right solution for you


Sean Hester
Senior Research Engineer

Session 2 – Getting Started with Power BI

Level: 200
Track: IT Pro, End-User, Business
Office 365 brings new opportunities for self-service Business Intelligence in the form of Power BI. In this session, we’ll go from start to finish in implementing a BI scenario with a focus on understanding the available tools at each step of the process.


John Underwood (MCT)
Technical Evangelist

Register Now
read more
Pete SkellyJoin Us at SharePoint Saturday Atlanta on June 21st

SharePoint Online Authentication for Hybrid Environments

SharePoint Online Authentication

The flow chart below illustrates how we are authenticating applications to SharePoint Online from an on-prem context.

Our SharePoint Online environment is configured to support authentication from ADFS on-prem. In this configuration, users will usually login using their standard domain credentials, e.g. contosoeric or [email protected].

As custom app developers, we need our applications to authenticate to SharePoint Online as the domain user who is running the application.  The user should not have to re-enter their credentials in order for the application to access SharePoint Online.

If you browse the web, you’ll find several solutions and code samples:

  • MSOnlineClaimsHelper:  There are several copies of this class floating around.  This blog post includes the MSOnlineClaimsHelper and also includes an important CookieBehavior that we used for authentication when using a WCF client.
  • Microsoft.SharePoint.Client.SharePointOnlineCredentials:  This class is available from the SharePoint Server 2013 Client Components SDK .  This is a great way to authenticate both C# and PowerShell apps to SharePoint Online.  But, it requires that your app is running against .net 4.0.  This .net requirement is a problem if you need to use it within the context of a SharePoint 2010 environment because SharePoint 2010 uses .net framework 3.5.

Both of these solutions are great, but they require the username and password.  They will not authenticate to SharePoint Online using the domain login of the current user.

So, we modified the MSOnlineClaimsHelper to support this requirement.  The flow chart below illustrates the authentication flow for an MVC 4 Web API service which was created to retrieve resources from SharePoint Online on behalf of the logged in user.

In summary, the flow chart below illustrates that we must first retrieve an appropriate SAML assertion from on-prem ADFS.  Next, we must submit the resulting SAML assertion to Microsoft Online STS.

Step 3 in the diagram below, submitting a SAML assertion to Microsoft Online STS, is the hard to find ‘secret sauce.’


Now for some code…

Request a SAML assertion from ADFS.  This example is intending to use kerberos for authentication to the on-prem ADFS endpoint, 2005/windowstransport.  This is the first step of the authentication flow.

/// Retrieve binary login token from O365, via ADFS

///Url to the adfs endpoint e.g. /2005/windowstransport ///The id of the relying party trust in ADFS e.g. urn:home:sharepoint ///The logon credential of the endpoint. Use the mex endpoint in ADFS to get this credential or SPN. ///SAML assertion retrieved from ADFS ///Expire date/time of the SAML assertion private void getO365BinaryTokenFromADFS(string stsUrl, string realm, string adfsEndPointAuthority, out string binaryToken, out DateTime expires)
expires = DateTime.MinValue;
binaryToken = "";

Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel channel = null;

Uri u = new Uri(stsUrl);

WindowsWSTrustBinding windowsBinding = new WindowsWSTrustBinding(SecurityMode.Transport);
windowsBinding.TrustVersion = TrustVersion.WSTrustFeb2005;

Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannelFactory trustChannelFactory2 =
new Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannelFactory(
new EndpointAddress(u, EndpointIdentity.CreateUpnIdentity(adfsEndPointAuthority), new AddressHeaderCollection()));

trustChannelFactory2.TrustVersion = TrustVersion.WSTrustFeb2005;

trustChannelFactory2.Credentials.Windows.AllowNtlm = false;
trustChannelFactory2.Credentials.SupportInteractive = false;

trustChannelFactory2.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Delegation;
trustChannelFactory2.Credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;

GenericXmlSecurityToken token = null;

RequestSecurityToken rst = new RequestSecurityToken(WSTrustFeb2005Constants.RequestTypes.Issue, WSTrustFeb2005Constants.KeyTypes.Bearer);
rst.AppliesTo = new EndpointAddress(_realm);

rst.TokenType = Microsoft.IdentityModel.Tokens.SecurityTokenTypes.Saml11TokenProfile11;

channel = (Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel)trustChannelFactory2.CreateChannel();

RequestSecurityTokenResponse rstr = null;

token = channel.Issue(rst, out rstr) as GenericXmlSecurityToken;

GenericXmlSecurityToken token2 = GetO365BinaryTokenFromToken(token, new EndpointAddress(u), new EndpointAddress(u));

expires = token2.ValidTo;
binaryToken = token2.TokenXml.InnerXml;
catch (WebException wex)
Trace.TraceWarning("WebException in getO365BinaryTokenFromADFS: " + wex.ToString());
catch (Exception ex)
Trace.TraceWarning("WebException in getO365BinaryTokenFromADFS: " + ex.ToString());
if (null != channel)

Next, the code below will authenticate to Microsoft Online sts using the SAML assertion retrieved above, and it will return to us a SAML assertion that can be used to authenticate to SharePoint Online.

/// Retrieve a security login token from O365 given an auth token issued by ADFS

///The security token we previously retrieved from on-prem ADFS ///The url to Microsoft Online STS. ///The url to Microsoft Online STS. /// Security token which can be posted to SharePoint Online as the current domain user.
private GenericXmlSecurityToken GetO365BinaryTokenFromToken(SecurityToken FromSwapnatoken, EndpointAddress issuerAddress, EndpointAddress mexAddress)

Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel channel = null;

UriBuilder u = new UriBuilder(office365STS);

var un = new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential);

var iss = new IssuedTokenWSTrustBinding(un, issuerAddress, SecurityMode.TransportWithMessageCredential, TrustVersion.WSTrustFeb2005, mexAddress)
EnableRsaProofKeys = false,
KeyType = SecurityKeyType.BearerKey

Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannelFactory trustChannelFactory2 = new Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannelFactory(iss, new EndpointAddress(u.Uri.AbsoluteUri));
trustChannelFactory2.TrustVersion = TrustVersion.WSTrustFeb2005;
if (trustChannelFactory2.Credentials != null) trustChannelFactory2.Credentials.SupportInteractive = false;

trustChannelFactory2.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
trustChannelFactory2.Credentials.ServiceCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;

GenericXmlSecurityToken token = null;

RequestSecurityToken rst = new RequestSecurityToken(WSTrustFeb2005Constants.RequestTypes.Issue, WSTrustFeb2005Constants.KeyTypes.Bearer);
rst.AppliesTo = new EndpointAddress(_hostUri.GetLeftPart(UriPartial.Authority));
rst.SignatureAlgorithm = SecurityAlgorithms.RsaSha1Signature;

channel = (Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel)trustChannelFactory2.CreateChannelWithIssuedToken(FromSwapnatoken);

RequestSecurityTokenResponse rstr = null;
token = channel.Issue(rst, out rstr) as GenericXmlSecurityToken;

catch (Exception ex)
Trace.TraceWarning("Exception in GetO365BinaryTokenFromToken:" + ex.Message);
if (null != channel)
return token;

Eventually, I expect Microsoft or another vendor to create a version of this code that we can all use. Until then, this will be a very high value bit of code for SharePoint Online Hybrid environments. Let me know if you run into authentication issues with SharePoint Online, I’ve learned quite a bit recently through the school of hard knocks.

read more
Eric BowdenSharePoint Online Authentication for Hybrid Environments

Join ThreeWill at the Atlanta SharePoint User Group Meeting on May 19th

Atlanta SharePoint User Group Meeting

John will cover what many companies are considering in 2014: the need to tightly couple Hybrid environments leveraging both O365/SharePoint Online with an on-premises instance. The event will be held on Monday, May 19th, 2014 at 630pm at the Microsoft Alpharetta office located at 1125 Sanctuary Parkway, Suite 300, Alpharetta, GA 30009.

More info: (as found on )

As companies consider moving to the O365/SharePoint Online environment, there will likely be scenarios where companies will maintain some portion of their SharePoint data in an on-premises instance while simultaneously placing other content in the cloud.

In this session we’ll explore such “hybrid” environments with an eye toward integrating them as tightly as possible.


  • Identify and understand basic moving parts of a hybrid environment
  • Highlight opportunities for integration
  • Indicate limitations and pitfalls of current hybrid environment


John Underwood is a Technical Evangelist with nearly thirty years of software development experience. His development experience includes technical, architectural, and project management roles. He is an experienced technical instructor with superior presentation skills; proficient in delivering standard curriculum as well as developing and delivering custom curriculum. He is a co-author of the Benefits Of SharePoint 2010 As A Product Platform white paper and accompanying webinar.


As always, please register if you plan on attending this month’s meeting. We appreciate everyone registering and we do use the number of registrants as a guide for food and drink as well as room configuration. We have been very fortunate to have pretty generous sponsors as of late. With that said, please only register if you plan on being there. There is no need to reserve a spot, we don’t turn anyone away. If you do register and something comes up, please take a moment, time permitting, to cancel your registration. There is a link in the confirmation email you receive after registering to do so.

We are looking forward to seeing you all at next Monday’s meeting!

Register Now
read more
John UnderwoodJoin ThreeWill at the Atlanta SharePoint User Group Meeting on May 19th

SharePoint 2013 Hybrid Environments and Search

Looking for a New Hybrid to Drive?

Hybrid automobiles are all the rage these days. By combining a familiar technology with newer technologies, we see a new kind of vehicle that provides better mileage and less exhaust emissions.

Office 365 provides us with a similar opportunity – to bring together the familiarity of on-premises servers such as Exchange, Lync, and SharePoint with their cloud-based counterparts in a “hybrid” environment that draws on the best of both worlds.

This article focuses on a hybrid environment with regards to SharePoint and in particular as it relates to the search experience for users. We’ll look at some opportunities as well as limitations, and we’ll discuss approaches on how to configure an environment to improve the search experience.

Taking a Look Under the Hood

Hybrid O365 environments come in 3 flavors called “topologies”:

  • One-way outbound: On-premises SharePoint 2013 farm(s) can reach SharePoint Online, but 
SharePoint Online cannot reach on-premises SP 2013 farm(s).
  • One-way inbound:  SharePoint Online can reach on-premises SharePoint 2013 farm(s), but 
on-premises SP 2013 farm(s) cannot reach SharePoint Online.
  • Two-way: On-premises SharePoint 2013 farm(s) can reach SharePoint Online and visa-versa.

For many enterprises, the only option is one-way outbound because it is not feasible or desirable to open up the firewall and allow Office 365 to communicate directly to the on-premises SharePoint servers. Because we believe many enterprises will have the same restriction and because our experience is around this topology, the rest of this blog will assume a one-way outbound technology. To learn more about the various topologies, check out this guide.

Kicking the Tires

There are currently 3 integration points with SharePoint Online:

  • Search: allows search results from SharePoint Online to show up in SharePoint on-premises search results (and visa-versa) depending on the topology. This can work in any of the topologies listed above.
  • Business Connectivity Services (BCS): allows on-premises data sources to be accessible to SharePoint Online via BCS. This only works with inbound and two-way topologies.
  • Duet Enterprise Online: allows on-premises SAP content to be available to SharePoint Online. As with BCS, this only works with inbound and two-way topologies.

While BCS and Duet are interesting and useful in their own right, our focus for now is on Search.

SharePoint 2013 Hybrid Environments – Checking Over the List of Available Options

Given our stated focus on a one-way outbound topology, we know the following with regards to search:

  • Our on-premises search center(s) can show results from on-premises SharePoint as well as SharePoint Online.
  • Our SharePoint Online search center(s) can only show results from SharePoint Online.

We’ll be using out-of-the-box SharePoint Federated Search for getting results from both of our SharePoint environments and showing them in our on-premises search center. It is possible to use third-party solutions to provide different alternatives on indexing and federating, but that topic is beyond the scope of our discussion.

Here are the prerequisites for configuration:

  • A SharePoint Online tenant
  • A SharePoint 2013 on-premises farm
  • Proper configuration of server-to-server authentication

Point number three is seriously important: If server-to-server authentication isn’t setup correctly then we won’t get any results, even if everything else is setup properly. While attempting to set this up is beyond the scope of this article, this guide and this article will give us what we need to know.

Once we’ve met the prerequisites we’ll configure our SharePoint 2013 on-premises server to crawl any content we wish to show in the search results. While this is typically the local farm, it could also include other SharePoint 2013 farms, SharePoint 2010 farms, and local BCS data sources (such as line-of-business applications). Result Sources for each of these sources of data are typically created in the Search Service Application (the steps for doing this are well-known and well-documented, so they are omitted here for brevity).

After we’ve configured all of the desired local content sources, we’ve got one more left: the one for our SharePoint Online data. The configuration details are specified below and shown in the accompanying screen shot:

  • Result Source Name: SharePoint Online Results (or whatever you like)
  • Protocol: Remote SharePoint
  • Remote Service URL: <your SharePoint Online URL> (such as
  • Type: SharePoint Search Results
  • Query Transform: {searchTerms}
  • Credentials Information: Default Authentication

Next, we must answer the following question: which data is more important in terms of presentation – the on-premises data or that from SharePoint Online? This option is pretty significant because it will drive how search results are presented to users. While the answer to this question will vary by circumstances, the key here is to specify the “default” data source in order to indicate which one will take the preeminent place on the results page (as we shall see, this also affects refiners and other capabilities). The screen shot below illustrates how to set the SharePoint Online Results as the default, but for the remainder of this blog we will assume that the Local SharePoint Results are the default.

The way we’ll identify our secondary source is by creating a Query Rule in the Search Service Application (for this exercise, we’re assuming the secondary source is SharePoint Online):

  • Name: “All SharePoint Online Results”
  • Context: All sources, categories, and segments (we are staying that we want the query rule to always run)
  • Query Conditions: none (remove the default condition provided)
  • Publishing: Accept default value
  • Actions: add a Result Block
    • Block Title: SharePoint Online results
for “{subjectTerms}”
    • Configure Query: {subjectTerms}
    • Search this Source: SharePoint Online Results (Service)
    • More Link (substitute the link for your SharePoint Online instance):
    • Block Location: This block is always shown above core results
    • Routing: leave blank

Note that with SharePoint 2013, much of this configuration can be done within a site collection and doesn’t have to be done at the farm or tenant level.  We’re just configuring at the farm level to make it the default for all site collections.  These configuration changes can be overridden at a site collection as we’ll see in a later blog post.

Let’s Take This Cream-puff for a Spin

Issuing a query in the search center should show results as follows (assuming we’ve entered search terms that get matches in both environments):

Search Results

As we exercise the results, it’s worth noting that the default Result Source sets the agenda for refiners; they are based on the default result source, not secondary. However, if we click one of the refiners, both the default and secondary sources refresh based on the refiner selected.

In addition, even though we can page through results from the default result source, we only see the block of results from the secondary result source on the top of the first page of results.  Incidentally, the Result Block  can be configured to show “within core results”.  In this case the secondary results will still be in one block, but may not be at the top of the page or even on the first page based on relevance.

What if You Run in the Ditch?

Here are some things to check if the results don’t match expectations:

  • Misconfiguration of Query Rule or Result Source can cause missing or incorrect results
  • The hybrid server-to-server has to be configured properly – some good troubleshoot tips are documented here.

More Options to Close the Deal

What about People Search? Videos? Conversations? How do we get search results initiated from SharePoint Online to show us integrated results containing both on-premises and online content? We’ll consider these in future installments. For now, get out there and drive the wheels off that new “hybrid”.

read more
Kirk LiemohnSharePoint 2013 Hybrid Environments and Search

Hybrid SharePoint Environments Webinar

Hello and welcome to today’s webinar, my name is John Underwood and today’s topic is Hybrid Environments in SharePoint 2013. I appreciate each of you taking the time out of your Friday afternoon or it’s Friday midday to join me. I see from the attendee list some of you are familiar faces that have attended our events before. If you’re in that category thank you so much for doing that. On the other hand if you’re new just a little bit about me. I work at ThreeWill , my title there is technical evangelist. In simple terms that means I get to do a fun combination of coding technical work and also presentations, video production, speaking at groups and so on.

ThreeWill’s a great company and I feel really fortunate to be an employee there. Contact information if you need to reach me during or after the event you can use my email address. I don’t anticipate any outages today but sometimes things happen. If we were to have an interruption and you couldn’t hear me or you couldn’t see what was going on in the screen in the worst case you could shoot me an email and it would show up on my. You can also use that after the event if you have some follow up questions or questions about other events that we might be holding in the future. Then always happy to pick up Twitter followers so you can see my Twitter handle there if you’d like to follow that.

All right. Usually when I build a presentation I make some assumptions about the audience and I like to share those. It gives you some expectation of what I’m trying to address and do and how I’m trying to reach you. The first members of audience today to consider are those that might be in a management position or a business owner or even a user. For you really the question is what on earth is a hybrid environment? Why would it be used and why would I even consider having one in my enterprise? We’re going to talk about that. If you’re a SharePoint administrator you’re likely going to think anytime we talk about doing something in SharePoint what’s it going to mean to me? What’s it going to mean to our network? What’s it going to mean to our servers, to our security profile and so on.

We’ll talk a bit about that. Then the roles that I find myself in often, that of a developer, what can I do to help? How can I take these basic [inaudible 00:02:22] of a hybrid environment and customize it to make that as useful and seamless as possible for my customers and my users? Like a lot of things that are one size fits all there maybe some parts that are perfectly relevant to you and others that may be less so. I hope at the end of our roughly hour together that you’ll be able to say, “Okay, in this role I now understand a little bit better about what a hybrid environment is and how we might use it within our company.” Given that what are going to talk about today?

We’ll, first we’re going to talk in a somewhat general sense about moving things to the cloud. Really this will be a review for some of you and an introduction for some of you on why on earth we’d even think about doing this and what are some of the decision points? What I find as I deal with our customers is that this is perhaps the most important part and it’s just trying to decide whether you should be going to the cloud or not. Some things sit very well there and maybe other things not quite as much. Then once we’ve talked about having things in the cloud in a general sense then we’re going to talk specifically about SharePoint 2013 Hybrid Environment and what that’s going to mean to you as an owner or user of SharePoint environment.

Then from there we’ll talk about some of the practical challenges. We’re going to see that the hybrid environment topologies or architectures that Microsoft has put together for us provide a lot of functionality. There are some places at the edge where we may have to make some customizations or maybe just have our eyes open as to what the capabilities are and are not. Then ultimately these practical challenges are going to set up case study. We’ve actually had the good fortune of implementing a hybrid environment for a company here in Atlanta. I’m going to talk a little bit in some general terms about what we did for them and the architecture and how we were able to smooth some of those rough edges and provide them with a really useful setup.

Let’s talk first in a general sense about going to the cloud with any of our enterprise systems. There are a lot of positive things about going to the cloud in theory. The first of those is just getting out of the data center business. I can tell you that I work at a fairly small company and this was a constant concern to us of, “Okay, we’ve got servers on site but we don’t really have the resources to mange and protect them the way that we might like to.” In some cases be it an economic decision or a safety decision it just makes sense to get out of the datacenter business and let that be someone else’s problem. An analogy I can think of if you were to go back to some point in our history a lot of big manufacturing companies would actually have a power plant there on the site.

In effect they would make their own electricity but somewhere along the way it just got easier to make that someone else’s problem. That might be a motivation for you using or moving some of your systems to the cloud. Another one and I think this one is somewhat of a … well, it’s big one. The burden of managing and patching software. Moving to the cloud gives us an opportunity to reduce that because in effect we’re turning our software over to a party who is solely responsible for doing that kind of thing. When we think about patching software we’re certainly thinking about maybe getting the latest new whiz-bang teacher. Even more than that is this notion of risk reduction on the un-patched software that we have.

I’m sure Microsoft and a lot of other vendors could tell you stories about the percentage of their customers that don’t apply patches on a regular basis and what kind of security risk that represents. By moving to the cloud we’re really engaging in a practice that will let us lower that risk. The other thing, I know this is going to be a cornerstone of SharePoint 2013 going forward is this notion of continuous innovation. Instead of having to wait two or three years for the next big bang release in order to get a new useful feature those features will come more regularly. Because we’re in cloud environment that is somewhat controlled by the vendor or the provider of that software they’re able to roll out those innovations more quickly.

For us we’re able to take those on more quickly without this giant conversion effort to move up to that. Another benefit of the cloud and this one is a big one is that you pay only for what you use. Pardon me. I’ve seen various studies that talk about the number of computers that we have in an enterprise and what percentage of their CPU capability is actually utilized on an ongoing basis. In some cases it’s a tiny fraction. We’re paying to power and cool and run these devices but we’re really not using them to their optimum. Likewise we have this notion that we have documents sitting around, we’re paying for the entire disk even though we may be using only some portion of that disk.

Bottom line here is that when it’s applied correctly we have a lot of opportunity for good things when it comes to moving to the cloud. Now, I’ve been in the industry long enough, since literally the early to mid 80s that I’m skeptical of any new panacea. I guess maybe a better way to say that is with every major advance we make there are some major positives that come out of that. We also want to have our eyes wide open to the risks or the downside. I want to just let you think about this a little bit. The theory is that everything is going to be golden but the reality is that there are some hard questions that we should probably ask.

The first of those is if we get out of the datacenter business do we engage a vendor that can provide the needed service levels and can they do it better than us? On the one hand you might say, “Well, gee they have a big staff and the expertise and they can do a better job than us.” On the other hand it is a one size fits all environment so knowing the vendor that you’re engaging is a pretty big deal. Another thing that not only maybe has some security around it as far as practical matters but maybe even just feeling in control versus the loss of control and that is my company’s important data is on a physical location now that I don’t control.

The reality is we may actually be turning it over to an environment that is physically hardened and is actually safer than where we have it now but because we can’t walk down the hallway and touch it there’s a little bit of anxiety maybe that comes on our part. Some other things to consider, yeah, the software gets patched but if we’re talking about software were we’ve done a lot of heavy customization there’s always the risk that those patches or those updates would break our customization. What that means is that if we’re just using the software as is they’re probably in great shape. If we’re customizing it we have to keep our finger on the pulse of when patches are rolling we have to be sensitive and attentive to the fact that those changes are coming.

Continuous innovation is a good thing but it probably means there’s some expectations sitting on the part of our users. A user goes on to a page and all of a sudden there’s a new feature there and they don’t know about it and they may be taken by surprise or maybe a little disoriented by that. That probably is a burden that we have to carry within the company that we’re just making sure that we’re keeping our users informed on what is coming. Now, for the pay only for what you use I think there’s two sides to this. There’s mostly a positive side where the user is paying only for what you use. On the other hand if you’ve got a big server that’s got lots and lots of documents on it the last thing you want to do is just take a bulldozer and shift those up to the cloud.

Because the reality is a lot of those documents for all practical purpose are never going to get used again. They contain obsolete data and the cost of keeping them in the cloud even though you’re paying only for what you’re using is probably going to be higher than keeping them in some kind of on-premise stores mechanism. Another thing to think about even if you legitimately need to move all your data to the cloud depending on where and how you’re talking about moving it you may not have the opportunity to ship some kind of device and have it transferred locally at a datacenter. You might actually be looking at having to upload that and depending on the pricing model of your environment you’re going to be paying a heavy price to move that much data through the pipe.

Then finally both the curse and the blessing of an online or a cloud environment is that it’s accessible from anywhere. What that means is that perhaps that’s a delicious inviting text surface to a would be hacker particularly depending on the kind of business that you may be in. Now, don’t get me wrong at all these questions the truth is I’m pretty big on what the cloud has to offer [inaudible 00:11:28] and particularly in some business settings it makes total sense together. ThreeWill as a company is actually betting on that but always we want to just go into things with our eyes wide open and we want to make sure we’re asking the right questions. Now, here’s what I think for a lot of companies.

For a lot of companies if we honestly investigate and answer these questions what we’re going to find is that the answer is some of the stuff should go in the cloud for a variety of reasons and some of the stuff ought to stay on site. In a general sense when we talk about a hybrid approach or a hybrid environment we’re talking about that very thing. Some set of data or some set of apps remaining on-premise and others being moved to a cloud environment. Now, there might be a couple of reasons that you would want to do that. Maybe it’s just a better return on your investment for your dollars. The pay as you go model suits your world better.

Maybe we have international users that are in small clusters and we just can’t maintain datacenters close to them. Maybe we’ve got mobile users and a cloud approach would give us a better way of meeting their needs. Another thing that would be a hallmark of such a hybrid approach is for the things that don’t really need to go to the cloud we’ll keep them on-premise. Maybe that’s data of a sensitive nature, maybe that’s a data that has to remain within a certain country’s borders. You may or may not be aware of the fact that there are certain kinds of data that are not supposed to be transported across boundaries between countries. That will drive us toward an on-premise.

Then if we’re going to do some kind of hybrid approach the biggest thing we want to do is make is seamless. We don’t want our users having to wring their hands about what goes where. Either that means some education and some guideline or wherever possible maybe even some software assistance that says, “You put your stuff here and we’re going to make sure that it gets to the right place.” Those of you who are familiar with the concept of a document center and a record center and a notion of a drop off over inside of SharePoint that might be a model that works great here. Where you always have your users take their documents to a particular destination.

Then we have a set of automated rules set up to decide whether those end up on-premise or in the cloud. Then probably the last one is the biggest and most important and in fact something we’re going to focus on in today’s talk and that is making the data findable. Making it easy to find and making it easy to find in such a way that a user doesn’t have to get a lot of conscious thought to where is that data? They just know the criteria of what they want and then we ought to be able to serve that up to them. Then given that kind of overview about online environments or cloud-based environment in general and some of the things that we might consider when we do a hybrid model what we’re going to talk about next is the specifics on how Microsoft has provided that capability in SharePoint 2013.

We refer to that as a hybrid environment. In simple terms it is a combination of SharePoint Online or if you prefer Office 365 and SharePoint on-premise. The notion there is that we’re going to let some things stay on site and some things move to the cloud. Now, a little more detail here on why you might not move certain things to the cloud. The first sub bullet that you see there custom farm solutions, that is a big one. We’ve done a lot of SharePoint customization over the nearly 12 years that we’ve been in business and a lot of those were written as farm solutions. Those weren’t great in an on-premise setting but they’re never going to be supported in the cloud.

If you have existing SharePoint applications that are built around farm solutions those are going to have to stay behind until you reach a point where it makes economic sense to rewrite or re-engineer those for cloud. Another thing is when we’ve written SharePoint customizations or maybe even just used BCS to integrate with internal applications. Now, you will see that we do have some BCS capabilities in the cloud and I’ll talk about those. There may be cases where the data that we’re integrating with is buried so far within your networks, so far behind a firewall that it just doesn’t make practical sense to try to integrate that from the cloud.

Another reason that we might remain on-premise and I spoke about this a little bit a moment ago and that is migration cost. In particular those of you that have done a lot of SharePoint work and you’re thinking to yourself, “Well, we’ll just detach the content database if they’ll reattach it to another syncing server and boom we’ve migrated.” That’s not really going to happen in Office 365. You’re not only thinking about the storage cost of that data over the long term but you’re also thinking about the bandwidth cost to move things up. I think that kind of [inaudible 00:16:33] forward or drives forward a model where a lot of companies are going to treat their cloud instance of SharePoint or Office 365 as kind of a green field where they’re starting clean.

That may give us some nice opportunities to be a little more organized, to maybe try to avoid some SharePoint sprawl that we’ve had in the past and then we let the stuff on site continue to stay there and live out its useful life. Then the last thing to think about when it comes to on site versus in the cloud, I kind of hinted at this a moment ago. Beyond just the notion of whether it is more secure in my building or in Microsoft’s building there is this notion that there are some legal parameters about where you store certain kinds of data. There’s the Safe Harbor agreement that has something to say about how data crosses international borders. In a more general sense that’s known as data sovereignty.

Bottom line is that you may not even know that this is a risk because you never really thought about putting your data in cloud before. Microsoft has the capability to make sure that you’re able to use the cloud environment and still remain in legal compliance here. Bottom line is you’ve got options and a hybrid environment is just going to let you make a good choice about what you move up and what you keep down. Now, if we’re going to go with this hybrid environment why or maybe how do we connect them? What do we really mean here when we say a hybrid environment? Well, one of the ways that we can integrate is by making use of our own premise active directory with SharePoint Online.

Now, there’s a couple of ways that this integration can go but the bottom line on this is that what we’re trying to do is make it so that we only have to maintain information once. I think what you’ll see is that as we run across the gambit here some of this is going to be automated, some of this is going to be a manual process and some of this may result in us having to write some custom code. Then beyond that really the thing that your users are going to see the integration points. Now, I would tell you that for most of us based on what I’ve experienced with a hybrid environment the biggest integration point is going to be search.

We’ve got some population of data that’s in the cloud for whatever reason, we’ve got some population data that’s on-premise and we want to make the searching of that data as seamless as we can possibly be. When we get into our case study in a few minutes you’re going to see that we exerted a great deal of effort there and I think that we were also able to really give our users a seamless experience. On that there’s also integration questions of BCS. Then for those of you that use SAP there’s a product called Duet that allows you to do some integration between SharePoint and SAP. A part of this hybrid environment just has to do with whether or not Duet will work with a certain topology.

I’m not going to focus on that one a lot because we were not providing that capability for our customers but for those of you that might do that you’ll see it mentioned on a few sites and you can just makes note as to whether it’s going to work in the topology that you choose. Then what do I mean by topologies? Well, you might prefer the word architecture. Essentially Microsoft has come up with some recommend practices for connecting an on-premise and Office 365. Then what we’re going to see is that which one you choose is going to be driven in large part by what functionality you’re willing or needing to have and what kind of security trade-offs your willing to make in order to achieve that.

The three options that we’re going to see the first is called a One- Way Outbound. The second is called a One-Way Inbound and then finally the Two-Way or bidirectional. Now, one of the challenges with labeling things with Outbound and Inbound is that you can get a little confused about the perspective. This may be a note worth making throughout this whole discussion of topologies when we say Outbound and Inbound it’s always from the perspective of your on-premise server. That’s your ‘home’ and then we’ll be going Outbound or Inbound based on what we’re trying to accomplish. Then with that you can see a little diagram here that’s been provided by Microsoft called a One-Way Outbound topology.

In simple non-technical terms SharePoint server 2013 that’s on-premise can see Office 365 and it can see your SharePoint Online data in side of that. Then it’s eligible to provide some kind of integration based on that. Now, the very simple version of that is that you’re going to get search but you’re only going to get integrated search in one place. Notice because we don’t have any connectivity from the cloud to the on-premise we can’t show on-premise results in Office 365. However, the opposite is true when we’re serving up on-premise search result pages they can not only show search results from the local farm or farms but also from SharePoint Online.

You can imagine this being a model where you would always want to drive your users toward a local search page that’s in the on-premise farm and then whatever it is that we’re searching for we’ll be able to find it both locally and in Office 365. I’ll just go ahead and spoil the surprise for you and tell you that for the customer that we worked with this is the approach we chose and we’ll talk a little bit about that later. What that means is that as we’re dealing with their users we’re really trying in a lot of cases to redirect their users into using the on-premise search pages so that we can present both sets of results to them. Now, the downside here on this topology BCS connectivity from the cloud to the local instance is not going to happen [inaudible 00:22:36] integration.

Now, I would say based on our experience with this customer and the discussion that we’ve had with other customers this is probably going to be the most common way of doing this integration and the reason for that is really simple. Most people no matter how well it’s thought out, how well it’s presented and how well it’s implemented they’re going to have a problem with the cloud environment being able to connect in through their local environment. On the other hand if a company has the desire, the need and the wherewithal to do that that’s really what the other two options are about, some kind of inbound connection. Then the second one is a One-Way Inbound.

You can see clearly from the diagram here that the differences that Office 365 is going to have to be able to go through your environment and be able to connect to your on-premise environment. The capabilities here are just the opposite. Now we can indeed show both SharePoint Online results and on-premise result on a SharePoint Online search result page. We would not be able to do the opposite of that locally. If you think about the two that I’ve just shown you here probably the biggest takeaway was this, if you’re going to be in a world where SharePoint Online is really the place to be and then, “Oh yeah we have some stuff locally that we’d like to be able to serve up” then this is the model that you want to take.

On the other hand if having an inbound connection is just a show stopper or the on-premise is still your primary place and Office 365 is more of a secondary place then you would use the One-Way Outbound topology that we saw earlier. Then finally obviously we get the most functionality by having a bidirectional kind of topology. In this case both environments are capable of showing search results from their own environment and from the other environment. We have all of our BCS connectivity options open, we also have our options open when it comes to doing connectivity using Duet. Really the bottom line here is just what am I willing to take in terms of open or not opening my firewall? Then based on that I’m going to have certain levels of functionality.

Luckily for us the customer found they were really adamant about not opening their firewall. The truth was we were able to give them what they wanted just by using the first of three topologies. All right. Before I go into the case study and talk some of the details of that now I want to just talk about some practical challenges. Ultimately this is going to be a set up for how we solved things. I hope you’ll get two things out of this, number one you’ll see how we were able to go in and solve some of these problems. Then beyond that you’ll also think about in your own world, “Okay, if we do things this was what’s it going to mean to us?” The first of those has to do with user profiles.

Right now when you talk about a hybrid environment you’re talking about two separate sets of user profiles, two completely unconnected [inaudible 00:25:47]. Now, Microsoft has talked about it in some of the technical briefings that over the horizon they see a need for solving this problem and that there’s going to be some future integration opportunities. For today those don’t exist out of the box so at the very least if you’re going to have user profiles in two places and you’re going to have users that are going to be in both places you’re going to have to do something about keeping that straight. Maybe that’s just a set of procedures and policies that have to be followed to the letter or maybe that’s some kind of code or integration or customization that helps them do the right thing.

You’re going to see in what we did for our particular customer that this was a big part of what we did for them. Trying to make it so that the user profile is only updated in one place and then we properly propagate those changes both to the cloud and to the local on-premise environment. Another thing that we think about here both in user profiles and data is this notion of the single source of truth. This speaks to the fact that we’ve either got to have some automation or some darn good policies to make sure that people put data in the right place. Perfect example is we might have a proposal we’ve done, person one stores it on-premise, person two expects to find it in the cloud.

They don’t see it in the cloud so they create it from scratch and now we’ve got two copies of the truth and which one is the correct one. Again, some combination of automation and polices help us manage this. Then when it comes to user profiles if we have the policies in place and we tell our users to follow them we may be with a really attentive, really educated user community we could get that done. The truth is even attentive, well meaning users are probably going to reach this point where they go to change something and they don’t even realize they’re changing it in the wrong place. They just know they’re on a profile page and they’re going to update their expertise so that people will know about it.

At some level you probably reach a point where if you’re truly dedicated to keeping these user profiles in sync you’re going to have to have some sort of mechanism to force users to make the change in only one place. What you’re going to see is that that’s going to be some combination of out of the box capabilities along with some custom code to make that work. Then the last thing making sure that people search works correctly you may consider showing up people results on our search results pages. We want to be careful that we’re doing that from the so called single source of truth. Whether it’s going to be the cloud profile or the on-premise profile that rules as the master, we want to make sure that we’re featuring those properly in our people search.

Now, one other kind of challenge that we need to think about when it comes to this sort of thing is SharePoint 2010. If you looked really carefully at the diagrams that I provided for you just a moment ago they all exclusively said SharePoint 2013. The hybrid topologies are built around that both locally and in cloud. Then what are those companies that are slow to upgrade? [inaudible 00:29:04] if you’ve worked in the SharePoint community you know that there’s a lot of drag when it comes to going from one version to another. That’s not necessarily saying anything negative about the software or the customer, it’s just a big piece of software and it’s a non trivial task to upgrade it.

In that case we’re going to have to think about how to integrate those two. What you’re going to see in the solution that we actually proposed and are implementing for our customers in that at some level it’s going to be important. It’s going to be a requirement that we have SharePoint 2013 on site. Then if the customer is not in a place where they’re ready to move their entire on-premise to SharePoint 2013 what we will have to have is at least one server there that can act as an integration point. I’ll talk a little bit more about that as we get into the case study and even back that up with a few diagrams.

Now, when it comes to showing search results we’ve got to think about how we’re going to integrate the local results and the cloud results. We’ve already seen from our previous slides that it’s going to depend on the topology we’ve chosen as to which of these are even possible. Beyond that we’re going to see that the concept of a refiner is going to be a little bit different in this world. As much as we would like to be able to do refiner simultaneously on cloud and local data the truth is there are some limitations there. Yes they work and yes they are going to refine the results but we’ll see that we have to think about what are the implications of using or depending on refiners in a hybrid environment.

Another thing we have to be aware of is security trimming. Now, the good news is we do have security trimming and our experience and our proof of concepts leading up to this project with our customer definitely proved that out. The one that you have to be careful about is not so much that somebody is going to see something that they’re not supposed to see but the opposite problem. That we may in some cases have some over-trimming depending on how and when a person has authenticated. There’s always this notion that you’ve got to be aware of them authenticating both against the cloud environment and the on-premise environment. That’s going to influence us properly trimming their search results.

With that let’s take a moment and talk through our case study and we’ll get into some specifics on how we were able to implement this system for our customer. As I said Fortune 500 company they have a big on-premise investment in SharePoint 2010 and then for a variety of reasons they’ve decided that Office 365 and SharePoint Online is a product that makes good sense for them. They’re in the process of beginning to move some of their data into that environment. As far as their local on-premise servers they’re not in a position where those can be upgraded to SharePoint 2013 immediately. As I talked about before we’re going to have to use SharePoint 2013 on-premise as a shim to integrate with those 2010 servers until some future point when they’re able to upgrade.

Then of all the things that we provide in this solution the two biggest are integrating search results and dealing with user profiles. The things that I mentioned earlier when we were talking about some of the details. As much as possible we want to be able to show integrated search results between cloud and on-premise data and we want to have a single user profile identity. We want to make it so that it is impossible for somebody to do the wrong thing with that profile. Then I’m going to give you the words first and then I’ll give you the pictures because people do better with one or the other. If you remember back to our three topologies earlier we chose the One-Way Outbound topology.

The decision on that was very simple. It gave us enough functionality and at the same time they were simply unwilling to consider an option that meant opening their firewall. When it came to dealing with user profiles the SharePoint Online user profile was dubbed to be the profile of record. That was the source of truth. One of the reasons they chose to go with that approach is that there will be some users in this community that are cloud [inaudible 00:33:34] users so that made that decision simple. Then around that we were able to provide some additional customizations. Some of that out of the box and some of that custom code that would enforce that so that when a user went to look at a profile or went to change a profile they would always be seeing the correct data and they would always be changing the data in the correct place.

I’m going to say that again because that’s really important. That’s not to say that someone would never see data that came from a local profile because in some cases that’s going to happen. When someone is making a change we always had to make sure that they were making that change in the cloud and then at some point those cloud changes would propagate to the on-premise environment. Then as I hinted at a couple of slides ago we did have to [inaudible 00:34:24] a SharePoint server 2013 instance inside of their company to act as a search integration point. Think of it this way it says though we’ve got a SharePoint server that has a search center and nothing else it’s not going to be serving up any non-search sites, it’s not there for teen sites.

It’s just a way for us to get our hybrid topology set up. Then obviously that SharePoint 2013 server is going to be responsible for crawling the 2010 content for indexing it and then presenting that alongside whatever other data we might want to show. Again, those of you that do better with pictures as opposed to words that’s the 30,000 foot view of what we did. We’ve got Office 365, we’ve got SharePoint 2013 on-premise just for the purpose of search integration. Those are put together with a One-Way Outbound topology. Then some things that I’ve not yet mentioned but I’m going to talk in great detail about in just a moment and that is in the lower right corner of this diagram.

Most of you may be aware of this but for those who are not when you go to modify your profile as a user what you’re really doing is going to some place inside of the my site host where all of your my sites are hosted. Essentially what we did here in order to ensure that they’re always modifying their profile in the cloud as opposed to locally is we actually put some custom redirection in here. In effect when a user clicks on something that will take them to that place we’re going to catch that and send them to the proper place. There’s really not a practical way for a user to arrive at the local profile, every time they’re going to get shipped off to the right place.

We’ll talk a little bit about how we did that and how that happens. All right. We’ve already said that we decided for practical reasons to make the cloud profile the one that was the profile of record. However, we’re talking about a new environment where we’ve got a lot of existing user profiles on-premise. As the cloud is going to be the place of record then we’re going to have to get those into the cloud. This was one of the cases where we had the rights and custom code on behalf of our customer. Essentially we wrote a program that does a one-time read time version. It’s going to go in, it’s going to read all of that local profile information and then it’s going to create the profile in the cloud and spill in all of the details.

At some moment in time in the process of throwing the switch and opening the new environment we would run the spin one last time. Everything would be in sync and then immediately we would have to put in the mechanism that would keep a user from changing things locally. Now, the ongoing challenge there is that we also had to write code that’s going to synchronize changes from the cloud back to on-premise. We’ve put up the proper barriers to make sure that users are always customizing and updating their profiles online and then given some lag of time eventually our synchronization job will run. It will find all those changes in the cloud and it’ll pump those back to on-premise.

Again, it’s one of those things where when you run it you just have to decide what sort of latency you’re willing to live with. I would say in most cases when we’re talking about updating user profile data hours at most days would be suitable, certainly not weeks or months. That’s just a factor that would govern how often we would run that synchronization program. Then as I mentioned in the diagram a moment ago the on-premise profiles are practically hidden. We made it so that it’s impossible for a user to reach one of those. Again, let’s look at it in picture form. The first thing we’ve got to do is we’re going to go into on-premise and we’re going to configure the location of our My Site host.

This is something we would always do but in this case the importance here is that when you look at the URL for the My Site host what’s going to happen is when a user goes to that URL there’s not actually going to be a My Site there. There’s not actually going to be a profile page. Instead what there’s going to be is a bit of custom code. It’s essentially sitting there waiting for those requests and then anytime it sees that a user is trying to navigate to their profile information on their local My Site it’s just going to catch that and redirect it intelligently to the right place online. For the user all they know is that they clicked on something that was going to take them to their profile and they landed on a profile page.

In fact if we see the usage that’s the very experience they get. They go up and they click on their name, they choose to go to their profile or to their about me page, that’s going to take them to the local My Site host where the redirection logic is waiting. That will then forward their request to the cloud and they’re presented with a profile page. If you had a super, super observant user they might be able to notice this in one of two ways. One way they might be able to notice it is that the URL would be different. I would argue that for most users that’s not something they would pick up on. The other thing that would be a little bit different in the case of our customer is the fact that they might have started on a 2010 page and wound up on a 2013 profile page. Otherwise it’s seamless.

Again, because of the way we implemented the solution even if a clever user were to be able to deduce the actual URL of their local profile information as soon as they tried to manually type in a URL and navigate there they’d just get redirected right back to this place. It’s a pretty sound way of doing things. Then again once our test user in this case Kim has made whatever changes she needs to make from there the scheduled sync job will go in, find any changes she’s made and then replicate those or synchronize those back to the on-premise. Ultimately her data is going to be the same in all the places. Now, let’s talk a little bit more about some of the practical aspects of how we were able to integrate search on behalf of our customer.

As we’ve talked about before we installed an instance of SharePoint server 2013 on-premise, it was responsible for crawling and indexing the 2010 content that was on-premise. Then it was also there to serve up search results. That last part is really important, we’ll talk a bit about why that is so important. Bottom line here is that it’s a SharePoint server that’s really only serving one role. Now, something that would be really nice but just isn’t practical today and that is the interleaving of on-premise and cloud results. To that another way it would be awesome if you could serve that up as though it was one giant result search. There’s really not a way to do that, at least not at this time.

The better way to think about this is that as you’re integrating data each set of data that you’re going to integrate are going to be configured as result sources. You can think about a result source for cloud documents or for cloud users or for cloud social activity or any of those things. Then in effect we’re going to be able to take those result sources and integrate them on a certain page. Now, the other thing to think about, because of the topology that we’ve chosen here if we show them an on-premise results page it is able to show data both from a local result source and a cloud result source. In fact the way to think about this is the local data would be the default result source and then the cloud data would be shown as a secondary result source.

We’ll see with the screenshots here in just a moment. Really what we’re talking about with that secondary result source is just showing it in a featured box and we’re going to talk about the configurability of that. then the last option when we’ve got someone on a cloud page due to the One-Way topology that cloud search result page can only show things from the cloud. Another thing that we attempted to do on behalf of our customers here is as much as possible we try to send them on-premise to do their searching. There is actually some custom logic in the cloud search center that as when a user arrives here if they have on-premise capabilities then we’re going to redirect them to the on-premise search center to do their search.

In this case by connected or by having capabilities we’re really talking two things, do they have a VPN connection and then do they have the proper credentials. If it’s cloud only user they’re going to see cloud only result [inaudible 00:43:14]. If it’s a user where it’s appropriate even if they manually navigate to the cloud search center, in effect they’re going to wind up redirected back to on-premise so that we have the opportunity to show them the data from both places. Again, just trying to make it as easy and fool-proof as possible for our users to get what they need. Again, just a little screenshots here that show some of the configuration.

You can see that in our own premise server we have actually set up the various result sources. SharePoint local data is set up as the default and then any of these cloud result sources that we’ve configured and actually we use as secondary or featured results that we show on the page. Then from there what does a featured result look like? Well, it’s really just a block and you can see a little screenshot that’s on the screen here. In this example it’s configured where the cloud results are showing in a block on top of the page. Then from there the on-premise results are below that. Now, I’ll talk about some practical limitations of this in just a moment but for now a couple of things that you want to be aware of.

Number one, you have some configuration choices on where this block goes. The options that’s been chosen on this example is to simply place it at the top of the page. User goes to an on-premise search page, they’re always going to see cloud results in a block at the top and then that’s going to be followed by on-premise results. Another possibility here is that you can actually take this box that’s featuring the secondary result source and you could configure it to show in line based on its relevancy. Again, I have to say we’ve done a little research there and it’s not immediately obvious whether it’s the relevancy in the first item or the relevancy of all the items.

Essentially what would happen is in that case it would be shown further down the page or even on subsequent pages depending on the relevancy of the data. Again, you just have to make a choice as an organization do you want to present this say, “Hey this was always in the cloud” versus showing it in a block in line and maybe having it further down the page. Another nice thing though about the block is that regardless of where it is if we need to see more detail on that the end of the block always has a show more link. If someone said, “No, I want to go to the cloud and I want to drill in just on this” then they would have the ability to do so. From there they’d have all the full capabilities that they needed.

I would tell you that based on our experience and based on the criteria that they user set forth or that the customer set forth we did a really good job of providing them with a seamless environment. I think a lot of that just speaks to the thoroughness of the hybrid topologies that Microsoft has provided and the good out of box support that we have. Having said that there were a few loose ends just things to think about not necessarily show stoppers but some things that we’d want to be aware of. One of our biggest challenges was getting the profile picture right. Based on some research we’ve done it appears that deep in the dark halls of SharePoint that in some cases that picture is being stored in as many as four different places.

Depending on how you place it and where you put it and what happens we still may wind up with differing results on pictures. A couple of other things that can contribute to that conversation not only do we have this concept of a SharePoint having a picture but Outlook and Lync. If you’re using those in Office 365 they also keep their won profile pictures. Trying to get all of that perfectly synchronized can be a challenge. Another thing that was a challenge was trying to synchronize the picture between the online profile and the local profile. One of the ways that we were able to solve that is we actually wrote a very simple little web service that would allow the local profile to use a URL that would request the picture from the host.

Instead of depending on these locally stored picture we would just dynamically [inaudible 00:47:24] from the cloud anytime you needed it. A little bit of custom code involved that are not terribly complicated and it did get us much closer to that idea of having the same picture everywhere. Really more than anything that’s probably just a user expectation of, “Hey if you go to your SharePoint profile and you change your picture that picture is going to show up in a lot of places but it may not show up every single place. Really probably the better procedure is if you want to change your picture change it in SharePoint On line, Outlook Online and Lync Online.

All of those in Office 365, and changing all three of those is probably going to give one the best opportunity to have the same picture everywhere. Another thing to be aware of you’re probably used to seeing search pages where we have a few results and then we have a people section and a video section. While we still have that capability we can’t have that capability nested within our results, that box that’s we have at the top of the page. In effect you would get that for the local data or the on-premise data but you wouldn’t necessarily get it on the cloud data unless you actually clicked through and went to the show more. Once you arrive in the cloud page then you get the full fidelity of that data.

Another thing to be aware of, refiners, I hinted at this a moment ago. When you go to a page that is showing both on-premise data and cloud data you’re going to see refiners. The set of refiners that you see are going to be based only on the default result set. If there were something in our cloud data that might hint to another refiner we’re not going to see that refiner if we’re on an on-premise page. We’d actually have to go to the cloud to see that additional refiner. Now, having said that the refiners that we do see actually work on both sets of data. If we were to go over to the left and click on a refiner for word docs only when the page refreshed not only would our on-premise be subject to that refiner but the cloud data that we were showing would be subject to that as well.

I don’t think that’s a huge show stopper it just means that the number of available refiners maybe under-reported in some cases if they were being driven by data from the cloud. Then I believe I hinted at this one earlier as well. Security trimming works but depending on the authentication sequence there may be some circumstances where over-trimming would occur and someone might not see a search result. Even though technically speaking as a human being they were eligible to see that data. All right. We’re pretty close to the top of the hour here let me just do a quick recap for you.

The biggest thing as exciting as it might be to close your data center and move everything to the cloud as a business person, as a user, as an administrator you want to make sure that you know why you’re going there and that you’ve asked the right questions and you’ve got a good reason for making that move. If you decide to make that move in the context of SharePoint Microsoft has done a great job of giving us topologies and guidance on how to integrate those environments to the greatest degree possible. When it comes to getting everything seamless, getting it right with your user profiles are going to require the greatest level of customization.

Pretty much everything we did with search with the exception of maybe some redirection in this out of the box stuff that we configured. For this particular customer we did have to write some code to manage the user profiles. Then hopefully the last thing you’ll take away here is just the fact that we’ve done this. We’ve actually done it for a customer, they’re using it and we did a good job of meeting your expectations. If you’re looking some guidance on how to make this happen in your world we hope you’ll turn to ThreeWill. At this point I know that for all of you it’s a Friday afternoon and so the likelihood of you sticking around any extra time is probably pretty slim.

Having said that I’m always happy to answer some questions. It does look like there a couple of questions in the question manager so what I’ll do is open those up and read them. For those of you that are going to depart let me just thank you again for joining us. It’s always a big deal to take time out of your day and so I hope you were able to get some good information. Remember, if you have any follow up questions you can reach me [email protected] Also if you’d like to be able to share this presentation with others we’ll do some video editing of it and we’ll have it up on the Internet in the coming days.

If you have any questions about finding that you can either go to or you can email me directly. Again, for those that have to depart thanks for your time. Then for the rest of you I’m going to open up and just have a quick look at some questions here. One of the questions was why have the redirect instead of entering the address directly in SharePoint? That’s a good point. At some level we could have just pointed the local to the cloud. I think what was really the driving force in the redirect is that there was always this fear that a user could get there some other way. As a practical example maybe a user went to their profile in the old 2010 days and they’ve bookmarked it.

When they go to that bookmark they’re going to go right back to that page as opposed to going through something to get there. By setting up a dedicated place that was a dummy My Host and then having our won logic there waiting for things to redirect it just made sure that nothing slipped through the crack. That was a really good question there, thanks for asking that. Then that looks like all of the questions that we had so I’ll hang around for a moment and see if there are any others. Again, for those of you that have got to depart thanks for your time.

For the rest of you I’ll hang around for about five minutes and just make sure I’ve answered any of your questions. Look for our next webinar we’re already getting ready to schedule that for the month of March so I hope you’ll join us and I hope all of you have a good weekend.

read more
John UnderwoodHybrid SharePoint Environments Webinar

Updated – SharePoint 2013 Hybrid Environments

For those that missed our recent webinar Hybrid Environments in SharePoint 2013… the video replay is now online and available.

Video Replay


As companies consider moving to the O365/SharePoint Online environment there will likely be scenarios where companies will maintain some portion of their SharePoint data in an on-premise instance while simultaneously placing other content in the cloud. In this webinar we’ll explore such “hybrid” environments with an eye toward integrating them as tightly as possible.


Business Owners, IT Management, IT Technical Staff


  • Identify and understand basic moving parts of a hybrid environment
  • Highlight opportunities for integration
  • Indicate limitations and pitfalls of current hybrid environment
read more
John UnderwoodUpdated – SharePoint 2013 Hybrid Environments

Big Bet #1 – SharePoint 2013 Migrations and Hybrid Environments

SharePoint 2013 Migrations and Hybrid Environments

2014 will be a significant year for companies making a move to SharePoint 2013 and getting some of their SharePoint Infrastructure out to the “Cloud”.

Being in the Cloud has the promise of lowering dedicated infrastructure and personnel cost to keep the environment running. It also has the promise of always being on the latest version of SharePoint to get all the latest bells and whistles without the headaches of performing major version upgrades/migrations. SharePoint is entering a new era of enterprise software in the Cloud that has version updates on a scale of multiple times a year vs. every 3 years. Software is moving at a fast pace that demands a Software as a Service strategy (like Yammer is today). To stay competitive, SharePoint is moving to the Cloud to provide customers the benefit of the most current version of SharePoint and not have customers be left behind on a version that was deployed 3-6 years back in their own infrastructure.

Here are some numbers from a recent AIIM White Paper on SharePoint 2013:

9% of smaller organizations plan to move all of their SharePoint content to the 365 cloud, compared to 2% of mid-sized and 3% of largest. 29% overall are looking to a hybrid cloud, but half of these will use a third-party or private cloud, not 365. 24% are not going to cloud, and 43% are undecided. 20% are currently using Exchange 365, but only 8% are using SharePoint 365.

To avoid getting lost in all the terms that are in this post, I have created a quick cheat sheet.

Terms and Terminology

  • SharePoint On-Premises – When the SharePoint Farm is deployed within your company’s infrastructure (i.e. behind your company firewall)
  • SharePoint Online – When SharePoint is being hosted in the Cloud by Microsoft
  • Hybrid – A SharePoint Hybrid Environment is one that incorporates both SharePoint Online and SharePoint On-Premises
  • Azure (aka Windows Azure) – Azure has many services. In the SharePoint world, it can go as far as hosting your VMs for your SharePoint farm, but it is usually where you would host your SharePoint Apps
  • Cloud – A very overloaded term, but look at it as any software or infrastructure service that is not running within your company’s internal infrastructure (SharePoint Online – Microsoft’s Shared Infrastructure for SharePoint is considered in the “Cloud”)

From our experience, most large companies will not completely move to a full Cloud presence for SharePoint, but opt to go with an Hybrid Environment that will include SharePoint Online, On-Premises SharePoint and possibly infrastructure in places like Azure.

Going to a Hybrid Architecture does make your environment more complicated before it becomes simplified, but it is the most prudent step to take to preserve current investments while getting the benefits of SharePoint Online.

Why Invest in Moving to a Hybrid SharePoint Environment?

  • Let Microsoft start managing your server and software upgrades
  • Focus your teams on your business solutions vs. keeping a SharePoint environment healthy
  • Always be on the latest version of SharePoint and move away from expensive and timely migration efforts

Enterprises moving to the Cloud via a dedicated or multi-tenant environment for SharePoint is not a trivial task and is more effort than a traditional SharePoint On-Premises version upgrade.

Moving completely to the Cloud without some intermediate steps typically is not the most feasible path to preserve your current investments in SharePoint. Because some of your investments need to stay in SharePoint On-Premises for a period of time while you transition into SharePoint Online, you need to architect a seamless experience between the On-Premises and Cloud environments. Not only do you have technology considerations when moving to the Cloud, you will have legal implications to consider when organizations need to keep content in an On-Premises SharePoint Environment because that content is being potentially regulated or highly sensitive. This content should stay On-Premises until more appropriate updates to technology and regulations can address your concerns of properly protecting the content.

During this transition you do not want to confuse the customer by having two places for a user to go to for their SharePoint needs. If you decide to move in the direction of a Hybrid SharePoint Environment, you must consider things like:

  • how profiles are managed between your On-Premise and Cloud/Online environments,
  • how single sign-on can be implemented to have one login to authenticate you in both environments and
  • how to search SharePoint content across your On-Premise and Cloud/Online environments in a way that can be optimized for an enriched user experience within your company’s IT infrastructure and security policies.

These are some of the major considerations among several others that will be key to your success. The folks at ThreeWill are passionate about making sure this transition to the Cloud is done right. We also like to figure out how you can make the transition in a way that maximizes your current solutions as you leverage the benefits of being in the Cloud.

We are Here to Help you be Successful with SharePoint Hybrid Environments

We have already helped companies with this transition to Hybrid and SharePoint 2013, and we see 2014 as a big year for us to continue to help companies successfully navigate all the decisions to be made along the way. Our technology team has started sharing some of our experiences with SharePoint Online and Hybrid Environments on our blog (see the office-365 tag for some of our most recent sharing).

As I said earlier, this becomes more complicated before it becomes simplified. This transition will be significant, but getting to the other side will put your company in a position to take advantage of focusing on your business needs and dealing less with the infrastructure of SharePoint. I think most enterprises do not want to become SharePoint Infrastructure and Migration experts, but want to know enough about SharePoint to use the platform to support the success of their core business. SharePoint Online within Office365 moves companies further in that direction.

What do you think?

Any insights on what you are seeing?

Do you think this will be a big thing in 2014?

Leave a comment below to join the conversation.

read more
Tommy RyanBig Bet #1 – SharePoint 2013 Migrations and Hybrid Environments

What are your SharePoint big bets for 2014? Here are ours…

ThreeWill has bet on SharePoint for several years.  We continue to “ante-up” on that bet as we go into 2014.  This is a critical year for enterprises to make the right decisions as it comes to embracing Cloud, Social and Mobile solutions with SharePoint. The Top 5 areas of focus for 2014 at ThreeWill are:

  1. SharePoint 2013 Migrations and Hybrid Environments – How can we help our clients move off of older versions of SharePoint to reap the benefits of the investments that Microsoft has put into SharePoint?  How can we provide clear guidance on beginning to move to the cloud?
  2. SharePoint 2013 Apps – How can we help our clients build collaborative line of business apps on the latest SharePoint release?
  3. Mobile SharePoint Applications – How can we bring SharePoint to the mobile workforce?
  4. Enterprise Social with SharePoint – How can we drive more adoption of SharePoint with the recent advancements in social?
  5. Solution Sustainment – How can we make sure that our clients have a partner that will be around for years to come to make improvements and ad-hoc support for their SharePoint investments?

Each week I will put out another blog that shares our thoughts on why we see these areas of focus as critical for the upcoming year.  A key role that we play for our clients is to make sure they are getting the most leverage out of their investment in SharePoint.  With Microsoft’s move to the cloud and end user’s demand for mobile and social in the way they get work done, we see an incredible opportunity to help our clients. Let us know if you are focusing in on some of the same areas next year.  Cast your vote and see results from others…

I love to hear other perspectives on the ideas we present on our blog.  We welcome everyone into this conversation to affirm or challenge our ideas.  We look to innovate in the area of helping teams “Work Together Better” and that comes from putting your views out there and letting them be challenged and affirmed.  I look forward to the comments. Lastly, if you haven’t heard yet…we are bringing the Fab 40 to SharePoint 2013.  Let us know which templates are your favorite and sign up to be notified when they are released.

read more
Tommy RyanWhat are your SharePoint big bets for 2014? Here are ours…