<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>SharePoint Steve</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/spucelik/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/spucelik/feed.xml</link>
    <description>Notes from the field</description>
    <lastBuildDate>Thu, 23 Aug 2018 13:48:34 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Add a Staff Notebook to Microsoft Teams</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/add-a-staff-notebook-to-microsoft-teams</link>
      <pubDate>Thu, 23 Aug 2018 17:41:12 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=1015</guid>
      <description><![CDATA[If you are using the EDU SKU for Office 365 you have been able to enjoy creating Staff Notebooks...]]></description>
      <content:encoded><![CDATA[If you are using the EDU SKU for Office 365 you have been able to enjoy creating Staff Notebooks when creating a new Microsoft Teams team using the classroom template.  If you're not using the EDU SKU, you can still create a Staff Notebook and include it as a tab within your team channel.
<h1>Create a new Staff Notebook</h1>
Even though a Staff Notebook has a lot of language around education, you can still adapt it for a corporate Manager/Employee type of relationship.
<ol>
 	<li> Navigate to https://www.onenote.com/staffnotebookedu and login to your tenant.</li>
 	<li>Select the "Create a staff notebook" tile.</li>
</ol>
<a href="https://msdnshared.blob.core.windows.net/media/2018/08/1-CreateNotebook.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/1-CreateNotebook.jpg" alt="" width="826" height="347" class="size-full wp-image-1025 alignnone" /></a><a href="https://msdnshared.blob.core.windows.net/media/2018/08/8-AddNotebookToTeams.jpg"></a>

3.  Give it a name.

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/2-NameNotebook.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/2-NameNotebook.jpg" alt="" width="988" height="486" class="size-full wp-image-1035 aligncenter" /></a>

4.  Review the contents of what will be inside the staff notebook.  Keep in mind that the content will be more focused on education but you can modify this to your needs.

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/3-NotebookOverview.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/3-NotebookOverview-1024x564.jpg" alt="" width="1024" height="564" class="size-large wp-image-1045 aligncenter" /></a>

&nbsp;

5.  Add staff members.  This will come from the users in your tenant.  Be aware that you should only add members who will be a part of your Team in Microsoft Teams.

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/4-AddStaff.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/4-AddStaff-1024x420.jpg" alt="" width="1024" height="420" class="size-large wp-image-1055 aligncenter" /></a>

&nbsp;

6.  You can choose from a standard set of sections that will be in your notebook, or create new ones to meet your needs.

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/5-AddSections.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/5-AddSections-1024x538.jpg" alt="" width="1024" height="538" class="size-large wp-image-1065 aligncenter" /></a>

&nbsp;

7.  You can review what the staff leader and staff members notebook will look like.  Remember that the leader sees everything, the member only sees the common team sections and their section.

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/6-Confirm.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/6-Confirm-1024x616.jpg" alt="" width="1024" height="616" class="size-large wp-image-1075 aligncenter" /></a>

8.  Member view:

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/6-ConfirmStaffMember.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/6-ConfirmStaffMember-1024x614.jpg" alt="" width="1024" height="614" class="size-large wp-image-1085 aligncenter" /></a>

&nbsp;

9.  View your staff notebook in the browser

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/7-ViewNotebookInBrowser.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/7-ViewNotebookInBrowser-1024x562.jpg" alt="" width="1024" height="562" class="size-large wp-image-1095 aligncenter" /></a>
<h1>Add the Staff Notebook to Microsoft Teams</h1>
Now that you have the staff notebook created, let's add it to Teams.
<ol>
 	<li>Create a new Team in Microsoft Teams or use an existing one...doesn't matter.</li>
 	<li>Get the URL from the Staff Notebook you created above.</li>
 	<li>In Microsoft Teams, create a new tab in the Team you want to add the staff Notebook (Click the + sign in the respective Team channel)</li>
 	<li>Choose the "Website" tile</li>
</ol>
<a href="https://msdnshared.blob.core.windows.net/media/2018/08/8-AddNotebookToTeams.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/8-AddNotebookToTeams.jpg" alt="" width="670" height="349" class="size-full wp-image-1105 aligncenter" /></a>

&nbsp;

5.  The tile properties will ask you to name the tab and provide the URL, which is the staff notebook you created.

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/9-NotebookURL.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/9-NotebookURL.jpg" alt="" width="583" height="389" class="size-full wp-image-1115 aligncenter" /></a>

&nbsp;

6.  Save the new tab and now the Staff Notebook will appear in Microsoft Teams.  when staff members login to the Team, the security model will display only their section of the notebook. Again, there is some education focused content but you can modify this to your needs.

<a href="https://msdnshared.blob.core.windows.net/media/2018/08/10-ViewNotebookInTeams.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/08/10-ViewNotebookInTeams-1024x413.jpg" alt="" width="1024" height="413" class="size-large wp-image-1125 aligncenter" /></a>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint User Adoption</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/sharepoint-user-adoption</link>
      <pubDate>Mon, 25 Jun 2018 19:29:37 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=985</guid>
      <description><![CDATA[You have deployed SharePoint and now what.  Here is a guide to gaining better user adoption within...]]></description>
      <content:encoded><![CDATA[You have deployed SharePoint and now what.  Here is a guide to gaining better user adoption within you're organization.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/UserAdoption.png"><img width="627" height="517" class="alignleft size-full wp-image-995" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/UserAdoption.png" /></a>

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;
<h1>Share the vision</h1>
<ul>
 	<li>Deployment driver - What got us here?</li>
 	<li>Explain key business drivers and how it will impact them…for the better.</li>
 	<li>Short/long term vision (phases of implementation and deployment)</li>
 	<li>Start small and build momentum - don't build it in a day!</li>
</ul>
<h1>Identify relevant use cases</h1>
<ul>
 	<li>What am I doing today?
<ul>
 	<li>Don't focus on moving 50,000 documents to SharePoint…focus on what activities am I doing today or in the last week.</li>
 	<li>This becomes you're immediate focus.</li>
 	<li>SharePoint SME's work with these groups initially to help them identify/train/explain how SharePoint will truly make it easier for them.</li>
</ul>
</li>
 	<li>Where are people storing documents now?
<ul>
 	<li>Start with the documents people use every day to collaborate.</li>
 	<li>If they are emailing documents for review…create a document library to collaborate.</li>
 	<li>Inventory the network drives to determine version history, folder security, nested folders (metadata).</li>
</ul>
</li>
 	<li>Employee self service
<ul>
 	<li>ID what resources people most often request or call/E-mail about and then develop content around that.</li>
 	<li>Site owners should constantly "mine" or review requests to keep the navigation current.</li>
</ul>
</li>
 	<li>What manual processes are done today?
<ul>
 	<li>What activities can be automated with workflow?</li>
 	<li>ID the inputs and desired state.</li>
</ul>
</li>
 	<li>How is Excel used?
<ul>
 	<li>Is a list more conducive to a spreadsheet?</li>
 	<li>Do users get locking messages all the time?</li>
 	<li>Are there a lot of complex formulas? If not then consider a list.</li>
 	<li>Contact lists or issue management stored in Excel and hard to manage?</li>
</ul>
</li>
 	<li>Project Management Maturity
<ul>
 	<li>All the activities of project management fit nicely into SharePoint.</li>
 	<li>Organize documents, tasks, issues, security etc in one site.</li>
 	<li>Use search to create dashboards.</li>
</ul>
</li>
 	<li>Key processes that can be automated?
<ul>
 	<li>Employee onboarding</li>
 	<li>Services requests</li>
 	<li>Any type of request and follow up process.</li>
</ul>
</li>
 	<li>What paper/electronic forms are being used that can become a list with a workflow?
<ul>
 	<li>Internal documents used as a template users fill out and return.</li>
 	<li>Paper forms that are printed and distributed.</li>
 	<li>Non-controlled forms (tax forms for example)…NOT a good SharePoint solution.</li>
</ul>
</li>
 	<li>How are people finding information?
<ul>
 	<li>Blanket E-mails…hey does anyone remember…or does any have the latest copy of XX.</li>
 	<li>Navigating a folder structure.</li>
 	<li>Using the search function in E-mail.</li>
 	<li>Desktop search appliances?</li>
 	<li>Give up and re-create?</li>
</ul>
</li>
 	<li>SharePoint becomes the system of record
<ul>
 	<li>As information has been identified and migrated to SharePoint…leadership needs to communicate that SharePoint is where you will go for this.</li>
 	<li>Remove permissions on file shares as content is migrated.</li>
</ul>
</li>
 	<li>Drive traffic to SharePoint
<ul>
 	<li>Encourage attaching links in E-mails versus documents.</li>
 	<li>Draft content on SharePoint and include links to the pages in E-mails or communications.</li>
 	<li>Adopt this into the organizations culture…"it's on SharePoint"…"submit your XXX on SharePoint" … "I put the document on SharePoint so we can collaborate on it".</li>
</ul>
</li>
</ul>
<h1>Empower people</h1>
<ul>
 	<li>Leadership sponsorship and support
<ul>
 	<li>Imperative to the success of any platform being adopted.</li>
 	<li>Must be driven from the top down.</li>
 	<li>Given the appropriate priority and resources to support.</li>
</ul>
</li>
 	<li>Get user buy in
<ul>
 	<li>What's in it for them?</li>
 	<li>Explain the use cases and practical ways it will impact their jobs/lives.</li>
 	<li>Must be empathetic to their situations - can't be "another IT initiative"</li>
</ul>
</li>
 	<li>Users have to participate
<ul>
 	<li>Identify those people that are technically more savvy and have usually been early adopters.</li>
 	<li>Embrace technology and the change it brings and displays a positive attitude towards it.</li>
 	<li>Provide them the necessary training to develop/enhance their skills.</li>
 	<li>Try to engage people who know their department/business process and can adapt to the functionality in SharePoint to make a real impact in their area.</li>
</ul>
</li>
 	<li>Form a SharePoint working group
<ul>
 	<li>Member include those business users identified above.</li>
 	<li>Combination of training and how are you using it sessions.</li>
 	<li>Promotes collaboration within the organization.</li>
</ul>
</li>
 	<li>Adoption will grow organically
<ul>
 	<li>Once people see how it will benefit them they will either jump on or ignore it. Focus on those that jump on and want to be your champions.</li>
 	<li>Have those champions work with the others in their department to foster/grow/train.</li>
 	<li>SharePoint SME's continually work with users to refine/enhance how they are using SharePoint.</li>
</ul>
</li>
</ul>
<h1>Measure the success and expand</h1>
<ul>
 	<li>Evaluate what is working and adjust
<ul>
 	<li>Keep content fresh and in front of people</li>
 	<li>Continually monitor the information architecture for a better search/navigation experience.</li>
 	<li>Identify what isn't working so well, analyze the outcome and make corrections.</li>
</ul>
</li>
 	<li>Expand to more groups
<ul>
 	<li>Continue to execute on the long term strategy.</li>
 	<li>Rinse and repeat on the approach.</li>
</ul>
</li>
 	<li>Showcase the successes
<ul>
 	<li>During organization meetings, reference how SharePoint has transformed a department does business and why.</li>
 	<li>Engage the communications people to help promote and use SharePoint. They generally send out the most customer facing information.</li>
</ul>
</li>
 	<li>Continually expand
<ul>
 	<li>Start to identify more complex use cases and solutions.</li>
 	<li>Review the information architecture for a relevant search experience.</li>
</ul>
</li>
 	<li>Measure and Govern
<ul>
 	<li>Police the governance plan to identify trends and user actions.</li>
 	<li>How many subsites are being created when a simple library can be used?</li>
 	<li>Review user traffic to sites and start to trend it so you know how to structure the navigation to accommodate these habits.</li>
 	<li>Review the 3 click rule (users shouldn't have to click more than 3 links to get where they need to) by analyzing usage patterns.</li>
 	<li>Expand/modify governance where necessary to accommodate newly released features/functionality.</li>
</ul>
</li>
</ul>
&nbsp;

&nbsp;

&nbsp;

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>PowerBI and SharePoint 2013 Search Results</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/powerbi-and-sharepoint-2013-search-results</link>
      <pubDate>Thu, 14 Jun 2018 00:50:11 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=905</guid>
      <description><![CDATA[Knowing that the SharePoint 2013 Search API is all REST based, we can user PowerBI to retrieve the...]]></description>
      <content:encoded><![CDATA[Knowing that the SharePoint 2013 Search API is all REST based, we can user PowerBI to retrieve the results of the REST call into a Data Set that can be used as the source of our PowerBI Dashboard or report.
<h2>REST Syntax</h2>
At the heart of any SharePoint search request is having a deep understanding of the REST syntax that you want to execute.  This is <a href="https://social.technet.microsoft.com/wiki/contents/articles/35796.sharepoint-2013-using-rest-api-for-selecting-filtering-sorting-and-pagination-in-sharepoint-list.aspx">fully documented</a> for reference, however for this illustration we'll be using the following:

https://&lt;SiteURL&gt;/_api/search/query?querytext='contenttype:&lt;ContentType&gt;'&amp;selectproperties='Path,Filename,Title,Author'

A few things to note:
<ol>
 	<li>The querytext parameter must use supported KQL query syntax.</li>
 	<li>The selectproperties querystring parameter must use managed properties in the SharePoint search schema.  You can have as many as you like but they must be managed properties.</li>
</ol>
<h2>JSON Response</h2>
When we use the SharePoint Search API to execute a REST request the response is returned in an XML format similar to this:

<a href="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchJSONOutput.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchJSONOutput.png" alt="" width="742" height="420" class="alignleft size-full wp-image-915" /></a>

&nbsp;
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
&nbsp;

The areas highlighted represent parent elements in the XML file.  Knowing this will help you to navigate the DOM structure of the XML file.  PowerBI will put each collection of nodes into separate lists and tables.  When this happens we need to expand the results so we can use them in our data set.
<h2>PowerBI Data Set</h2>
Now that we have the JSON reponse in XML format, we need to configure the following steps in PowerBI to consume the JSON response.  To properly parse the JSON response, several "helper" queries will need to be created.
<h3>Create a new parameter that will hold the REST request</h3>
<ol>
 	<li style="padding-left: 30px">From the Power BI desktop, the "Edit Queries" menu will bring you to a new screen where you can create and edit everything in this post.</li>
 	<li style="padding-left: 30px"> Create a new parameter from the Manage Parameters option.</li>
</ol>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchManageProperties.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchManageProperties.png" alt="" width="168" height="141" class="alignleft size-full wp-image-925" /></a></p>
&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;
<p style="padding-left: 30px">3.     Create the new parameter and set the value to the REST query you want to execute.</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchManagePropertiesCreate.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchManagePropertiesCreate.png" alt="" width="575" height="371" class="alignleft size-full wp-image-935" /></a></p>
&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;
<h3></h3>
&nbsp;

&nbsp;
<h3 style="padding-left: 30px">Creating the base query</h3>
<p style="padding-left: 30px">You will start with a blank query and put in the code necessary to transform the jSON response to a table that can be used.</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchBlankQuery.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchBlankQuery.png" alt="" width="155" height="424" class="alignleft size-full wp-image-945" /></a></p>
&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;
<p style="padding-left: 30px">1. In the blank query window you can then paste the following code.  This will retrieve the jSON response from the REST call to the SharePoint search API.</p>
<p style="padding-left: 60px">let</p>
<p style="padding-left: 90px">Source = Json.Document(Web.Contents(RESTQuery,[Headers=[Accept="application/json;odata=verbose"]])),
d = Source[d],
query = d[query],
PrimaryQueryResult = query[PrimaryQueryResult],
RelevantResults = PrimaryQueryResult[RelevantResults],
Table = RelevantResults[Table],
Rows = Table[Rows],
results = Rows[results],
#"Converted to Table" = Table.FromList(results, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"Cells"}, {"Column1.Cells"}),
#"Expanded Column1.Cells" = Table.ExpandRecordColumn(#"Expanded Column1", "Column1.Cells", {"results"}, {"Column1.Cells.results"}),
#"Expanded Column1.Cells.results" = Table.ExpandListColumn(#"Expanded Column1.Cells", "Column1.Cells.results"),
#"Expanded Column1.Cells.results1" = Table.ExpandRecordColumn(#"Expanded Column1.Cells.results", "Column1.Cells.results", {"__metadata", "Key", "Value"}, {"Column1.Cells.results.__metadata", "Column1.Cells.results.Key", "Column1.Cells.results.Value"}),
#"Removed Other Columns" = Table.SelectColumns(#"Expanded Column1.Cells.results1",{"Column1.Cells.results.Key", "Column1.Cells.results.Value"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns",{{"Column1.Cells.results.Key", "Key"}, {"Column1.Cells.results.Value", "Value"}})</p>
<p style="padding-left: 60px">in
#"Renamed Columns"</p>
<p style="padding-left: 30px">2. When inserted the Advanced Editor should look like this:</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchAdvancedEditor.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchAdvancedEditor-1024x545.png" alt="" width="1024" height="545" class="alignleft size-large wp-image-955" /></a></p>
<p style="padding-left: 30px">3. What this is replicating are the steps that you can manually configure within Power BI.  Use this to get started and then you can modify the steps to fit your specific needs like renaming columns or splitting out values from a column.</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchQuerySettings.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/PowerBISearchQuerySettings.png" alt="" width="234" height="363" class="alignleft size-full wp-image-965" /></a></p>
&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;
<h3></h3>
<h3></h3>
&nbsp;

&nbsp;

&nbsp;

&nbsp;
<h3>KeyValueCount Query</h3>
This is one of those "helper" queries that we'll need to transform the jSON response.
<ol>
 	<li>Create a new Blank Query like you did above and paste in the following code:</li>
</ol>
<p style="padding-left: 60px">let
Source = SPSearch,
#"Grouped Rows" = Table.Group(Source, {"Key"}, {{"Count", each Table.RowCount(_), type number}}),
#"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"Count"}),
#"Counted Rows" = Table.RowCount(#"Removed Columns")
in
#"Counted Rows"</p>
&nbsp;
<h3>Transform the Search Results</h3>
We now do the final transformation on the jSON response to get it into a "table" format that we can easily use in Power BI.
<ol>
 	<li>Create a new Blank Query like you did above and paste in the following code:</li>
</ol>
<p style="padding-left: 60px">let
Source = SPSearch,
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Inserted Integer-Division" = Table.AddColumn(#"Added Index", "Integer-Division", each Number.IntegerDivide([Index], KeyValue_Count)),
#"Removed Columns" = Table.SelectColumns(#"Inserted Integer-Division",{"Key", "Value", "Integer-Division"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Key]), "Key", "Value"),
#"Removed Other Columns" = Table.SelectColumns(#"Pivoted Column",{"Path", "Title", "Author", "RefinableString00"})
in
#"Removed Other Columns"</p>
<p style="padding-left: 30px">2.  Note the "Removed Other Columns" line above.  This is where you'll see your managed properties from the SharePoint search API.  As you add managed properties to the selectproperties parameter of the REST call, they will automatically show up so you can use them in your reports and dashboards.</p>

<h3>Display the Search Results</h3>
Now that we have all the ETL (Extract, Transform and Load) work done, we can use the SearchResult "table" in Power BI to create our reports and dashboards.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/PowerBISearchDashboard.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/PowerBISearchDashboard-1024x556.png" alt="" width="1024" height="556" class="alignleft size-large wp-image-975" /></a>

Some things to note:
<ul>
 	<li>The "Fields" pane on the right will display all of the managed properties returned by you're REST call to the Search API.</li>
 	<li>Focus on using the "SearchResults" source to build you're dashboards.  The other "tables" are to assist in the ETL process.</li>
 	<li>You'll have the full Power BI experience as other data sources with the ability to drill and refine you're results for maximum analysis of your SharePoint data.</li>
 	<li>The full pbix file with all configurations can be downloaded from <a href="https://github.com/Spucelik/SharePointPowerBI">GitHub</a></li>
</ul>
&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>BI and SharePoint Onine</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/bi-and-sharepoint-onine</link>
      <pubDate>Thu, 12 Apr 2018 20:17:08 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=765</guid>
      <description><![CDATA[Business Intelligence (BI) and SharePoint online are maturing to the point that it's becoming much...]]></description>
      <content:encoded><![CDATA[Business Intelligence (BI) and SharePoint online are maturing to the point that it's becoming much easier to point to your data source, select the data you want to present, how you want to present it and publish it for consumption.  Even though this is a bit over simplified, this is much easier than current on premises options like SSRS, Performance Point and PowerView.

PowerBI is quickly  becoming the gold standard for BI activities in O365.  The feature set has matured to the point that multiple data sources are provided out of the box (Microsoft and non-Microsoft) which allows you to quickly start analyzing the data rather than having to constantly build and modify static reports.  Adopting PowerBI will quickly get you out of the report writing business and into the data analysis business because of the non-static and interactive way of answering questions and making decisions.

Let's take a look at how to use PowerBI and SharePoint together.
<h2><span style="color: #000080">What you need</span></h2>
A few things you'll need to get started.
<ul>
 	<li><a href="https://powerbi.microsoft.com/en-us/get-started/">PowerBI Desktop</a> - this is the desktop application that you'll need to gather, design and publish your dashboard solutions.</li>
 	<li>PowerBI SKU to publish reports - even though PowerBI desktop is free, you'll need a license to publish this to PowerBI in O365 for others to interact with it.</li>
 	<li>SharePoint list - For this post I'm using a standard SharePoint list that contains Contoso sales information.  Any list will do.</li>
</ul>
<h2><span style="color: #000080">Getting the data from a list</span></h2>
<ul>
 	<li>Fire up  PowerBI desktop and go Get Data -&gt; More... -&gt; Online Service -&gt; SharePoint Online List:</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BIGetData.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BIGetData-114x300.jpg" alt="" width="114" height="300" class="size-medium wp-image-805 alignnone" /></a></p>

<h2 style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BISharePointList.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BISharePointList-300x113.jpg" alt="" width="300" height="113" class="size-medium wp-image-775 alignnone" /></a></h2>
<ul>
 	<li>Provide the URL to your site (not the list)</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BISharePointListURL.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BISharePointListURL-300x87.jpg" alt="" width="300" height="87" class="size-medium wp-image-795 alignnone" /></a></p>

<ul>
 	<li>Choose the authentication method to connect to you're tenant:</li>
</ul>
<h2 style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BISharePointListURLCredentials.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BISharePointListURLCredentials-300x158.jpg" alt="" width="300" height="158" class="size-medium wp-image-815 alignnone" /></a></h2>
<ul>
 	<li>Once authenticated you can see the objects in the site.  Select the list you want to use as a data source.</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BISharePointListSelection.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BISharePointListSelection-300x241.jpg" alt="" width="300" height="241" class="size-medium wp-image-785 alignnone" /></a></p>
At this point you can configure the dashboard so it conveys the information you want to share with your users.  Here is a sample using the list data selected above.
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BIDesktopDashboard.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BIDesktopDashboard-300x207.jpg" alt="" width="300" height="207" class="size-medium wp-image-825 alignnone" /></a></p>
Now that you have everything configured the way you want, it's time to publish it to PowerBI in O365 so you can consume it in your SharePoint site.
<h2><span style="color: #000080">Configure the PowerBI web part</span></h2>
<ul>
 	<li>Navigate to PowerBI in O365 and get the URL of the report you want to use in the web part.</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BIGetReportLink.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BIGetReportLink-1024x770.jpg" alt="" width="1024" height="770" class="alignleft size-large wp-image-875" /></a></p>

<ul>
 	<li>Within your O365 site, create a new modern page and add the PowerBI web part (only available in the commercial cloud, not government cloud as of this publication date)</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BISelectWebPart.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BISelectWebPart-242x300.jpg" alt="" width="242" height="300" class="size-medium wp-image-835 alignnone" /></a></p>

<ul>
 	<li>Edit newly added web part and then paste in the URL copied from PowerBI.</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BIPasteReportLink.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BIPasteReportLink-1024x274.jpg" alt="" width="1024" height="274" class="size-large wp-image-855 alignnone" /></a></p>

<ul>
 	<li>Publish the page and then view the report on your SharePoint page.</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2018/04/BIViewInWebPart.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/BIViewInWebPart-1024x646.jpg" alt="" width="1024" height="646" class="size-large wp-image-885 alignnone" /></a></p>
Once the report is displayed in the web part, the user has full interactivity with the data as you would expect.  Slicers, filters etc all provide for a very rich user experience and one that saves you hours of time building another static report to do what PowerBI does naively.]]></content:encoded>
    </item>
    <item>
      <title>What is a SharePoint architect anyway?</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/what-is-a-sharepoint-architect-anyway</link>
      <pubDate>Thu, 22 Feb 2018 00:13:53 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=745</guid>
      <description><![CDATA[As you progress through your SharePoint career you may be starting to wonder what’s next from...]]></description>
      <content:encoded><![CDATA[<span style="color: #565656;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 14px;font-style: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;background-color: #ffffff;float: none">As you progress through your SharePoint career you may be starting to wonder what’s next from technical perspective.  You may be a developer and want to start writing code, or the thought of writing code makes your hair curl.  As I’ve progressed through my SharePoint </span><span style="color: #565656;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 14px;font-style: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;background-color: #ffffff;float: none">career and worked with many customers on how to structure their SharePoint environment,  I developed the following illustration to help understand what level you may be currently at and what may lie ahead.</span>
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2018/02/TechnicalCareerPath.gif"><img width="597" height="450" class="size-full wp-image-755 alignnone" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/TechnicalCareerPath.gif" /></a></p>
<p style="margin: 0px 0px 1.5em;padding: 0px;border: 0px;font-size: 14px;vertical-align: baseline;background: #ffffff;color: #565656;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-style: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px">As you start to look through the pyramid to see where you might be or aspire to be, lets break down each slice of the pyramid.</p>

<ul style="margin: 0px 0px 1em 30px;padding: 0px;border: 0px;font-size: 14px;vertical-align: baseline;background: #ffffff;color: #565656;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-style: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px">
 	<li><strong>Configuration</strong><span> </span>– often times this will be the introductory level of your SharePoint career and are able to effectively work with the businesses power user audience.  To do this you should be very familiar with not only what a content type is but the details on how to configure it and use it throughout your site collection.  This foundation will lead you to creating browser based workflows and using all the tools in the SharePoint browser experience to create solutions.</li>
 	<li><strong>Customization </strong>– Now that you have mastered the SharePoint browser experience and your information architecture (content types and list/library structure) has been configured,  you are ready to extend SharePoint.  Customizing the forms using InfoPath form Services,  SharePoint designer for list or libraries and PowerApps/Flow is probably your next step.  Within this level of expertise you start to really leverage SharePoint designer and some of the advanced web parts that SharePoint has to offer.</li>
 	<li><strong>Admin/Developer </strong>– This is where you typically reach a fork in the road.  It takes a unique person to really want to master the administration side of SharePoint (IE become a PowerShell guru and hang out in Central Administration more than anywhere else) and the development platform (IE Visual studio and the ability to create web parts and custom workflows).  This direction can come from personal interest or from a business need.</li>
 	<li><strong>Architect</strong><span> </span>–  After years of working with everything in SharePoint and possessing the ability to configure just about anything using the SharePoint platform you have the experience and skills necessary to call yourself and architect.  Not only do you have a keen understanding of the features and functionality of SharePoint but you also recommend one approach over another because of performance implications, scalability or knowing the recommended thresholds of SharePoint.  Architects often possess experience in “supportive” technologies such as being a seasoned .NET developer, a system admin for the domain or a SQL Server DBA.  I’ve seen many times where this title is mis-interpreted as someone who understands the core features of SharePoint.  Yes this is a pre-requisite but you also need to have a solid understanding of how to get the requirements out of business users so you can apply the proper components or technologies to solve the problem.</li>
</ul>
<p style="margin: 0px 0px 1.5em;padding: 0px;border: 0px;font-size: 14px;vertical-align: baseline;background: #ffffff;color: #565656;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-style: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px">Like all technologies that are complex, the ability to specialize in what interests you the most is what will drive not only personal satisfaction but your success with that chosen technology.  Hopefully this will position you for that succes</p>]]></content:encoded>
    </item>
    <item>
      <title>Updating SharePoint 2013 User Information</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/updating-sharepoint-2013-user-information</link>
      <pubDate>Tue, 07 Nov 2017 19:07:54 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=735</guid>
      <description><![CDATA[In SharePoint 2013 there are a couple ways to configure how user information is updated from Active...]]></description>
      <content:encoded><![CDATA[In SharePoint 2013 there are a couple ways to configure how user information is updated from Active Directory:
<ul>
 	<li><strong>SharePoint Profile Synchronization</strong> does just that, if changes are made in AD they update SharePoint and if the user is updated in SharePoint it updates AD.  In theory this works great but some network administrators want tighter control of AD, or the number of users in an organization is so large that a strain is put on SharePoint during this Sync process.</li>
 	<li><strong>SharePoint Active Directory Import</strong> - This is a one way update from AD to SharePoint...period.  Any changes made in AD are then sent to SharePoint and can be seen in the users profile.</li>
</ul>
Within SharePoint there is also a hidden list called "User Information List" located at "/SiteName/_catalogs/users/simple.aspx" that will record all the users when they access the site.  This information is used when you click on a persons name used in a PeoplePicker control or the Created By or Modified By metadata of an item.

SharePoint does not use the information from User Profile Service for this because if a user leaves the organization, the User Profile is deleted during the sync process.  SharePoint needs to preserve the historical information, which is why this list was created and maintained.
<h3>Issue</h3>
This is all well and good until a user change happens such as their name, title, manager etc...all the attributes that are in User Profile Service and synced from AD The "User Information List" does not receive changes from User Profile Service when this happens and the two quickly get out of sync.
<h3>Resolution</h3>
A couple ways to fix the issue:
<ol>
 	<li>You can run a <a href="https://technet.microsoft.com/en-us/library/ff607827.aspx">Set-SPUser PowerShell</a> command using the -SyncFromAD parameter but this will only update the name and E-mail in the User Information List.  If you want to update any other attributes from AD/User Profile this won't work.</li>
 	<li>Run a <a href="https://gallery.technet.microsoft.com/scriptcenter/Sync-SharePoint-User-2c59052a">PowerShell script</a> that will loop through all the users in the User Information List, which will the query the User Profile Service to get the updated attributes.  This will update as many attributes from the User Profile Service as you want, which is far better than the Set-SPUser method.</li>
</ol>]]></content:encoded>
    </item>
    <item>
      <title>Supporting TLS 1.2 in SharePoint 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/supporting-tls-1-2-in-sharepoint-2013</link>
      <pubDate>Fri, 03 Nov 2017 21:28:13 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=725</guid>
      <description><![CDATA[In March of 2014 the .NET framework 4.6 was updated to provide support for TLS 1.1 and 1.2.  This is...]]></description>
      <content:encoded><![CDATA[In March of 2014 the .NET framework 4.6 was <a href="https://technet.microsoft.com/library/security/2960358">updated to provide support</a> for TLS 1.1 and 1.2.  This is made it possible through a series of registry entries to enable this more secure method.

An issue with REST calls using this version of the .NET Framework still exists because of the interfaces based on WCF which can cause Event ID 5566 to be recorded in the servers application log.

For example take an InfoPath form that has been configured with a button making a REST call to another SharePoint list to retrieve data.  If you have followed the <a href="https://technet.microsoft.com/library/60913d6d-c069-4dfc-9399-71d5344da4e0(v=office.16).aspx">guidance on configuring TLS 1.2</a> in the registry you'll be presented with this error:
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/TLS12InfoPathError.png"><img width="312" height="230" class="alignnone size-full wp-image-726" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/TLS12InfoPathError.png" /></a></p>
In the ULS log you'll want to look for an entry similar to this:
<p style="padding-left: 30px">"The following query failed: &lt;NameOfRESTQuery&gt;"..."The underlying connection was closed: An unexpected error occurred on a receive"</p>
The tip off would be the name of the query you're trying to execute and knowing that it's making a REST call.

The fix is fairly straight forward:
<ol>
 	<li>Install the .NET Framework 4.7 - <span>Starting with the .NET Framework 4.7, WCF allows you to configure TSL 1.1 or TLS 1.2 in addition to SSL 3.0 and TSL 1.0 as the default message security protocol.</span></li>
 	<li>Make necessary <a href="https://technet.microsoft.com/library/60913d6d-c069-4dfc-9399-71d5344da4e0(v=office.16).aspx">registry entries</a> to support TLS 1.2</li>
 	<li>In the Web.Config file for the web application you intend to use TLS 1.2 on, make the <a href="https://docs.microsoft.com/en-us/dotnet/framework/whats-new/#wcf47">following entry</a>:</li>
</ol>
<p style="padding-left: 30px">&lt;runtime&gt;</p>
<p style="padding-left: 60px">&lt;AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols=false;Switch.System.Net.DontEnableSchUseStrongCrypto=false" /&gt;</p>
<p style="padding-left: 30px">&lt;/runtime&gt;</p>
Once these changes have been made REST calls can be made without any errors being returned.

<strong>NOTE:</strong>  This approach only works on SharePoint 2013 because it uses the .NET Framework 4.x.  It will not work on SharePoint 2010 since it uses the .NET Framework 3.x]]></content:encoded>
    </item>
    <item>
      <title>Modifying the Hover Panel in a Document Library</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/modifying-the-hover-panel-in-a-document-library</link>
      <pubDate>Sat, 15 Jul 2017 00:20:54 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=686</guid>
      <description><![CDATA[SharePoint 2013 introduced hover panels to search and document libraries.  Hover panels provide a...]]></description>
      <content:encoded><![CDATA[SharePoint 2013 introduced hover panels to search and document libraries.  Hover panels provide a quick way to see key information on an item and if you have Office Web Apps (OWA) installed, you can also see the document without opening it.
<p style="padding-left: 30px"> <a href="https://msdnshared.blob.core.windows.net/media/2017/07/20170713HoverPanel1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/20170713HoverPanel1.jpg" alt="" width="596" height="223" class="alignnone size-full wp-image-696" /></a></p>
At the bottom of each hover panel are actions that you can take on the item.  You'll notice though that to get to the item properties (view or edit) you're still another click away and must click the 3 dot's to reveal the familiar context menu.
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2017/07/20170713HoverPanelContextMenu1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/20170713HoverPanelContextMenu1.jpg" alt="" width="788" height="356" class="alignnone size-full wp-image-715" /></a></p>
With some JavaScript and familiarity with the SharePoint object model you can add your own events to the hover card.
<h3>Adding the JavaScript</h3>
I added the script below to the masterpage of the site so that all libraries will include this functionality.

The goal of the hover panel events is to add links to the bottom of the hover panel so users can easily navigate to view or edit the properties of the item.
<ol>
 	<li>The first part of the script will override the Document Library hover panel footer template.</li>
</ol>
<p style="padding-left: 60px">SP.SOD.executeFunc("callout.js", "Callout", function () {
var itemCtx = {};
itemCtx.Templates = {};
itemCtx.BaseViewID = 'Callout';
//The template type of 101 is a document library
itemCtx.ListTemplateType = 101;
itemCtx.Templates.Footer = function (itemCtx) {
//Override the footer of the hover card with your custom function.
return CalloutRenderFooterTemplate(itemCtx, AddCustomAction, true);
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(itemCtx);
});</p>
<p style="padding-left: 30px">2.  Now you can add your custom action:</p>
<p style="padding-left: 60px">function AddCustomAction (renderCtx, calloutActionMenu) {
//Action you want to add to the footer

calloutActionMenu.addAction (new CalloutAction ({
text: "View Properties",
tooltip: 'View the properties of this document',
onClickCallback: function()
{
//Determine the source of the list so you can navigate back to it.
var listSource = _spPageContextInfo.serverRequestPath;
//Make sure to append the ID to the URL so the item renders properly.
window.location = renderCtx.displayFormUrl + "&amp;ID=" + renderCtx.CurrentItem.ID + "&amp;Source=" + listSource;
}
}))

calloutActionMenu.addAction (new CalloutAction ({
text: "Edit Properties",
tooltip: 'Edit the properties of this document',
onClickCallback: function()
{
//Determine the source of the list so you can navigate back to it.
var listSource = _spPageContextInfo.serverRequestPath;
window.location = renderCtx.editFormUrl + "&amp;ID=" + renderCtx.CurrentItem.ID + "&amp;Source=" + listSource;
}
}));</p>
<p style="padding-left: 30px">3.  Finally display the default actions for the document library.</p>
<p style="padding-left: 60px">     //Display the default document library actions
CalloutOnPostRenderTemplate(renderCtx, calloutActionMenu);
}</p>
Putting it all together, here is the complete code:
<p style="padding-left: 30px">SP.SOD.executeFunc("callout.js", "Callout", function () {
var itemCtx = {};
itemCtx.Templates = {};
itemCtx.BaseViewID = 'Callout';
//The template type of 101 is a document library
itemCtx.ListTemplateType = 101;
itemCtx.Templates.Footer = function (itemCtx) {
//Override the footer of the hover card with your custom function.
return CalloutRenderFooterTemplate(itemCtx, AddCustomAction, true);
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(itemCtx);
});

function AddCustomAction (renderCtx, calloutActionMenu) {
//Action you want to add to the footer

calloutActionMenu.addAction (new CalloutAction ({
text: "View Properties",
tooltip: 'View the properties of this document',
onClickCallback: function()
{
//Determine the source of the list so you can navigate back to it.
var listSource = _spPageContextInfo.serverRequestPath;
//Make sure to append the ID to the URL so the item renders properly.
window.location = renderCtx.displayFormUrl + "&amp;ID=" + renderCtx.CurrentItem.ID + "&amp;Source=" + listSource;
}
}))

calloutActionMenu.addAction (new CalloutAction ({
text: "Edit Properties",
tooltip: 'Edit the properties of this document',
onClickCallback: function()
{
//Determine the source of the list so you can navigate back to it.
var listSource = _spPageContextInfo.serverRequestPath;
window.location = renderCtx.editFormUrl + "&amp;ID=" + renderCtx.CurrentItem.ID + "&amp;Source=" + listSource;
}
}));


//Display the default document library actions
CalloutOnPostRenderTemplate(renderCtx, calloutActionMenu);
}</p>

<h3>References:</h3>
<a href="https://msdn.microsoft.com/en-us/library/office/ff409592(v=office.14).aspx">SharePoint JavaScript class reference</a>]]></content:encoded>
    </item>
    <item>
      <title>Removing items from the quick launch</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/removing-items-from-the-quick-launch</link>
      <pubDate>Mon, 10 Jul 2017 23:09:13 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=635</guid>
      <description><![CDATA[When you create a new site in SharePoint, various templates are used that have been configured to...]]></description>
      <content:encoded><![CDATA[When you create a new site in SharePoint, various templates are used that have been configured to create certain objects (lists/libraries) and activate certain features.  Using these templates provides a standard approach to creating sites but if these don't meet your needs you can always modify them.

In this post I'll show you how to modify the standard team site template and remove an entry from the quick launch (calendar link).
<p style="padding-left: 30px"><strong>NOTE</strong>:  this will only affect newly created sites, anything that has already been created will need to be modified manually or with PowerShell.</p>
Each version of SharePoint implements the site templates a little differently.  I'll show you both SharePoint 2010 and 2013 approaches. Regardless of the approach you'll modify the ONET.XML file for the template to be modified.
<h3><strong>SharePoint 2010</strong></h3>
By default the quick launch will include certain lists/libraries that are created when the site is created:
<p style="padding-left: 30px"><a href="https://msdnshared.blob.core.windows.net/media/2017/07/2010QuickLaunchDefault.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/2010QuickLaunchDefault.jpg" alt="" class="alignnone size-full wp-image-655" width="159" height="337" /></a></p>
To remove the Calendar item in the Lists group:
<ol>
 	<li>Locate the ONET.XML file for the TeamSite (sts) template.  It will be located at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\SiteTemplates\sts\xml</li>
 	<li>Open the file in Notepad.  There are 2 lines that need to be commented out to suppress the Calendar link.</li>
 	<li>Navigate to line ~87 and comment it out.  It should look like this:</li>
</ol>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/07/2010OnetTemplate1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/2010OnetTemplate1.jpg" alt="" class="alignnone size-full wp-image-645" width="1389" height="314" /></a></p>
     4.  Then navigate to line ~166 and comment it out:
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/07/2010OnetTemplate2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/2010OnetTemplate2.jpg" alt="" class="alignnone size-full wp-image-665" width="1322" height="171" /></a></p>
     5.  Save the file and then do an IISRESET.  This will re-cache the object so that when you create a new Team Site, it will use the newly modified version.

6.  When you create a new Team Site, notice the Calendar link has been removed:
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/07/2010QuickLaunchmodified.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/2010QuickLaunchmodified.jpg" alt="" class="alignnone size-full wp-image-646" width="160" height="313" /></a></p>
<p style="padding-left: 60px"></p>

<h3><strong>SharePoint 2013</strong></h3>
The process for SharePoint 2013 is similar but a little easier:
<ol>
 	<li>Navigate to the template folder:  C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\SiteTemplates\sts\xml and open the ONET.XML file in Notepad.</li>
 	<li>On Line ~73 modify the OnQuickLaunch attribute to be FALSE, which will suppress the "Documents" link on the quick launch:</li>
</ol>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/07/2013OnetTemplate.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/2013OnetTemplate.jpg" alt="" class="alignnone size-full wp-image-667" width="1526" height="108" /></a></p>
      3.  Again, do an IISRESET to re-cache the file and then create a new site using the Team Site template.  Notice the "Documents" link has been removed:
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/07/2013QuickLaunch.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/2013QuickLaunch.jpg" alt="" class="alignnone size-full wp-image-675" width="191" height="155" /></a></p>
&nbsp;
<h3><strong>Notes:</strong></h3>
<ul>
 	<li>Each of the ONET.XML files will be located in the respective SharePoint &lt;hive&gt; (IE 14 or 15) depending on the version.</li>
 	<li>The C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\&lt;VERSION&gt;\TEMPLATE\SiteTemplates directory will hold all of the default site templates.  If you want to create your own, it's recommended to copy an existing one and modify where necessary.</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>List Item Threshold Explained</title>
      <link>https://docs.microsoft.com/archive/blogs/spucelik/list-item-threshold-explained</link>
      <pubDate>Mon, 22 May 2017 19:38:09 GMT</pubDate>
      <dc:creator><![CDATA[spucelik]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/spucelik/?p=506</guid>
      <description><![CDATA[Many of us already know the story with the 5,000 item limit with lists/libraries and some strategies...]]></description>
      <content:encoded><![CDATA[Many of us already know the story with the 5,000 item limit with lists/libraries and some <a href="https://support.office.com/en-us/article/Manage-large-lists-and-libraries-in-SharePoint-b8588dae-9387-48c2-9248-c24122f07c59?ui=en-US&amp;rs=en-US&amp;ad=US">strategies </a>to work around this limitation.

A lot of administrators when faced with the familiar "the number of items in this list exceeds the list view threshold" will naturally navigate to Central Admin and modify the Resource Throttling for the web application.
<ul>
 	<li>Select the proper web application and then General Settings -&gt; Resource Throttling.</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/05/ListItemThresholdGeneralSettings1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/05/ListItemThresholdGeneralSettings1.jpg" alt="listitemthresholdgeneralsettings" class="alignnone size-full wp-image-595" width="386" height="287" /></a></p>

<ul>
 	<li>Once in the Resource Throttling page, you can adjust the list view threshold for users and admins.</li>
</ul>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/05/ListItemThresholdCAResourceThrottling1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/05/ListItemThresholdCAResourceThrottling1.jpg" alt="listitemthresholdcaresourcethrottling" class="alignnone size-full wp-image-586" width="535" height="547" /></a></p>
Be careful when doing this because when you select the <strong>web application</strong>, the settings affect all list and libraries in that web application.

<strong>PowerShell to the rescue</strong>

SharePoint administrators with PowerShell privileges you can modify thresholds on a list by list basis avoiding web application wide thresholds.  There are a few things to consider.
<ol>
 	<li> The "IsThrottled" cmdlet is a Boolean that indicates if a list has been throttled.   Consider the following command:</li>
</ol>
<p style="padding-left: 60px">$web = get-spweb http://sp
$list = $web.lists["test"]</p>
<p style="padding-left: 60px">$list.IsThrottled</p>
<p style="padding-left: 60px">This will always return false for lists fewer than 5,000 items (or central admin settings if overridden)</p>
<p style="padding-left: 30px">2.  As soon as item 5001 is added then normal users will see the "this view cannot be displayed because it exceeds the list view threshold" message on the top of the list:</p>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/05/ListItemThresholdUserError6.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/05/ListItemThresholdUserError6.jpg" alt="listitemthresholdusererror" class="alignnone size-full wp-image-585" width="722" height="186" /></a></p>
<p style="padding-left: 60px">A couple things to note when the 5001 mark is met:</p>
<p style="padding-left: 90px">1. When an administrator accesses the list, they will still be bound to the list view threshold set in Central Administration. In our example it's 20,000 so they see the list items fine.</p>
<p style="padding-left: 90px">2.  When you re-run the PowerShell command above, now the Boolean value returned is true, indicating the list is now being throttled.</p>
<p style="padding-left: 30px">3.  To disable list throttling for the specified list, run the following PowerShell command:</p>
<p style="padding-left: 60px">$web = get-spweb http://sp
$list = $web.lists["test"]</p>
<p style="padding-left: 60px">$list.EnableThrottling = $false
$list.Update()</p>
<p style="padding-left: 30px">4.  Now when you run the $list.IsThrottled command, it will return false, indicating the list is no longer being throttled.  Users will now be able to see all the items in the list without the error message.</p>
<strong>Calendars are different</strong>

When working with calendars, depending on the view that you select depends on the results you'll see.  Remember a calendar is nothing more than a list with some fancy views on top of it.  Consider the following:
<ol>
 	<li>If a regular user goes into the All Events view and there are more than 5,000 items, they will see the list item threshold error.</li>
 	<li>If the same user goes into a specific calendar month that has more than 5,000 items, it will display just fine.</li>
</ol>
<p style="padding-left: 60px"><a href="https://msdnshared.blob.core.windows.net/media/2017/05/CalendarViewThreshold.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2017/05/CalendarViewThreshold.jpg" alt="" class="alignnone size-full wp-image-605" width="599" height="605" /></a></p>
<p style="padding-left: 60px">3.  If you click on the 5003 more items link it will expand and show all 5003 items (yes it does scroll forever!).</p>
<p style="padding-left: 60px">4.  When you page through the monthly view it <strong>does </strong>make a SQL call to the database.  I ran a SQL profile trace and it will use the beginning and ending day of that month to retrieve the results.  You do see some latency when going from page to page.</p>
<strong>NOTE:</strong>
<ul>
 	<li>Plan your indexing as part of the list/library planning.  If you try to create an index when the list is over the threshold, you will get a "Something went wrong" error.</li>
 	<li>If you have grouping on your list, you still need to conform to the list view threshold requirements.</li>
</ul>
<strong>Resources</strong>:
<ul>
 	<li><a href="https://msdn.microsoft.com/en-us/library/ff798465.aspx">Query Throttling and Indexing</a></li>
 	<li><a href="https://support.office.com/en-us/article/Manage-large-lists-and-libraries-in-SharePoint-b8588dae-9387-48c2-9248-c24122f07c59?ui=en-US&amp;rs=en-US&amp;ad=US">Manage Large Lists and libraries in SharePoint</a></li>
</ul>]]></content:encoded>
    </item>
  </channel>
</rss>