About Us

Adding a Top-Level Link to a Search Center Breadcrumb in SharePoint 2010

by Jess Collicott 15. May 2012 01:14

In SharePoint 2010, the Search Center does not provide a link back to the top-level site in the breadcrumb. This is a hindrance for users to find their way back to the top-level site.

2012-05-14_1529

Having a link back to the home page of the top-level site would be especially useful in scenarios like Intranet sites. A link could be provided in the breadcrumb back to the Intranet home page. Here is a quick example to add a link to an Intranet home page on a Search Center:

  • Open the root site in the site collection in SharePoint Designer.
  • Click Master Pages in the Site Objects left-navigation.
  • Create a copy of the minimal.master Master Page, and give it an appropriate file name (ie, Intranet_minimal.master). This will be used to create a customized version of the Master Page for the Search Center.
  • Open the new Master Page in SharePoint Designer.
  • Find the following line:

<SharePoint:SPLinkButton runat="server" NavigateUrl="~site/" id="onetidProjectPropertyTitle" CssClass="s4-mini-h1-a">

  • Before that line, add the following to the page:

<!-- Custom Link to Portal -->
<SharePoint:SPLinkButton runat="server" NavigateUrl="~sitecollection/" id="rootSiteBreadcrumbLink" CssClass="s4-mini-h1-a">
    Intranet Home
</SharePoint:SPLinkButton>

<SharePoint:ClusteredDirectionalImage
    runat="server"
    ImageUrl="/_layouts/images/fgimg.png"
    LTROffsetX=0
    RTLOffsetX=0
    LTROffsetY=607
    RTLOffsetY=618
    LTRWidth=11
    LTRHeight=11
    RTLWidth=11
    RTLHeight=11
    AlternateText=":"
    ClassName="s4-mini-titlesep"/>
<!-- End Custom Link to Portal –>

  • The specific section of the Master Page should now look like the following:

2012-05-14_1542

  • Save the custom Master Page.
  • Apply the custom Master Page as the default for the Search Center site.
  • If you refresh your Search Center site, you should now see a link to the Intranet Home.

2012-05-14_1544

 

Caveat:

While the link to the top-level site is dynamic (~sitecollection/), this example hard-codes “Intranet Home” in the Search Center Master Page. If the Intranet is renamed, the Master Page would need to be updated to reflect the new name.

Add Your Photo to Your Lync Online Account

by Jess Collicott 13. May 2012 04:52

One of the cool features of using Lync Online with your Office 365 account, is the ability to have photos of your contacts in your IM client. This lets you easily scan to see who is online, and if the person you are looking for is available. You can help your team out by adding your own photo to your account. To do this, you can first assign your photo to your Office 365 account, and then to your Lync Online settings.

Assign Your Photo to Office 365

Once you have a photo you would like to use, log in to your Office 365 Portal.

In the upper right, underneath your name, click My profile.

2012-05-12_2128

On the My Profile page, under Information, click Change photo.

2012-05-12_2130

Browse to the photo on your computer, and then click Upload.

2012-05-12_2131

You should now see your photo assigned to your Office 365 account.

2012-05-12_2132

 

Assign Your Photo to Lync Online

Now that you have added a photo to your Office 365 account, you can assign that as your photo in Lync Online,

Log in to your Lync Online Client.

Click the icon to open up the Menu, then click Tools, and then click Options.

2012-05-12_2136

In the left-hand menu, click My Picture.

In the options screen for My Picture, you will see three options. Choose the middle option: Default corporate picture. This is the photo you just uploaded and assigned to your Office 365 account.

2012-05-12_2139

Click OK.

You should now see your own photo on your Lync Online client, and your colleagues will see your photos next to your name in their Lync Online client.

2012-05-12_2141

Configure SQL Server 2012 Data Tools for ALM and TFS Features

by Mike Douglas 23. April 2012 13:41

SQL Server 2012 was just launched and is packed a number of new features.  See the Microsoft SQL Server 2012 landing page for more information on SQL Server 2012.  SQL Server 2012 includes everything you need (almost, as I’ll show you below) to being utilizing the ALM features in Team Foundation Server 2010 without the developer edition of Visual Studio.  I’m going to walk you though the options to install, the configuration, and the additional downloads to begin using all of the features.

