Skip Ribbon Commands
Skip to main content

Liam Cleary [SharePoint MVP]

:

Home
May 02
Back from SharePointConference.ORG

This week has been great, spending the past two days presenting and chatting SharePoint at www.sharepointconference.org which was held in Reston, Virginia this year.

It is always good to attend a conference to present and discuss how SharePoint has helped or can help a business. I had the opportunity to present on the following:

Who's Afraid of 508? Form Data Collection

One of the core business requirements SharePoint professionals have to frequently address is the use of forms for data collection. Not only is it important to effectively collect vital information through SharePoint, there are several key challenges – such as Section 508 of the Rehabilitation Act -- that require additional planning with regard to form design and development.

This session looks at using SharePoint Designer, InfoPath Form Services, Custom Code and several 3rd Party components that are available and discusses the pros and cons of each approach compared against real world requirements. We will also discuss critical factors such as security, data storage, data access, and accessibility

 

You Say Customize, I Say Configure

Too often we develop components or complete solutions in SharePoint because it is easier for us, it is what we have always done, or we just don't know what the capabilities are of SharePoint out of the box.

In this session, we will look at where we do need to do custom development, why we would need to, and where we can use either out-of-the-box tools or SharePoint Designer as an alternative. We will use real-world business requirements to architect and design solutions. After this session, you should be able to know if and when you should develop for SharePoint, as well as the best approach to take when architecting solutions

 

For the Record: Document and Records Management

Every business has a requirement to store documents and records. SharePoint
does not just solve these requirements; too many companies implement SharePoint for this and expect it to fix the world's problems. In this session we will look at best practice document management and whether SharePoint can actually help you as a business with document lifecycle as well as how you can implement records management policies to govern your users.

I also got to joint present the second day's keynote with a colleague of mine Justin (@sitwalkstand) on Migration to SharePoint 2010.

 

The Great Migration: Content Migration Made Easy

With the release of SharePoint 2010 and with vNext on the horizon, migrating from old to new is now a reality. SharePoint can be complicated, awkward and really not helpful when you are planning to move your intranet, extranet or even your public facing site to SharePoint. Planning how you migrate is one of the key tasks that need to be performed but is often missed or done with little or no thought at the end of the project. In this session we will take you through live migrations from SharePoint 2007 to 2010. We will demonstrate the process to take, the issues you may see and ultimately give you secrets to a successful migration as well as hopefully impart some knowledge to help in your own migrations.

 

There were also some great sessions presented by some excellent presenters. It was a great honor to have Christian Buckley (@buckleyplanet), Richard Harbridge (@rharbridge), Marc Anderson (@sympmarc), Pete Serzo and John Douglass (@JDouglass) as well as all my fellow SusQtech Colleagues presenting in many topics and sharing their wealth of experience from the SharePoint community.
 

This is what conferences are all about, sitting around discussing and showing others what the art of the possible is with SharePoint. Overall it has been a great conference, great speakers, great event, and great sponsors. Looking forward to next year already J

April 26
SharePoint 2010 and SSL Certificates

While working on a project recently I wanted to use SSL certificates on the Development environments so the developers could actually get a closer experience to what the end users are seeing in Pre-Production and Production. The domain names on Development are not the same as the Production ones and did not want to configure those the same as then I would have IP addressing and Routing issues when testing. So I wanted to use self-signed SSL certificates but had the standard issue when trying to run the six websites I have with SSL certificates without using massive amounts of IP addresses on the server which would cause me an issue later as I need to clone the Development machines.

So resolve this issue I used "SelfSSL" which can be downloaded from here:

http://www.microsoft.com/en-us/download/details.aspx?id=17275

This is the old IIS6 download but it works perfectly. Once downloaded then you use the following command line to create a self-certificate:

SelfSSL /N:CN={domain name} /V:{validity days} /S:{IIS Website ID} /K:{Key Size}

 

This approach above will create a single SSL certificate that you would apply to one site.

If we look at the properties of the certificate it looks like this:

 

To create one that can be used with multiple sites, kind of like a wildcard certificate you would do the same with a slight change.

