Creating a simple SharePoint Workflow to send an email

I have made the video below on how to create a basic SharePoint workflow to send emails. This could be used for sending out remittance advice (like in the example below) but it could also be used with additional workflow logic for sending out help desk emails, renewal reminders, etc.

Hope you find it useful, please feel free to contact me at Cloud Design Box if you have any further questions. I’ll try and make a full blog post on this subject with screenshots as soon as I get chance.



Adding a custom tile to the app launcher in Office 365



The Office 365 app launcher is a great way of getting easy access to single sign-on applications within Office 365 and externally. Recently Microsoft introduced some functionality to allow users to add thier own links to the app launcher. This is a great way of quickly getting to a particular link.

To add a new tile, you will need to create an image for the background of the tile. Ideally you want this to be a white image with a transparent background saved as a PNG. This keeps it in line with the app launcher style and the transparency shows the tile colour behind the background image. This should be a small and compressed image to keep the load time to a minimum.

The tile image is best hosted in a SharePoint picture library, make a note of the absolute link to the picture as you will require this when adding the custom tile.

In the Office 365 Admin interface, select the “Organisation Name (Edit)” link in the top right corner.

Organisation edit link

In the left menu, select “Custom tiles” and then click on the plus button to add a new link.

Add custom tile

Enter a name, url (where you want the tile to send users), description and Image Url (from the image stored in the SharePoint picture library).

Enter tile details

Press Save. The new tile will still not appear in the app launcher, however it is now available to add by clicking on “my apps” at the bottom of the app launcher.

my apps link

Select “Pin to app launcher” from the menu next to the new custom tile.

pin to app launcher

The new custom tile is now added to the app launcher.

Office 365 App Launcher

This is a great way to add a quick link to your SharePoint site collections without having to go throught the “Sites” page each time.

Please note that this method only adds the custom tile to the app launcher for the currently logged in user, not all users in the organisation. At the present time there isn’t an option to do this.

Using SharePoint Groups

What is a SharePoint group?

A SharePoint group is a group of users which can be used to permission a site. Groups can be re-used around the site collection and can be used to permission, sites, lists, libraries, folders and items. Using SharePoint groups allows the administrator to control access without having to edit individual permissions, only the SharePoint group membership requires editing rather than each permission level.

Creating a SharePoint Group

Select “Site settings” from the SharePoint menu.

SharePoint Group Permissions

Select “People and Groups” from the “Users and Permissions” menu.

SharePoint Group Permissions

Select “Groups” on the left side menu, this will show a list of all the groups on the site collection.

SharePoint Group Permissions

Create a new group by selecting “New Group” from the “New” drop down menu.

SharePoint Group Permissions

Enter a name and description for the new group.

SharePoint Group Permissions

The Group owner has overall control of the group settings and members. This is usually either an administrator or someone you have delegated the running of the group to.

SharePoint Group Permissions

You can decide to keep the membership of the group private to the users in the group or let everyone see the group membership. There is also an option to allow group members to edit the membership of a group. This is great for collaborative sites where members may wish to share with others without having to go to the group owner. It helps remove some of the burden from the group owner and can open up sharing and collaboration without admin intervention.

SharePoint Group Permissions

Membership requests allow users who are not members of the group, the ability to request membership. This can be set to auto-accept which is useful for open groups or the requests can be sent to an email address for approval by the group owner (or members if this option was enabled earlier).

SharePoint Group Permissions

Permission levels can be set when creating the group. Please note that setting permissions here will only apply to the site which you are currently on. It is advised that you create the group without any permissions and then go back into the sites to add relevant permissions to avoid any confusion.

Click “Create” to finish setting up the group.

Adding members to the group

Once the group has been created, you may notice that the only member is the group owner. Additional users can be added by going to the “Add Users” option under the “New” menu.

SharePoint Group Permissions

Enter the name(s) of the members(s) you wish you add to the group. Under advanced options, you will see that the default setting is to send an email to any users added to the group. This is optional and can be deselected. In addition to this, you can customise the personal message in the email invitation for these users.

