Welkom kleine Bram

Welkom kleine Bram

Eindelijk is het zo ver. Hier hebben we zeer lang naar uitgekeken. op 24/04 werd onze Kobe* grote broer van Bram. Een stevig kereltje van 4,025kg en 53cm.

Bram-01

Het zijn een helse 9 maanden geweest. Mensen zeggen altijd dat je moet genieten van een zwangerschap. Misschien voor velen wel. Maar voor mij was het allesbehalve genieten. Je kan je nu afvragen hoe een vader nu niet kan genieten van een zwangerschap. De moeder, ok. Die heeft alle lasten erbij. Maar begrijp mij niet verkeerd… uiteraard waren er veel momenten dat WE konden genieten. Jawel, we. Vooral wanneer de schopjes voelbaar zijn, dan is het genieten. Maar tegelijkertijd ben je ook op geen enkel moment nog gerust. Zeker niet als je even niets meer voelt. Of de periode tussen de moment dat Sindy niet meer misselijk was en de moment dat de bewegingen voelbaar zijn. Dat zijn stresserende momenten omdat je in een blinde periode zit waar je buiten het buikje dat langzaam groeit eigenlijk geen gevoel hebt dat je zwanger bent. En van zodra het einde van de zwangerschap nadert, begin je je opnieuw meer en meer zorgen te maken. Je leest en hoort in de krant wat berichten zoals het bericht van Sergio Herman en zijn vrouw die hun kindje hebben verloren op het einde van de zwangerschap. Dat zijn dingen die je echt niet wil lezen op zo momenten. Zeker niet als je zelf in die schoenen hebt gestaan. Dan is elk signaal een paniekmoment.

Maar uiteindelijk kan je echt niets doen om het meer draaglijk te maken. En dat is frustrerend. Naar het einde toe heb je zowiezo meer controles en je kan op elk moment van de dag en zoveel als je wil, langsgaan op de materniteit om even aan de monitor te liggen als je even ongerust bent of je zorgen maakt. Men moedigt dit zelfs aan. Maar dit neemt de zorgen maar even weg want wij weten dat het een kwestie van uren kan zijn. Je kan een perfecte monitor hebben, naar je wagen stappen op de parking en het kan daar al mislopen. Ze geven eigenlijk een vals gevoel van zekerheid. Maar het is wel goed dat deze er zijn, zodat je af en toe toch nog die bevestiging krijgt dat het nog OK is. Ook al weet je dat dit niets wil zeggen. Het liefst van al zou je willen dat je vrouw 24/7 aan de monitor ligt. Maar dit is uiteraard praktisch niet realistisch…

Bram was uitgerekend voor 29/04. Maar op 14/04 werd ik iets na middernacht wakker gemaakt door Sindy die naast het bed stond te trillen op haar benen. Mijn eerste reactie was: “Is er nog beweging?”. Want ik vreesde een zelfde scenario als bij Kobe*. Gelukkig kreeg ik bevestigend antwoord. Meer dan genoeg beweging. OK… next step. Wat gaan we doen? Nog afwachten of eens bellen met materniteit? Afwachten was geen optie, dat was klaar en duidelijk. Ondanks het feit dat er beweging was, was er toch nog altijd een ongerustheid. Dus gebeld naar materniteit. Zij kenden de voorgeschiedenis en namen ook geen risico… kom maar naar materniteit. Daar hebben we aan de monitor gelegen en bleken het oefenweeen te zijn maar was er ook reeds 4cm opening. Verder was er volop beweging in de buik, en een gezond hartslagje op de monitor. Weer een beetje gerustgesteld. Maar de vroedvrouw twijfelde om ons gewoon terug naar huis te sturen en na consultatie met de gynaecoloog van wacht hebben ze beslist dat we mochten blijven en werden we verhuisd naar het verloskwartier. Daar hebben we dan gelegen en gewacht… uiteindelijk bleef het bij 4cm. 16u later was er nog steeds geen vooruitgang. Dan hebben we beslist om het af te breken. Sindy is wel nog een nacht gebleven ter observatie. Dit was het begin van de meest stresserende 2 weken uit mijn leven.

