OneDrive for Business

Microsoft has a public offering called OneDrive. It is a personal online storage service, easily comparable to one you may already know, i.e. Dropbox. You can store files/documents in your OneDrive and access them from anywhere, or you can even send links to people so they can see it, based on the permissions provided. This service is often included if you have an Outlook.com account, or even a Windows Phone – phone pictures and large email attachments and will automatically be uploaded to your personal online storage, OneDrive.

The concept of OneDrive is simple: upload your files/documents, and access them from anywhere. You have 7GB or more of personal storage, depending on factors such as if you have a Windows Phone associated to your account, or if you spend more to get more. It is all about  making simple collaboration achievable.

A Short History Lesson on OneDrive for Business

OneDrive for Business is nothing more than the evolution of a tool named Groove, first seen with Office 2007. The actual idea behind the very unsuccessful Groove tool was to collaborate, and work, on files with our team members, without necessarily having a server. The key feature was synchronizing the files offline on other devices such as the home computer, to continue working with team members. We could say it was Share Point for the very small business, without the server and the nice features. However, it just never took off.

SharePoint Workspace

SharePoint Workspace was the new name it was given with the Office 2010 and with it Groove became a SharePoint tool that allowed end-users to synchronize both libraries and lists, offline. It was to help companies using the now very popular SharePoint platform with people on the road or without having Internet connections to still access important documents. SharePoint Workspace wasn’t bad, though it had so many limitations when you started using it. It just didn’t meet the success Microsoft was hoping. Of course, by this time, Dropbox was becoming a popular service to store documents online, synchronize those documents offline seamlessly on our computer and share using links. Where SharePoint was the big solution platform, the rise of the cloud technology and subscription based offerings started to hurt Microsoft as not everyone always required the big SharePoint platform.

When SharePoint 2013 was released, with it a new version of Groove and SharePoint Workspace, it was called as SkyDrive Pro. It created a lot of confusion since Microsoft had invested a lot in the marketing of SkyDrive, a public offering to compete with the services like Dropbox. But once again, all it did was synchronize SharePoint document Libraries offline through a desktop installation that came with Office 2013.

Microsoft had to rename service from SkyDrive Pro to OneDrive for Business…

OneDrive for Business is first a synchronization tool

The brand for the service of OneDrive for Business does and enables a lot more. However, at the core, it was just a synchronize tool. Either by installing Office 2013 on your computer or through a standalone installer, you would install OneDrive for Business.

Once installed on your system, whenever you click on the button to Sync on a document library, it then launches the tool installed and starts synchronizing.

Technically, this is how OneDrive for Business works. It’s a tool that evolved from Groove and allows you to synchronize offline files/documents you need to work with.

Synchronizing the main OneDrive for Business Library:

Synchronizing any SharePoint Document Library:

However, the evolution of the SharePoint product and the continuing efforts made by Microsoft to compete on the cloud market, OneDrive for Business is becoming a whole lot more.

A new name for SharePoint MySites

For those of us that came from the SharePoint, we saw another feature called “My Sites” but not quite successful. The idea that every SharePoint user has her/his personal(MySite) site to store documents/files, something I often saw as a replacement to the popular “My Documents” for the new-age Web.

From SharePoint 2013, they changed the name My Site for this feature and branded it with the name of the synchronization tool itself, OneDrive for Business. It is now, in the Suite Bar at the top, i.e. where we used to have My Site, we now have OneDrive.

In SharePoint, this can hold up to 30,000,000 documents. It’s important I start with that because I often get questions or comments on how little the limit of 20,000 documents/files is for OneDrive for Business. 20,000 is the number of documents from “My Site” or OneDrive for Business document library you are able to synchronize offline. I don’t see any good reason to synchronize more than that on your computer from the 30 million documents/files you can have. This doesn’t stop you either from creating regular Document Libraries and using OneDrive for Business to synchronize offline, though they will have a 5,000 documents sync limit.

Synchronization limits and document limits are both different.

OneDrive for Business and SharePoint Online

To make it clear again, I do not believe SharePoint technology is going away, not even for a second. But the competition out there for Microsoft is fierce. A great strategy for them(Microsoft) is to have people using the OneDrive as the public offering at home or as a student to look for the next level of features for doing work. A great way to do that is to advertise SharePoint Online as a business version of the public offering. Today, your business or team can even subscribe to OneDrive for Business as a standalone subscription.
OneDrive for Business grow into collaboration and sharing of documents. SharePoint is this great platform that enables us to do so much based on our business needs and technically OneDrive for Business is just a sync tool.

SharePoint’s ‘Crawled’ and ‘Managed Properties’ for Search

This is how Sharepoint can maximize business value.

When we start learning SharePoint, we focus more on columns and site columns. However, in SharePoint 2013, the major feature that everyone talks about is the `search’ feature and what can be done with it.

To do anything with search-related features, we first need to understand the difference between crawled’ and `Managed Properties’.

The Basics of SharePoint Search

