Sharepoint Online Syncing with Outlook, oh, and there’s limits….

Recently a client of mine decided to pull their calendar off of google, where it was held hostage and they would have to log in to a separate window to access it. The had moved to office365 6 months prior and were our pilot in what we can do with office365 for our other clients. We set them up with a calendar from the default list options, and setup permissions. Adding the calendar to their outlook was a few easy clicks.

To add a sharepoint calendar to outlook:

  1. Browse to the sharepoint portal – yourdomain.sharepoint.com
  2. Login with your office365 credentials
  3. Click the link in the nav bar on the left for the calendar
  4. Click the Calendar tab at the top
  5. Click “Connect To Outlook” in the ribbon
  6. Click Allow
  7. Click ok.

And Bam! sharepoint calendar in outlook!

All appeared well. That is until my import of their calendar entries completed.

You see, in order to get their entries out of their google calendar and into sharepoint, I had to export the google calendar as an .ics file to my computer, attach it to my outlook, attach their sharepoint calendar to my outlook, copy the entries from local to sharepoint, and let it sync away.

The next day they called and were getting errors that the list was too large, and couldn’t even open the calendar in outlook. After some quick googling, it turns out there is a hard list limit in Sharepoint Online of 5,000 entries. They were at 5,326. Microsoft says this is to reduce the load on the servers from syncing large lists. Since these are Microsoft servers in the cloud, you cannot change this limit.

Then another problem. I couldn’t batch delete the items since they were over the limit, and deleting the calendar altogether wouldn’t work either. I ended up manually removing enough entries to get them under the limit, then deleting the calendar and starting from scratch.

I created an archive calendar, with entries from 2006-2011, and a Corporate Calendar from 2012-present. This brought the active calendar down to 1,400 entries, which would give them plenty of room to grow, and we could re-evaluate in a few years, if they were still using this technology.

Calm waters until the next week. Now users, were getting access denied (403) errors. After an hour of troubleshooting on one user’s computer, and no google results, the only thing that I had determined was that on first attach the calendar would sync properly, but after closing and opening outlook, their permissions seemed to disappear. It was the end of the day, so I said I would take a look at it in the morning.

Being the person who can’t stand a problem left unsolved, I went a googling at home that evening. After some google-fu and adjusting keywords, I came across this link:

http://community.office365.com/en-us/forums/152/t/10155.aspx

and used this as a more specific reference for the registry entries:

http://blogs.technet.com/b/heyscriptingguy/archive/2005/05/02/how-can-i-add-a-site-to-internet-explorer-s-restricted-sites-zone.aspx

It turns out that it was a securty issue for internet explorer. Adjusting these registry entries and reopening outlook allowed the sync to run almost perfectly. In one case, the trusted zone security was set to medium, and I had to change it to low.

In the case of mydomain.sharepoint.com the registry should have a dword entry for “https” with a value of 2 in the following locations

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\sharepoint.com\mydomain

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\sharepoint.com\mydomain

I created a script through our RMMS system (LabTech) to push these entries out to the computers. All is well.

Upgrading from Sharepoint Services 3.0 (Service Pack 3) to Sharepoint Foundation Server 2010

Just attempted to do this with the existing documentation, and I had a nightmare of a time. The Microsoft TechNet articles were pretty good, and the checklist here is helpful, but navigating back and forth through the different pages was difficult. The video HERE made it look really simple but some steps didn’t work quite as easily as I’d hoped, and it left out some key setup steps. I’m going to go through all the steps as it ended up working for me. I did a database attach upgrade from one server to another, setting the existing site to read only so that no changes could be made during the change. I’m also using port 8080 as well as the traditional port 80.

PREPARATION

Run the upgrade checker. I don’t have a whole lot of advice here, as mine ran clean. I have a fairly simple installation with one site and it is basic.

SETUP

On the new server download Sharepoint Foundation Server 2010 from here, and the SQL Express 2012 Management tools from here. Run the Sharepoint Foundation Server Installer. This will give you a menu, where you can install the prerequisites including Sharepoint Server 2008. Once this is completed, Run the Sharepoint Foundation Server Installer. Finally, run the SQL Express 2012 Management tools installer. All of these are pretty straightforward installers with little to no options. Once all of that is installed Run the Sharepoint Foundation Server Configuration Wizard. This will automatically setup the default site and settings. At this point if there are any customizations or features that need to be applied, this would be the time to apply them.

DATABASE BACKUP

On the existing installation, open the Central Administration for the Sharepoint site. Go to application management, then Content Databases. Make note of the database name for your site. Open SQL Server Management Studio Express and locate the database previously noted, I’ll refer to it as WSS_Content_a1. Right click WSS_Content_a1 and go to properties. Select Options from the left pane, and scroll down on the right pane to Database Read-Only, set it to true, and click ok. Now that the database is set to read-only, right click on it again, and select tasks, then back up. Ensure backup type is set to Full, and add a destination to back up to, including a file name ending in .bak. Once the backup completes, move the .bak file to the new server.

DATABASE UPGRADE

On the new server, open SQL Management Studio. Right click on Databases and select restore database. Select “From Device” and locate your .bak file, click ok to start the restore. Once the restore completes, some work must be done in powershell to prepare sharepoint and upgrade the database.

Open the Sharepoint 2010 Central Administration Site. Locate the database associated with the default site and make note of the database name. I will refer to it as WSS_Content_b2. Open the Sharepoint 2010 Management Shell. You will need to dismount the database that was created for the default site, and mount the database from your old site.

First to dismount the default database run, replacing WSS_Content_b2 with the database noted.

dismount-spcontentdatabase WSS_Content_b2

Then test your old site database, replacing WSS_Content_a1 with your restored database, and servername with your server name.

test-spcontentdatabase -name WSS_Content_a1 -webapplication http://servername/

If the test returns errors, research them and decide if you want to ignore or fix them. Once you are ready, mount your database to the site, again replacing with your own values.

mount-spcontentdatabase -name WSS_Content_a1 -webapplication http://servername/

This will put a percentage complete below the command, you can also check the status in the upgrade section of the Sharepoint Central Administration Site. Once the upgrade is complete, check the upgrade section of the Sharepoint Central Administration Site for information about any errors that may have occurred and to see the success or failure status.

Now when you browse to the default site, your site should appear. Once you have confirmed that is working, you can move on.

CONFIGURING PORTS  

This was a little tricky for us, as our client accesses the site on port 8080, internally and externally. To configure this, go to Application Management, then select Configure alternate access mappings.  The default should have and internal URL of http://servername and a Public URL for Zone of http://servername. The Intranet zone should have and Internal URL of http://servername:8080 and a Public URL for Zone of http://servername:8080. If you are accessing this via a web address as well, enter an Internal URL of http://my.sharepointsite.com:8080 with a Public URL for Zone of htpp://my.sharepointsite.com:8080, with a zone of Internet.

NOTES: change 8080 to whichever port you wish to use. Keep in mind for the external web address you may have to adjust your firewall rules to point to your new server. You may also need to adjust your DNS settings.

Finally, go into Web Applications, select Manage Web applications. Select your default site then click on “extend” from the ribbon. In the Create a new IIS web site Name, enter change the numbers following sharepoint to 8080 (or whichever port you are using). Change the port to 8080 (again, or whichever port you are using.) Finally, scroll down and change the URL to http://servername:8080/ and leave the zone at internet, click OK to apply.

VOILA! Test internally and externally to confirm it works and celebrate your success!