SelfSSL /N:{List of Domains} /V:{validity days} /S:{IIS Website ID} /K:{Key Size}

SelfSSL /N:CN=site1.domain.com,CN=site2.domain.com,CN=site3.domain.com,CN=site4.domain.com,CN=sites.domain.com /V:1000 /S:1 /K:2048

This will create the following certificate:

 

Now we have a certificate with multiple common names that can be used on my development environment for multiple sites with the above domain names. Now to add the certificate to the server so they it is trusted and as if by magic all is well. J

Disclaimer: This should only be done in Development, unless you are going to add the certificate to everyone's workstation. Self-Signed are just for testing and Development.

April 23
SharePoint 2010 – SQL 2012 Always On Configuration

SQL 2012 brings some great capabilities to the table for an "Always-On" environment. In this post we will configure our SQL 2012 environment to be ready for SharePoint. To begin with my environment is made up of the following:

  1. 2 x SQL 2012 Servers
  2. 1 x SharePoint Server
  3. 1 x AD Server

Of course in the real world I would have more servers than this, especially from the SharePoint side. Firstly you will need to install SQL 2012 which I am not going to cover here as it is just like installing any other version. Once installed you will need to access the "SQL Server Configuration Manager".

Once opened select the "SQL Services" and then "SQL Server (YOUR INSTANCE NAME)".

Right click your instance and select "Properties"

Before we can do anything we need to have made sure that we are running a base Windows Cluster, for details on this you can visit TechNet. Once this enabled you should be able to select the "AlwaysOn High Availability" and it should display your windows cluster name and a checkbox to enable the "AlwaysOn Availability Groups" feature.

Check to enable the "AlwaysOn Availability Groups"

Click to apply the changes, you will then be told that you need to restart the services for it to take effect. Don't do that yet.

Now we need to enable named pipes communication for the SQL instance. Navigate to the "SQL Server Network Configuration" node then select "Named Pipes", and choose to "Enable" it.

As before you will be warned about the service needing restarting.

This time you can either restart the services from the configuration window or access the SQL management studio and right click the server and choose "restart".

Now we have the basic configuration completed; now we need to create a test database to use for setting up the always on configuration. I created one called "TestAvailabilityDB".

Once it is created you "MUST" back it up, this is a pre-requisite for the always on configuration.

 

 

 

Once you have backed up the database, you then need to navigate within SQL management studio to the "AlwaysOn High Availability" node and right click and choose "New Availability Group Wizard"

 

As with most Microsoft products now we are given a great wizard to run through to create what we need.

First we need to name the group, for me I called it "SQL-AVAIL-GRP"

Next we need to select the database we want to use, this will be the test one we created, and notice the status says it meets the prerequisites if the database was not backed up it would not allow you to select this database.

Select the test database.

When we press next we are presented with various options, the first setting is to add the replica servers for the "AlwaysOn" configuration. The primary server is already list; this is the current server you are running the wizard on.

Click the "Add Replica" button.

It will then allow you to connect to the server you wish to use; in my case it is called "DEV-SQL2".

If you happen to get this error, it could be credentials, security or even network issues.

For me it was the Windows Firewall causing the problem. To resolve this I simply I turned off the "Domain Networks" firewall policy. I could have modified it I suppose but easier to just turn if off for now.

 

Once the connection is made, you will now see the secondary server listed. By default the "Automatic Failover" and "Synchronous Commit" options are selected.

You also have the ability to define if the secondary is readable at all, for this example we will use the default of "No". Further documentation can be found on TechNet about the logic behind these options.

Once set you then need to check the endpoints and you can modify them but I kept them with the default values.

Now we need to specify where the backups should occur, for me I changed this to the "Primary".

I then specified the path to use, which in the real world would not be on the SQL server but a shared path that all the SQL servers can see.

Next apply the changes. Ass you can see the listener piece failed, that is because I wanted to run through the process manually.

Ignore the error and continue.

Once this has completed successfully now we need to create the listener. Navigate the "AlwaysOn High Availability"; go down to the "Availability Group Listeners" section.