Gedurende die 2 weken hebben we ettelijke keren aan de monitor gelegen. Vrijdag 21/04 moesten we op controle bij de gynaecoloog en die stelde voor om niet langer te wachten en het lot niet langer te tarten. Hij zou maandag 24/04 de vliezen gecontroleerd breken.
Toen we ‘s maandagsmorgen ons aan het installeren waren op de kamer heeft onze meneer echter eigenhandig de vliezen gebroken en zijn we verhuisd naar de verloskamer. Daar hebben we nog tot 14h15 moeten wachten op de bevalling zelf. Omdat onze grote vriend geen seconde stil lag hebben ze beslist om de uitwendige monitor te vervangen door een STAN-monitor, waarbij een electrode rechtstreeks op het hoofdje wordt geplaatst om zo een accurate meting te hebben en ook een indicatie te hebben wanneer de baby in nood zou verkeren nog voor dit effectief het geval zou zijn. Een hele geruststelling.
Maar je ziet dan op die monitor bij elke contractie de hartslag van de baby naar beneden duiken… perfect normaal zegt men ons. Hij mag enkel niet te dikwijls te diep zakken omdat hij dan van te ver moet terugkomen na elke wee. Als je dan bij elke wee even hoort dat de STAN geen hartslag registreert gedurende een seconde of 5, dan voel je die paniek weer naar boven komen. We bekijken elkaar… keizersnede… NU! De vroedvrouw knikt begrijpelijk en belt de gynaecoloog. Die vindt het echter nog te vroeg om nu te beslissen. Komaan vriend! Ik sterf hier van de stress!

Om 14h is de gynaecoloog dan gearriveerd en is men eraan begonnen. Om 14u15 was het achter de rug. Maar hij heeft zich niet zomaar gewonnen gegeven. Zijn hoofdje lag in de verkeerde richting. Hierdoor was een keizersnede nog steeds niet uitgesloten. Maar men wilde eerst proberen via een gewone bevalling door gebruik te maken van een kiwi-cup en dan tijdens het persen het hoofdje te draaien. Tegelijkertijd werd de kinderarts verwittigd om af te komen. Blijkbaar routine wanneer ze zo’n cup gebruiken. Men is er in geslaagd om het te draaien en het team in de operatiezaal dat klaarstond voor een keizersnede uit te voeren, mocht beschikken. Er was echter wel een groot probleem. Het hoofdje was wel gedraaid, maar de romp niet volledig. Hierdoor zat een schoudertje klem. Als je ooit een gynaecoloog wil zien paniekeren, dit was zo’n moment. Nu was het een kwestie van minuten… het moest nu gebeuren want de baby verkeerde in nood. Een extra knipje, even met 2 extra duwen op de buik, met 2 trekken aan die cup… geen prettig moment! De dokter was net binnen toen men Bram gehaald had en die heeft hem direct meegenomen naar de recovery ernaast om hem de eerste zorgen te geven. Geen geween, geen gekreun… Het heeft slechts een minuutje geduurd, maar het leken uren… dan ineens een gil, een ween. Hij heeft het gehaald! Alle emoties de vrije loop!
We hebben hem dan een minuutje gezien en vastgehad. Daarna heeft hij 3 dagen op neonatologie gelegen om terug op krachten te komen want hij had het echt moeilijk die eerste uren.

Maar alles is goed gekomen. Onze jongen had ongetwijfeld een beschermengel die over hem heeft gewaakt.

Nu kunnen we beginnen aan het volgend hoofdstuk in ons leven. Kobe* zal altijd onze eerstgeboren zoon blijven maar hij is in goede handen waardoor we onze aandacht nu kunnen geven aan Bram die naast zijn ouders ook zijn grote broer heeft die over hem zal waken.

We zijn ondertussen 2 weken verder. Bram is een guitig baasje met een enorme eetlust 🙂 Heeft hij waarschijnlijk van de papa. 

Bram-02 Bram-03