One of the biggest issues with SharePoint is how SMB’s know about search and the time and effort that needs to go into it. It requires many changes starting with its configuration and moving on from there to topology, content sources, and crawl schedules.

Pretend for a second that the building where you work is your SharePoint farm. It is brand new and completely empty. The rooms represent your SharePoint sites. To be able to ask the search engine what you have in each of these rooms, you will first need it to run around the entire building and take notes of everything. This is what we call crawling. How often the crawling happens will determine the search result “freshness” amongst other settings like the crawl type.

Everybody assumes that the columns created by them in their lists and libraries are now searchable. However, most often this is not the case.

SharePoint Search Crawled Properties

A crawled property is content and metadata that is extracted from an item, such as a document or a URL, during a crawl. A crawled property can be an author, title, or subject. This means that it has passed over our columns and the metadata assigned to each element. We do not have any control over the creation of “Crawled Properties”. These are the list of results of columns crawled in some way, though we are over-simplifying it.

A crawled property by itself is not useful when we try to build or run search queries or even display the value of this property in search results. Picture the crawled properties more as the information collected by that crawl that has been going around our building in our previous example. The crawl goes through our sites, lists, and libraries to find our content and picks up the value in our columns, and stores them as crawled properties.

SharePoint Search Managed Properties

The Managed Properties is where it all happens. If we need anything to be search-related: Search Results, Refiners, Display Templates, Content Search, etc., then we will need to understand how to create and manage these “Managed Properties”.

Each Managed Property is by default mapped to one or multiple “Crawled Properties”. Assume that our organization has many lists and libraries. In them, users (logged in Users) created columns like “Customer Name” and “Client”.

For the organization, the columns “Customer Name” and “Client” represent exactly the same content, but not for search. For search, they are just crawled properties and both very different ones at that, because they do not share the same name. Since they are only Crawled Properties, if someone searches for all documents where Client=Trigent then the result will be nothing at all. Because no search-related feature works with crawled properties, we need to create a Managed Property called “Customer” and assign both crawled properties to it.

In some scenarios though, we may find that a Managed Property has already been created for our Crawled Property, automatically. That’s because as always, there are exceptions. If we create a Site Column and assign it to a list or library, when the indexer crawls, it will automatically create a Managed Property for it. Regardless of it being a site column or not, Managed Metadata columns will always have Managed Properties created for them.

Where do I create and manage these Properties?

Now we understand the difference between the two at a high level, we will need to know how to see the crawled properties collected and created by our search engine as well as the existing managed properties. Luckily for us, in SharePoint 2013 we no longer have to go in the Central Administration of SharePoint or Office 365 to create them. It is still what I would prefer as these will be global and centralized for all web applications associated to this search service application. It’s not unlikely for specific Site Collections to need their own Managed Properties and isolate them there.

To navigate, create or edit these properties, we simply need to find the Search Schema either in the Central Administration for the search service application or from site settings of a site or site collection.

How to create a Managed Property for columns, which are created in the library/list:

  • Open central administration in SharePoint 2013 On-Premise environment.
  • Application Management –> Manage Service Applications (under Service Applications).

  • Click Search Service Application, created in the current environment.

  • Click Search Schema in the left navigation

  • Click New Managed Property as shown below

  • Provide the value for the Property Name, description, select type.
  • Check, if the managed property needs to be Searchable, Retrievable ,Queryable and if it needs to store the multiple values.

  • Click Add a mapping button.

  • Search for the mapped property, add it to the Managed property. Mapped property will be created for all the columns with ows_ as prefix

  • Click OK button. Now, the managed property will be created.

SharePoint can crawl data from different sources. The data in various source system have metadata which can have a different name but it refers to the same information. As an example different systems can store the information about the Author in various systems with the name as Author,CreatedBy, Writer, Owner, and in case of emails it stored in the field. But all these fileds represent same information which represent who has created this.

Now SharePoint crawl these various system all these properties become Crawled properties. In SharePoint we can group all these crawled properties under one Managed property.

The problem with optimistic title override and the title managed property

The problem we’ve been experiencing with SharePoint Search is it’s over willingness to help improve search results. We see, there is an integrated feature built in search that will extract what it thinks is the Title of our document and show that in the Search results, regardless of the value we entered in the Title column. The search engine will take, for example, our headings in a Word document or the first slide with larger text in PowerPoint and override any other title we may have specified. This was very unpleasant as we can imagine, many documents would often have the same heading as they were the result of a filled out form. As a result, SharePoint would hide our documents in search results calling them duplicates.

In SharePoint 2013, with the October 2013 CU or SP1 installed on server, we will now be able to see this special “Crawled Property” in our Title Managed Property.

SharePoint Search Results and other search related features can only show and work with managed properties. If the Title is being displayed  as the wrong one, then we need to check and verify the Managed Property responsible for it and see what crawled properties are assigned to it and in what priority of order. Before, we could not see this special crawled property that had the highest priority and in turn could not adjust it.

Talk to our Sharepoint experts to custom build solutions that meet your business requirements.

Apps in SharePoint

