Thursday, October 11, 2012

Installing SharePoint 2013 (preview)

Ok, there are some fabulous blog-posts out there on how to install SharePoint 2013 (preview). One thing most of them are missing though: the fact that your (production) servers don't have internet connection. Articles from Microsoft like these Link are helpful but not complete. To reflect this situation I decided to create a VM with no internet connection and install SharePoint 2013.
This changes the game a bit; I recommend putting on some nice relaxed music like EC 'Old Love' Link which gives you about 8:45 minutes & read trough this blog post to prevent some hassles.




Step 1; download SharePoint 2013
http://technet.microsoft.com/en-us/evalcenter/hh973397.aspx
(2.2 GB of binaries but NO PREREQUISITES !!!)

Step 2: Write down the product key:
6RNT8-XV26M-GWH36-VMGQH-94MMH

Step 3: This is a .img file, my Oracle Virtual Box can't read these.
Solution, using Virtual Clone Drive to mount the .img & then add a virtual drive to the virtual clone drive drive in virtual box, giving the VM access to the SharePoint 2013 goodies.

Step 4: Download the prerequisites.
A nice overview can be found here: http://blogs.msdn.com/b/ocarpen/archive/2012/07/31/sharepoint-2013-preview-pre-requisites-download-links.aspx?CommentPosted=true#commentmessage
Thanks Oliver

Step 5: Deal with the prerequisites issues.
First I thought I could just run each .msi / .exe by hand.. this does not work.
You will have to run the prerequisites installer from the (admin) command prompt to install all prerequisites step by step:






1) Microsoft .NET Framework 4.5
Link
prerequisiteinstaller.exe /NETFX:dotNetFx45_Full_x86_x64.exe

2) Windows Management Framework 3.0 (CTP2)
Link
prerequisiteinstaller.exe /PowerShell:Windows6.1-KB974405-x64.msu

3) Microsoft SQL Server 2008 r2 Native Client
Link
Sqlncli.msi
prerequisiteinstaller.exe /SQLNCli:Sqlncli.msi

4) Windows Identity Foundation (KB974405)
Link
Windows6.1-KB974405-x64.msu
prerequisiteinstaller.exe /

5) Microsoft Sync Framework Runtime v1.0 SP1 (x64)
Link
Synchronization.msi
prerequisiteinstaller.exe /

6) Windows Server AppFabric
Link
prerequisiteinstaller.exe /AppFabric:windowsServerAppFabricSetup_x64.exe

7) CU Package 1 for Microsoft AppFabric 1.1 for Windows Server (KB2671763)
Link
Manually installed (executed .exe)

8) Windows Identity Extensions
Link
MicrosoftIdentityExtensions-64.msi
prerequisiteinstaller.exe

9) Microsoft Information Protection and Control Client
Link
setup_msipc_x64.msi
prerequisiteinstaller.exe /MSIPCClient:setup_msipc_x64.msi

10) Microsoft WCF Data Services 5.0
Link
You have to run: the trusted root certificate update program before this step; then execute the install
X86-all-rootsupd_90f0b77f9f5fbe6c5227f3fac95c926087f53fce.exe

Before Installing, Update for Root Certificates For Windows Server 2008 [April 2012] (KB931125)

WcfDataServices.exe
prerequisiteinstaller.exe /WCFDataServices:WcfDataServices.exe

Step6: WcfDDataServices
The WcfDDataServices comes with it's own problem. It needs a trusted root certificate which the installer can't download from the web. So you need to do it for it.
This can be done by doing a 'search' on 'root update' at the Microsoft update center:
http://catalog.update.microsoft.com/v7/site/Search.aspx?q=root%20update

