Business Purpose This is a SharePoint plugin to give SharePoint Administrators a simple interface to edit BLOB cache settings. Technical Information This solution provides a new ribbon button on the Manage Web Applications page within Central Administration. By highlighting a Web Application, a SharePoint Administrator can modify all available settings for the BLOB cache, as well as flush the BLOB cache. Because this solution deploys the settings to all SharePoint servers in the farm running the Foundation Web Service, it is important to have a BLOB cache location that is identical and available on all SharePoint servers. Supported Platforms SharePoint 2010 and 2013, Standard or Enterprise Application Type SharePoint Solution (WSP)
Business Purpose This is a SharePoint plugin that fully configures a SharePoint farm for the SharePoint Administrator to allow users with alternate account types to log into SharePoint, speeding up implementation and simplifying management and maintenance. In addition, it offers a friendly user profile for these alternate account types, bringing in details such as their full name, phone number, and other valuable information. Technical Information This solution automatically provisions Web Applications to support an Active Directory Lightweight Directory Services (AD LDS) or Active Directory Application Mode (ADAM) instance. An application page in Central Administration allows easy configuration and maintenance, as well as one-click deployment of all of the settings needed to leverage the instance. This solution also imports User Profile properties from the instance in order to provide a friendly profile for AD LDS/ADAM users. Supported Platforms SharePoint 2010 Standard or Enterprise Application Type SharePoint Solution (WSP)
Business Purpose This is a SharePoint plugin that allows SharePoint Administrators to enable users with alternate account types to log in and use SharePoint. Technical Information An LDAP Membership and Role provider for SharePoint Foundation, this provider was built specifically for Active Directory Lightweight Directory Services (AD LDS) or Active Directory Application Mode (ADAM). It is a fully functional provider allowing users present in these Directory Services to log in and consume SharePoint features and functionality. Supported Platforms SharePoint 2010, SharePoint 2013 Application Type SharePoint Solution (WSP)
Business Purpose The purpose of SharePoint WarmUp is to prevent long page load times when first visiting a SharePoint site. Technical Information This solution leverages the IIS 7.5 Application Initialization module to keep Application Pools used by SharePoint running at all times. Supported Platforms SharePoint 2010 Application Type SharePoint Solution (WSP)
Nauplius.SharePoint.BlobCache is a SharePoint 2010 and 2013 solution that helps you manage the BLOB cache and all available settings, both documented and undocumented. New with this release is a re-vamped UI, moving to the Web Application list menu in Central Administration. In addition, the 2013 version adds support for two new 2013-only BLOB cache attributes: imageRenditionMaxFileSize imageRenditionMaxSourcePixels The new UI can be found under Central Administration, Manage Web Applications. Simply highlight the desired Web Application, then click the BLOB Cache button in the Manage group. You can download the solution and find the documentation at the project site.
If you attempt to set an Alert on a specific Discussion Post, like this: You will end up a yellow screen of death, like this: [crayon-52909e124d2ee979018149/] This bug appears to be ‘long standing’, and still exists as of the October 2013 Cumulative Update for SharePoint Server. On the process of setting up the Alert, a process gets the Content Type ID of the Folder. We start in the Microsoft.SharePoint.SPViewContext.FolderContentTypeId method, executing: [crayon-52909e124d30c242024242/] From there, entering GetValueFromUrlOrViewState, we enter: [crayon-52909e124d316301222504/] Within this method, here are the key variable values: [crayon-52909e124d320084963572/] From there, we come back to the Microsoft.SharePoint.SPViewContext.FolderContentTypeId method and further on down, execute: [crayon-52909e124d32a331697242/] Where valueFromUrlOrViewState equals the variable “str”. So you want to generate a new SPContentTypeID object with a hex string and a URL. This is where things “go wrong”. [crayon-52909e124d332573213722/] We’re calling SPUtility.Hex where chArray has invalid characters (values outside of 0 – 9 and A – F) in it. The first one that gets hit is the “,” (comma) character. SPUtility.Hex has no return statement, so it throws a System.ArgumentException. This particular bug will require Microsoft to resolve it. I’ve opened a PSS case on it.
Update-SPHelp is a new PowerShell cmdlet that shipped with the October 2013 Cumulative Update for SharePoint 2013. There are only a couple of options with it, namely the -Force parameter allowing you to check for updates more than once per 24 hours, but the cmdlet is similar to Update-Help, that is, update the cmdlet help information.
In many medium to large SharePoint deployments, search is a critical piece of the farm architecture. An underperforming search instance can lead to severe discoverability issues as well as potentially missing critical business information. SharePoint Administrators can improve search crawl performance by dedicating a SharePoint server as a crawl target for one or more Web Applications. By creating this target, the SharePoint Administrator can greatly reduce the load on SharePoint servers that users interact with and potentially reduce crawl times. Much of the advise on how to target a crawler is around editing a servers host file to point the DNS entry of a Web Application at a specific server. A hosts file entry was not how Microsoft intend a crawl target to be set up! Microsoft created a new property with SharePoint 2010 named SiteDataServers. It allows an Administrator to target crawls at one or more SharePoint servers on a Web Application and Web Application Zone basis. In the SharePoint 2007 days, it was possible to target a specific server for crawling via Central Administration; in SharePoint 2010 and 2013, PowerShell must be used. In this example farm, there are three SharePoint servers: SPWFE SPSRC SPCRW SPWFE and SPCRW both run the Microsoft SharePoint Foundation Web service, but only SPWFE has DNS records pointed at it, and is the only server directly used by users. In the farm there is a Web Application of http://teamsites.example.com with a Default Zone. To target the crawler on SPSRC at SPCRW for http://teamsites.example.com, run the following PowerShell commands in the SharePoint Management Shell: [crayon-52a7fbb8abbcc161050041/] Since a dedicated crawl target has been specified, it is likely that removing the HTTP throttling can be disabled. This can be done on the crawl target via PowerShell: [crayon-52a7fbb8abbdc306328578/] To remove a crawl target, simply run: [crayon-52a7fbb8abbe5853595787/] From now on, there should be no reason to edit a host file on a SharePoint search server in order to crawl a specific crawl target! This process can be done on a per-Web Application Zone basis. An Administrator can also specify multiple crawl targets, even per Zone!
There is this cool startup named Rockstar 365 that helps people find Microsoft technology specialists, kind of like a LinkedIn for Microsoft without all of the ‘social’. It can help you keep track of your projects as well as Microsoft certifications, and hopefully soon events and articles you’ve authored. Go to my Rockstar Profile to see an example of how it works. In addition, they’ve just launched Company pages! They have a free tier, which you can see the profile I created for Nauplius as well as paid tiers. Hopefully this will let you get a little more exposure to companies as well as have some fun with the ranking system. Hopefully they’ll implement a system to bring in your MSDN/TechNet profile and rank it, that would be an awesome feature :-)
In SharePoint 2013, Visio Services may throw errors in the Application Event Log. This event appears to happen when you open the Web Part Options for the Visio Web Access web part: [crayon-52a7fbb8ab3f5210701653/] This appears after loading a Visio web document in the web part: [crayon-52a7fbb8ab406753364333/] Here we can see with the Visio Services DLL the use of these two embedded images: [crayon-52a7fbb8ab411976930626/] And then again, the other embedded resource contained within VwaMessageBoxImage: [crayon-52a7fbb8ab419082196793/] Here we can see all of the available resources in the Microsoft.Office.Visio.Server.dll, where we’re missing the two PNGs referenced in code: This issue appears to have existed since SharePoint 2013 RTM.
Many of us have run into that situation where you’ve installed an update, started the Config Wizard, and you get a message that such-and-such server doesn’t have these updates. But they’re installed, because you just installed them, and SharePoint patches often won’t let you reapply them as they “do not apply” to your system. So what do you do? Run [crayon-52a7fbb8aaaf5892563957-i/] on the server “missing” the updates! And then you’re able to run the Config Wizard. But why would a cmdlet with a Get verb fix something? Let’s take a look… First, [crayon-52a7fbb8aab05307890864-i/] enumerates the installed products on a SharePoint server. It does this by examining the registry key [crayon-52a7fbb8aab25033688285-i/]. It looks at the DisplayName key for each product (product being represented by the key in the form of a GUID), and from there looks at the RequiredOnAllServers key, marking it as required if the key value is “1″. Next, it takes the DisplayName value or registry key values from [crayon-52a7fbb8aab30021129501-i/] and passes it through the Windows Installer service, calling MsiOpenProduct and MsiGetProperty to get the property of the ProductName, ProductVersion, and RequiredOnAllServers property. Next, SharePoint continues looking at the MSI data, attempting to detect MSI patches using MsiGetPatchInfoEx. From here, if it finds patches, it uses MsiOpenDatabase to open the MSI database (this is why the Product Versions timer job fails if the Farm Administrator does not have Local Administrator rights) and runs a couple of queries. It also makes version comparisons between patches at this point. Finally, it places all detected products into a collection for use later. The next step is to detect the upgrade status of the server, returning the status UpgradeRequired, UpgradeAvailabile, UpgradeInProgress, InstallRequired, UpgradeBlocked, or NoActionRequired. Now we get into the part where the Get verb no longer makes sense. A T-SQL query is built using the proc_RegisterProductVersion stored procedure into one large SQL statement containing all detected products (named “BuiltProductsString” for reference below). For each product, this string contains the product name, GUID, Display Name, and if applicable, the patch GUID, KB article link, and the patch friendly display name. Once the string has been built, the process executes a stored procedure within the SharePoint Configuration database: [crayon-52a7fbb8aab3d023305102/] When the stored procedure completes, the result of the installed products is written out to the SharePoint Management Shell. Another thing to note is that the process is the same for [crayon-52a7fbb8aab46263526026-i/], the Product Version job timer job, joining a farm via Config Wizard or psconfig, and upgrading a SharePoint server via Config Wizard or psconfig.
I had one client where during User Profile Synchronization, profiles were not being pulled in. After they checked the miisclient (located in C:\Program Files\Microsoft Office Server\15.0\Synchronization Service\UIShell), they saw no activity on the Operations tab. It did not appear as if the Management Agent was executing. The client sent me a copy of the ULS log from the run, and I found this particular error: [crayon-52a7fbb8a7b9e002555418/] Looking at the method [crayon-52a7fbb8a7bb8072818475-i/], we can see that it is attempting to query a WMI namespace: [crayon-52a7fbb8a7bc2466171848/] Based on this information, on the server running the User Profile Synchronization Service, I had the client go to Computer Management -> Services, left click on WMI Control, then right click on WMI Control and select Properties, then go to the Advanced tab. Under Root, unlike my example here, the client’s server was missing the MicrosoftIdentityIntegrationServer namespace: Looking again at the code, this WMI namespace is provisioned during the User Profile Synchronization Service provisioning. After having the client reprovision the UPSS (by simply stopping it and then starting it again), the User Profile Synchronization ran successfully and the miisclient showed activity under the Operations tab.
The December 2013 Cumulative Update for SharePoint 2010 has been released. SharePoint Foundation: http://support.microsoft.com/kb/2849990 SharePoint Server 2010: http://support.microsoft.com/kb/2849971 Project Server 2010: http://support.microsoft.com/kb/2849972 Office 2010 December 2013 Cumulative Updates: http://support.microsoft.com/kb/2911591
SharePoint Foundation: http://support.microsoft.com/kb/2849961/en-us SharePoint Server 2013: Project Server 2013: Office Web Apps 2013: http://support.microsoft.com/kb/2850013/en-us Office 2013 December 2013 Cumulative Updates: http://support.microsoft.com/kb/2912738/en-us
With Reporting Services integrated into SharePoint, it is often not easy to identify where certain Reporting Services features are used, for example, where users have set up Subscriptions. We can instead leverage the native Reporting Services Web Service and PowerShell to quickly identify all subscriptions within a particular Site Collection. [crayon-52aad325d4bb5572782233/] And again, using the Web Service, we can easily delete all subscriptions in a particular Site Collection: [crayon-52aad325d4bcc823005472/] There is a lot of functionality exposed via the Reporting Services Web Service, which you can discover by running [crayon-52aad325d4bd6473200097-i/] after connecting to the Web Service. Have fun!
Based on my previous post regarding targeting a crawler at a specific server running the Foundation Web service, I have built a Central Administration-UI to allow SharePoint Administrators to do this with ease. Currently, this solution is SharePoint 2013-only, but I will be back porting it to SharePoint 2010 in the near future. You can find the download and more about the project at the CodePlex site, SharePoint Crawl Target.
Business Purpose This is a SharePoint plugin designed to allow SharePoint Administrators target the SharePoint Search Service crawler at a specific SharePoint Server for each Web Application, increasing performance of the crawl and preventing the crawler from impacting the user experience. Technical Information This solution accomplishes the steps outlined in the article Targeting the Search Crawler to a Specific Server. This solution is designed for Path-Based Site Collections. Supported Platforms SharePoint 2010 Standard and Enterprise, SharePoint 2013 Foundation, Standard, and Enterprise Application Type SharePoint Solution (WSP)
It’s almost a new year, so it is time to move domains. Http://sharepoint.nauplius.net is now http://thesharepointfarm.com! Hopefully that is easier for everyone to remember.
A new release of the Nauplius.SharePoint.FoundationSync solution is now available! This new release brings synchronization of Active Directory group information to the User Information List, as well as configurable logging for more verbose information if required. This solution supports SharePoint 2010 and 2013. For more information, check out the CodePlex project page, SharePoint Foundation Sync.
A lot has happened this past year, and I wanted to highlight the top 10 posts on this blog by traffic in 2013, as well as a few of my favorite posts. Installing SharePoint 2010 and SQL Server 2012 on Windows Server 2012 Release Preview This was an interesting one, as it was not supported at the time, but there appeared to be a high demand for how to do this. Even today, I see a high demand for wanting to install SharePoint 2013 on Windows Server 2012 R2, another unsupported installation scenario (until SharePoint 2013 with SP1 media is released). Using Application Request Routing as a Reverse Proxy for SharePoint Quite a fun blog post on how to use the IIS Application Routing Request module as a reverse proxy. With the demise of both TMG and UAG (functionality is partially replaced by the Web Proxy Role in Server 2012 R2), this provides a decent, free alternative non-authentication reverse proxy server. A Practical Guide to Implementing Incoming Email using the SharePoint Directory Management Service How to properly configure Incoming Email using Exchange. There are a lot of guides out there on how to do this, but very few end-to-end guides, from schema upgrades to integration. SharePoint 2013 April 2013 Cumulative Update Fails What a pain this bug is/was. There was a lot of manual work if you had MySites present when attempting to upgrade to this particular Cumulative Update. Supported file formats in the SharePoint 2013 Media Web Part Sometimes references can only be documented from code. This is one of those times. SharePoint 2013 for Education An unfortunately unsupported, beta feature! While it should later be stripped from SharePoint 2013 completely, many people in the community wished this feature had been completed by Microsoft to have a Microsoft-supported LMS again. It would have made a great Blackboard competitor. SharePoint 2010 and Active Directory Lightweight Directory Services – Better Together Always one of my favorite subjects, authentication, authorization, and Directory Services, like AD LDS! SharePoint Error “An error has occurred in the claim providers configured for this site collection” – Easy fix! At least the fix is easy… Browser File Handling and avoiding Permissive mode Friends don’t let friends use Permissive mode, and neither should you. Always make exceptions, rather than just turning off security. Enabling RBS on multiple content databases An older post, but also quite popular. Originally, Microsoft’s TechNet documentation did not cover enabling RBS on more than a single content database (as the Microsoft RBS solution is targeted to the small SharePoint Foundation farms). Now, onto my favorites of the year, which include a few of those above! Using an External Identity Manager for SharePoint User Profile Synchronization I have to admit, I had an absolute blast with the whole process of figuring this out from the fairly light documentation provided by Microsoft. In working on this, comparing both the built-in FIM, as well as working directly with the Product Group creating the SharePoint Connector for Forefront Identity Manager, large institutions, or institutions with special requirements can easily import users into the UPA from a variety of directory services while not being limited to those offered via the built-in FIM. Quickly Identifying Reporting Services Subscriptions in SharePoint This is what happens when you ask interesting questions on the MSDN/TechNet SharePoint forums. Sometimes you get a bit of research out of it. The goal of the particular poster was removing all SSRS Subscriptions across the entire farm. The Magic of Get-SPProduct -Local A cmdlet most SharePoint Administrators will use at some point, it resolves the question of why Get-SPProduct does more than “get”. Selective Authentication can Kill the People Picker in a Two-Way Trust This was an absolute blast of a problem! Another post from an MSDN/TechNet thread, this involved network traces working with someone 1/4 the way around the world to figure out why a Two-Way Trust did not function correctly. Turns out, Selective Trusts have additional requirements for the PeoplePicker to properly function. What Makes a Great SharePoint Administrator? What really makes a great SharePoint Admin? I have my definition, what is your’s? Using Application Request Routing as a Reverse Proxy for SharePoint See above for one of the more popular posts of the year, think of ARR as a potential candidate for your reverse proxy solution. The Fill Factor Mystery Fill factors in SharePoint 2013 changed quite a bit from 2010, see this post for more information. SharePoint TreeView When the built-in SPTreeView doesn’t fit your needs, sometimes you have to create your own. A Practical Guide to Implementing Incoming Email using the SharePoint Directory Management Service Another one of the more popular posts this year, creating end-to-end guides is always fun to do for those just getting started with the platform and need a little help to get to their destination. SharePoint Cannot Send Mail to Itself While USPS might wonder about why you’d want to pay to mail yourself, SharePoint just won’t let you. I hope everyone has had a great year, and it has been a blast to be part of the community for another year! Here is looking to 2014 to doing more of the same, and perhaps something a little different from time to time! Lastly, don’t forget my domain has changed from http://sharepoint.nauplius.net to http://thesharepointfarm. Redirection is in place, so all previous links will still properly route to where you want to get, so hopefully it isn’t too much of an inconvenience. Happy New Year, everyone!
More Pages to Explore .....