If you opened SQL Server Management Studio 2012 then you have probably noticed how it now powered by Visual Studio 2010.  In addition, the Business Intelligence Development Studio (BIDS) has been renamed to SQL Server Data Tools (SSDT).  Not only is SSDT powered by Visual Studio 2010, it now includes the Database Project template.  By integrating “Data Dude” (Microsoft’s original code name for the database development tools that keeps sticking) into the SQL Server installation, I think Microsoft is sending the message that ALM features for database artifacts are very important for database professionals and not just developers. 

SQL Server Installation

This first step is choose the proper features when installing SQL Server.  If you have already installed it without these features, you will need to rerun the installation and add these features.  During the Feature Selection of the SQL Server 2012 installation wizard, choose the SQL Server Data Tools and Management Tools to install the Visual Studio 2010 powered client tools as shown in Figure 1.

image

Figure 1 – Choosing the SQL Server Data Tools

Once this installation has completed, the two client tool programs will be available from the Microsoft SQL Server 2012 program menu.

image

Figure 2 – SQL Server Data Tools and Management Studio programs

Enabling Database Projects in SQL Server Data Tools

Open the SQL Server Data Tools and choose New Project. The Business Intelligence project templates are listed below for Analysis Services, Integration Services, and Reporting Services.  The SQL Server item has the option to install the additional functionality including for Database Projects.  Choose this option to download and install the additional functionality.

image

Figure 3 – Microsoft SQL Server Data Tools (Web Install) option

The dialog appears and provides the option to Install the features.  Click Install to take you to the link below.

image

Figure 4 – Installing Microsoft SQL Server Data Tools

The Get Started with Microsoft SQL Server Data Tools page includes the instructions for installing the tools for both Visual Studio 2010 Professional (or above) and SQL Server Data Tools.  The second bullet covers our scenario of the Visual Studio 2010 Integrated Shell and will download all of the required components from the link.  Click on the Download SQL Server Data Tools link to launch the Web Platform Installer 3.0 to install the SSDT application.

image

Figure 5 – Get Started with Microsoft SQL Server Data Tools

Click the Install Now link to run the Web Platform Installer powered installation.  Then click the Install button below to begin the installation process.

image

Figure 6 – Install Microsoft SQL Server Data Tools

Once the installation completes, you will have the Database Projects template available to use, however not all of the functionality that was included in previous versions of the Database Project is available.  The SSDT team is planning on using the SSDT Power Tools as a the delivery mechanism to continue to add functionality to SSDT based on the users requests and needs.  The first release of the SSDT Power Tools adds Schema View to the Database Projects.  Download and install the latest version the SSDT Power Tools to add this functionality. Continue to monitor this post and the SSDT Team blog for further improvements. 

image

Figure 7 – SSDT Power Tools Download Page

Finally, when you reopen the SSDT, the SQL Server Data Project template is now available.  You can now create Database Projects to manage your database artifacts with rich features such as smart rename and schema compare.  Furthermore you can leverage these projects to create automated builds and deployments to align with the application source code builds and deployments.  See my previous post, Implementing Continuous Integration (CI) and Deliveron for SQL Server Databases for some background on Database Projects especially for automated deployments.

There is one critical capability missing with this solution so far.  The Database Projects are important for following Configuration Management (CM) practices but it is not complete without the ability to use them with a Source Control Management (SCM) system.  Fortunately, by being powered by Visual Studio, SSDT can be tightly integrated with Team Foundation Server 2010 (TFS).   TFS 2010 provides a number of integrated ALM features including SCM and is even free to install if you have a MSDN license.

image

Figure 8 – Create SQL Server 2012 Database Projects

Connecting to Team Foundation Server 2010