What are Apps?

Over the last few years, desktops became laptops.  Laptops gave way to Notebooks. Notebooks became Ultra Books and the trend is moving towards Tablets and Smartphones.

As a result of this, web applications are paving the way for Apps.

Reasons for “Apps” development

  • No custom code execution on server side. It avoids application / server outages.
  • Custom code will be executed in Client-Browser, or IIS or Windows Azure, which are completely out of SharePoint’s scope.
  • The Server Object Model (SOM) code is replaced by Rest Services Client Side Object Model (CSOM) using which apps can communicate with a server. Authentication is done by OAuth.
  • Installation/updation /uninstallation of apps can be done without affecting the SharePoint site.
  • Better usability in mobile and tablets devices.
  • Takes SharePoint to the next level in terms of usability, deployment, development and hosting (Cloud).
  • Finally, everything in SharePoint 2013 is an App.

Types of Apps for SharePoint

SharePoint-hosted

  • Complete client-side code
  • Deployed to SharePoint On-premises, SharePoint online or in Office 365

Provider-hosted

  • Deployed to a different on-premises server (not SharePoint) or the cloud

Auto-hosted

  • Automatically provisions resources to SQL Azure and Windows Azure

Diagram of a possible Hybrid approach with some components in SharePoint and others residing in the Cloud:

SharePoint-hosted Apps:

  • App components hosted in isolated app domain
  • No server-side code – can use HTML, JavaScript and CSS

Provider-hosted Apps:

  • App components can be hosted anywhere ( on-premises or Cloud )
  • Authorized using JavaScript cross-domain library or OAuth
  • IncludesWindows Azure Web Sites
  • Can use ANY implementation language (ASP.NET, PHP, etc.)

Auto-hosted Apps:

  • App components are hosted in SQL Azure and Windows Azure
  • Automatically provisioned when app is installed
  • Authorized using the JavaScript cross-domain library or OAuth
  • Only available in SharePoint Online
  • Infrastructure is in preview status
  • Production use not recommended
  • Office Store not yet accepted

Host Web and App/Remote Web:

  • Each app is deployed to a SharePoint site known as the host web
  • Each app installation has its own unique URL
  • App web provisioned with app installation
    • https://[app prefix][app hash].[app domain]/[relative site URL]/[app name]
    • Required for Share Point hosted apps, optional for cloud-hosted apps
  • Cloud-hosted apps have a remote web
    • In Office 365, the remote web for Auto hosted apps is under 365apps.net
    • Name reminds us that this web doesn’t live on the SharePoint server

App Development Tools:

  • Office development tools for Visual Studio 2012/2013
  • “Napa” Office 365 development tools
  • Browser-based development environment (SharePoint-hosted apps only)

Office Development Tools for Visual Studio:

  • NET web application projects include classes to handle app AuthZ and AuthN (using OAuth)
  • SharePointContext.cs
    • Functions to manage SharePoint context across page requests
    • Can create app contexts and/or user for app and/or host webs
  • TokenHelper.cs
    • Functions to create and obtain AccessToken and ContextToken objects
  • On other platforms, you have to do the OAuth implementation and manage tokens yourself
  • Convert existing web application project to an App for SharePoint project

Accessing SharePoint data remotely:

  • JavaScript client object model (JSOM)
  • .NET Managed client object model (CSOM)
  • REST endpoints with OData

App authentication/authorization:

  • We can’t interact with data stored in SharePoint unless we (our apps) are authenticated to SharePoint and authorized to access data
    • Authentication: Are you who you say you are?
    • Authorization: Do you have permission to do what you are trying to do?
  • How can cloud-hosted apps for Share Point securely access data from the remote web?
    • Firewalls could be between servers
    • Code and script could be running on different domains
    • The external web server might not even be running Windows!

App authorization policy types:

  • User-only
    • Only the user identity is considered (non-app interactions with Share Point)
  • App + User
    • “Access denied” if one and/or the other lacks permissions
    • Both the app identity and the user identity are considered
  • App-only
    • Only the app identity is considered
    • Only supported for server-side code in cloud-hosted apps
    • Can’t be used with certain APIs (e.g., Search, Project Server)
    • Allows for elevation above current user’s permissions (or when there is no current user)

App permissions:

  • Trust must be explicitly granted by the user installing the app (nothing or all)
  • User installing the app must also have all permissions the app is requesting

Deploying provider-hosted apps:

  • To use OAuth, you must register an app principal
    • Automatically handled for Auto-hosted apps and <F5> local host deployments
    • Requires a visit to /_layouts/15/AppRegNew.aspx for provider-hosted apps
  • Update <appSettings> values in web.config file
    <add key=”ClientId” value=”xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx” />
    <add key=”ClientSecret” value=”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=” />
  • Deploy/publish your remote web project
  • Set full URL for Start page in AppManifest.xml
  • Right-click and “Publish…” the app project
  • Click Package the app to generate .app file
  • Deploy the .app file to your app catalog
  • Click the link to launch the app
  • Grant permissions the app requests