Secret ingredients to quality software

SSW Foursquare

Rules to Better SharePoint - 23 Rules

Organizations are extremely good at accumulating data. Mostly in the form of documents and records, this data is often haphazardly located across the organization, and poorly integrated into document processes.

SharePoint is the best organization tool to improve this situation by storing all documents & records in a centralized system. SharePoint stores every version of a document, allows you to enforce information management policies and improves efficiency by automating common business processes. Here you will find many rules for a better experience with SharePoint.

If you still need help, visit our SharePoint consulting page and book in a consultant.

Other SharePoint Rules:

  1. Rules to Better SharePoint Development
  2. Rules to Better SharePoint for End Users
  3. Rules to Better SharePoint Migration from 2007 to 2010
  4. Rules to Better SharePoint Migration from 2010 to 2013
  5. Rules to Better SharePoint Migration from 2013 to 2016
  6. Rules to Better SharePoint Migration from 2016 to Online
  7. Rules to Better SharePoint Virtualisation
  1. SharePoint is a great platform for intranet, and the new version SharePoint 2019 and SharePoint Online is getting even better every day.

    • Powerful content discoverability via full-text search
    • Rich workflow capabilities (e.g. approval & distribution processes)
    • Document Accessibility (over the web and via Office programs)
    • Information Management Policies (e.g. Document retention policies)
    • Compliance suitability (e.g. Email archiving)
    • Great for storing both structured and unstructured content. (e.g. meeting workspaces, ad-hoc lists, project workspaces, company portal)
    • Highly customizable and extensible
  2. You want to be on the latest version of SharePoint.

    There are multiple ways to get it:

    Check SharePoint DLL version

    Check http://<CentralAdminSite>/\_admin/FarmServers.aspx

    Check http://<AnySiteCollection>/\_vti\_pvt/service.cnf

    See Get SharePoint version number of your platform quickly for details.


    Figure: On SharePoint 2016, this is what you get for for example

  3. Using no Outlook add-in

    Bad Example

    Colligo , and Macroview

    OK Example


    Good Example

  4. To make office documents with content preview available in search result, you need to setup an Office App server and link it to SharePoint:

    preview sharepoint


    You may need a link in a SharePoint document to help you navigate to a different URL (like shortcut in Windows), there are different ways to implement this.

    A. Create a shortcut in windows, then upload the shortcut file (.url) to the document library.

    B. Use "Link to a document" content type in SharePoint.

    Details on how you to create a link to a document in a SharePoint library.

    A. Create a shortcut in windows, then upload the shortcut file (.url) to the document library.

    To do this, you need to remove .url file type from your blocked file types in your web application. This will bring some security risk, which is not recommended, and I won't show the step details here.

    B. Use "Link to a document" content type in SharePoint.

    1. Enable "Content Type management" in your document library. EnableContentTypeDocument Figure: Enable Content Type management in library setting
    2. Add "Link to a Document" content type into the library. AddExistContentType Figure: Add from existing site content type SelectLinkToADocumentType Figure: Select "Link to a Document" content type
    3. Create a "Link to a document" instance CreateLinkToADocumentInstance Figure: select "File | New Document (dropdown) | Link to a document" InputLinkUrlAndName Figure: Input "Name" and "URL"
    4. Done

    You should be able to see the link type document in your library: LinksTypeDocumentsWithShortcutIcon Figure: Link type documents with the lovely shortcut icon

  6. Renaming pages in SharePoint site will cause broken links. All requests to the old URL will be responded to with a 404 error.

    Options to resolve this issue are:

    • Add a page every time for a rename…. add a JavaScript or META tag redirect to the original page
    • Use custom 404 page to look at a list in SharePoint, the list contains all the renaming records, the records are automatically maintained via page updating events handler. (We are using this way)
    • Wait for MS to fix the problem - support classical alternative links for a page.
  7. Instead of displaying a direct " Access Denied " warning info, you can allow end users to send an " Access Request ". PermissionRequest.jpg Figure: Joanna is requesting access to SharePoint site

    The "request manager" will receive an email:

    637cf8 RequestNotificationEmail
    Figure: Request Notification Email Sample The link in the email will navigate administrator to the Pending Requests list: LinkToPendingRequestsList Figure: Pending Requests List After reading the request infomation, the administrator can "Approve" or "Decline" the request, or he can start a conversation with the request user on the Pending Requests list directly to inquire more information: StartAConversatioinOnPendingList Figure: possible actions for requests (Approve, Decline or start a conversation with the request user)

    To setup permission request for a SharePoint site collection, go to " Site Settings (Gear Wheel icon) | Site Permissions ": SetupPermissionRequest Figure: Open "Access Request" setting

    Limition: This "Access Request" only works for authenticated users to inquire more access permission, that means if your site allows "anonymous access", then an anonymous user cannot send "access request" as he doesn't have an identify to be assigned more access permission.

  8. Do you clean useless calendars in SharePoint?

    Most SharePoint site templates contain a calendar list, this will bring lots of useless calendars.

    Use the below PowerShell script to clean them:

    $site = Get-SPSite("http://<site collection URL>/"); # Specify url here
    foreach ($web in $site.AllWebs) {    
        $lists = $web.Lists
        for ($i=($lists.Count-1);$i -gt 0; $i--) {  
            $list = $lists[$i]
            #Write-host $i  $list.Title $list.BaseTemplate.ToString()
            if ($list.BaseTemplate.ToString().ToLower().contains('events')) {      
                if ($list.Items.Count -eq 0)
                    Write-Host $list.Items.Count "items in the list" $list.Title '('$list.BaseTemplate') at '$web.Url "- cleaning it!"

    This script will put the calendars which do not have any events into Site Settings | Recycle Bin : EmptyCalendarsInRecyckeBin Figure: Empty Calendars in Recycle Bin folder

  9. Do you confirm there is no checked out data?

    One of the annoying things with SharePoint document libraries is that users often accidentally leave checked out files, that preventing others from modifying them.

    Suggestion to Microsoft: send an email to the user to remind them they have outstanding checkouts potentially blocking other users.

    sp docs
    Figure: Here Greg Harris has not checked in a file

    Upgrade warning: The pages that are not checked-in, will not be migrated on a SharePoint upgrade. There is *no* warning either.

    There are 2 ways to remind users of their "checked out files":

    • Solution A: Manage Content and Structure Report (No Code)
    • ** Solution B: Custom application report (Includes some coding work) Eg. SSW.Dory **

    Solution A. Manage Content and Structure Report (No Code)

    1. Create CAML query in site content and structure

    Go to "Site Settings | Manage Content and Structure | Content and Structure Reports", click "New":

    Figure: Create a new report

    Fill the "CAML Query":<Where><IsNotNull><FieldRef Name="CheckoutUser" LookupId="TRUE"/></IsNotNull></Where>

    Fill the other fields like below:

    Figure: Fill in form

    1. Run Checked Out report

    Run the checkout report from "Site Settings | Manage Content and Structure | View: Checked out documents":

    Figure: Checked Out Documents report link Make sure there are no files checked out, otherwise, go step 3

    1. Go chase after the users.

    **Solution B. Custom application report (Includes some coding work)**

    TODO: Move this tool to GitHub, find a better name than "SSW.SharePoint.CheckedOutFilesReport". Also change from a farm solution to a solution that can be used on Office365 - now in SharePoint 2016 and SharePoint online called "Sharepoint Add-ins"

    To make reminding users easier, this SharePoint Add-in has a custom page to show the "Checked out files". One button will send the notification email to all the naughty people.

    Even better, we have also improved the application with a scheduled task using SharePoint CSOM API to find checked out files and send these notification emails automatically every night.

         <img class="ssw-rteStyle-ImageArea" alt="CheckedOutFilesApplicationReport.png" src="CheckedOutFilesApplicationReport.png">
      <dd>Figure: One button reminds all users of their "Checked out Files"

    Hi Sophie,

    You have some pages checked out in SharePoint.

    1. You should check in at least daily. Revise our SSW rule on Frequent SharePoint Check-ins.
    2. If you are no longer editing these files, check them in!
    3. Reply to this email with something like: ‘Done - x files checked in’

    You currently have the following pages checked out:

            <font color="#3a66cc"><a href="/rules/do-you-confirm-there-is-no-checked-out-data">http://&lt;siteurl&gt;/DesignandPresentation/RulesToBetterVideoRecording/Pages/Default.aspx</a>  (parent folder)</font>

            <font color="#3a66cc"><a href="/rules/do-you-confirm-there-is-no-checked-out-data">http://&lt;siteurl&gt;/DesignandPresentation/RulesToBetterVideoRecording/Pages/testing-rule.aspx</a>  (parent folder)</font>

    Tip: See all files you have checked out at http://<siteurl>/_layouts/SSWReports/CheckedOutReport.aspx

    <As per rule>;

    -- Powered by SSW.Dory -- v16.1.7122.24300 Server: DESKTOP-C7SF4A3

    Figure: An example of the reminder email that all users receive **


  10. The SharePoint "People Picker" is a great tool for quickly selecting users of your SharePoint site. It allows you to quickly select users from your organization by browsing Active Directory.

    PeoplePicker Figure: The People Picker Unfortunately, if you have added users directly to your site collection, and later deleted or disabled them from Active Directory, you will notice that these orphaned users will still appear in your People Picker. This will eventually clutter up your People Picker. PeoplePicker deleted Figure: A user in the People Picker that was deleted from Active Directory PeoplePicker searching Figure: Searching in Active Directory for the user shows the user is in fact deleted To remove these orphaned users, as a SharePoint Administrator, you can open the following URL (where is your SharePoint URL):

    On this page you will find a list of all the users that are members of your site collection, including the orphaned users. PeoplePicker found Figure: We have found our orphaned user! To remove the user simply click on the Username | Click Delete User from Site Collection . This will instantly remove the user from the People Picker.

  11. Do you use content query web part?

    Try to use content query web part to show data instead of jQuery as it's better for Google indexing.

    For those out of date data, you can use an archive page and change the filtering of CQWP to return all of them, so that the old data are still there and the ranking of the page won't be influenced.

    For more SharePoint SEO, check from this article.

    Figure: Use content query web part

  12. Because SharePoint server will create quite a few databases, it’s easier to manage them in a separate SQL instance rather than mixing it with other system’s databases:

    sharepoint database bad
    Bad example - mixed with other systems' database

    sharepoint database good
    Good example - SharePoint related databases are in a separate SQL instance from other systems' databases

  13. You often need to share links to a file or folder in SharePoint.

    You can select the folder (or file) and click on "Copy link" at the top bar to get the link:

    sharepoint cloud copy folder
    Figure: Getting URL from SharePoint top bar

    You can also right-click the folder/file to copy the link:

    sharepoint right click link
    Figure: Getting URL by right-clicking a file in SharePoint

    On previous versions, you can open the menu on ellipsis link and get it from there:

    sharepoint link
    Figure: Getting URL from SharePoint ellipsis menu

  14. You might need to recover a delete file in SharePoint. You will find it at the Recycle bin. This is where you can find it:

    sp recycle bin
    Figure: To find deleted files go to "Site Contents" > "Recycle Bin"

  15. Here are the options we have:

    For cloud users:

    • LinkedIn skills [sync] office365 list. (Preferred)
    • Office 365 users profile | skills. (Limited)
    • Azure AD [sync] office365 list

    For on-premises users:

    • User profile [sync] list. (Old)
    • default zone should be over http, this is so search can access it over non-secure connection
    • default zone should not be accessible outside of internal network
    • extend the web application to an internet zone, this should be https to provide secure connection
    • this section should be extended with strategy to work with reverse proxy.

    Reverse proxy handle https connection to client, and connects to SharePoint via http to reduce https overhead on SharePoint

    SharePoint also needs to support https for internal traffic, if I click on a link to HTTPS it should work internally

    For this scenario to work, web application needs to be extended 2 to 3 different zone

    Default  (http for internal and search)

    Internet  (http for reverse proxy)

    Intranet  (https for internal https link)

  16. It is recommended to bind https by extending web applications in central admin site, rather than configuring in IIS


    Bad example: Add https binding in IIS


    Good example: Extend web application and assign https to the Internet zone

  17. Using default zone URL in search content source, it will be automatically convert to the relative URL on the search result (e.g. if a user access search "keyword" via, the result will be like

    While another user access search center via, the result will be

    https data source
    Bad example: use https

    http data source
    Good example: use http

  18. Get rid of classic features in SharePoint Online.


    Microfeed list is used to support the MicroFeed Classic web part. If you’re using Modern SharePoint Sites and Pages (and you should !) everywhere, you don’t need that list anymore.

    To delete the Microfeed List, simply de-activate the Site Feed feature at the Web level:

    microfeed sharepoint
    site feed sharepoint site feed sharepoint

    Company Announcements

    "Announcements" is a default List that used to be created with classic Team Sites. If you’re not using it, chances are you will never do, and modern News should be your replacement for it.

    company announcements sharepoint

    To remove company News, click “Settings” | “Remove” from Site Contents:

    site feed sharepoint2

    Drop Off Library

    Drop Off Libraries (Content Organizer feature) were a way to automate moving documents around based on Metadata. This is no longer the optimal solution and you should use Power Automate instead. To remove Drop Off Library from your site, you need to disable the “Content Organizer” Web level feature:

    content organizer sharepoint

    Deleting leftovers from Migrations

    After migrating content from older versions of SharePoint, you may end up in a hybrid state where the abovementioned features are disabled, but associated libraries/lists are still present on your site. If that happens, you ideally want to clean it up.The first thing you can try is enabling/disabling the feature again. In some cases, that will fix the issue and remove the unwanted list/library.If that doesn’t work, however, there is a more radical approach: removing the list/library using Powershell:

    jean migration 1

    (In case you prefer using code straight away instead of the screenshot)

    Remove-PnPList -Identity "Workflow Tasks" -Force

    However, on system Lists, you may get an error:

    jean migration 2

    The workaround is to set the “AllowDeletion” flag to true before calling delete:

    jean migration 3

    (In case you prefer using code straight away instead of the screenshot)

    $list = Get-PnPList -Identity "Workflow Tasks"
    $list.AllowDeletion = $true
    Remove-PnPList -Identity "Workflow Tasks" -Force
  19. You should review all your Intranet content and for all classic features (pages, web parts, etc…), and decide if you want to keep  or migrate them.

    More info: Getting started with the SharePoint modernization scanner.

  20. AD has all your users e.g. Bob, Mary, Jane...

    SharePoint also has all your users, plus you can extend this information using the UserProfile Service –

    The beauty of this is that if everyone has updated their skills, it is wonderfully searchable.

    extending ad 1
    Figure: SharePoint People Search – Notice the Skills coming from UserProfile Service (aka UPS)

    mockup extending ad 3
    Figure: Mockup - Improved SharePoint People Search Results

    SharePoint has an Admin UI to manage User Profiles

    extending ad 2
    Figure: User Profile UI in your SharePoint Admin Centre – generally this is not needed the Delve out of the box experience works for your organisation

    Delve is a cool product with a nice UI that is essentially a portal onto the User Profiles.

    extending ad 3
    Figure: Delve profile – Click on “Update Profile” to write data back to SharePoint User Profile Service

    Where it all falls down...

    What if your people’s skills are stored in another system such as Dynamics 365 CRM or Salesforce ?

    extending ad 4
    Figure: People’s skills are often stored in Dynamics 365 CRM or Salesforce

    You can use PowerShell and SharePoint PNP libraries to programmatically interact with the SharePoint UserProfile service. This process allows you to sync skills across systems with a custom solution:

    extending ad 5
    Figure: Powershell - Reading skills from UserProfile

    extending ad 6
    Figure: Powershell - Adding “Blazor” to Jean’s skill list

    OpenSearch is another solution, using the OpenSearch protocol you can add external data sources to your SharePoint search results

    Suggestions to Microsoft:

    #1 Help me better sync my Dynamics 365 CRM data with the SharePoint user profile service

    This should be a simple SharePoint connector so this piece of PowerShell glue is not required 👌
    E.g. CRM user skills to User Profile properties

    #2 Help me make Dynamics 365 CRM data searchable from SharePoint search

    If not using a connector, we should be able to easily index and search through Dynamics 365 CRM data.This is essentially just calling a different API.

    #3 Help me customise SharePoint search results

    If you don’t want either of those options (i.e. you users’ skills are stored somewhere else), we should be able to change the search results UI.
    E.g. Search for people here:

    Figure: The SharePoint Search should let you add links like in this image

    #4 Help me search for user entities in Dynamics 365 CRM

    There should be a global user search that goes across all entities in Dynamics 365 CRM.

    extending ad 7
    Figure: Searching User + Skill doesn’t yield any result although this skill is associated to the user

  21. Do you remove orphaned users from SharePoint?

    Did you know that when you delete or disable a user in Active Directory or Azure Active Directory the user is still stored in SharePoint. Did you also know that SharePoint retains any permissions that the user did have in SharePoint at the time? This means that if the user returns and their account is re-enabled they will have all of the same permissions that they had before. Luckily for us ShareGate offer us an easy way to remove these 'orphaned users'.

    1. Open ShareGate Desktop
    2. Click All reports | Orphaned user report
      step2 orphaneduser
      Figure: Orphaned user report
    3. Add your connection
      step3 orphaneduser
      Figure: Add connection
    4. Add your site address, Choose your Authentication method and press Connect
      step4 orphaneduser
      Figure: Connect to your environment
    5. Choose Navigate to choose individual sites or tick the box to choose all sites and teams folders
      step5 orphaneduser
      Figure: Choose navigate or tick
    6. Under Navigate choose the individual site | Click Next
      step6 orphaneduser
      Figure: Choose site
    7. Click Run now
      step7 orphaneduser
      Figure: Choose Run now
    8. Select Users | Select Clean orphaned users
      step8 orphaneduser
      Figure: Clean orphaned users
    9. Click Continue
      step9 orphaneduser
      Figure: Continue
    10. View results of report
      step10 orphaneduser
      Figure: Report Results
  22. Do you use a flat hierarchy in SharePoint?

    In the days of classic SharePoint, subsites were a popular way of organising your intranet. Modern SharePoint architecture leans toward a flatter hierarchy, where sub-sites are generally not recommended.

    Bad: Old SharePoint architecture

    Good: A flat hierarchy with Hub sites allows great flexibility

    There are several reasons why sub-sites are no longer recommended. This blog post has a good list, including:

    Flexibility – Sub-sites are a pain to move - you'll never need to do this with a flat hierarchy. Using Hub sites, it’s easy to change links and use dynamic content to make sure your SharePoint architecture matches your organisational structure.

    Microsoft Teams & 365 Groups – Every Microsoft Team you create has its own SharePoint site, and SharePoint integrates with Microsoft 365 groups. So with a flat hierarchy, users and admins have a consistent experience across apps and Document Libraries.

    It is worth noting that this flexibility comes at a cost - permissions can be more difficult to manage, as each site will need permissions set separately, and you cannot use nested groups.

    Introduction to SharePoint information architecture - SharePoint in Microsoft 365 | Microsoft Docs

We open source. Powered by GitHub