Ik probeer mijn enthousiasme wat beperkt te houden omdat ik weet dat er mensen mijn posts over Kobe* hebben gelezen en hebben gereageerd dat ze ook met dergelijke zaken worstelen en zij niet zoals ons het geluk hebben om alsnog zo’n wondertje te mogen verwelkomen. Voor hen kan ik enkel maar hopen dat er ook goed nieuws volgt. De hoop niet opgeven klinkt cliché, maar het is jammer genoeg het enige wat je kan doen.

Toch ook even een dikke pluim voor de mensen van de materniteit en neonatologie van RZ Tienen. Zij hebben ons die laatste 2 weken voor de bevalling en de week na de bevalling enorm goed begeleidt. Ze wisten waar we van kwamen en gingen heel begripvol en geduldig te werk. Ze luisterden naar onze verhalen, onze bezorgdheden en probeerden dit ook zo over te brengen aan de dokters. In het bijzonder vroedvrouw Petra en stagiaire Caroline die erbij waren tijdens de bevalling, en de uren voor en na de bevalling. Zij stonden op elk moment klaar voor ons. Ik ga ervanuit dat ze dit uiteraard voor alle toekomstige mama’s en papa’s doen. Ook Gerbe van neonatologie… zo fijn en lief dat zij omging met de kleine ukkepukjes. Ik heb een grote bewondering voor hen. Zij hebben ons het gevoel gegeven dat we niet gewoon patient x waren, maar dat we echt meetelden.

Following sites not working in a Hybrid Sites scenario – 401 Unauthorized

Earlier this week, I was at one of my customers which has a SharePoint 2013 implementation. They had an issue where following sites was not working anymore. When they clicked the Follow link, they got an error that the site could not be followed.

They have a hybrid implementation with OneDrive for Business and Hybrid Sites setup.
When I looked in the ULS, I saw the following error popping up

Loud and clear… authentication issues.

Microsoft has an excellent resource where they outline the roadmap to implement hybrid features.

Both roadmaps outline the steps which are needed to set up those features. Since OneDrive for Business was working fine, I focused on the Hybrid Sites features and started going through the steps of the roadmap to see if everything was set up correctly.

  1. Configure Office 365 for SharePoint hybrid – Check!
  2. Set up SharePoint services for hybrid environments – Check!
  3. Install the September PU for SharePoint Server 2013 – We were on the December 2016 CU, so … Check!
  4. Configure S2S authentication from SharePoint Server 2013 to SharePoint Online –  Hmmm… I don’t recall doing this in the past.
  5. Configure hybrid sites features in Central Administration – Check!

Since I was getting authentication issues, and I didn’t recall me doing the S2S authentication configuration step, I figured that this was the cause of the problem.

When you follow the link for that step, you will see that there’s some work to do to set it up. Luckily, Microsoft provided a tool which actually does it for you. It’s called the Hybrid Picker. This simplifies things a bit.

Read more

Stressed out

We zijn ondertussen 6 maanden ver in de zwangerschap van een broertje of zusje voor Kobe. De kerstboom heeft dit weekend plaats gemaakt voor het park dat terug klaar staat. De babykamer die volstond met spulletjes begint ook terug wat in orde te komen. Gisteren heeft Sindy een suikertest gedaan en de resultaten waren aanvaardbaar. Ze moet net geen uitgebreide test laten doen. De dokter heeft ook nog eens even met de doppler een check gedaan en alles zit goed. Maar dat wisten we al. Als er 1 ding zeker is, dan is het dat het geen zittend gat heeft. Gelijk de papa! 🙂 Er wordt duchtig gestampt en rondgedraaid in de buik. Dat maakt het voor mij des te leuker omdat ik er zo ook een beetje van kan genieten. Alhoewel “genieten” een relatief begrip is…