The Visual Studio integrated shell that powers SSDT does not include the Team Explorer component that provides the full integration with TFS 2010.  Team Explorer is a free download (but requires a TFS CAL, also included with your MSDN license) that you can install to add this functionality.  Download and install Team Explorer 2010.  When the installation completes, you should download and re-install the Visual Studio 2010 SP1 (this was automatically installed for you).  To connect to TFS 2010, first make sure the Team Explorer view is visible.  If not go to the View menu and select Team Explorer.  In the Team Explorer toolbar, select the plus icon highlighted below to open the Connect to Team Project dialog and then select Servers to show you the Add/Remove Team Foundation Server dialog. Finally, click the Add button to create the connection to the appropriate TFS 2010 Server.  In addition to the SCM features with TFS 2010, this includes bug tracking, agile project management capabilities, build automation, test case management, and more.

image

Figure 9 – Connecting to Team Foundation Server 2010

I hope this provided the information you need get started using Database Projects with SQL Server 2012.  In a future post, I’ll go into detail on how to use the Database Projects.  If you are using the Visual Studio 2010 Professional or higher, the same link above will install the capabilities for this.  Finally if you are using the Visual Studio 11 beta or newer, the Database Project template for SQL Server 2012 is already included.  You will also want to download the SSDT Power Tools.

Add a Metadata Property to User Profiles in SharePoint 2010

by Jess Collicott 13. April 2012 04:54

In this example, our pretend company has decided it would be beneficial for the culture if employees knew how to better work with and relate to each other as they take on and complete projects. To do this, the company decided to focus on a strengths-based culture, to better allow each person's passions drive them to success. One of the methods used to help employees know their own strengths and the strengths of others was having each individual take the Clifton StrengthFinders assessment, to discover their top five strengths. Knowing employees were going to be taking and completing the assessments, the leaders at the company would like each individual to be able to populate their user profile on SharePoint 2010 with these strengths.

Within SharePoint 2010, the list of strengths were added to a Managed Metadata Term Store, so that the spelling and usage of the strengths would be consistent across all of the user profiles:

Term-Store

The following are the steps that would be used to add a property to each person's user profile so that they could assign terms from the Strengths Term Store, and show them on their individual profile.

Create the User Profile Property

Open SharePoint Central Administration, and access the User Profile Service Application by following these steps:

  1. Under Application Management, click Manage service applications
  2. Find the desired User Profile Service Application in the list, and click to highlight it
  3. Click Manage in the Ribbon

On the following page, under People, click Manage User Properties:

Managed_Properties_Link

On the Manage User Properties page, click New Property:

New_Property_Link

In the first section, provide the desired Property Settings. In this example, we will choose the name of "CliftonStrengths", and the Display Name of "Strengths". We will choose a multi-value string, with up to 150 characters. The last field maps the property to the managed terms that were previously created in the Term Store.

Property_Settings

For the Sub-type of Profile, make sure the profiles are selected that you would like to display the property on. In this case, we only have the Default Profile:

Profile_Type

Under User Description, we will provide a description that will help people understand what the intended purpose of the property is for as they are editing their profile:

User_Description

For the Policy Settings, we will choose Required for the Policy Setting, and default the visibility to Everyone.

Policy_Settings

For the Edit Settings section, we need to make sure we allow employees to edit the property's values:

Edit_Settings

On the Display Settings section, we need to show the property on the user profile page. We also need to allow the property to show up to 5 values before being shortened with an ellipsis. To be able to edit the field, we need to allow the property to be shown on the Edit Details page. We also will allow updates to the property to show in the newsfeed.

Display_Settings

After these values are set, click OK to create the new user profile property.

Custom_Properties

 

Move to the Desired User Properties Section

As shown in the last step, the new Strengths property will be displayed under a section called "Custom Properties". We want to change this so the property shows in the "Details" section. To do this, click the blue "up" arrow next to the name of the property until it is in the desired section.

Order

 

Edit the User Profile

The property is now ready to be used on the SharePoint user profiles. Navigate to your profile, and click "Edit My Profile":

Edit_My_Profile

Scroll down to the "Details" section, and either type or select the five strengths to be listed on the profile:

Select_Strengths

Click Save and Close.

Then, on the user profile click the link titled "More Information":

