Upgrade SharePoint 2016 from Beta 2 to Release Candidate (RC)

1 Comment

The process of upgrading from SharePoint 2016 Beta 2 to Release Candiate (RC) was pretty straight forward.

I started with my existing SP2016 VM that I already had Beta 2 installed and configured.  My VM is a single server farm with no language packs running on Windows Server 2012 R2 and SQL Server 2014.

The version of SP2016 on my VM before the upgrade was 16.0.1406.1001. You can download SP2016 Beta 2 here.

I downloaded the following two zip packages:

SharePoint Server 2016 Release Candidate English Prerequisite Installer.zip and SharePoint Server 2016 Release Candidate Global Patch.zip from here.

After I extracted the two zip files, I started with the PrerequisiteInstaller.exe.  I only had to reboot my server once for the .NET Framework 4.6 to complete its installation.

After the prerequisites installation process completed, I installed the sts.msp from the Global Patch zip file.

What I found interesting was the pop up window indicating that this file is from an Unknown Publisher.

RCPublisher

After the patch was installed, it prompted for a reboot.

RCRestart

After the server rebooted, I checked to see what the new version would be.

RCUpgradeRequired

Of course, it’s the same as it was before as I had yet to run the PSConfig.

After the PSConfig completed, the new version is now 16.0.4327.1000

RCUpgraded

Now, I’m ready to perform my next task – upgrade SP2013 databases.

 

Learn more about Centric’s Portals and Collaboration Practice

Advertisements

CSWP: Display Template Listing Sites/Site Collections

1 Comment

One of the clients I’m working with wanted to list all of their site collections and place a “directory” on a single page with some groupings (based on managed paths).

The easiest way I could think of was to use Content Search Web Parts (CSWPs).

I used the following query:

QueryBuilderSiteCollection

My search result looked like this.

SiteCollectionPreview2

Note: You can change the query to display all sites within a site collection by using STS_Web instead of STS_Site.

The OOTB list of sortable items of the Query Builder didn’t have an option for me to sort the site title alphabetically.  So, I made a change to the SiteTitle in Search Scope (Managed Properties) to include sortable.  And I waited until Search finished crawling/indexing the modified setting.

After Search finished indexing, I was able to select the the setting I needed to sort the sites by their titles.

I selected the Two Lines Display Template.  However, the OOTB display was not exactly what the client was looking for.

TwoLineDT2

So I started modifying the display template to get rid of the icon/image displayed in front of each link and the spacing between the links.

I renamed my Display Template to “Item_NoImageOneLine.html”, changed the Title to “No Image One Line”, added a style tag, and commented out the image section.

<div class="cbs-Item" id="_#= containerId =#_" data-displaytemplate="Item1Line" style="padding-bottom:5px">
<!--<a class="cbs-ItemLink" title="_#= $htmlEncode(line1.defaultValueRenderer(line1)) =#_" id="_#= pictureLinkId =#_">
<img class="cbs-Thumbnail" src="_#= $urlHtmlEncode(iconURL) =#_" alt="_#= $htmlEncode(line1.defaultValueRenderer(line1)) =#_" id="_#= pictureId =#_" />
</a>-->
<div class="cbs-Detail" id="_#= dataContainerId =#_">
<a class="cbs-Line1Link ms-noWrap ms-displayBlock" href="_#= linkURL =#_" title="_#= $htmlEncode(line1.defaultValueRenderer(line1)) =#_" id="_#= line1LinkId =#_">_#= line1 =#_</a>
<!--#_

Here’s the final result.

TwoLineDTFinal

Learn more about Centric’s Portals and Collaboration Practice

Heartland SharePoint Conference 2014 – SharePoint Hosted-App Infrastructure Setup

Leave a comment

The Heartland SharePoint Conference was held on Thursday, Mary 15, 2014.  It was a huge success.  Over 300 business users, developers, and IT Pros attended.

I covered the topic of setting up your on-premises environment to host your own Apps.

Thank you to all who attended.  As promised during the session, the presentation is posted here. SharePoint 2013 Hosted-Apps (On-premises) – Infrastructure Setup