There you can download the Update for Root Certificates For Windows Server 2008 [April 2012] (KB931125).
Install the file (it doesn't give you any clue if it succeeded), after that you can run the prerequisiteinstaller.exe /WCFDataServices:WcfDataServices.exe command and this install will succeed.


Step 7: Download Service Pack 1 For SQL Server 2008R2
Yep, it's time to upgrade that SQL !
Link

Step 8: Ready to install!!
Yep, now you're all ready & set to install the actual SharePoint 2013 binaries !
You can follow some setup guidance available by great other bloggers like:
Eric Harlan

Step 9: Oh, it seems there are some more prerequisites to install, to prevent problems with your Search Service Application later
http://support.microsoft.com/kb/2554876
http://support.microsoft.com/kb/2708075
http://support.microsoft.com/kb/2472264

Tuesday, October 02, 2012

Unable to configure Search Service Application (domain\Administrator does not exist)

For a long time I didn't use the SharePoint Search configuration on my develop VM but last week I wanted to demo the search capabilities so I decided to (quickly!) create the Search App.... or not..

Everything configured, name, application pools etc. GO !!
--> Error !! The configuration couldn't create the databases because the [domain]\administrator didn't exist / have rights.

Being a DBA for a number of years, I quickly opened the SQL Management Studio, checked the user accounts and 'Administrator' was there (no domain prefix).
I tried to rename this account to [domain]\administrator but no luck, SQL didn't allow me to do this.

Solution:

Couple of minutes later I saw there was another administrator account ! This one was called [machine name]\administrator. I renamed this account to [domain]\administrator and voila, problem solved.

Content Organizer + Document Sets = error

When you enable both the content organizer and the awesome SharePoint 2010 Document Sets features, you run into trouble when trying to create a new document set in a document library.

The descriptive error you will get is:
Error:
Unable to create a Document Set in this location because of the Content Organizer settings. Please contact your administrator.



Solution:
SharePoint tries to route the document set which it shouldn't even try. You can disable this functionality by going to Site Settings -> Content Organizer Settings -> Clear the check-box for 'Require users to use the organizer when submitting new content to libraries with one or more organizer rules pointing to them'.



Now you will be able to create document sets again !

[Bulb on the fuel guage is flashing] 
Kowalski: Skipper, look. 
Skipper: Analysis 
Kowalski: It looks like a small incandescent bulb, designed to indicate something out of the ordinary, like a malfunction. 
Skipper: I find it pretty and somewhat hypnotic. 
Kowalski: That too, sir. 
Skipper: Right. Rico, maunal! 
[Catches the manual and smashes the bulb with it] 
Skipper: Problemo solved. 

Wednesday, August 15, 2012

Weird AD Security Group problem

Problem:

HRlady1 is member of AD "HR" group.

If I give AD "HR" group full control access to sub site; HR Lady1 doesn't see sub site.
If I give HRLady1 direct access to sub site (without group); HRLady1 DOES see sub site.
What is the difference between giving group full control access & giving 1 user (in that group) direct access ?

Cause:
After some serious testing, it turns out that the group "HR" has been deleted from the AD in the past, and then re-created; if this happens, SharePoint won't recognize the re-created group at all; Adding this group to any securable objects will not work !
(Even deleting this AD group & re-adding the group to the secure able object in SharePoint won't help / work).

Conclusion:
It seems that once you've deleted an AD group ...you should never create one again (with the same name).


Sunday, July 08, 2012

Coming soon :

Blogs that are in the making:
- Importing 42.000 files / 300 GB of data into SharePoint; automatically mapping the data to the Managed Metadata.

- Using Report Server & SharePoint to automate the invoice process.

SharePoint 2010: Creating personal content streams

Description
One of my customers asked me for a way to let there employees "subscribe" to content sources so that they would only see news and events that are interesting for them personally.

I explained the customer "audiences" that can be used for these purpose but unfortunately their Active Directory isn't that well populated.

The "content sources" consist of interest areas that needed to be centrally managed (Term Store); this way we can ensure that both the "subscribers" and the "publishers" are using the same content source.

Solution
Step1:
First off I started creating the term-set to hold the "content sources" in the Term Store.
E.g.
Company Taxonomy
Interest Areas
Area1
Area2
Area3


Step2:
Next, I configured the user profile service configuration in SharePoint 2010;
- Central Administration : Manage Service Applications
- Either manage (highlight the row and click 'manage' on the top) or create a new User Profile Service Application and then manage it:
-

- Under people, there is a link "Manage User Properties", this is the location where we can add the new "ContentSource" property. Employees will be able to manage the selection of this "Content Source" them selves.
-
- On the top of the page there is a link to create a "New Property"
-
- We can give the property a name etc.
- The property type (depending on your solution) will either be a single (single value) or string (multi value)
-
- When selecting multi value, please be sure to use the Semicolon separator, this will ensure the filter webpart to be able to work with the multiple values.
- Next up, we'll be able to select the Term Set from the Term Store we created in step 1.

Step3
Creating the content holder.
The content holder can be a library or a list where we will add a column (either on the list or document library or content type) that references the same "Interest Areas" term-set we created in step 1.
This will allow the "publishers of content" to select the interest area for the content.

Step4
Filtering the content based on the current logged in users' profile selection.
To accomplish this we create 2 web-parts on a page.
The first web-part will be linked to the content holder created in Step3; obviously we can link using a specific view that filters maybe on publication date etc.; Creating multiple content filters.

Next, we'll add the "Current User Filter" Web-Part To the page.
This filter will apply an extra filter to this list, filtering the content based on the current user selected interest areas.
• Note: The configuration of the 'Current User Filter' Web-Part will only be shown when you edit the "List View" Web-Part; this is a bit confusing.


Configuring the "Current User Filter" Web-Part is easy:
After adding the Web-Part to the page hover over the little drop down arrow on the top right and follow the drop-down path down to filter it's data to the list-view Web-Part:


After a few seconds the configuration pops up:

• Note: this will only happen in Internet Explorer; I tried Chrome to do this, doesn't work out of the box.

In this configuration menu you can select the property from the user profile properties that we linked to the Term Store "Interest Areas" term-set.
Clicking finish will instantly filter down our "List View" Web Part.

To configure additional options:


Choose "Edit Web Part"
You can re-configure the field to be provided to the List View Web-Part:


That's it; the page now automatically filters down items from the list that the current user has "Subscribed to".
The current user obviously can change these values by going to his "My Site" and click on "Edit Profile":



There the user will be provided with a normal "Select From Term-Set" input box:




Great solution, giving the users control on what they see on SharePoint !

Saturday, July 07, 2012

SharePoint 2010 Content Type Publishing (HUB) problems

While implementing the content type hub (a Managed Metadata Services (MMS) production) at a client to day, I ran into trouble.
What was calculated to be done in an hour took me 8 !
Summary: Re-publishing the updated HUB-content type didn't update the subscriber versions of this content type.

The environment:
4 Web applications with each one Site Collection:
- 1) Content Hub Web app: Hub.[customer-domain]
- 2) Main intranet portal: Portal.[customer-domain]
- 3) Main ECM location: ECM.[customer-domain]
- 4) Sub company collaboration site: subcompany.[customer-domain]
The term-store is already implemented (MMS application service running); the ECM location already has 1 site Content Type configured (ECMct) with some Managed Metadata lookup fields (one of them is 'security') to this term-store.