More_Information_Link

The user profile should then show the "Strengths" property, with the selected strengths for the individual.

Final

A Quick Introduction to Fluent Validation in ASP.net MVC

by Travis Ellis 2. April 2012 20:03

In one of the projects I am working on we are using ASP.net MVC for our web front-end. I love the framework but I have never really been thrilled about validation using the DataAnnotations library. Based on the recommendation of some other people I discovered the FluentValidation library. The goal of this post is to show you how to create a very simple MVC application using FluentValidation as an alternative to DataAnnotations.

The first thing you need to do is create a new MVC Application using Visual Studio 2010:

image

The template you choose does not matter but for this post I am using the Internet Application template. There won’t be any authentication in the application so the Intranet template will work fine too.

Once the project is created right-click on the References item in Solution Explorer and click Manage NuGet Packages (if you do not see this menu then make sure you download the most recent version of NuGet from NuGet.org):

image

This will bring up the Package Manager dialog. In the Search box, type in FluentValidation and hit Enter. You should see a few packages in the results list. The one you want to add to the project is FluentValidation.MVC3. This will install the FluentValidation MVC3 package and FluentValidation itself (the MVC3 package depends on it). Select the FluentValidation.MVC3 package in the list and click the Install button:

image

Once the assemblies are added to the Solution, you can close the Package Manager and open the Global.asax file in the root directory of your project. You need to add a single line to your project to configure the framework to work with MVC. In the Application_Start method in Global.asax, add the following line:

FluentValidation.Mvc.FluentValidationModelValidatorProvider.Configure();

Once you have done this we can create a new Model class that will be used by one of our Views/Controllers:


public class RegistrationModel
{
    public string Username { get; set; }
    public string Password { get; set; }
    public string ConfirmPassword { get; set; }
    public DateTime BirthDate { get; set; }
    public int NumberOfChildren { get; set; }     
}

This is a simple model used to register for a website. It asks for a username, password (with confirmation), date of birth and number of children. Now that we have a model we can create the controller actions for it. We will need a GET and POST action:


[HttpGet]
public ActionResult Create()
{
    return View();
}

[HttpPost]
public ActionResult Create(RegistrationModel model)
{
    if(!ModelState.IsValid)
    {
        return View(model);
    }
    
    // register here

    return RedirectToAction("Index", "Home");
}

The code here is pretty bare and more than likely identical to the code that would be used when using DataAnnotations to do the validation. If you were to run the code right now there would be no validation. Let's fix that by creating a new validator class:


public class RegistrationValidator : AbstractValidator
{
    public RegistrationValidator()
    {
        RuleFor(model => model.Username)
            .NotEmpty()
            .Length(1, 256);

        RuleFor(model => model.Password)
            .NotEmpty()
            .Length(1, 50);

        RuleFor(model => model.ConfirmPassword)
            .NotEmpty()
            .Equal(model => model.Password);

        RuleFor(model => model.DateofBirth)
            .GreaterThanOrEqual(DateTime.Today.AddYears(-18));

        RuleFor(model => model.NumberOfChildren)
            .NotNull()
            .GreaterThan(0)
            .NotEqual(13);
    }
}

We have defined the following rules for our model:

  • Username is required and must be between 1 and 256 characters long.
  • Password is required and must be between 1 and 50 characters long.
  • Password confirmation is required and must match the password.
  • The Date of Birth must be greater than or equal to todays date 18 years ago (to confirm they are 18 or older).
  • User must have at least one child but can not have 13 (we are very superstitious).

Now that we have our validations in place, we need to update our model to include an attribute that will wire up the validation with MVC. Add the following attribute to our RegistrationModel class:


[Validator(typeof(RegistrationModel))]
public class RegistrationModel

That is all that is needed to use FluentValidation. The same rules apply when using client side validation. You need to include jQuery, jQuery Validation and optionally include jQuery Unobtrusive Validation scripts. These steps are no different than using DataAnnotations so it's very simple to convert a site to use the framework. If you are using Dependency Injection then you can also create your own validator factory that will wire up the validators for you so you don't need to register the type of validator on each model you create. If you use Ninject, there is already a NuGet package that has a validator factory that you can use. Just open up the NuGet package manager and search for Ninject.Extensions.FluentValidation.

