Friday, February 24, 2012

SharePoint Online Updates Coming Soon

There was a public announcement that people whom are working with SharePoint Online with Office 365 should know about - http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=1004
Around the corner will be releasing some new features and capabilities. These were things listed as current know issues for which we evaluated and pushed up in the queue:
  • SharePoint Online will now support up to 500,000 user objects. Previously it was 20,000.
  • Traditionally we think of the Recycle Bin as just for documents. Today we support the ability to restore sites. Now Site Collection restores will be supported as well.
  • External collaboration is as well going to be extended. Today Office 365 support the ability to invite external people with Windows Live ID but the user must have a @Live.com, @Hotmail.com and @MSN.com email address. This currently means you are limited to a domain. What will be changing is now any email address that is associated to a Windows Live ID account can be utilized to gain access to an Office 365 Partner Site Collection. This means external partners can have email sent to their primary work mailbox. Simply put, if a person has a Windows Live ID, they can get access to a partner site. Very exciting.
  • PFD Support is now better. Today Office 365 allows users to place PDFs in SharePoint Online document libraries, add metadata to them, put them through a workflow, publish them, search on them, etc. However the limitation that many customers asked for was the ability to open the PDF through the browser. This was perplexing to many SharePoint professionals because this is supported on premise. Actually by default, even SharePoint 2010 premise does not support unless there is a change made to the web app in central admin. Regardless the change has been made and PDFs can be opened in the browser.
The Office 365 SharePoint Online Service Descriptions have not been updated yet as the changes have not been rolled out just yet. They will be coming soon.

Office 365 Blackberry Support

This could be late news to some people however for Office 365 there was an announcement this month of some tighter integration with Blackberry. Here is a new press on it - http://press.rim.com/release.jsp?id=5359
The “net” people should know about is that this service is available at no additional charge to current medium-sized or enterprise subscribers of the Office 365 suite or standalone Exchange Online and works with BlackBerry smartphones on business or consumer data plans.
This will ensure users can access email, calendar and organizer data from a Blackberry phone. Plus service has web-based management console that can provision, manage, and secure. Security features such as resetting passwords, and remote lock and wipe are supported.

Tuesday, January 31, 2012

Presence with Branded Master Pages

