Create a Report to Find SharePoint Online Licensed Users

by jess on August 10, 2016

No Comments

You can create a report on all SharePoint Online licensed users within your Office 365 tenant by following the example below:

Connect to Office 365 via PowerShell

Run the Commands Below in PowerShell ISE (Administrator Access)
The following commands will connect to your tenant, and then create a CSV report for you to filter on:

Import-Module MsOnline
Get-MsolUser -All | where {$_.isLicensed -eq $true -and $_.Licenses[0].ServiceStatus[7].ProvisioningStatus -ne "Disabled"} | Export-Csv "./SPOnlineLicensedUsers.csv"

More info:


Manage How External User Invitations Can Be Accepted for SharePoint Online

by jess on February 18, 2016

No Comments

Office 365 recently introduced a feature that lets tenant administrators better control how external user invitations can be accepted for SharePoint Online.

Default Behavior

When an external user invitation is set, the invitation can be claimed by any account. This can include someone who the original invitee forwards the e-mail to, or if somehow the e-mail is intercepted by another party.

Whoever accepts the invitation is then granted the permissions that were assigned with the original invitation. This can cause confusion for members of a SharePoint site, if someone other than the intended person accepts the invitation.

New “Account Match” Behavior

Microsoft introduced a setting which changes the behavior of external user invitations on a SharePoint Online tenant. More information can be found in the following Office 365 support article:

Use Windows PowerShell to control how external sharing invitations can be accepted

When enabled, the RequireAcceptingAccountMatchInvitedAccount parameter requires external users to accept invitations with the email account with which they originally received the invitation.

If the new value on the RequireAcceptingAccountMatchInvitedAccount setting within the tenant is set to “True”, the behavior can be changed. The new behavior requires that the account that accepts the invitation be the account that the invitation was originally sent to. If another account tries to claim the invitation, they receive an error from SharePoint Online.

This optional setting helps ensure the intended parties are accepting the invitations to the site, and reduces confusion if the original invitation is forwarded, and a secondary party unintentionally claims the invite.

Set The “Account Match” Behavior On Your Tenant

To change your SharePoint Online tenant to require the accounts match for external users across your site collections, follow the steps below:

  1. Install a recent version of the SharePoint Online Management Shell.
  2. Once installed, either open the SharePoint Online Management Shell, or my personal preference, use Windows PowerShell ISE. The ISE editor should load the SharePoint Online modules transparently. (If not, try either logging out of your Windows session, and logging back in, or restarting your computer.)
  3. Connect to your SharePoint Online tenant using the following PowerShell command. Replace the tenant and account placeholders with your tenant information.
    • Connect-SPOService -Url https://<tenant> -credential <admin account>


  4. When prompted, log in to your Office 365 account using your normal credentials:
  5. (Optional) Check the current value for the RequireAcceptingAccountMatchInvitedAccount setting by using the following command:
  6. Update the value for the RequireAcceptingAccountMatchInvitedAccount setting to True:
    • Set-SPOTenant -RequireAcceptingAccountMatchInvitedAccount $true
  7. (Optional) Check the updated value for the RequireAcceptingAccountMatchInvitedAccount setting by repeating the following command:

Add a Field Label for “Sort By” in a SharePoint 2013 Search Center

by jess on February 16, 2015

No Comments

Recently, I had a request to add a text label to the Sort By field in a SharePoint 2013 Search Center, so that end users would more quickly figure out what the field floating in the middle of the results page was for. This is a quick tip for those looking to do the same thing.

Enable Sorting in Search Results

To enable the Sort By feature in a search results page, perform the following steps:

  1. Edit the Search Results page
  2. Modify the Search Results Web part
  3. Under the “Settings” heading, click Show sort dropdown

When viewing the search results page, you should now see a field floating under the Search Navigation, but above the actual search results. In this case, the request was to add a text label next to the field to make it more clear what its purpose was:

Add a Label to the Sort By Field


Initially, I thought it would be simple to use jQuery, which was already in the environment, to just find the structure in the DOM and insert a field label. In looking at the generated DOM in the page, I could see the following structure:

However, I found after several attempts to get a handle on #Sortby or #SortbySel using jQuery, that there was a timing issue between jQuery attempting to get ahold of the DOM structure, and SharePoint actually generating the elements. Using several event methods with jQuery, I kept coming up with null references. This should be simple, so time for a new approach… which reminded me of a comic I had seen on Hugh Wood’s blog:

Modern CSS

In this particular case, the end users of the Search Center were all using IE 11 and/or Google Chrome, so we had modern web browser capabilities at our disposable. Since I had the DOM structure, and knew what the HTML markup was for the field and its containers, I decided to use the CSS ::before selector to dynamically generate the field label.

I added an Alternate CSS file to the Search Center site settings, and used the following CSS to generate the label:

#ResultHeader #Actions #Sortby::before {

content: “Sort By: “;

font-weight: bold;

Once the CSS was added, we now had a label on the Sort By field, without timing issues!

Passing HTML in Nintex Workflow Start Workflow Web Service

by jess on October 15, 2014

No Comments

Nintex Workflow provides the capabilities to start other workflows using the “Call Web Service” workflow action. One of the benefits of this method, is that you can pass workflow variable values through the web service through the associationData parameter. The Nintex Community site has a good basic write-up on how do to this:

Start a Workflow using a Web Service

One of the tips missing from the article is how to pass HTML data using the web service method. If you follow the article to the letter, you will find that your data is not represented on the child workflow.

To pass HTML data, you need to use the “XmlEncode” Inline Function when creating your association data string. This will make the value of your data safe for transport:


When the child workflow starts and receives the passing data, I have found it will automatically decode the value, and make it available for normal HTML display.

Parsing Values with Commas
If the value of your variable has commas contained within it, you might find that the function truncates the text value when the workflow runs. This is apparently due to the way the inline function is passed information from Nintex Workflow, separating values with commas. To protect against this, wrap your variable reference with {TextStart} and {TextEnd}:


This will pass the full value of your XML encoded content so you can complete the process!

Fixes in SharePoint 2010 Service Pack 2

by jess on July 31, 2013

No Comments

Microsoft recently released Service Pack 2 for SharePoint, which can be downloaded on “Updates for SharePoint 2010 Products” page. Below are the fixes specifically included in the updates:

Fixes in the SP2 Update

  • Navigating to a SharePoint site with a BlackBerry device may open a non-mobile page.   Adding RIM6 into compat.browser allows users to access SharePoint pages and view documents in mobile view.
  • If anonymous access is enabled for SharePoint 2010 SP1 (or later Cumulative Update), attempts to to access the site via a mobile device will receive an authentication prompt.
  • Customers are unable to use spell check in Korean when running SharePoint on Windows Server 2012.
  • Displaying Summary Links Web Part in personalizing view; generating confusing error message.
  • Deployment fails for content types containing a formula field in Italian.
  • File attachments are not deleted due to incorrect URL formatting.
  • If requireExactUrl is not set for openweb calls, the PublishingWeb constructor may spawn variation pages  into incorrect locations while attempting re-creation of failed label during create hierarchies.
  • Incremental content deployment fails, giving the following error: FatalError: The given key was not present in the dictionary.
  • Spell Checker doesn’t work properly with Internet Explorer 10.
  • Rich text editor spell checker may work incorrectly on 64 bit machines.
  • Customers encounter issues sending e-mail from workflows when the From address uses a non-Unicode character set.
  • Updated VBE7.dll to fix safe array corruption for x64 hosts when calling UDF methods using safe array arguments directly from the host.
  • SQL exceptions will appear in the log when running update statistics timer.
  • Improved performance of the AllUserData table.
  • Getting a feed against a discussion board fails if feed contains more than zero items.
  • SharePoint 2010 client object model now has compatibility for accessing SharePoint 2013 servers.
  • Windows 8 users with Internet Explorer 10 receive an error when trying to open a document from SharePoint 2010 directly in the Office client.
  • Call GetChanges won’t return changes in certain cases where the change log has been edited and no parameters are set.
  • STSAdm MigrateUser fails when SQL server is not in domain.
  • Attempting to delete a child web from site settings causes the page to fail.
  • There is no exposed method to recalculate the second stage recycle bin size.
  • April 2011 Calendar View does not display correctly with Amman System Time zone.
  • Users can create a scenario where a site loses permissions.
  • After deleting a web that contains historical document versions in the RecycleBin, rows are abandoned in the database.  These rows bloat the size of the database, causing difficulty with database management operations such as backup/restore, complicating upgrade and other scenarios.
  • After creating alerts on a document library with unique permissions and moving the contents using SPFolder.MoveTo method, the permissions seem to be lost and even the farm administrator is not able to delete these alerts.

