SharePoint 2010 Calendar Overlay – Events Showing Free/Busy

Once you’ve overlaid an Outlook calendar on a SharePoint Calendar list (if you want to know how to do that, read this blog post!), you might see the calendar events display as Free/Busy/Tentative:

busyFreeEvents

How would you display the events so that they show more useful information, such as event subject and location?

Turns out that you’ll need to change the Outlook permissions other users have to see more detailed information about your calendar events. Here are the steps to change the permissions in Outlook 2010:

  1. In Outlook, turn to the Calendar view to see the calendar
  2. Under the “Home” tab, click “Calendar Permissions”
  3. In the Calendar Properties dialog box, set the permission level for a user/group to Free/Busy time, subject, location. For example, give the Default users the ability to see the Free/Busy time, subject and location for this user’s calendar appointments by following these steps:
    • Select Default
    • Change the permissions to Free/Busy time, subject, location
    • Click OK

Now when you go back to the Outlook calendar you overlaid in your SharePoint Calendar list, you can see the event information:

EventSubject

Using Calendar Overlay to view your Outlook Calendar in SharePoint

Relates to: SharePoint 2010

In SharePoint 2010, you can now overlay an Outlook Calendar onto a SharePoint calendar list and essentially aggregate multiple calendars into one view! This new functionality is a lot better than what was available in Sharepoint 2007, where users could only view Outlook calendars using the “Outlook Web Access” calendar web part.

In this blog post, I’ll go through how to overlay an Outlook calendar in SharePoint.

Create the Calendar list

Let’s start by first creating the calendar list:

  1. On the site, click Site Actions > View All Site Content > Create
  2. Choose the “Calendar” list template, give your calendar a name and click Create:

Create Calendar

Add the Outlook Calendar

Once the calendar list is created, in the ribbon, click on the tab for Calendar Tools > Calendar and choose Calendars Overlay:

Calendar Overlay

Click New Calendar

Give the calendar a name and choose the “Exchange” calendar type

For the urls you’ll need to point to your OWA and Exchange web service url.  You can use the “Find” option to have SharePoint find the Exchange web service url associated with the OWA url. Here is an example:

Calendar Settings

And here is the result!

Overlay Result

Limitations

  • You can overlay up to ten calendars
  • Calendar Overlay doesn’t work using the v3 UI
  • I can’t seem to figure out how to show another person’s calendar by default, which I feel like you should be able to do! (so if you know, let me know!)

Conclusion

Being able to overlay calendars in SharePoint 2010 allows users to view SharePoint calendar events and Outlook events in one view, which is great for projects and personal productivity in that you can compare your personal calendar to either a team or project meeting schedule immediately! You should try out this new 2010 feature!

Using SoapUI to test SharePoint web services

SoapUI is a great open-source tool that allows you to run your own SOAP XML against a web service and see the results come back from the SoapUI interface.  I’ve played around with SoapUI in the past for some projects that involved external systems using SharePoint web services to send data to a sharepoint list. I am by no means an expert at SoapUI but thought I’d share my learnings. In this walkthrough, I’ll be going over how to use the lists.asmx to add a list item to a list.

Getting Started

You first need to download SoapUI. Once you’ve downloaded it, open it and create a new project by right-clicking on “Projects” > New soapUI Project:

Starting a new project

Starting a new project

Add a Project Name and then click OK

Right-click on the project and then click “Add WSDL”:

Add WSDL

Add WSDL

Add the WSDL Location. You can access a SharePoint web service via: <site>/_vti_bin/<web service>. In my example we will be using the lists.asmx: <site>/_vti_bin/lists.asmx. To access the WSDL, you just need to add “?wsdl” to the end. As a result your WSDL location should be <site>/_vti_bin/lists.asmx?wsdl

To add an item to a SharePoint, I’ll be using the Lists.UpdateListItems method so expand the grouping for UpdateListItems and click on the SOAP Request.

SoapUI gives you a template for the request but you will need to add more information. You can get an example and further explanation of each tag from MSDN. This is the XML to add an item to TestList:

<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/&#8221;

xmlns:soap=”http://schemas.microsoft.com/sharepoint/soap/”&gt;

<soapenv:Header />

<soapenv:Body>

<soap:UpdateListItems>

<soap:listName>TestList</soap:listName>

<soap:updates>

<Batch OnError=”Continue” ListVersion=”1″ >

<Method ID=”1″ Cmd=”New”>

<Field Name=’ID’>New</Field>

<Field Name=’Title’>Testing</Field>

</Method>

</Batch>

</soap:updates>

</soap:UpdateListItems>

</soapenv:Body>

</soapenv:Envelope>

Once you have the XML done, click on the green arrow in the upper left to submit the request. If you’ve done it correctly you should see  a confirmation on the right:

good request

good request

Done! You can also check your results by going to the SharePoint list and verifying that the item was created.

My Learnings

  1. Apparently you can add an item without filling out the required fields in the list
  2. Translating Field Names that have spaces or characters in the name. For example:
    • Field name in SharePoint list: Personnel Area
    • Internal field name from the URL: Personnel%5Fx0020%5FArea. (You can get this by clicking on the field from the list settings and looking at the URL)
    • When you replace the URL encoded characters, it translates to Personnel_x0020_Area, which is the Field Name for your SOAP XML
  1. Field types:
    • For populating a choice field, you just need to put the choice value
    • For populating a date field, use the following format: year-month-day (ex. 2011-1-10)
    • For populating a person field, you’ll need to input the user’s ID, which is a pain because it varies between sites based on when the user was added to the site. You can find out the person’s ID by hovering over the person’s name and looking at the URL — it will be the value of the ID query string variable.

Conclusion