It’s also posted on slideshare.net

Thanks again!

Content Search Web Part (CSWP) – Sort by Modified Date/Time

3 Comments

I was asked to look into Search crawl schedule because one Content Search Web Part settings was changed to sort the content by modified date.  Some contents were modified today, but did not appear at the top of page even though it was configured to sort in descending order.

Search was working fine.  It crawled at the schedule times for both incremental and full crawls.  I kicked off full crawl again, just to make sure.  Still the results displayed on the CSWP was incorrect.

I then looked into the CSWP settings itself.  Under SORTING, the only available field for modified time is LastModifiedTime.

CSWP - Sorting1

I select this property and sorted the list in descending order.

CSWP - Sorting2

I then went back to the Web Part settings and configured CSWP to display two lines with FileName and LastModifiedTime.  The page showed this:

CSWP - Sorting3

It sorted by LastModifiedTime, but this is not the result I was expecting.  It sorted by the LastModifiedTime that the documents were saved not when they were uploaded or the properties were modified in SharePoint.  I expected it to sort the same way my document library is sorted.  This is what I want to have displayed on my CSWP.  My document library looks like this.

DocumentLibrary

As you can see from the last two images, the result are nothing alike.

After searching many posts out on the internet, I did not find a solution.  So, I decided to do some testing on my own.

I went to Managed Properties and reviewed LastModifiedTime settings.  It contained this:

ManagedPropertyLastModifiedTime

After more research, I found that all Mappings to Crawl Properties listed above were related to documents.

I did not want to change any OOTB Managed Properties, so I decided to create a new one called Modified.

Here’s what I have in my new Modified Managed Property.

ManagedPropertyModified

I then started the full crawl.

Now my new Modified Managed Property is available for me to select in my CSWP Sorting.

CSWP - Sorting4

After changing the CSWP Web Part settings, it sorted in the same order as my document library, by Modified column.

CSWP - Sorting5

I hope this helps others who have the same problem I encountered.

Auto Populate User Information in InfoPath with Claims Based Authentication in SharePoint – Part 3 of 3

68 Comments

Auto Populate User Information in InfoPath with Claims Based Authentication – Part 1 of 3

Auto Populate User Information in InfoPath with Claims Based Authentication – Part 2 of 3

I left off part 2 post with completing the remaining rules on the InfoPath form.  Next I’ll need to create a data connection.

If your site does not have a Data Connection Library, be sure to create one before continuing to the next step.

1. In the Fields pane, click Manage Data Connections…

CreateDataConnection

2. Select GetUserProfileByName, then click Convert to Connection File…

3. In the Convert Data Connection window, type the URL, Data Connection Library, and the name of your connection file, then click OK

ConvertDataConnection

4. After the data connection is converted and stored in the Data Connection Library, click Close to close the Data Connections window

Even though I have a data connection library, I still need to do a few things to make the form work with Claims Based Authentication.

First I’ll need to create a Secure Store Connection for InfoPath to use.

5. From Central Administration, select Manage service applications, and select Secure Store Service

6. Select New from the Ribbon

7. I used the following information to create my new Secure Store Target Application

a. Target Application ID:                    InfoPathWebService

b. Display Name:                                InfoPath Web Service

c. Contact E-mail:                              SharePointAdmin@vee.local

d. Target Application Type:               Group

8. Then click Next

9. In the following window, click Next

10. In Target Application Administrators, grant Farm Administrator account to manage Secure Store

11. In  Members, (not sure if I needed to limit this or not) but I added everyone, click OK

12. After the Target Application ID is created, select the dropdown next to the Application ID name, and select Set Credentials

13. Under the Value section, type the following information, then click OK

a. Windows User Name:                    VEE\SPService

b. Windows Password:                       <password>

c. Confirm Windows Password:        <password>

14. From Central Administration, select General Application Settings, then select Configure InfoPath Forms Services

15. Select Allow user form templates to use authentication information contained in data connection files, then click OK

16. Navigate back to the Data Connection Library

17. Download MyResources.udcx data connection file to my local drive

18. Open MyResources.udcx using Notepad