The preparation:
- a) Configured a HUB web application (1) and enabled the 'Content Type Syndication' site-collection feature.

- b) Configured the MMS service application:
- Enabled the connection to the HUB web app (1)
- Under permissions, added the APP-Pool accounts

- c) Configured a site Content Type (HUBct) in the (1) Site Collection
- Published the Content Type

- d) Ran the "Content Type" & "Content Type Subscriber" timer jobs from central admin
- To prevent the default 15 minute & 1 hour wait time

The result:
- The in the hub created Content Type (HUBct) was published to all Site Collections, yeah ! Looked great; unfortunately I forgot one field in the HUBct :(
No problem, let's just add the field "security" to HUBct and re-publish the Content Type. After I did this the problem started.

The problem:
- The updated HUBct (with the 'security' field wasn't pushed trough to the subscriber site collections. I tried:
- Re-publish again (running the Timer Jobs afterwards each time); no results
- Un-Publish the HUBct and then delete it in Site Collection (3)

After a while I checked the other site collections and there the updated HUBct was pushed trough; It was just Site Collection (3) that didn't get the update.
Using the 'Published Content Type' link in the Site Settings - Site Collection Settings menu I opened the 'Content Type Syndication log' where there was an error:

Error1:
The HUBct content type with it's updated field 'security' was giving an error because of the already existing (local) site column 'security'.

Solution1:
So I deleted the security column from the HUBct and re-created 'Isecurity'; Re-published but whatever I tried, no update in Site Collection (3);

Error2:
No updates in the subscribing site collections.

Solution2:
Eventually I added another Managed Metadata Service (MMS2);
Via Central Admin, Manage Web Application ->'Service Connections' I connected the new MMS2 service to both Web Applications (1) & (3), making it the default MMS for the Content HUB web application (1).
Now I re-published the HUBct and it is available in site collection (3) !
I still need to have 2 MMS services connected to this site collection because it's already using the term-store from the original MMS.
To prevent confusion I added a Term-Group to the new created MMS2 and called it 'DO NOT USE AS TERM-STORE; FOR CONTENT TYPE HUB USE ONLY'.


Other things to think about:
In a desperate attempt to get the subscribing site collection to receive the published content type I deleted the previously published HUBct on the subscribing site collection. This was not possible at first because there were still items in my document library which were using this content type. After deleting them from both the site recycle-bin AND the site-collection recycle-bin it was possible to delete the local copy of this content type.
You still need to change the 'read-only' status of the published content type to 'no' in the Site-Content type's 'advanced settings' menu before you can delete it.



Update: 16-10-2013
Now, more than a year later, I run in a problem with these 2 MMS services.. Some site collections decided to get their content types from the wrong MMS.. don't ask me how this is possible, it's very annoying though.. Especially when I just updated a content type and now 1 site-collection doesn't receive the update because it's connected to the wrong MMS... see sample picture below:
24-10-2013 ^^ I managed to get this done ! Thanks to a sneaky way of deleting the HUBuri from the wrong Service Application (no, Set-SPWebServiceApplication -HubUri = "" doesn't work as explained here:
http://sp2007hut.wordpress.com/2013/08/02/removal-of-content-type-hub-ms-non-compliant/)

Yes, I did execute the evil query to get rid of the HUBuri in the wrong MMS.. yes it seems to have fixed the problem a little bit:
Although this is a HUGE step in the right collection, it still uses the wrong Managed Metadata Service (MMS and not HUBService, even though it now says that MMS has no hub defined...) #SIGH !

Schema that shows the configuration in detail (and problem):






















It seems that the old site collections (all under the same web-app) are still "connected" to the old publishing location and failing to connect to the new one. Resulting in the error:

Content type 'IDocument' has been published from service application 'Managed Metadata Service' and 'HUBService'. 'Managed Metadata Service' was used.

Where would this connection be defined... on (local) content-type level ? Site Collection Level ? 
It's not from top-down since all the MMS service applications ARE correctly configured and new site collections work perfectly.. 

Update: 24-10-2013, resolved ! 
Thanks to some ideas from @AlistairPugin I first tried to remove & re-add the HUBservice to the ProxyGroup. This didn't work, even after a full farm-reboot (same error).
Then I tried removing the 'Managed Metadata Service' from the ProxyGroup (Custom), re-published the content type, hoping it wouldn't choose this wrong service application since it didn't have a association in the ProxyGroup anymore.. That worked ! Of course, all the Managed Metadata fields in the newly published content type were not working (nicely grayed out) because it still needs the Managed Metadata Service Service Application to resolve the term-store items ! Just adding the Managed Metadata Service Service application back to the ProxyGroup and that issue was also fixed :)
Even better, it seems it's now fixed 'forever' as new publication tests not seem to cause any errors ! Somehow the adding and removing helped fixing the correct relation from Site Collection to the [default] ProxyGroup-Service Application.

Now... even though the new version of the content type is published to the site collection, the document libraries are still using the old one... Like @AlistairPugin says.."Never a dull moment mate !!"