Right click and choose "Add Listener"

 

We need to add a name (this will be created in DNS), a port to use and a static or dynamic IP. Best practice would dictate a static IP address. My details are as below:

Once done we need to open up the "Windows Failover Cluster Manager".

 

Once the application opens expand our cluster, and then expand the "Services and Applications" section. Right click the availability group called "SQL-AVAIL-GRP" or whatever you called your group. Select the "Add Resource > Client Access Point" link.

 

Assign a name for the client access point and an IP address to use.

Apply the changes as shown below.

Once created successfully navigate to the same place and choose the "Bring this service or application online".

The following status screen should now be displayed, showing everything is now online ready for use.

Now we have it all setup you should see the following when you expand the "AlwaysOn High Availability" node within SQL Management Studio.

When accessing the second SQL Server you should also see the database initially set in "Synchronizing Mode".

Until the database has synchronized, the availability dashboard will display the following:

When running in this mode, if we were to initiate a manual failover we will get the following message:

April 18
SharePoint 2010 – Fix Add as Colleague

While working with the same client, the existing jQuery worked perfectly and would replace any "http" references to "https", and modify the URLs to either use the short or FQDN. However one little piece that caused a problem was the "Add as Colleague" control on the profile. This by default when browsing via the "HTTPS" URL tries to access the internal URL in the following format:

So back to jQuery again, using the following I managed to modify this based on the protocol being "HTTPS".

The key was to attach to the class of the button, which is ".ms-my-addcolleague", grab the "onclick" attribute and override this similar to the code I used before. Once done the colleague button then worked for both internal and external access whether "HTTP" or "HTTPS".

JQuery saves the day again J

April 12
SharePoint 2010 - Replace “HTTP” with “HTTPS” and shorten URL’s, based in internal and external

Working with a client recently I had the old issue of them using "http://sharepoint" for internal users and then "https://sharepoint.domain.com" for external access. Of course as you would expect SharePoint takes care of most of the issues with ensuring the URL's for links are correct such as automatic navigation links, search results etc. However what it did not take care of as we all know is the hardcoded and manually added links to the pages and the ones that are were manually added to the master page so they were consistent across the board. This meant that when users came in from inside or outside it would either work or they would get redirected to the wrong URL for the zone they came in from. So how do we fix it? This time around I decided to use jQuery, to modify the links as then page was rendered. First I needed to ensure that the URL's were modified with either "HTTP" or "HTTPS" depending on which URL you came in from.

This code checks whether we are using "HTTP" or "HTTPS" then iterates through the "<a>" tag references and updates them accordingly. So this fixed half but I needed to make sure that if it was using "HTTP" then the URL's would change to the shortened "http://sharepoint". So I used the following code:

This code ran if the current protocol was "HTTP" then for any links that contain the FQDN it stripped them out to the shortened link, this was for the "http://mysite.sharepoint.domain.com" URL's . A similar approach was used for the URL's that contained just the "domain.com", also notice I added in the "HTTPS" link to "HTTP" change in the same line.

Of course these are all separate blocks of code but you can easily add them into one single loop that would check everything and modify accordingly. I found that due to me needing to check what the "HREF" contained and the order that I needed it I still needed to use one loop if running "HTTPS", as all the links that are hardcoded are using the FQDN, and for regular "HTTP" I needed two loops in this order to modify the main ones and then the second layer of links:

I am sure there are cleaner ways of doing this, could have written something in "C#" to modify the page etc. but had to use a "no-code" solution. So does that mean that jQuery is not code?? Just kidding J

April 02
MVP Renewal for 2012

So it was that time of year again, the time where you submit you list of things you have done for the SharePoint Community and then hope for the best. For me my renewal date is April 1st, yes April fool's day. Remember it well when I received an email from "Microsoft" for the first time back in 2007 saying I had been awarded an MVP, firstly I did not know what an MVP was and secondly once I found out was not sure it was a wind up. Since then I have had the same nervous feelings, tense few days as I wait and see if I managed to live up to the expectation of a Microsoft MVP. Yesterday after some slight stressing on my part, I can freely admit that, and everyone else who has and does go through this knows what I mean; I received my email saying I had been awarded the MVP for 2012. I am truly honored to be sitting here now as a six time SharePoint MVP, hopefully still doing things that are worthwhile to the community. I am thankful to be part of the MVP program to hang out with some of the coolest people in the SharePoint community, not saying that anybody who isn't is not cool, you are cool too. J

