Wednesday, March 15, 2017

WorkFlow Canceled Automatically

Generally I've experienced issues like these with activities involving users:

Sending email
Getting user details (ex: User title, user email address, user principal ID)
Insufficient permissions to do certain actions (IE: You might need to run the workflow under the "App Step"

SharePoint 2013 Workflow - Automatically goes to 'Canceled' state

Clear SharePoint Designer 2013 Cache

 SharePoint Designer 2013 gets confused and acts like an idiot. One way to get it back on track is to reset it’s cache. Here is how,
  1. Close SPD2013
  2. Delete everything at %USERPROFILE%\AppData\Local\Microsoft\WebsiteCache
  3. Delete everything at %APPDATA%\Microsoft\Web Server Extensions\Cache
  4. Go to SPD2013 options –> General –> Application Options –> Uncheck the “Cache site data across SharePoint Designer sessions”
Relaunch SDP. Easy!

Monday, March 13, 2017

Sign in as Different User in SharePoint 2013

One of features used in testing of permissions in SharePoint is "Sign in as Different User" which allows you to log in as another user.  With SharePoint 2013 this option is missing.

To get this feature back follow the below steps :

    Locate and then open the following file in a text editor:  C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\CONTROLTEMPLATES\Welcome.ascx

    Add the following element before the existing "ID_RequestAccess" element:

    <SharePoint:MenuItemTemplate runat="server" ID="ID_LoginAsDifferentUser" Text="<%$Resources:wss,personalactions_loginasdifferentuser%>" Description="<%$Resources:wss,personalactions_loginasdifferentuserdescription%>" MenuGroupId="100" Sequence="100" UseShortId="true" />

    Save the file.

Microsoft has published a KB article on the same : http://support.microsoft.com/kb/2752600.

Get User Profile Information in SharePoint 2013




To retrieve user profile information in SharePoint 2013, we need to add below references in out SharePoint Project.

           1.       Microsoft.Office.Server
           2.       Microsoft.Office.Server.UserProfiles

Refer below code snippets for reference

Code behind :
private void GetUserProfileInfo()
        {
            try
            {
                UserProfileManager usrProfileMgr = newUserProfileManager(SPServiceContext.GetContext(SPContext.Current.Site));
                UserProfile usrProfile = usrProfileMgr.GetUserProfile(SPContext.Current.Web.CurrentUser.LoginName);
                if (usrProfile != null)
                {
                    lblName.Text = usrProfile.DisplayName;
                    string origUrl = (string)usrProfile[PropertyConstants.PictureUrl].Value;
                    if (!string.IsNullOrEmpty(origUrl))
                    {
                        imgUser.ImageUrl = origUrl;
                    }
                    else
                    {
                        imgUser.ImageUrl ="/_layouts/15/images/PersonPlaceholder.96x96x32.png";
                    }
                    lblDesignation.Text =Convert.ToString(usrProfile[PropertyConstants.JobTitle].Value);
                    lblDepartment.Text =Convert.ToString(usrProfile[PropertyConstants.Department].Value);
                    lblEmail.Text =Convert.ToString(usrProfile[PropertyConstants.WorkEmail].Value);
                }
            }
            catch (Exception ex)
            {
                lblError.Text = ex.Message;
            }
        }
Here, GetUserProfileInfo() method we have called in Page_Load
protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                GetUserProfileInfo();
            }
        }