How To Build a SharePoint Development Standards Document   Leave a comment

Building upon the SharePoint Governance Plan document that I posted the other day, I began creating a Development Standards document for SharePoint.  This is something of a good idea if you either have a large team of designers and developers enhancing and extending the SharePoint platform.  In addition, its  good idea to have some kind of standards document for your organization when utilizing contractors or consultants as additional resources that will only be available temporarily.

This is my first draft at such a document.  It covers both SharePoint 2010 and SharePoint 2013.  I still have some images to add to the document (you will see my placeholders), and I don’t have much of anything for Standards on App Model development.  If you already have standards for this I’d love to hear about it.

So in the spirit of sharing my work, feel free to download this SharePoint Development Standards Development Document.  Hopefully I will get the time to move it out of draft state soon.

Download the SharePoint Development Standards Document.

Bismarck!

Posted June 5, 2015 by Bismarck in SharePoint 2013

Tagged with

How To Build a SharePoint Governance Document   Leave a comment

I have been working with SharePoint since version 2003.  I didn’t begin developing a Governance document until after considerable months with version 2007 and realizing that the platform was just too big to be without such a document.  I’ve gone through several iterations since then.  Once in SharePoint 2010 and now in SharePoint 2013 I feel its complete enough for myself.  I have seen several attempts on the Web at this endeavor and they just didn’t appear comprehensive enough.  I also captured snippets here and there from the Web and through SharePoint Saturday’s and conversations.

So I now have a complete SharePoint 2013 Governance document I’d like to share with the rest of the world. Click on the Hyperlink below and enjoy.

Download the SharePoint 2013 Governance Plan.

Regards,

Bismarck

Posted June 3, 2015 by Bismarck in SharePoint 2013

Tagged with

How To Fix the User Profile Service Not Starting   Leave a comment

There could be many reasons for the Forefront Identity Service from not starting.  Spencer Harbor provides a pretty comprehensive article on this subject.  However, none of them worked for me.  I had the UPS Service configured correctly.  As it turned out in my case it seemed to only happen when I rebooted the server.  The resolve for me was the “Profile.ps1” file I created to incorporate the SharePoint PowerShell Snap-In.  Renaming this file or removing it solved my issue.

You can locate the Profile.ps1 file (if it exists) at: C:\Windows\system32\Windows PowerShell\1.0

Bismarck

Posted February 16, 2015 by Bismarck in PowerShell

How To Extend the Global Navigation Beyond Two Levels   1 comment

In this post, I will show you how to extend the SharePoint 2013 Global Navigation (Top Navigation) beyond the default of two levels.

When using the Global Navigation either within the Site Collection Navigation properties or with using Managed Metadata, the default level is set to Two within the TopNavigationMenu control in the Masterpage.  By editing the Masterpage, locate the ID=”TopNavigationMenu” ASPMenu control and change the following property: MaximumDynamicDisplayLevels=”3″.

How To Extend the Global Navigation Another Level in MasterPage for SharePoint 2013

Happy SharePointing!

Posted January 30, 2015 by Bismarck in SharePoint 2013

Tagged with

How To Hide Site Setting Links in SharePoint 2013   Leave a comment

There may be specific instances where you want to have more control over your Site Owners.  Once such instance is controlling what Site Setting Configurations they have access to.  This post does not address security or permissions, but instead shows you how to remove (Hide) certain links from the Site Settings page in SharePoint 2013.

A typical scenario may be when you have some custom Branding, Navigation or Search Configuration and want to remove those links from being shown.

Note: This does not remove access to the page.  Simply type in the URL directly to access the specific page settings.  My thought on this was the “Out of Site, Out of Mind” approach.

What I did.

I created a SharePoint Feature with a Custom Action to remove specific Links from the Site Settings Application Page. You can obtain the links by holding your mouse over the link and capturing the URL from the Browser Status Window.

How to Do it.

1. Create an empty Visual Studio 2013 SharePoint project.

2. Create a Feature and Scope it to “Site”

3. Add a Custom Action with the following Elements.xml file.  I have tried to explain as much as possible to help you along. (I’ve commented out some of the links, you can incorporate them as well by removing the command tags.)

Elements.xml

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

<!– *******************************************************************–>
< !– *  Trim Site Settings Custom Action Elements File contains the Actions
< !– *  to Remove the Navigation Links.  To locationt the proper “Group Id”
<!– *and “HideActionId” use the IE  Developer Toolbar to obtain the ID label.
< !– *  Example:
< !–* id=”ct100_PlaceHolderMain_Customization_RptControls_DesignEditor”
<!– *  Where GroupId = “Customization” and HideActionId = “DesignEditor”
<!– *******************************************************************–>

<!– *******************************************************************–>
< !– *                             Site Settings Look and Feel                                                 *–>
< !– *******************************************************************–>