I hope that over this next year that I can do my part to maintain this award and hope that I can be useful to the community in some part. I want to say a big thank you to Microsoft and to the rest of Community for another year.

I hope to see you around the SharePoint Community somewhere this year J

 

March 30
SharePoint 2010 – AppFabric Setup

So I am sure that you are all aware of AppFabric that is available for Windows Server, which you can find here:

http://www.microsoft.com/download/en/details.aspx?id=27115

This is a great product and add-on for not just windows but SharePoint too. The idea behind the product that we will look at today is really around the caching framework that allows for cross machine caching, one things that SharePoint does not do that well. So to set it up run the installer and ensure you select the following options:

Once you have installed it (not going to cover it here), you will be able to configure it as shown below. The first screen is simply a message screen where you decide if you wish to be a part of the "Customer Experience Improvement Program", entirely up to you, but I always think this is a great opportunity to give back something that may help the products get better.

Next we are able to select the hosting settings that we wish to use, I have set mine with the following, ensure if you do change the account from the default "Network Service" that the domain account is not an Administrator as it does not need that permission.

So this sets the base configuration but before we can continue we need to press the "Configure" button for each provider we have selected.

Upon setting this I got errors, which was related to the fact that I am using a self-contained VM, SQL, SharePoint, DC and now AppFabric. The Windows Authentication section was looking for groups created under the local machine name, not my domain. Changing those groups to domain ones fixed my issue.

Press "Yes" to continue.

My second error after that, which we all know how to fix:

Next we need to configure the persistent store component as shown below:

Select "Yes" to continue.

When it has been successfully configured it should look like this:

Now we need to set the caching framework settings. You have two base options:

For my installation I am going to use "SQL Server AppFabric Caching Service Configuration Store Provider".

Before we can continue we will need to configure the options as before.

Finally you now need to set the caching ports and set whether to allow these as Firewall Exceptions.

Once completed you can now modify the settings if needed by launching "IIS".

Within "IIS" at the root level there will now be a section for monitoring and configuring the AppFabric settings.

The dashboard is available either at the root or at the individual web application level.

So now we have it all configured what do we do next? How do we use it in a base architecture as well as using it in our custom code? This will come in another post.

 

March 27
SharePoint 2010 - SQL 2012 Reporting Services Part 2

So in the last post we looked at just setting it all up and making SharePoint use the service application to provide reporting services to the farm. In this post we will now look at using it in our site collection.

Firstly we are going to create a "Report Library" by selecting "Site Actions > More Options", then selecting "Library > Report Library".

 

For this example I am going to call my list "SSRS Reports", aptly named I think.

Once created we need to access the "Library Settings" and modify the content types that are assigned to it.

From the list of content type groups, select the "SQL Server Reporting Services Content Types" group.

Now simply add, "Report Builder Model, Report and Report Data Source" to the list.

 

I have also removed the standard two "Report and Web Part Page with Status List" just to make it nice and clean.

 

So now we have them added we can access the "New Document" link and see the three new report content types.

Let's look at creating a "Report Data Source". Select the corresponding content type from the "New" menu and then complete the details as shown below. Of course you may decide to use a windows account, SQL account, pass through or even prompt for authentication. I am using SQL authentication for this demo. The connection string is to my local server and is using the Adventure Works Database for SQL 2012.

Once completed you can use the "Test Connection" link to validate it work and should render in green text if it successful.

So we have our data source now we need to create a model so we can use this in our report builder tool Select the "Report Builder Model" from the "New" menu then give it a name.

The data source link has a picker that will display all the data sources in the site whether in the same site or in the current site collection.