FluentValidation is a very powerful framework. There are plenty of built in validators that you can use such as verifying a credit card or e-mail address. Creating your own custom validators is also very simple. Head on over to the CodePlex page today and look at the documentation to start using it in your projects.

Office 365 – Troubleshooting Tool

by Jess Collicott 1. April 2012 03:40

Microsoft recently released a very handy troubleshooting tool for Office 365. The wizard walks both administrators and end-users through common troubleshooting scenarios, like:

  • Active Sync issues for mobile devices
  • Problems joining meetings with Lync
  • Using Office Web Apps
  • Issues with AD synchronization and hybrid environments
  • Working with SharePoint User profiles

The troubleshooting wizard does a good job of going through a couple of short steps to get an end-user or an administrator to the recommended resolutions for a particular service area.

Upgrade SQL Server Express instance to SQL Server Enterprise

by Jess Collicott 24. March 2012 23:50

For one of my SharePoint 2010 VMs, I wanted to upgrade one of the SQL Server Express Edition instances to SQL Server 2008 R2 Enterprise Edition. Since my VM already had SQL Server 2008 R2 Enterprise Edition installed, I only needed to go through the following steps to upgrade the specific instance.

When reviewing the properties of the instance with SQL Server Management Studio, it showed the Product version as SQL Server Express Edition.

Initial_Product_Version

Start the Upgrade Process

  • In the Start menu, under Microsoft SQL Server 2008 R2, open the SQL Server Installation Center in the Configuration Tools folder.

1

  • Then, under Installation, click Upgrade from SQL Server 2000, SQL Server 2005 or SQL Server 2008.

2

Install the Setup Support Files

  • You may be prompted to browse for the SQL Server 2008 R2 installation media to install the Setup Support files. In my case, I mounted the ISO.

3

  • Make sure the Setup Support Rules pass before continuing on.

4

  • Run the install.

5

Upgrade the Express Instance

  • After the install is complete, you can now continue with the process to upgrade the Express instance.
  • Again, make sure the Setup Support Rules all pass before continuing on.

6

  • The setup should find your existing product key. If not, enter it now.

7

  • Accept the License Terms.

8

  • Next, select the SQL instance to upgrade. In my case, the name of the Express instance was "SHAREPOINT".

9

  • The installer will preselect the features to be upgraded in the instance.

10

  • Verify the Instance ID and root directory, and continue on.

11

  • Verify you have enough drive space, and click Next.

12

  • Decide if you want to turn on error reporting, and click Next.

13

  • Verify the Upgrade Rules all pass before continuing on.

14

  • The installer will provide a summary of the upgrade actions. Click Upgrade.

15

  • After the installer finishing the upgrade, it will provide a confirmation page that the instance was successfully upgraded.

16

  • When reviewing the properties of the SQL instance in the SQL Server Management Studio, it will now show that it has been upgraded to SQL Server Enterprise Edition.

17

  • This provided the opportunity to upgrade SQL Server to the latest SP and Cumulative Update level. These can be downloaded from the Update Center for Microsoft SQL Server.
  • After running the updates, you can also see the instance's build version through the SQL Server Management Studio.

18

  • In my case, I upgraded to build 10.50.2806, which is Microsoft SQL Server 2008 R2 Enterprise Edition with Service Pack 1 and Cumulative Update 5.

After these steps, I ran the SharePoint Products Configuration Wizard to bring everything up to date.

Enable HR to Create a new User Account in Active Directory with Nintex Workflow 2010

by Jess Collicott 19. March 2012 04:18

A common business process scenario for onboarding a new employee within a company is for Human Resources to notify the IT department of the new employee joining the organization, and then for the IT department to create the Active Directory (AD) account and either notify HR, or wait to provide the information to the new employees themselves.

This type of business process might look like the following:

Old_Process

 