19. Modify Line 24 (approximately) from

<!–udc:Authentication><udc:SSO AppId=”CredentialType=” /></udc:Authentication–>

to

<udc:Authentication><udc:SSO AppId=’InfoPathWebService’ CredentialType=’NTLM’ /></udc:Authentication>

20. Save the file and close Notepad

21. Upload the newly modified connection file to the Data Connection Library

22. Back to InfoPath

Let’s publish the InfoPath form and access it via a Web browser.

No errors.  The form loads with all user information.

PublishedForm

I know it’s a long process, but I hope this helps anyone who have tried to make this work with Claims Based.

Learn more about Centric’s Portals and Collaboration Practice

Auto Populate User Information in InfoPath with Claims Based Authentication in SharePoint – Part 1 of 3

9 Comments

I need to automatically populate user’s information on an InfoPath form.  This is not as simple when the Web Application is configured using Claims Based Authentication as in SharePoint 2010 or 2013.  I blogged this topic before on a different forum, but I thought I did not include enough explanation on how to resolve the issue.  So, this time I will include step-by-step instructions.

Let’s get started.

1. Create a SharePoint List, I called mine ‘Resources’, with the following columns:

  • Account ID          Text
  • First Name          Text
  • Last Name           Text
  • Full Name            Text
  • E-mail                  Text
  • Manager              Text
  • strCurrentUser   Text (This is my “placeholder” field.)

2. Navigate back to the Resources list, click the List tab, and click Customize Form from the Ribbon.

The following screenshot shows the OOTB List Form.  I’ll modify this a little.

StandardListForm

The following screenshot shows minor modifications made to the form.

StandardListForm-Modified

3. From InfoPath, click the DATA tab, then click From SOAP Web Service under From Web Service

FromSOAPWebService

4. In Data Connection Wizard, type:

http://<Your Web App>/_vti_bin/UserProfileService.asmx, then click Next

5. Select GetUserProfileByName from the operation list, then click Next

GetUserProfileByName

6. In the Parameters screen, click Next

Parameters

7. Click Next on the next screen

StoreCopyInFormTemplate

8. Use the default GetUserProfileByName under Enter a name for this data connection

9. Check the Automatically retrieve data when form is opened, then click Finish

SaveDataConnection2

10. In InfoPath Design, under Fields, select Show advanced view

InfoPathAdvancedFields

11. Click DATA tab, click Form Load from the Ribbon to display Rules window

InfoPathFormLoad

12. In Rules window, click New and select Action

13. Under Details for, type: Get Current User Information

14. Under Condition, click None – Rule runs when form is opened. This will open the Condition Window.

GetCurrentUserInformationRule

15. Change myFields to Select a field or group… (This will open the Select a Field or Group window.)

16. In the Select a Field or Group window, change the Data source to GetUserProfileByName (Secondary)

17. Expand queryFields until AccountName appears, select AccountName, and click OK

SelectAccountName

18. In the Condition window, change is equal to to is blank, click OK

AccountNameIsBlank

I now need to make the Web service call to the User Profile Service to get user information.

19. In the Rules window, under Run these actions, click Add, and select Query for data

20. Verify that GetUserProfileByName is selected, click OK

QueryForData

21. In the Rules window, under Run these actions, click Add, and select Set a field’s value

22. In the Rule Details window, in the Field section, select the FieldSelectorIcon   icon

23. In the Select a Field or Group window, verify that Main is selected

24. Expand the dataFields until you see Last Name

25. Select Last Name and click OK

SelectLastName

26. In the Rule Details window, in the Value section, select the FormulaIcon  icon

27. In the Insert Formula window, click Insert Field or Group… (This will open the Select a Field or Group window)

28. In the Select a Field or Group window, change the Fields value from Main to GetUserProfileByName (Secondary)

29. Expand the dataFields until you see Value

30. Select Value, and click Filter Data…

SelectValueAndFilterData

31. In the Filter Data window, click Add (This will bring up the Specify Filter Conditions window.)

32. In the Specify Filter Conditions window, change Value to Select a Field or Group…

SelectCondition

33. In the Select a Field or Group window, select Name, and click OK