Note: Active Directory security groups can also be added here if using DirSync (in Office 365)

SharePoint Group Permissions

Click Share to add the users to the group.

Permissioning a site with a SharePoint Group

Once the group has been created, it can be used to permission subsites, lists, libraries, folders and even items. To give the group’s members permissions on a SharePoint site, first navigate to the SharePoint site itself.

Select “Site Settings” from the menu.

SharePoint Group Permissions

Select “Site permissions” from the “Users and Permissions” menu.

SharePoint Group Permissions

Select “Grant Permissions” from the “Permissions” tab.

SharePoint Group Permissions

As you start to type in the name of the group, SharePoint will pick up the group name.

SharePoint Group Permissions

Click “SHOW OPTIONS” to view the permission levels.

Select a permission level from the drop down and decide whether you would like to send an email to the group.

SharePoint Group Permissions

Avoid adding the group to another SharePoint group (this is usually the default option and can over complicate your permissions). Use one of the permission levels available:

  • Read – Can view the site but cannot edit any items or pages
  • Contribute – Can add, edit and delete list items. User cannot create new apps or sites.
  • Design – Users have contribute but in addition, they can also create and delete apps and subsites. Apply themes and designs.
  • Full Control – Users can do anything on the site including change permissions (usually admins only)

There are other permission levels, you can also specify your own. For a full reference of permission levels please see the Microsoft site:

Microsoft Office 365 Support – Permissions

Troubleshooting “this site has not been shared with you”

I’m often asked to solve permission errors in SharePoint. It’s not hard to do with the tools available in SharePoint, you don’t even have to know much about AD especially if you use SharePoint groups.

Ways to permission a SharePoint site:

  • Permission directly against the user – not recommended as a lot of maintenance required when someone joins or leaves the organisation.
  • Use SharePoint Groups – SharePoint groups allow you to manage users within the SharePoint interface, they can be reused all over the site collection
  • Active Directory Security Groups – AD groups might already exist on your domain, these can be used but be aware that SharePoint 2013 caches the membership of these groups for around 2 hours and when using Office 365, DirSync will need to run to replicate these groups in the cloud.

What can be permissioned in SharePoint?

  • Sites – entire subsites
  • Lists – individual lists and libraries such as a document library
  • Folders – folders within a library
  • Items – items within a list or library

SharePoint permissions flow down the site from the root of the site collection unless otherwise changed. If permissions are changed at any level, any items below it will inherit the changed permissions.

SharePoint has a very easy way to check permissions of an individual user, check out my video below on how to use it.



How to create a basic content type

I’ve just created a video guide on creating a simple content type and attaching it to a document library.

You can add custom metadata to a SharePoint list by:

  • Adding columns directly onto the list
  • Using Site Columns (can be reused with other lists)
  • Content Types (can be reused and keeps a set of custom columns together in a content type)

If you decide to use a content type, you will also get the benefits of being able to apply a workflow to the content type (rather than to each list individually). If you are thinking of developing search, content types can be a great way to filter and search for specific types of data in a list. You can also use multiple content types in a list (each with different columns), for example an invoice and a receipt.



Selecting an Office 365 Business plan for the first time

Microsoft provide a nice comparison list of all the available 365 plans for business.

Click here to view the comparison table

However when planning to move to Office 365, you may not have considered the implications of initially choosing a particular plan. You may also have a number of different licences for different users in the organisation (you don’t have to stick to one plan). For example some users may need to download office on their machine (accountants using the full desktop version of Excel) and some may just need a mailbox. I briefly go over the different plans in the video below.



Remember that business licences are for users who don’t need centralised deployment and control. Small businesses may opt for the business licences while larger ones may need some compliance and centralised administration.