You can use SoapUI to test out Sharepoint web services. SoapUI has other functionality too so you should definitely check them out!

SP Saturday: Best Practices of Implementing SharePoint Training

I recently watched a webcast by Scott Lavoie that summarizes some of the best practices he’s learned from his experiences as a SharePoint trainer and I wanted to share what I thought were his key take-away messages for me.

I really appreciated this webcast because last year I had created and led a one time 3 hour instructor led training for my company. Coming from more of a developer background, I struggled with what the best approach was for planning and implementing this training. This webcast reinforced some of the practices that I had done and gave me ideas of what new practices I could use for future trainings.

Training Strategy Document:

  • Before starting the training planning, create this document that summarizes what resources are needed to make the training a success and then give this document to management
  • Why? This document is used to cover you to ensure that management knows why a training may not have gone as well as it could have

Pilot Training:

  • Select a cross selection of users with varying technical background to do a pilot run of your training/exercises and elicit feedback afterwards to improve the training
  • Make it clear that it is a pilot and not the actual training
  • Why? Because you as the trainer as so familiar with the material, pilots show you where the gaps are for understanding the training concepts

Training Structure:

  • Provide a table of contents that students can refer to later on to easily find information about a training topic
  • Inform students what they will be learning in the training along with why they should learn it
  • Include a reference section at the end to define SharePoint lingo (ie. Breadcrumb)
  • Have evaluations at the end of the training to get feedback

Other Tips:

  • Use actual company data/policies in the training
  • Determine learning objective for that specific user group and drive the curriculum from those objectives
  • Engage a mentor with the planning process

You can click here for a copy of his slides.

More information about SharePoint Saturdays, where this webcast was originally presented.

Hide the “SharePoint Designer Settings” link in the Site Collection Settings Programmatically

Relates to: SharePoint  2010, SharePoint Designer

Sometimes you want to hide the “SharePoint Designer Settings” link in the Site Collection Settings to prevent new users from discovering it and playing around with it. To hide this link, you need to create a feature scoped at the site collection. In the Elements.xml file, you can hide the custom action for the SharePoint Designer settings:

<?xml version=”1.0″ encoding=”utf-8″?>

<Elements xmlns=”http://schemas.microsoft.com/sharepoint/“>

<HideCustomAction

GroupId =”SiteCollectionAdmin”

HideActionId =”SharePointDesignerSettings”

Id =”HideSharePointDesignerSettings”

Location =”Microsoft.SharePoint.SiteSettings”>

</HideCustomAction>

</Elements>

If you also want to set the site collection SharePoint Designer settings programmatically, you should check out this post.

Set SharePoint Designer 2010 Settings Programmatically

Relates to: SharePoint  2010, SharePoint Designer

Once you’ve set the look and feel of a site, chances are you want to prevent users from using SharePoint Designer to change that look and feel. Luckily you can set the SharePoint Designer 2010 settings, either programmatically or through the user interface. In SharePoint 2010, you can access the SharePoint Designer 2010 settings from the user interface  either through the site collection’s settings or the url: http://%5BsiteCollectionUrl%5D/_layouts/SharePointDesignerSettings.aspx:

If you want to set these settings programmatically, you’ll need to create a feature receiver scoped at the site collection that will restrict the site collection’s SharePoint Designer settings when the feature is activated. In the FeatureActivated method, get the site collection and change the settings:

SPSite cSite = properties.Feature.Parent as SPSite;

cSite.AllowDesigner = false; // enable SharePoint Designer

cSite.AllowRevertFromTemplate = false; //detach pages

cSite.AllowMasterPageEditing = false; //customize master pages and page layouts

cSite.ShowURLStructure = false; //see hidden url structure

cSite.RootWeb.Update();

*It’s important to note that the site collection SharePoint Designer settings only apply to the site owners and designers — a site collection administrator would still be able to use SharePoint Designer on the site collection even when all the settings are set to false.

You can go one step further and staple this feature to the specific site templates (ie. Global or STS#1) so that the feature is automatically activated when a site based on that site template is created.

You can also hide the “SharePoint Designer Settings” link in the Site Collection settings to make it less likely for users to stumble upon the option (although users would still be able to access it via the url).

If you want to restrict the SharePoint Designer settings for all the site collections within the web application, its easier to set these SharePoint Designer settings for the web application instead of for each site collection within the web application.

Change the SharePoint Designer 2010 Settings from the UI

Relates to: SharePoint  2010, SharePoint Designer

In SharePoint 2010, you can now set the SharePoint Designer settings for a web application or a site collection from the UI.

Steps to access the Web Application SharePoint Designer Settings:

  1. In Central Administration, click Application Management
  2. Under the Web Applications heading, click Manage web applications
  3. Select the web application and then in the Web Applications tab of the ribbon, click General Settings > SharePoint Designer

SharePoint Designer Settings for Web Application

4. From the SharePoint Designer Settings you can specify whether to enable SharePoint Designer and what can be customized using SharePoint Designer for all users:

SharePoint Designer Settings Web Application

Steps to access the Site Collection SharePoint Designer Settings:

  1. From the site collection, click Site Actions > Site Settings
  2. If you are a site collection administrator, you will see the Site Collection Administration column on the right side — under this column click on SharePoint Designer Settings

4. From the SharePoint Designer Settings you can set the ability for Site Owners and Designers  to use SharePoint Designer and what they can customize using SharePoint Designer. It’s important to note that even when all the options are unchecked, a Site Collection Administrator can STILL use SharePoint Designer on the site collection.

Conclusion:

You can set the SharePoint Designer settings for an entire web application or an entire site collection. If you want to know how to set these settings programmatically, you should check out this blog post.