However, given the option, most businesses would like to see this process streamlined to enable HR to create the Active Directory account themselves, in an easy, pre-defined manner.

The streamlined business process could look like the following:

New_Process

This can be accomplished without any custom development using Nintex Workflow and Microsoft SharePoint.

Using Nintex Workflow to Enable HR to Create AD Accounts

Using a simple SharePoint list, and a couple of the provided Nintex Workflow actions, you could create a simple form for HR that looks like this that enables HR to create Active Directory accounts for new employees:

form

Using just these simple pieces of information about the new employee, the “Create AD User” Nintex Workflow action can be configured to do the following:

  • Create the Active Directory account
  • Assign the account name (SAMAccountName)
  • Assign the first name and last name
  • Assign the manager
  • If provided, assign the work phone #
  • Create a generated password
  • Force the employee to change their password at the first logon

Many other pieces of information could be easily assigned as well with a few changes to the form and the workflow. The basic configuration screen for the “Create AD User” action essentially looks like the following:

Provision-User-Action

Each of these properties could be preconfigured or populated by fields on the initiating form.

 

Additional Low-Hanging Fruit to Enhance the Business Process

Additional enhancements that could easily be made using out-of-the-box Nintex Workflow actions include enabling the workflow to:

  • Create the new user account “Like” another account (using another employee as a model for assignments)
  • Assign the user account as a member of Security Groups
  • Creating an Exchange mailbox to provision e-mail for the new employee
  • Notify IT and the hiring manager
  • Enable Lync / Office Communicator for the employee
  • Assign the user account to specific AD Organization Units (OUs) based on Department
  • And of course, extend the workflow to include more of the onboarding process…

Learn more about Nintex Workflow 2010.

DNS Settings for Office 365

by Jess Collicott 10. March 2012 22:50

The Office 365 Transition Guide for Administrators includes steps for making DNS updates for your company’s domain. However, the instructions aren’t very clear on the exact format of the values that you may need to provide to your DNS provider.

After a bit of investigation, we were able to take the values in the Transition Guide, and find the correct format for our DNS provider. The table below shows the DNS entries used by Deliveron to prepare for our Office 365 transition. The values may be used as a template, replacing “deliveron.com” for your company’s domain.

Outlook autodiscover.deliveron.com CNAME autodiscover.outlook.com
Lync sip.deliveron.com CNAME sipdir.online.lync.com
Lync lyncdiscover.deliveron.com CNAME webdir.online.lync.com
Lync * _sip._tls.deliveron.com SRV 1 100 443 sipdir.online.lync.com.
Lync * _sipfederationtls._tcp.deliveron.com SRV 1 100 5061 sipfed.online.lync.com.

 

* Make sure to include the period at the end of the line in the SRV entry

Update Active Directory Accounts from a CSV File using PowerShell

by Jess Collicott 6. March 2012 00:27

For instances where there is need to update a specific list of user accounts in Active Directory, it may be ideal to use PowerShell to loop through the list and make the changes for each of the users using the Active Directory Administration Module for PowerShell. For the sake of this example, assume there is a CSV file with a column titled sAMAccountName:

2012-03-05_1713

If we wanted to update the Company attribute in AD for each of these users, we could use the following PowerShell script to read in the list of users, and use Get-ADUser to get the specific AD account object, and then pass to Set-ADUser to make the actual change:

1 Import-module ActiveDirectory 2 3 $userList = Import-Csv '.\List of Users.csv' 4 5 foreach ($user in $userList){ 6 Get-ADUser -Filter "SamAccountName -eq '$($user.sAMAccountName)'" -SearchBase "DC=subdomain,DC=company,DC=com" -Properties Company | % { Set-ADUser $_ -Replace @{Company = 'Deliveron'} } 7 }

 

If you then wanted to query AD for those users to make sure they updated correctly, you could use the following query using Get-ADUser:

1 foreach ($user in $userList){ 2 Get-ADUser -Filter "SamAccountName -eq '$($user.sAMAccountName)'" -SearchBase "DC=subdomain,DC=company,DC=com" -Properties Company | Select SamAccountName, Name, Company 3 }