Ben gisterenavond ook bij de dokter gepasseerd. Mijn driemaandelijkse check-up voor mijn bloeddruk. Ik neem al enkele jaren medicatie voor een te hoge bloeddruk. Hij was niet dramatisch hoog. Tussen 90 en 100 voor een onderdruk en tussen 140 en 150 voor de bovendruk. Maar dit is toch te hoog om niets aan te doen. Ik had ook al jaren last van hoofdpijn en ondanks het feit dat de dokter zei dat dit niet van de bloeddruk kon zijn, was dit de enige reden dat ik kon bedenken waarom ik ze altijd had. En inderdaad… nadat ik ben begonnen met mijn medicatie, is die hoofdpijn dan ook bijna compleet verdwenen… tot een maand of zo geleden.
Ik begon te merken dat mijn hoofdpijn frequenter terugkwam. Niet in de mate van vroeger, maar zo een sluimerende hoofdpijn… te weinig om iets in te nemen, maar toch aanwezig. Ik heb thuis een bloeddrukmeter liggen voor zelf wat op te volgen en ook daar zag ik dat ik opnieuw waardes begon op te meten die te hoog waren. In het begin was dit sporadisch… maar de laatste weken zit ik constant weer boven de 90 en 140. Net alsof mijn medicatie niet meer werkt. Er zijn geen fysieke of medische redenen die dit kunnen verklaren omdat ik niet ziek ben of zo. Ook is die medicatie niet onderhevig aan gewenning.

Dus is er een andere reden. Als ik terugkijk naar mijn metingen, dan kan ik zien dat ik sinds begin november terug hoge waardes ben beginnen opmeten. Ik had na Kobe al gezegd dat als we opnieuw zouden beginnen en we zouden opnieuw zover geraken, dan zou dit voor mij van begin tot einde een periode zijn dat ik mij zorgen maak. En dit is ook zo. In het begin maakte ik mij nog niet al teveel zorgen… we zien wel. Waarschijnlijk omdat ik het zelf eerst niet wou geloven dat we dat nog mochten ervaren. Maar na die eerste echo is dat begonnen… en elke week die er bij komt, neemt de stress bij mij toe. Ik voel het zelf heel goed. We zitten op 6 maanden… als het vanaf nu misgaat, dan ben ik papa van een 2de sterretje. En ik weet niet hoe ik dat zou moeten verwerken. Ik wil daar niet aan denken, maar doe het toch. En dat spookt door mijn hoofd. Ik ben zodanig sceptisch geworden, dat ik pas zal geloven dat alles goed is, wanneer ons prutske in mijn armen ligt te janken of te slapen. Pas dan zal ik terug rust vinden… en dan zijn er weer andere zorgen.
Mijn broer en zijn vrouw waren ook zwanger en waren uitgerekend voor eind januari. Door complicaties hebben ze de baby halverwege december al moeten halen en heeft hij tot 2 weken geleden op de Neonatale Intensieve Zorgen in Brugge gelegen. Gelukkig is het een gezond bazeke en loopt alles goed met zowel hemzelf als de mama. Tegelijkertijd was de dochter van de buren bij mijn ouders ook zwanger en ook daar hebben ze door complicaties de baby moeten halen op 31 weken… daar was het zelfs levensbedreigend voor moeder en kind. Ook daar alles gelukkig goed gelopen. En dan is er ook nog een kennis van Sindy waar het dochtertje te vroeg is geboren maar het niet gehaald heeft. Deze dingen helpen niet voor mijn gemoedsrust, hé. En dus maak ik mij zorgen… elk uur van de dag. Het is niet dat ik niet meer functioneer of geen energie meer heb of dat mijn werk en dergelijke er onder lijdt, maar het is iets wat constant aanwezig is als een peuter die aan uw broek zit te snokken omdat ie aandacht wil.
Zit ik ’s avonds in de zetel, dan zit ik niet rustig tot ik zélf heb gevoeld dat het nog OK is. En dan nog… als Sindy even zucht of kreunt omdat er iemand op een blaas zit te duwen, dan flitst er vanalles door mijn hoofd. Moet ze ’s nachts opstaan om naar het toilet te gaan en ik word wakker, dan flitst er opnieuw vanalles door mijn hoofd. En dit gaat maar door en door. Het ene scenario na het andere doorloop ik in mijn hoofd. Ik word daar knettergek van!!!! En uiteindelijk is dat niet goed voor mijzelf, maar ook niet voor Sindy. Zij heeft daar onrechtstreeks ook last van.

stressed out