Simply select the data source we created earlier and press okay.

Now we have it configured, press "OK" and it will save back into the library and should look as below.

We now have the core components configured, now time to use the report builder. Access the "New" menu and select "Report Builder Report"; you should then be promoted to run the application.

The application should then download and finally launch (like watching paint dry) J

 

Once the application opens you get various options to create reports as shown below.

 

We will select the "Table or Matrix Wizard" as the example.

The report requires a dataset that we can use so we can select the "Create Dataset" as we do not have any already created. Upon pressing "Next" we are asked to select the data source for the dataset.

Use the picker to select either the data source or the data model, either will work.

I chose the "Report Builder Model", and selected the "Test Connection" to check that it worked.

For me I was prompted as per my configuration for the password of my SQL account.

So we have our data source defined, we are going to create a new dataset and tested it. So now we need to select the tables, views or stored procedures that will populate my report.


I chows the "Vendor with Addresses" view as my test.

 

Once selected you are then able to drag and drop the fields into the columns that you wish to use as shown below.

Finally your layout can be defined by following through the rest of the wizard, selecting the layouts and the style.

Once done you will be returned to the design canvas where you can make further changes or as I did, simply press "Run" to see the data returned.

 

 

And there you have it a fully built report inside of SharePoint 2010 using SQL 2012 Reporting Services. Once last step though, press the "Save" icon and save it back to the report library we created earlier.

 

 

As you can see once everything is configured and working it is very easy to create and access reports in SharePoint 2010.

 

 

 

 

 

March 26
SharePoint 2010 – SQL 2012 Reporting Services

With the release of SQL 2012, Reporting Services got a remake specifically for SharePoint 2010. Reporting Services can now be configured as a service application specifically to allow for scaling within your infrastructure. To enable this in SharePoint you must first have installed the SharePoint component from SQL 2012. You can find this by running the installer for SQL and selecting the following:

Once this is done you need to load the "SharePoint 2010 Management Shell" and run the following command:

This will install the core services into the SharePoint Farm. Once done, run the following command which will provision the service proxy.

You should now be able to run the following command and see a provisioned instance.

This allows us to actually create the Service Application as we would with any of the other out of the box ones. Simply access, "Central Administration > Manage Service Applications > New > SQL Server Reporting Services Service Application".

As with all service applications you need to provide some base configuration.

 

Once the top section is complete you are then able to associate it directly with web applications, in my case I do not have any as this is a "vanilla" virtual machine.

Now it is time to watch the magic wheel, spinning away J

 

 

 

Once it has finished it will present you with a completion message and then a link to some further configuration, which will present a message letting you know if the SQL Server Agent service is running.

To start the SQL Agent access SQL management and right click the "SQL Server Agent" node and choose "Start".

Once done, you can refresh the page and it should show the correct running status.

In order for the service application work as expected certain permissions need to be assigned to the application pool account. Click the "Download Script" command to get a dynamically generated script that you must then run in the SQL management studio.

The script looks as follows and is simply adding the "RSExecRole" and adding permissions within various databases to the application pool account.

This needs to and should complete successfully.

SQL Reporting Services needs to access the SQL Agent through an account, you must now set this.

Once you have it all completed, I found that I needed to reboot the server to stop myself getting the following error:

"The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs."

Once it was rebooted I could then access the service application by going to "Central Administration > Manage Service Applications > SQL Server Reporting Services"

So now we have our service application created we are ready to use it within our SharePoint Web Applications, I will cover this in a further post.

February 28
SPTechCon SF 2012 Presentations

As promised here are the links to the latest versions of my presentations from SPTechCon San Francisco 2012. Thanks to all that attended the sessions, hope you learnt something new, or had what you already knew validated.

SharePoint Authentication and Authorization

http://www.slideshare.net/helloitsliam/sharepoint-authentication-and-authorization-sptechcon-san-francisco

Stop Those Prying Eyes Getting To Your Data

http://www.slideshare.net/helloitsliam/stop-those-prying-eyes-getting-to-your-data-sptechcon

1 - 10Next
Looking Cool!!