I have heavily used the starter branding master pages (http://startermasterpages.codeplex.com/) for some projects I have done. It was brought to my attention that the Lync presence was not coming through.
After some research I found that if I replaced this:
<script type="text/javascript">
function ProcessImn(){}
function ProcessImnMarkers(){}        
</script>

With this:
<SharePoint:ScriptLink language="javascript" name="init.js" OnDemand="true" runat="server"/>

The presence indicators came back.

Sunday, January 22, 2012

Office 365 MT Service Change Wiki

Do you want to stay up to date, track or learn the updates with the Office 365 Multitenant Service? Here is a nice WIKI page that is being managed that is tracking, by month, what are the new service updates to the Office 365 Service - http://community.office365.com/en-us/w/office_365_service_updates/service-updates-for-office-365-for-enterprises.aspx

Friday, January 20, 2012

Blogging with SharePoint 2010

Someone just asked me a simple question if it was possible to blog with SharePoint 2o10 with a rich client application.  You can use Windows Liver Writer (http://explore.live.com/windows-live-essentials-other-programs?T1=t5) which is part of Windows Essentials 2011 to write blogs for SharePoint 2010.  And it is free.  You can also use Microsoft Word to author blogs.

Here is Windows Liver Writer connected to a SharePoint 2010 Blog.
image

I press the Publish button and I have the following result.  Pretty easy.
image

Wednesday, January 18, 2012

Custom Web Templates and Activating Features

Introduction
Lately I was messing around with Custom Site and Web Templates with Office 365 and made a few discoveries that I figure I share. Some of it is old, some of it I had to piece together.

Background
I am building a solution in Office 365 using SharePoint Online. I have a site collection with publishing turned on. I created a custom site template and I need to make sure that site (web level) publishing feature is turned on.

Publishing Feature Disables Creating Site Templates
For some reason, when you turn on the publishing feature on a site, the “Save site as a template” is removed from Site Settings. Now I have found some blog posting where people go down into the SharePoint install files and make some changes to fix that. First, probably not the best course of action if you want to make sure you have supportable upgrades (and someone actually documents the change <g>). Second, since I am working with Office 365 that is not even an option, so I need to find a solution that does it the right way.

Another thing I saw people suggest is go to the Save as Template page by typing in “_layouts/savetmpl.aspx”. Do not waste your time with that approach either, it will not work correctly.

My only option is to create my custom site initially without the publishing feature turned on. Then build some solutions to turn on publishing for the site automatically and ensure that the masterpages are set appropriately. The solutions I looked into are:

1. Feature Stapling
2. Modifying the Web Template
3. WebProvisioned Event Handler

Custom Web Template Feature Stapling
The first solution that I investigated was the most obvious; create a Feature Stapler that would activate the site publishing feature.

The first thing I ran into was finding the actual name of the template. Traditionally the name of the site template is usually something like STS#0. However since this is a custom site template where would I get the site template name from? I found some scripts that would help me get the template name. Since I was doing the development on my local machine it was easy for me to run some PowerShell on my development box to test this all out (I did find similar code to run API code against Office 365).

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <FeatureSiteTemplateAssociation Id="94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb" TemplateName="{04FB0801-1DFA-41ED-9B87-06D0FF088F01}#MyCommunityTemplate" />
</Elements>

I create a Feature Stapling feature that looked like this. As you can see there is a GUID#template name format.

Let me save you some though – this is not supported and did not work. Feature Stapling can only be used against the site templates that are OOB the box or deployed down into the hive. You cannot apply do Feature Stapling to a site template created off SharePoint web site.
Modifying the Web Template

The next thing I tried, which is a recommended approach, is to modify the web template. This is a really easy thing to do now with Visual Studio 2010.
In Office 365 I created a web template the way I needed but without publishing turned on. I then went into site settings and created web template like usual. I then went to the Site Collection Solution Gallery, downloaded the WSP, and opened it in Visual Studio 2010 (using an Import SharePoint Solution Package project).
In the project, there will be a module called “Web templates” and you will find a file called “ONet.xml”. Open this file and you will see <SiteFeatures> and <WebFeatures>.
<SiteFeatures> correspond to the site collection and the following features should already be in the web template because you will have publishing turned on at the site collection level.

<!--PublishingPrerequisites Feature-->
<Feature ID="{a392da98-270b-4e85-9769-04c0fde267aa}" Name="FeatureDefinition/a392da98-270b-4e85-9769-04c0fde267aa" />
<!--PublishingResources Feature-->
<Feature ID="{aebc918d-b20f-4a11-a1db-9ed84d79c87e}" Name="FeatureDefinition/aebc918d-b20f-4a11-a1db-9ed84d79c87e" />
<!--PublishingLayouts Feature-->
<Feature ID="{d3f51be2-38a8-4e44-ba84-940d35be1566}" Name="FeatureDefinition/d3f51be2-38a8-4e44-ba84-940d35be1566" />
<!--PublishingSite Feature-->
<Feature ID="{f6924d36-2fa8-4f0b-b16d-06b7250180fa}" Name="FeatureDefinition/f6924d36-2fa8-4f0b-b16d-06b7250180fa" />

Why are there four when you only turn on one publishing feature for the site collection through the SharePoint UI? The one with f6924d36-2fa8-4f0b-b16d-06b7250180fa is actually the main one, but the other three are supporting, hidden ones. There is not action for you, just brought this up because I thought is it interesting.

Now this is what you do need to do. Go to the <WebFeatures> and add the following two features.

Add the Publishing Web after the MetaDataNav:
<!--MetaDataNav Feature-->
<Feature ID="{7201d6a4-a5d3-49a1-8c19-19c4bac6e668}" Name="FeatureDefinition/7201d6a4-a5d3-49a1-8c19-19c4bac6e668" SourceVersion="14.0.0.0" />
<!--PublishingWeb Feature-->
<Feature ID="{94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb}" Name="FeatureDefinition/94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb" SourceVersion="14.0.0.0" />

Add the Publishing Feature after the GridList:
<!--GridList Feature-->
<Feature ID="{00bfea71-3a1d-41d3-a0ee-651d11570120}" Name="FeatureDefinition/00bfea71-3a1d-41d3-a0ee-651d11570120" SourceVersion="1.0.0.0" />
<!--Publishing Feature-->
<Feature ID="{22a9ef51-737b-4ff2-9346-694633fe4416}" Name="FeatureDefinition/22a9ef51-737b-4ff2-9346-694633fe4416" SourceVersion="14.0.0.0" />

This worked great and was really clean.

The next thing I needed do was make sure the master pages are set appropriately. Even though I turned on publishing, it does not mean that the mast pages will be set correctly. The solution is again very simple.

I created a new Feature in Visual Studio 2010 to the web template solution I already had open and set the scope for Web. I then added an event handler to the new Feature. Then in the FeatureActivated event handler I added the following code:
using (SPWeb web = (SPWeb)properties.Feature.Parent)
{              
    web.MasterUrl = web.ParentWeb.MasterUrl;
    web.AllProperties["__InheritsMasterUrl"] = "True";
    web.CustomMasterUrl = web.ParentWeb.CustomMasterUrl;
    web.AllProperties["__InheritsCustomMasterUrl"] = "True";
               
    web.Update();
}

Then I selected the new Feature, clicked on the manifest and copied the GUID for the Feature ID. I then subsequently added that Feature ID into the bottom of the <WebFeatures> section in the ONet.xml file.
Now when this custom web template is provisioned, this code will be executed to set the master page appropriately.
Web Provisioned Event
Another totally different option to consider is use the new SharePoint 2010 WebProvisioned Event Handler. This event handler is available in the SharePoint Sandbox and can run in Office 365. This solution is very simple:
  • Create a new SharePoint 2010 solution in Visual Studio.  
  • Add an Event Handler. 
  • Then add the following code.
public override void WebProvisioned(SPWebEventProperties properties)
{
    base.WebProvisioned(properties);

    using (SPWeb web = (SPWeb)properties.Web)
    {
        Guid sitePublishing = new Guid("94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb");

        web.AllowUnsafeUpdates = true;

        web.Features.Add(sitePublishing, true);
               
        web.MasterUrl = web.ParentWeb.MasterUrl;
        web.AllProperties["__InheritsMasterUrl"] = "True";
        web.CustomMasterUrl = web.ParentWeb.CustomMasterUrl;
        web.AllProperties["__InheritsCustomMasterUrl"] = "True";
               
        web.Update();
    }

}

There are some advantages to this solution. First it is really simple. Second this code will be executed for ANY site that is provisioned. So if you need to always make sure that publishing is turned on for any site that is provisioned and that the master pages are always the same, this may actually be a better solution. Otherwise you will have to do what I previously described for every web template.

Conclusions

This was a really interesting little exercise that I went through and though it would be interesting to share. Hopefully you will see that there are options based on the business requirements you want to support. This is by no means the only options you have available either.

References

Things that I found along the way:

Thursday, January 5, 2012

Pilot Office 365 References

Are you looking into doing a quick pilot on Office 365? If so, here are some links, documents and references that I have organized will help you get started. Note this is geared for the Office 365 Multitenant offering; not Office 365 Dedicated.
Trial Guide - Office 365 from Microsoft Online Services
This is a really good guide that covers the services and capabilities. Then it provides you detailed step-by-step instructions to get Office 365 initially configured. Download - http://www.microsoft.com/download/en/details.aspx?id=26123
Now once you have done this – there are probably things that you may want to dive deeper on. Here is some good information that will help you. I will try to update this with new stuff as a find it.
Microsoft Office 365 Deployment Guide for Enterprises
This is the Microsoft Office 365 Deployment Guide for the Multi-tenant Environment. This is an optional reference document that provides detailed information on how to do the real production deployment. Reviewing this will give you context before you make the decision to go to production. Download - http://www.microsoft.com/download/en/details.aspx?id=26509
Identity and Authentication
For a trial or pilot, the best approach is to use Cloud IDs as discussed in the Trial Guide. However one of the more advanced capabilities you may want to pilot Single Sign On with Active Directory Federation Services (ADFS). Here are some references:
Exchange Online
The following is some good information for testing out Exchange Online:
  • User Email Help - http://help.outlook.com/en-us/140/cc325690.aspx - Covers ton of stuff such as Email, Calendar / Reminders, Contacts and Groups, Voice Mail, Email Set Up, Mobile Phones, and Options and Videos.
  • Email Administration - http://help.outlook.com/en-us/140/ff657678.aspx - This covers tons of things such as configuration, user management, roles, permissions, security (SPAM, etc.), compliance (archive, retention, holds, audit, journals, rights management, etc.), unified messaging configuration, Exchange ActiveSync, PowerShell, mailbox migration, hybrid mail and some help videos.
  • Exchange Online Administration - http://technet.microsoft.com/en-us/exchange/hh127068.aspx - Here is another site that will help you with finding administration information for Exchange Online.
SharePoint Online
The following is some good information for testing out SharePoint Online:
Lync Online
The following is some good information for testing out Lync Online:
Office Professional Plus for Office 365
Miscellaneous
  • Virtual labs - http://technet.microsoft.com/en-us/office365#tab=1 - Some labs on various topics.
  • Microsoft Office 365 Multi-tenant Service Descriptions - http://www.microsoft.com/download/en/details.aspx?id=13602 - There are numerous Office 365 Multi-tenant Service Descriptions available covering such topics as: Exchange Online Archiving, Exchange Online Enterprise Services, Lync Online Enterprise Services, SharePoint Online Services, Identity Services, etc. These documents can be used as supplementary information resources while doing a pilot.