En er zijn nog een 3-tal maanden te gaan. Dat beloofd. Ik heb één chance en dat is dat ik er mijn slaap niet voor laat. Dus mijn nachtrust heb ik nog wel.

Dus ja, zowel ikzelf als de dokter, aan wie ik gisteren hetzelfde heb gezegd, zijn ervan overtuigd dat mijn medicatie niet opgewassen is tegen de stress die ik momenteel ondervindt en dit zal erger worden naarmate we dichter bij het punt komen dat het is misgelopen met Kobe. Tijdelijk krijg ik dan ook zwaardere medicatie en is het dagelijks opvolgen en als het niet beter wordt, bijsturen. Ze is er wel van overtuigd dat het na de bevalling terug zal normaliseren. Ik hoop het… Ik ben iemand die niet snel gestresseerd is en vrij rustig is, maar dit heb ik echter nog nooit meegemaakt. Ik ben zelfs rustiger op het werk dan thuis voor de moment. Ik voel mij net een elastiekske dat aan het uitrekken is en waar je van wéét dat de rek er vroeg of laat gaat uit zijn. Ik tel de dagen bijna letterlijk af op een kalender… hopende dat het elastiekske het houdt.

Ik zal in ieder geval zo blij zijn als dit achter de rug is en ik opnieuw rust heb gevonden. Rust die dan waarschijnlijk door iemand anders zal worden verstoord… meerdere keren per nacht… maar daar teken ik direct voor. 🙂

Convert a SharePoint 2016 front-end to a front-end with Distributed Cache

I have been running a SharePoint 2016 farm with 4 servers (Front-End, Application, Distributed Cache, Search) but now Feature Pack 1 has been released, I’m looking to reduce this to 2 servers and use the 2 combined minroles which have been added. To be more precise, I want to eliminate my Distributed Cache server and convert my Front-End to a Front-End with Distributed Cache. After that, I want to do the same for my Search server and convert my application server to an application server with search. But doing this for my Distributed Cache server, proved to be a challenge. I was getting all kind of errors. This might have something to do with the order I did things though.
Before I did the conversion, I removed my Distributed Cache server from the farm and I didn’t do this in a graceful way… I just disconnected it from the farm.

My first attempt to convert a server failed with a very self-explanatory error:

The Distributed Cache service instance must be configured. Run ‘Add-SPDistributedCacheServiceInstance -Role WebFrontEndWithDistributedCache’ on this server to configure the Distributed Cache service instance.

minrole1

That’s pretty clear. This is indeed a front-end server and in SharePoint 2016, this role doesn’t have the Distributed Cache service instance. So, I added it like the error proposed.

The result however was not what I expected. I got the error:

Failed to connect to hosts in the cluster

minrole2

Come to think of it… this actually makes sense. I already mentioned I kicked out the Distributed Cache server in a very direct way. Probably, my cluster is still referencing this host. The only way to verify this is to look at the cluster configuration. To get this information, you can export it to a text file.

Somewhere near the end of the file a “hosts” section can be found and this contained the following information:

minrole2a

And this confirmed it. The old host was still listed in the configuration. I had to remove this host first. To do this, I executed the following command:

This succesfully unregistered my host from the cluster and I re-ran the command to add the Distributed Cache Service Instance.

This time, no error! Hooray!

I proceeded to run the Set-SPServer command again to start the conversion. Again, an error appeared. This time, the error was different.

The Distributed Cache service instance must be reconfigured. Run ‘Remove-SPDistributedCacheServiceInstance’ on this server to remove the Distributed Cache service instance. Then run ‘Add-SPDistributedCacheServiceInstance -Role WebFrontEndWithDistributedCache’ on this server to reconfigure the Distributed Cache service instance….

minrole3

At this point, when you look at the Distributed Cache service in Central Administration, you can see that it’s stopped. If you open the Windows Services console on the server, the AppFabric Caching Service is disabled.

I tried to remove this service using Remove-SPDistributedCacheServiceInstance, but it failed with the error:

cacheHostInfo is null

minrole4

To get past this point and get the service removed, you can execute the following piece of PowerShell script:

This worked and it removed the service instance completely from my server.