Just a quick note on upgrading licences for older tenancies using the Office 365 small business plan. I recently worked with a client using the old Small Business licences, they wanted to upgrade to enterprise but due to it being on the old 365 platform, it wasn’t possible to upgrade from within the admin centre. The only option to upgrade was to create a new tenancy, manually migrate PST files (exchange) and re-sync document libraries (SharePoint) up to the new tenancy using OneDrive for business sync tool. Very annoying and a lot of work! However all users on the new platform with Business licences can upgrade their licences in-place by going to the subscriptions page. I have also been informed by Microsoft that these older plans cannot be renewed after October 2015 and Microsoft will offer some migration options before the licences run out.

SharePoint Consultancy and Services

Cloud Design Box

A few months ago, I started a new SharePoint consultancy business. I will continue to add blog posts here but you can contact me directly for any of the following Microsoft SharePoint and Office 365 services by clicking here:

  • Responsive design and branding
  • Site architecture planning and implementation
  • Workflow and consultancy services
  • SharePoint upgrades
  • Office 365 configuration
  • SharePoint Support
  • Scripting and client object model solutions

We provide these services for education and for business. Please visit the website for more information www.clouddesignbox.co.uk

How to add the content query web part to a page layout in SharePoint 2013 and SharePoint Online

Content queries in page layouts can be quite useful when wanting to generate your own navigation based on page content type. There isn’t a straight forward way to adding these into your current page layouts so I thought it would be useful to share this method.

Open Design Manager from the menu.

SharePoint menu

Select “Edit Page Layouts” and create a new temporary page layout (as shown below).

SharePoint Design Manager

Select “Conversion successful” to go to the preview page. In the top right select “Snippets” to open up the snippet code generator.

Code Snippet

Select “Other Web Parts” drop down menu and click “Content Query”.

Content Query

Configure the web part including the appearance, title and queries. Select the update button to generate the custom code.

Web Part Properties

Copy the custom code generated, this code needs to be pasted into the HTML version of the temporary page layout via SharePoint Designer 2013. Once this code has been copied into the page layout HTML, in this case testttt.html, save the file.

SharePoint will then automatically convert this code to aspx in the file testttt.aspx. Open this file to grab the content query code which can be used in any page layout.

Page layout with content query

Of course you can use the design manager to create your actual page layout (rather than just using it to convert code) but many people find this restrictive and already have good page layouts ready to deploy.

If you require any help or training, check out my consultancy company Cloud Design Box which provides this and other services for SharePoint on-premises and Office 365.

Looping through all subsites in SharePoint Online

SharePoint Online requires use of the Client Object model when modifying the site via PowerShell due to there being no backend server exposed in Office 365. Users with previous experience of using JavaScript Client Object model will find this a familiar method.

In the example below, the Powershell iterates through all subsites (and subsites of subsites) in a site collection or root site. This could be used for disabling a web scoped feature or automating site modification.

First of all, the variables are initiated including the path to the relevant DLLs.

#connection variables and reference DLL
$username = "user@onmicrosoft.com"
$password = "Password123"
$SiteCollectionUrl = "https://tonyishere.sharepoint.com"
Add-Type -Path "c:\Microsoft.SharePoint.Client.dll"

A new object for the client context requires creating, this can be done in a reusable function as shown below.

# Generate ClientContext function so we can reuse
function GetClientContext($SiteCollectionUrl, $username, $password) {
     $securePassword = ConvertTo-SecureString $password -AsPlainText -Force
     $context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteCollectionUrl) 
     $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePassword) 
     $context.Credentials = $credentials
     return $context
}

The following function has a nested call to call itself, this enables it to iterate through subsites of subsites. Without the nested function call, it would only cover a single subsite depth. The function writes the url of the site to the screen but this could be replaced with more complex functionality such as enabling a feature or creating a list item.

# function to loop through subsites
function catchsubsites ($subsiteurl){
	$clientContext = GetClientContext $subsiteurl $username $password
	$rootWeb = $clientContext.Web
	$childWebs = $rootWeb.Webs
	$clientContext.Load($rootWeb)
	$clientContext.Load($childWebs)
	$clientContext.ExecuteQuery()
	#do something on top level site
	write-host $rootWeb.url -ForegroundColor Yellow
	foreach ($childWeb in $childWebs)
	{
		#do something for each subsite
		write-host $childWeb.url -ForegroundColor Yellow
		#see if there are any subsites beneath this and loop all of them too
		catchsubsites $childWeb.url
	}
}