<!– Removes the ‘Design Manager’ Navigation Link from Site Settings Page under Look and Feel –>
< HideCustomAction
Id = “HideImportDesignPackage”
GroupId = “Customization”
HideActionId = “DesignEditor”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

<!– Removes the ‘Master Page’ Navigation Link from Site Settings Page under Look and Feel –>
< HideCustomAction
Id=”HideSiteActionFeatures”
GroupId=”Customization”
HideActionId=”AreaChromeSettings”
Location=”Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

<!– Removes the ‘Site Title, Description and Icon’ Navigation Link from Site Settings Page under Look and Feel –>
< !–
<HideCustomAction
Id = “HideProjectSettings”
GroupId = “Customization”
HideActionId = “ProjectSettings”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>
–>
< !– Removes the ‘Device Channels’ Navigation Link from Site Settings Page under Look and Feel –>

<HideCustomAction
Id = “HideDeviceChannels”
GroupId = “Customization”
HideActionId = “DeviceChannelSettings”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>
< !– Removes the ‘Change the Look’ Navigation Link from Site Settings Page under Look and Feel –>
< HideCustomAction
Id = “HideChangeTheLook”
GroupId = “Customization”
HideActionId = “Theme”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

<!– Removes the ‘Import Design Package’ Navigation Link from Site Settings Page under Look and Feel –>
< HideCustomAction
Id = “HideImportDesignPackage”
GroupId = “Customization”
HideActionId = “DesignImport”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

<!– *******************************************************************–>
< !– *                                   Web Design Galleries                                                      *–>
< !– ********************************************************************–>

<!– Removes the ‘Themes’ Navigation Link from Site Settings Page under Web Design Galleries –>
< HideCustomAction
Id = “HideThemes”
GroupId = “Galleries”
HideActionId = “Themes”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

<!– Removes the ‘Solutions’ Navigation Link from Site Settings Page under Web Design Galleries –>
< HideCustomAction
Id = “HideThemes”
GroupId = “Galleries”
HideActionId = “Solutions”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

<!– Removes the ‘Composed Looks’ Navigation Link from Site Settings Page under Web Design Galleries –>
< HideCustomAction
Id = “HideComposedLooks”
GroupId = “Galleries”
HideActionId = “Designs”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

<!– *******************************************************************–>
< !– *                                       Site Actions                                                                    *–>
< !– *******************************************************************–>

<!– Removes the ‘Manage Site Features’ Navigation Link from Site Settings Page under Site Actions –>
< !–
<HideCustomAction
Id =”HideManageSiteFeatures”
GroupId = “SiteAdministration”
HideActionId =”ManageSiteFeatures”
Location =”Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>
–>

<!– Removes the ‘Delete this Site’ Navigation Link from Site Settings Page under Site Actions –>
< HideCustomAction
Id=”HideDeleteThisSite”
GroupId=”SiteTasks”
HideActionId=”DeleteWeb”
Location=”Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

<!– *******************************************************************–>
< !– *                                     Site Administration                                                       *–>
< !– *******************************************************************–>

<!– Removes the ‘Variation Settings’ Navigation Link from Site Settings Page under Site Administration –>
< !–
<HideCustomAction
Id=”HideSiteVariationSettings”
GroupId=”SiteAdministration”
HideActionId=”VariationsNominateSiteLink”
Location=”Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>
–>

<!– *******************************************************************–>
< !– *                                    Reporting Services                                                         *–>
< !– *******************************************************************–>

<!– Removes the ‘Reporting Services Site Settings’ Navigation Link from Site Settings Page under Reporting Services –>
< !–
<HideCustomAction
Id=”HideReportingServicesSiteSettings”
GroupId=”ReportServerSettingsLinks”
HideActionId=”ReportServerSiteLevelSettings”
Location=”Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>
–>

<!– *******************************************************************–>
< !– *                                          Search                                                                         *–>
< !– *******************************************************************–>

<!– Removes the ‘Search Settings’ Navigation Link from Site Settings Page under Search –>
< !–
<HideCustomAction
Id=”HideSearchSettings”
GroupId=”SearchAdministration”
HideActionId=”SiteSearchSettings”
Location=”Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>
–>

<!– *******************************************************************–>
< !– *                               Site Collection Administration                                        *–>
< !– *******************************************************************–>

<!– Removes the ‘Site Collection Features’ Navigation Link from Site Settings Page under Site Collection Administration –>
< !–
<HideCustomAction
Id = “HideSiteCollectionFeatures”
GroupId = “SiteCollectionAdmin”
HideActionId = “ManageSiteCollectionFeatures”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>
–>

<!– Removes the ‘Variations Settings’ Navigation Link from Site Settings Page under Site Collection Administration –>
< !–
<HideCustomAction
Id = “HideSiteCollectionFeatures”
GroupId = “SiteCollectionAdmin”
HideActionId = “VariationSettings”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>
–>