I then proceeded to execute the Add-SPDistributedCacheServiceInstance command again but this time without the -Role parameter!!!

When the command finished, I went to the Services on Server page in Central Administration and I noticed that the Distributed Cache service was added again. This time it was started! It also stated that my server was not compliant anymore but who cares…. we are going to change the role anyway.

minrole5

I re-ran the Set-SPServer command to start the conversion:

And yes, now it worked. I was notified that a timer job had been scheduled to do the conversion.

minrole6

I only had to wait until the job was completed. When I looked at the Servers page in Central Administration, I could clearly see that my role was changed and that the server was compliant.

minrole7

Part of this could possibly have been avoided by removing the Distributed Cache server in a more graceful way. Lessons learned… don’t cut corners!  😎 

DistributedCache Server role vs SkipRegisterAsDistributedCacheHost

Since SharePoint 2013, the New-SPConfigurationDatabase and Connect-SPConfigurationDatabase cmdlets have a parameter called “SkipRegisterAsDistributedCacheHost”. When this switch parameter is specified during the creation of a new  farm or when a server is added to an existing farm, the local server will not have the Distributed Cache. With the arrival of SharePoint 2016, we also got the MinRole feature. This feature enables you to designate the local server to be a “DistributedCache” server. How to do this, is explained in one of my previous posts where I provide a script to create a farm and to join a farm. I was wondering what happens when you use the DistributedCache server role together with the -SkipRegisterAsDistributedCacheHost switch.

Best way of finding this out is to try it. I did, and found out that the server in fact was a DistributedCache host after I joined it to the farm. So, it ignores the switch completely.

But what with the other roles? How about Custom? And Search? To see how this is handled, I fired up ILSpy and started digging in the code.

In the Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheServiceInstance class, a method ShouldRegisterAsDistributedCacheHost exists and this is called somewhere during the execution of one of the above 2 cmdlets.

This method contains a test which illustrates how the decision is made if a server should be a DistributedCache host or not.

Bottomline… 

If the ServerRole parameter is DistributedCache, SingleServerFarm or WebFrontEndWithDistributedCache, the presence of the SkipRegisterAsDistributedCacheHost doesn’t matter. The server will be a Distributed Cache host. Period.

If the ServerRole parameter is not specified, “Custom” or we don’t have the MinRole feature enabled, the SkipRegisterAsDistributedCacheHost is taken into account and used in the decision.

Iets meer dan een jaar geleden…

Iets meer dan een jaar geleden…

Het is ondertussen iets meer dan een jaar geleden dat we onszelf “ouders” mochten noemen. Kobe was het resultaat van een jarenlange strijd die we hadden gevoerd en we waren dus maar wat blij dat hij er eindelijk was. Maar het was niet op de manier zoals we hadden gehoopt. In plaats van ouders te zijn van een levendig jong baasje zijn we ouders van een sterrenkindje. Als je jaren vecht voor kinderen, dan is dat een bijzonder zware last die erbij komt.

Vaderdag, moederdag, de eerste verjaardag… dit zijn geen leuke dagen, geloof me. En al zeker niet wanneer je Facebook open doet op dergelijke dagen. Waar ik het soms nog het moeilijkst mee heb, dat zijn de posts van mensen die rond dezelfde tijd zijn bevallen. Want zij posten dingen die wij ook hadden moeten kunnen doen. In plaats daarvan staan er bij ons enkel herinneringen en comments met knuffels en medeleven. Ik had mij het ouderschap iets anders voorgesteld.
Een kind verliezen is iets waar niemand op hoopt maar waar je wel bij stil staat als je er eentje verwacht. Stel je voor dat het misgaat… ik kan mij die gedachte nog zo voor de geest halen. In het onwaarschijnlijke geval dat het misgaat, dan ga ik niet weten wat doen. Tot het dan misgaat, en dan treedt er een soort van natuurlijke afweer in gang en neemt een automatische piloot over. Wonderbaarlijk slaag je erin om de administratie af te handelen die eerste dag. Als je naar het onthaal gaat om de nodige formulieren in te vullen voor de opname en de hospitalisatie, dan zie je al de mensen aan het onthaal die geen idee wat er zich zonet heeft afgespeeld 1 verdieping hoger. Je zegt dat het is voor een opname voor de materniteit vannacht… de spontane glimlach en “Ah! En is mevrouw al bevallen?” Jawel. “Proficiat… alles goed verlopen?”. Een aarzeling bij mij en een gelaten nee schuddende beweging is het signaal voor hen dat ze voorzichtig te werk moeten gaan nu. Verontschuldigingen en excuses…  ik zeg dat het niets is, ze kunnen het niet weten. Ze vragen of het gaat en of ze iemand moeten roepen… maar neen, is niet nodig. De automatische piloot heeft alles onder controle. Daarna nog wat pijnlijke telefoontjes doen naar ons ma en mijn broer maar ook dat gebeurd in een automatisme. Uiteindelijk schakelt die automatische piloot zich ook weer uit en dan krijg je pas zicht op wat er je echt is overkomen en kan je beginnen met alles een plaats te geven.