Finally the function is called to kick off the whole process of looping through the site.

#Finally run the function to get it all started!
catchsubsites $SiteCollectionUrl

This example could be refined so that it doesn’t authenticate at every request but it does show how simple it can be to create the complex PowerShell scripts that we are all used to using on SharePoint on-premises in the cloud version of Microsoft’s Office 365 SharePoint Online.

Update: Code updated 01/10/2016, fixed variable in loop and added section to run code for parent site

Create a simple helpdesk in SharePoint

Below is a quick tutorial on how to create a simple helpdesk/support log in SharePoint online (Office 365) or using the on-premises SharePoint 2013 release. It uses out-of-the-box functionality to create a simple system for users to log and track support issues.

The steps required to create the help desk are:

  • Create a custom list
  • Add additional columns
  • Create list views
  • Create a new item form
  • Set list permissions
  • Configure Alerts
  • Create a notify workflow

Create a custom list
Select “Add an App” from the SharePoint menu

Office 365 menu

Select “Custom List”

SharePoint 2013 App

Give the App a Name

SharePoint 2013 App Custom List
Create additional columns
In the list settings, create some additional columns:

Description (multiple lines of text)*

Status (choice with the options: New, In Progress, Resolution Offered, Closed)*+

Resolution (multiple lines of text)

* Set column as required – force users to enter a value

+ Set default value to “New”

SharePoint App Columns
Create list views
On the list page, select “Create View”

SharePoint 2013 list view

Create a new view based on All Items called “My Open Calls”. This is the default end user view to review their open calls.

Select the following columns:

Title (linked to item)

Status

Created

Uncheck any other columns. Add a filter to show items created by the user and items that do not have the status “Closed”.

Filter 365 list view

Create another view called “My Closed Calls”. Display the following columns:

Title

Status

Filter by the user and items that have the status “Closed”.

Filter SharePoint 2013 View

You may also want to sort these items by newest first to make it easier for the end user to see recently closed items.

Create another view called “All Resolved Calls”. Display the following columns:

Title

Description

Resolution

Created By

Created

This time only add a filter to show items with the status “Closed”.

Filter View

Create another view called “All Open Calls”. Display the following columns:

Title

Description

Status

Resolution

Created

Created By

This time only add a filter to show items without the status “Closed”.

Filter 365

The views “All Open Calls” and “All Resolved Calls” will be used by the resolution team to manage logged issues. The other views will be used by the end user to track their own open issues.

Permission List
At this stage, users with contribute access can add and edit all the logged incidents. This needs to be locked down so users can only edit their own items. To do this, select “Advanced Settings” from the List Settings page.

List Settings

Lock down the Item-level Permissions so that users can only read and edit their own items.

Item Level Permission

Users will Full Control on the list will have access to see and edit all of the items despite the settings above.

Create a new form
Open the site in SharePoint Designer 2013. Using the Site Objects Navigation, find the “Lists and Library” category and select the list.

SharePoint Designer 2013

Create a new Form for the list by selecting “New” in the Forms section.

New Form Advanced Mode

Give the form a new name and select the “New item form” type. Set this as the default form for the selected type.

Form Settings

Right click on the new form and select “Edit in Advanced Mode”

Edit in advanced mode

Locate the table rows in the HTML for the Status and Resolution. Remove these including the start and end tr tag. This will remove the columns from the new form. Save the form, this should now apply to any new items added to the list.

New Form

Set up alerts and workflows
The support team should sign up for alerts on the list so that they are notified when a new issue is added or updated. A simple workflow can be added to the list to notify the end user when their issue has been updated. I will write a blog post on how to do this soon.

Design
Adding icons to a SharePoint page to point directly to the views will make it easier to navigate for the end user and much more attractive to use