<!– Removes the ‘SharePoint Designer Settings’ Navigation Link from Site Settings Page under Site Collection Administration –>
< HideCustomAction
Id = “HideSharePointDesignerSettings”
GroupId = “SiteCollectionAdmin”
HideActionId = “SharePointDesignerSettings”
Location = “Microsoft.SharePoint.SiteSettings”>
< /HideCustomAction>

</Elements>

I will try to post a project solution on CodePlex soon.  So look out for it.

Happy SharePointing!

Bismarck

Posted December 11, 2014 by Bismarck in SharePoint 2013

Tagged with

How To Migrate SharePoint Users to a New Domain or New UserName   Leave a comment

It happens, companies buy other companies, companies merge, reinvent and rename themselves. In addition, if you happened to have configured Active Directory accounts using actual names (not a best practice) you may wind up having to change it at some point.  People change their names and thus they want their login ids changed.  Best practice is NOT to associate a person’s name with their Login. Although each AD account get a unique GUID (Global Unique Identifier), most applications relying on Active Directory for authentication use the SAMAccount Name (Your Login ID)  SharePoint is one of these.

Therefore I needed to create an easy and  repeatable process to change either the User’s Domain, or the User’s Login ID.

How It Works:

1. I created a Comma Delimited File (.csv) to contain all of the users that need migrated.

2. I then executed a VB Script (.vbs) that will read this .csv file and execute the STSADM -o MigrateUsers commandlet to migrate the user.  One nice this about this script is that it will produce a log file containing the results of the MigrateUsers commandlet.

Here is the script which I named: SPMigrateUsersUtility.vbs  You will need to edit the first line to locate the Path and
name of the .csv input file.

‘*******************************************************************************
‘*        Author: Paul D. Fox
‘*          Date: 08/02/2014
‘*           Description: Script to Migrate SharePoint Login ID (tp_LoginID from UserInfo Table)
‘*                                   from One Account to Another.
‘*
‘*       Purpose: This VBScript will Read a Comma Delimited Text File (.csv) containing the
‘*                        Old Login ID  (Column A) and the new Login ID (Column B) and then execute
‘*                        the SharePoint 3.0 (12-Hive)  stsadm -o MigrateUser.  When this script is
‘*                        executed, it will create a .log file containing the status of each user migration.
‘*
‘* Modifications: MM/DD/YYYY – Description
‘*
‘*     Execution: To run this script create a .csv file of the old and new login Ids.  Set the path
‘*                          in this script to point to the .csv file location and execute this .vbs from the
‘*                          “Run Command”.
‘*
‘*******************************************************************************

Const ForReading = 1

Set objFSO = CreateObject(“Scripting.FileSystemObject”)

‘*******************************************************************************
‘* Set the Path to the .CVS File
‘*******************************************************************************
Set objTextFile = objFSO.OpenTextFile(“C:\Temp\Pre_Migrated_Users_Log.csv”, ForReading)

Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
arrSPUserList = Split(strNextLine , “,”)

‘Wscript.Echo “OldUserName: ” & arrSPUserList(0)

For i = 1 to Ubound(arrSPUserList)
‘Wscript.Echo “NewUserName: ” & arrSPUserList(i)
UpdateADUser arrSPUserList(0), arrSPUserList(i)
Next
Loop
Function UpdateADUser( strOldID, strNewID )
‘WScript.Echo “Migrating: ” & strOldID, ” To: ” & strNewID
‘wscript.Echo “%comspec% /c “”C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\STSADM.exe”” -o MigrateUser –

OldLogin ” & strOldID & ” -NewLogin ” &  strNewID & ” -IgnoreSidHistory”

Dim wshShell
Set wshShell = WScript.CreateObject(“WSCript.shell”)

wshShell.Run “%comspec% /c echo ” & strOldID & ” >>C:\Temp\SPUserMigration.log 2>&1″, 1, true
wshShell.Run “%comspec% /c “”C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\STSADM.exe”” -o MigrateUser –

OldLogin ” & strOldID & ” -NewLogin ” &  strNewID & ” -IgnoreSidHistory >>C:\Temp\SPUserMigration.log 2>&1″, 1, true

End Function

 

Here is a sample of the .csv Input File “Pre_Migrated_Users_Log.csv”

OldDomain\JohnDoe1,NewDomain\JaneDoe1
OldDomain\JohnDoe2,NewDomain\JaneDoe2
OldDomain\JohnDoe3,NewDomain\JaneDoe3
OldDomain\JohnDoe4,NewDomain\JaneDoe4
OldDomain\JohnDoe5,NewDomain\JaneDoe5
OldDomain\JohnDoe6,NewDomain\JaneDoe6

Happy SharePointing!

Posted August 18, 2014 by Bismarck in SharePoint 2007

New CodePlex Project Published   Leave a comment

I’ve published my first software project on CodePlex.  The Library Ribbon Manager for SharePoint 2010.

https://sp2010libraryribbonmanager.codeplex.com/

Enjoy!

Posted September 23, 2013 by Bismarck in SharePoint 2010