Read more

Change SharePoint Service Identities using PowerShell

After installing SharePoint and setting up my farm, one of the first things I always do is change SharePoint service identities. In a freshly installed SharePoint farm, most services are running under the farm account or under a local identity (LocalService, LocalSystem). Some of the services I change right away:

  • Search Host Controller Service
  • SharePoint Server Search
  • Distributed Cache
  • SharePoint Tracing Service

With the exception of the SharePoint Tracing Service, all of these identities can be changed from the “Service Accounts” page in Central Administration. But where’s the fun in that… furthermore, this page has one big disadvantage. You can change a service to run with a managed account but you can’t set it to run under a local account (LocalService, LocalSystem, NetworkService). So, if you changed your service from a local account to a domain account, you can’t undo this change using the UI. You need to use PowerShell.

The script below allows you to set a domain account or a local account.

 

Cleaning up obsolete SharePoint groups

During the lifetime of a SharePoint implementation, sites come and go. When a site collection grows, you typically see the amount of SharePoint groups growing as well because you want to give people access to those sites in a sort of organized way. When sites go, those groups are left behind. Removing those obsolete SharePoint groups can be a challenging task because groups which have been created for a specific site can be used for other sites as well. So, before removing a group, you need to be sure that it’s not used on any other sub sites.

SharePoint groups live on the root web of a site collection.

If a group is created as part of the site creation process, it will have a description which clearly states for which site is has been created. This doesn’t mean it can’t be used on any other sites. If you want to get a list of all SharePoint groups which exist in a site collection, you can also use the following PowerShell snippet to get the collection.

obsolete-sharepoint-groups-1

If you want to know which groups are used on a specific subsite of the site collection, you can use the UI and check the Site Permissions section of a site. This will give you all permissions for that site. You can also use the following PowerShell snippet to get these.

obsolete-sharepoint-groups-2

See the difference? The SiteGroups has a group “MyCustomGroup” which is not part of the Groups collection of the same web. This means that the group exists in the site collection but at this point, it’s not used. When I give this group explicit permissions to my site, it will be added to this collection and it will be in use.

So, the process of cleaning up obsolete groups is to check the Groups collection on each sub site and see which site groups are used for giving people access. If you have a site group which is not part of any Groups collection of any site, it’s not used and you can remove that group from the site collection.

You can do this manually, or you can automate this process and use the following script for this task.

This script will do 2 things.
If run in Simulation mode, it will look for obsolete groups and ouput them to the console. Nothing more.
If run in Execution mode, it will look for obsolete groups and delete them from the site collection.

My advice… run it in Simulation mode before running it in Execution mode. That way, you have an idea of what groups were found and will be deleted.

There are some situations which need clarifications.

Inherited permissions

What happens when you have subsites which inherit permissions? This is no issue. Suppose you have a subsite which inherits permissions of the root web of the site collection. When a SharePoint group is given access to the root web of the site collection, it will be given access to all sub sites which inherit their permissions and as such, that group will be part of the Groups collection of those sub sites.

Audience targeting