Hide Distribution List Membership in SharePoint 2010 User Profiles

by jess on July 9, 2013

No Comments

To hide Exchange distribution list memberships on SharePoint 2010 user profiles, follow these steps:

  • Access Central Administration
  • Access the User Profile Service Application
  • Under People, click Manage Policies


  • Under Memberships, click Distribution List, then click Edit Policy


  • Change the Policy Settings field to: Disabled
  • Uncheck the checkbox for User can override


  • Click OK

The distribution lists should now no longer display on individual User Profiles in SharePoint.

Install SharePoint Server 2010 SP1 with Office Web Apps

by jess on July 10, 2011

No Comments

This post is a screenshot walk through of upgrading a standalone (with SQL Server) SharePoint Server 2010 installation to Service Pack 1, along with Office Web Apps.

I’m not sure that the first run on the Config Wizard needs to take place, but since there are some prerequisites to OWA SP1 if you don’t have SharePoint SP1 installed first, I’m doing them separate.


Order of Installation:

  1. Install the binary files for Foundation SP1
  2. Install the binary files for SP Server SP1
  3. Run the SharePoint Configuration Wizard
  4. Install Office Web Apps SP1
  5. Run the SharePoint Configuration Wizard

Update I: Here is an excellent write up on the steps and procedures for installing on a full farm.

Continue Reading


Missing Site Column on a Custom Content Type

by jess on May 8, 2011

1 Comment

Recently, I ran into an odd issue in a SharePoint environment where a Site Column disappeared on a custom Content Type. I could still see it in the View, and it was holding a value, but I couldn’t see it on the Content Type page or anywhere else. A colleague pushed me into PowerShell, and I was able to do a quick analysis of the Site Column and see that somehow it had been set to Read Only. Once I set the value of Read Only to false, the field appeared like normal.

   1:  $site = new-object Microsoft.SharePoint.SPSite("http://site")
   2:  $web = $site.RootWeb
   3:  $missingField = $web.Fields["FieldName"]
   4:  $missingField.ReadOnlyField = $false
   5:  $missingField.Update()

SPS2010 – October CU Issues

by jess on November 7, 2010

No Comments

The SharePoint Team blog posted a notice Friday (11/5), that there was an issue with the SPS2010 October CU, and to not install it. Cryptically, they said if you have installed it, to contact Microsoft Support.

Later in the day, they posted a follow-up, detailing which packages were affected (SharePoint Server Package 2394320 and Project Server Package 2394322), and steps for a workaround.

It appears that the main issue is that the User Profile Service Application loses the assigned permissions during the install of the CU. The post walks you through resetting the permissions.

SharePoint/Office 2010 RTM Downloads

by jess on April 22, 2010

No Comments

The following are available on TechNet and MSDN:

  • Project Professional 2010 (x64) – (English) 272 (MB)
  • Project Professional 2010 (x86) – (English) 235 (MB)
  • Project Standard 2010 (x64) – (English) 245 (MB)
  • Project Standard 2010 (x86) – (English) 223 (MB)
  • Office Professional Plus 2010 (x64) – (English) 718 (MB)
  • Office Professional Plus 2010 (x86) – (English) 650 (MB)
  • SharePoint Server 2010 (x64) – DVD (English) 723 (MB)
  • Visio 2010 (x64) – (English) 343 (MB)
  • Visio 2010 (x86) – (English) 293 (MB)