SelectName

34. In the Specify Filter Conditions window, change the last drop down to Type text…

35. Type LastName, and click OK (This will return you back to the Filter Data window

FilterDataLastName

36. The Filter Data window, now has the LastName information, click OK

FilterDataLastName2

37. Click OK to close Select a Field or Group window

38. Click OK to close Insert Formula window

39. The Rule Details window now has LastName in its value field, click OK

RuleDetailsLastName

40. Let’s test the configuration we’ve done so far. Preview the form.

FormPreview3

41. So far so good. Close the form preview window.

42. Publish the form to the SharePoint list (Resources)

43. Open the SharePoint list the browser

You should now be taken back to the SharePoint list in your browser.

44. Click new item

45. A Warning window appears with a message An error occurred querying a data source. Log ID:5566

Error5566

46. After clicking OK the form is loaded without user information.

This error (5566) is expected when making a Web service call in SharePoint configured with Claims Based Authentication.  We will now leverage the “placeholder” field (strCurrentUser) we created earlier.

Go to part 2 of this series

Auto Populate User Information in InfoPath with Claims Based Authentication – Part 2 of 3

Auto Populate User Information in InfoPath with Claims Based Authentication – Part 3 of 3

Learn more about Centric’s Portals and Collaboration Practice

Content Search Web Part and Event Dates in SharePoint 2013

21 Comments

I’m working on a project with Mike McNett where we have multiple calendars across multiple sites in a site collection.  We need to create a single view where upcoming events can be viewed from one central location.

We started with Content Search Web Part (CSWP) since it can retrieve all calendar events.

So here’s the path we took:

1. Added Content Search Web Part to a page

2. Changed Query from “Recently changed items (System)” to “Items matching a content type (System)”

3. Changed Restrict by app from “Current site” to “Current site collection”

4. Changed Restrict by tag from “Do not restrict on content type” to “Event”

CSWP - BaiscQuery

5. Switched to Advanced Mode

Note: You can change the path the Query text to include all site collections by removing <sitecollection> from the URL.  If you want to include all lists in your farm, remove the path value all together.

ContentTypeId:0x0102* indicates “Event” we selected earlier.

6. Clicked Test Query

In the SEARCH RESULT PREVIEW, all events returned. In our case, 10 results (This includes past, present, and future dates)

CSWP - QueryText1

So far so good.

Since we only wanted future events to return, we started adding a filter.

7. Changed Property filter to:

StartDate>={Today}

In the SEARCH RESULT PREVIEW, Results=0. (There are five (5) events that meet this criteria.)

CSWP - QueryText2

We tried different properties, including EndDate, and everything with the word “Date”, still the SEARCH RESULT PREVIEW, returned 0 or a syntax error.  We checked to make sure that content has been indexed.

Note: Comparing anything with OWSDATE to {Today} gave us a syntax error. (I’ll explain why later.)

Below is the screenshot when comparing AnythingOWSDATE to {Today}.

CSWP - SyntaxError

After a lot of head-scratching, we started looking into Search Schema. (This can be done at a site collection or a farm level.)

In the Managed property, we typed “date” (without the double quotes).  Here’s where we saw OWSDATE is a “Text” type.

A light bulb went off, this is why comparing {Today} to AnythingOWSDATE caused the Syntax error I mentioned earlier. (At least this made sense to me.)

ManagedProperty

8. So we edited the Date00 Property to the following:

8.a Queryable: checked, Retrievable: checked, Refinable: Yes – active, Sortable: Yes – active;

And affter many tries, these are the settings we used:

8.b Mappings to crawled properties:

Include content from the first crawled property that is not empty, based on the specified order

Ows_EventDate

Ows_q_DATE_EventDate

MappingProperties

9. Started a Full Crawl

10. Went back to the CSWP, and added Date00>={Today}….drum rolls….

It worked!!!

The SEARCH RESULT PREVIEW showed five (5) events.

CSWP - QueryText3

We went back and modified the CSWP properties to include the desired settings, and here’s the final result.

CSWP - Results

We hope this helps those who have similar requirements.

Older Entries