What happens when a group is exclusively used for audience targeting? Well, this is a problem because that group is not part of the Groups collection of the site where you have used it as an audience. In my opinion, this is a situation you should avoid doing because you are going to give a collection of users access to a site. In theory, an audience is a subset of authorized users, right? You want to target specific content on a site to specific users. If they can’t reach the site, what’s the point in targeting content to them?

If you do find yourself in such a situation where you have SharePoint groups which are exclusively used for audience targeting, a good approach would be to give those groups distinctive names, clearly indicating they are audience targeting groups. For example, you could start each group name with “AUD_”. This way, you can extend the script above and include a check to skip groups which start with “_AUD”.

SharePoint issues when using a trust with Selective Authentication

If you have some experience with SharePoint, the issue where you get a credential request three times before hitting the 401 Unauthorized is probably not new to you. We all know this happens when you try to navigate to a SharePoint site from the web front-end servers. Resolving this is common knowledge for SharePoint admins… You disable the loopback check in the registry or you use the recommended BackConnectionHostNames registry key. This has been documented in KB896861.

Last week, I was at a customer doing an assessment of a SharePoint implementation and one of their developers approached me with a weird issue on their Extranet. They have a SharePoint farm in a separate extranet domain. Between the internal domain and the extranet domain is a one-way trust to allow users from the internal domain to use their accounts to log on to a site on the Extranet. He was able to do this from the web front-end servers of the Extranet farm but not from his laptop. On his laptop, he had to enter his credentials and this kept failing… seems familiar right?

I double-checked the BackConnectionHostNames on the servers and sure enough, the key and hosts were there.

I tried the same thing on my machine with my account and this worked! I was able to go to the site from my machine. When he tried to do it from my machine with his account, it failed. We tested this on several other clients with several users… ALL of them had the same issue. Nobody was able to sign-in. Only I was able to sign-in from any place.

I will spare you the checks and comparisons we did, but I will tell you that we were able to solve it!

Servers in a domain are, like user accounts, just objects in Active Directory. When you open the properties of such a computer object in AD, and you go to the Security tab, you can specify a lot of permissions which specific AD objects can have on this computer. One of those permissions is “Allowed to authenticate”. For the servers in that Extranet farm, I was explicitly granted that permission, while the “Authenticated Users” group was not…

allowed-to-authenticate

In normal circumstances, this doesn’t pose any issue. If you have 1 domain which contains your users and servers, this permission is not required. Furthermore, if you have multiple domains and a one-way trust and you keep the default trust authentication level (Forest-wide authentication), you will not have any issues with users from the trusted domain authenticating to resources in the trusting domain.

selective-authentication-02

However, when you are using “Selective Authentication”, you need to explicitly grant the “Allowed to authenticate” permission to all users on the resources they need to access. When we verified this authentication level at the customer, we got confirmation that they were using selective authentication. So, we had to give “Authenticated Users” this permission on the SharePoint servers in the AD of the Extranet to resolve this issue.

See following articles for more information on selective authentication on trusts.

Hiep Hiep Hoera!!!

Hiep Hiep Hoera!!!

Hiep Hiep Hoera… je zou denken dat vandaag niet echt een dag is om te vieren. 8 september is inderdaad een dag die nooit meer hetzelfde zal zijn. Een dag waar ik nooit nog naar zal uitkijken maar eigenlijk toch wel een beetje. 8 september is uiteindelijk de dag waarop ik eindelijk papa werd, na zoveel jaren. Jammer genoeg een papa die dit nooit zal horen van zijn zoon die toen geboren werd. Maar ik voel mij wel een papa. Een papa die een schat aan herinneringen heeft van een zeer korte tijd samen met zijn zoon. En dus is 8 september ook wel een dag met hele mooie herinneringen die ik nooit wil vergeten.

Dus ja, hiep hiep hoera!! Gelukkige verjaardag jongen!!!! Het had zoveel leuker geweest als jij dat kaarsje echt had kunnen uitblazen en en met je handjes in de slagroom had gezeten, maar we weten dat je daarboven even hard zal blazen. Er is dan wel geen taart, maar ik eet een extra appeltje vandaag, speciaal voor jou.