Integrating ServiceNow with SharePoint 2013

UNIt goes without saying that every part of an enterprise relies on technology. With more and more technology providers coming to the fore, it is not uncommon to find a variety of technology platforms across the units of an enterprise. To keep the pieces of the enterprise moving together there is often a need for integrating the platforms, which are built by different providers. This blog provides a brief overview of ServiceNow, and what is involved in integrating ServiceNow and SharePoint 2013.

What is ServiceNow?
ServiceNow is a software platform that supports IT Service Management and automates common business processes. It’s a software as a service (SaaS) platform that offers targeted solutions for various units of an enterprise like IT, HR, Operations and IT Business Management. More than two thousand enterprises around the world use the ServiceNow platform extensively for their daily operations. ServiceNow brings the following key benefits for an enterprise:
• Improves service experience for end users
• Maintains service records in a structured model that allows audits
• Automates processes that reduce costs and increase efficiency
• Enables reporting and analytics for company executives

ServiceNow Integration Technologies
ServiceNow integrates with third-party applications and data sources using a variety of techniques, some of which are listed below.

• Single Sign-On
• Web Services—SOAP, REST
• Database Connectivity—ODBC, JDBC
• Import Sets—Excel, CSV, XML
• Email

Integrating with SharePoint 2013
SharePoint 2013 has proved to be a great platform for building enterprise solutions and is widely used by organizations worldwide. Due to the huge popularity of both ServiceNow and SharePoint 2013, the need of their integration becomes almost inevitable. There are two ServiceNow integration techniques that can be utilized to integrate with SharePoint 2013.
• Call ServiceNow REST API to read, create, update and delete service objects
• Send emails to ServiceNow-administered email ID to manage service objects

Let’s see how we can implement both the above techniques using SharePoint 2013 Workflows.

Calling ServiceNow REST API using SharePoint 2013 Workflows
1. Open SharePoint Designer 2013.
2. Add a new site workflow.
3. From the Actions dropdown menu on the ribbon select “Call HTTP Web Service” action.

Call-HTTP-Web-Service

  1. Specify the web service URI corresponding to the ServiceNow table that you want to query or update along with the HTTP method—GET, POST, PUT—depending on your requirement. In the below example the web service call will fetch a list of incidents on the ServiceNow instance.

Call-HTTP-Web-Service1

  1. Specify the request and response parameters so that you can handle them later in the workflow. An example could be where you call the web service to create an incident in ServiceNow and capture the Incident ID in response.

Sending email using SharePoint 2013 Workflows
1. In SharePoint Designer 2013, from the Actions dropdown menu select the “Send an Email” action.

Call-HTTP-Web-Service2

  1. Populate the fields of the email template according to the template that is configured on ServiceNow instance. The placeholders, like the ones shown in the below screenshot, are dynamic.

Call-HTTP-Web-Service3

  1. In the above example, the template could be used to communicate to the ServiceNow instance that user’s task has been completed. The subject would read something like “Task 1234 has been Completed”. When the email is received by ServiceNow it will update the task as completed based on the pre-configured inbound email action.

Access Denied Error after migrating to SharePoint 2013

Access Denied Error after migrating to SharePoint 2013

Scenario:

We were working for a client, they had many groups and we had to build a collaboration portal for all the groups. Key thing was few sites of some groups were already present in SharePoint 2010 in different standalone servers. Migration was a key thing here as the existing sites has huge data, and huge user base.

The Requirement was to build a portal /web application which will have migrated sites and new set of sites as per agreed site structure. According to the agreed architecture and design we created a new web application and started building the site hierarchy.

As part of this we followed the regular approach database detach –attach method and migrated the existing SharePoint 2010 site .Migration was successful and we were able to access the site  with the system account. Later we tried with couple of site admin accounts, to our surprise we were getting “ACCESS DENIED” with any other user id.

Background:

By default when we create a web application in SharePoint 2013, it gets created with Claims authentication. When we migrate the content DB to 2013, it recognizes the user account only in this format i:0#.w|domainusername . Though it’s an AD account it no more recognizes the DomainUserName format.

SharePoint assumes all users to be claim users and renders them so. Therefore, a normal windows user – “DomainUserName” appears as “i:0#.w|DomainUserName”. Moreover, it uses the username in this same format to check for its permissions but does not find a matching entry for the user as the database has windows users – “DomainUserName”. So, the site will give you an access denied.

Note that the System Account will work since its “DomainUserName” is never used and System Account is a keyword used by SharePoint for the application pool identity. Therefore, it remains unaffected.

Solution:

In brief the share point 2010 site which needs to be migrated should be converted to claims format and then migrate it to 2013. But a word of caution , do not directly change the SP 2010 site to claims format in a production environment as it will not allow existing windows accounts to login and existing SharePoint 2010 site will be no more operational.

Below power shell script converts classic mode site to claims mode:

Power shell script

This script converts user accounts to claims format:

Script for converting user accounts to claims format

On executing the first script (to enable claims authentication) the SharePoint Content Database is made ready for claims based authentication but the already existing site users were windows users, are not “migrated” to be understood by claims authentication.

We use the second script to “migrate” the users. MigrateUser($true) will convert all user accounts to claims format. After running this script user accounts are converted in the database to claims format, therefore, user names are read correctly by SharePoint therefore, permissions for users are associated correctly by SharePoint hence the site permissions work correctly.

Note:

By any chance if you execute these scripts directly in productions, by executing $webapp.MigrateUsers($false) will not convert user accounts to windows mode, rather it will throw an exception. Make sure you have a temporary environment built where you execute the above scripts. Also note that these scripts are running on Web Applications so they will affect all site collections in that web application