Latest Office 365 MVPs

In keeping with previous posts, here is a list of all Office 365 MVPs as of 6/10/2015 (update coming July 1st)…At the bottom is a powershell script that you can run to follow all the SO365 MVPs in one go!

Some quick stats…

  • 108 (non-anonymous) Office 365 MVPs

Country breakdown:

  • 15 United States
  • 12 Not Shared
  • 7 Japan
  • 7 Sweden
  • 6 Australia
  • 6 Canada
  • 5 Brazil
  • 5 France
  • 4 Germany
  • 4 United Kingdom
  • 4 Netherlands
  • 3 Croatia
  • 2 China
  • 2 New Zealand
  • 2 Italy
  • 2 Switzerland
  • 2 Malaysia
  • 1 Mexico
  • 1 United Arab Emirates
  • 1 Vietnam
  • 1 Norway
  • 1 Peru
  • 1 Philippines
  • 1 Poland
  • 1 Portugal
  • 1 Russia
  • 1 Spain
  • 1 Bulgaria
  • 1 Austria
  • 1 Belgium
  • 1 Bosnia-Herzegovina
  • 1 Denmark
  • 1 Korea
  • 1 Latvia
  • 1 Hungary
  • 1 India
  • 1 Indonesia

New MVPs (within last year):

  • Chris Goosen
  • David Petree
  • Elio Struyf
  • Erwin van Hunen
  • Haylee Fox
  • Johan Dahlbom
  • Knut Relbe-Moe
  • Matthew Green
  • Michael Blumenthal
  • Naohiko Maeda (?? ??)
  • Naomi Moneypenny
  • Nathan OBryan
  • Paolo Pialorsi (Paolo Pialorsi)
  • Ravikumar Sathyamurthy
  • Robert Dick (Robert Dick)
  • Samantha
  • Sébastien Levert
  • Susan Hanley
  • Tung Pham
  • Vasil Michev
  • Victor Meirans (Viktors Meirans)
  • Vitaly Vedenev
  • Wellington Agápto
  • Yoan Topenot
  • Yvette Watson

Longest runningmost awarded SharePoint MVPs:

  • Cindy Meister 19
  • Arnaud 12
  • Goran Husman 12
  • HeeJin Lee (Hee Jin Lee) 12
  • Nitin Sadashiv Paranjape 11
  • Tomislav Bronzin (Tomislav Bronzin) 11
  • Maarten van Stam 10
  • Scot Hillier 10

The list (data comes from your MVP profile, you don't see it, go update it):

ADefWebserver

Name Blog Twitter
Agnes Molnar Blog molnaragnes
Alan Richards Blog arichards_Saruk
Alex Pearce Blog
Alvaro dos Santos Rezende Blog
Amin Tavakoli Blog amintvk
Arnaud Blog alcabeza
Ayman Mohammed El-Hattab Blog aymanelhattab
Ben Curry Blog
Benjamin Niaulin Blog bniaulin
Benoit HAMET Blog benoit_hamet
Brendon Ford Blog stewartisland
Brett Hill Blog bretthill
Brian Nøhr Blog bsnohr
Byeongguk Ku Blog
Chris Goosen Blog
Christian Buckley Blog buckleyplanet
Cindy Meister Blog
Dan Holme Blog danholme
Danny Burlage Blog dannyburlage
Darrell C Webster (Darrell Webster) Blog
David Petree Blog dmixx
Dean Howarth Blog
Diogo Dias Heringer Blog
Dragan Panjkov Blog panjkov
Elio Struyf Blog eliostruyf
Emre Aydin Blog
Erwin van Hunen Blog
Eunjoo Lee (Eunjoo Lee) Blog
Fernando Andreazi Blog fandreazi
Genki Watanabe Blog genkiw
Geoff Evelyn Blog
Gilles Pommier Blog
Goran Husman Blog < /td>
Haylee Fox Blog
HeeJin Lee (Hee Jin Lee) Blog
Igor Pavlekovic Blog igorpnet
J. Peter Bruzzese Blog
Jasper Oosterveld (Jasper Oosterveld) Blog jasoosterveld
Jeremy Dahl Blog
Jesper Ståhle Blog JesperStahle
Jethro Seghers Blog jseghers
Jian Chen (??) Blog loveunicom
Johan Dahlbom Blog daltondhcp
Jorge Castañeda Cano Blog xorxe
Juan Carlos Gonzalez Martin (Juan Carlos González) Blog jcgm1978
Kamil Baczyk (Kamil Baczyk) Blog KamilBaczyk
Kanwal Khipple Blog kkhipple
Kazuhiko ?? Nakamura ?? Blog
Kelsey Epps Blog kelseyepps
Kerstin Rachfahl Blog himmlischeit
Knut Relbe-Moe Blog sharePTkarm
Laurent Miltgen-Delinchamp Blog
Liang Tang (??) Blog
Loryan Strant Blog thecloudmouth
Maarten van Stam Blog aafvstam
Magnus Bjork Blog
Malin Dandenell Blog
Mario Cortes Flores Blog
Markus Widl Blog markuswidl
Martina Grom Blog magrom
Matthew Green Blog mattdgreen
Mauricio Cassemiro Blog
Michael Kirst-Neshva Blog ankbs
Michael Blumenthal Blog
Michael Washington Blog
Myles Jeffery Blog mjthinkscape
Naohiko Maeda (?? ??) Blog naohikomaeda
Naoki Osada Blog
Naomi Moneypenny Blog nmoneypenny
Nathan OBryan Blog MCSMLab
Nitin Sadashiv Paranjape Blog
Nuno Árias Silva (Nuno Árias Silva) Blog NunoAriasSilva
Paolo Pialorsi (Paolo Pialorsi) Blog
Patrick Lamber Blog patricklamber
Patrick Guimonet Blog patricg
Paul Schaeflein Blog paulschaeflein
Paul Woods Blog paulwoods
Poo Ching Loong Blog
Rahmat Zikri Blog zikr1
Raphael Koellner Blog ra_koellner
Ravikumar Sathyamurthy Blog ShakthiRavi
Rene Dominik Modery Blog modery
Rie Okuda (?? ??) Blog
Robert Dick (Robert Dick) Blog
Robert D. Crane Blog
Samantha Blog
Sara Barbosa (Sara Barbosa) Blog Sarabarbosa
Scot Hillier Blog
Sean McNeill Blog s_mcneill
Sébastien Levert Blog sebastienlevert
Seiji Noro (?? ??) Blog
Steve Noel Blog CloudItca
Susan Hanley Blog
Tomislav Bronzin (Tomislav Bronzin) Blog tbronzin
Tommy Clarke Blog itommyclarke
Tung Pham Blog
Ty Anderson Blog
Vasil Michev Blog
Victor Meirans (Viktors Meirans) Blog
Vincent Choy Blog
Vitaly Vedenev Blog vedenev
Wellington Agápto Blog
WenXing Liao Blog
Yoan Topenot Blog YoanTopenot
Yoni Kirsh Blog
Yoshihide Sakamoto Blog
Yvette Watson Blog yfwatson
Zeljka Knezovic Blog zeljkak

Latest SharePoint MVPs (Twitter Follow Script)

In keeping with previous posts, here is a list of all SharePoint MVPs as of 6/10/2015 (update coming July 1st)…At the bottom is a powershell script that you can run to follow all the SP MVPs in one go!

Some quick stats…

  • 219 (non-anonymous) SharePoint Server MVPs

Country breakdown:

  • 40    United States
  • 28    Not Shared
  • 22    Canada
  • 10    France
  • 8    Australia
  • 8    United Kingdom
  • 6    Switzerland
  • 6    Belgium
  • 6    India
  • 6    Japan
  • 5    Italy
  • 5    Netherlands
  • 5    Germany
  • 5    China
  • 4    Brazil
  • 4    Korea
  • 4    Spain
  • 3    Sri Lanka
  • 3    Denmark
  • 3    New Zealand
  • 2    Norway
  • 2    Pakistan
  • 2    Finland
  • 2    Costa Rica
  • 2    Sweden
  • 2    Czech Republic
  • 2    South Africa
  • 2    Taiwan
  • 1    Tunisia
  • 1    Turkey
  • 1    United Arab Emirates
  • 1    Uruguay
  • 1    Vietnam
  • 1    Croatia
  • 1    Colombia
  • 1    Guatemala
  • 1    Hungary
  • 1    Bulgaria
  • 1    Chile
  • 1    Bosnia-Herzegovina
  • 1    Argentina
  • 1    Macedonia F.Y.R.O
  • 1    Malaysia
  • 1    Jordan
  • 1    Philippines
  • 1    Portugal
  • 1    Romania
  • 1    Russia
  • 1    Singapore
  • 1    Slovenia

New MVPs (within last year):

  • Adnan    Amin
  • Albert-Jan    Schot (Albert-Jan Schot)
  • Amit    Vasu
  • Bijaya    Kumar Sahoo (Bijay Kumar)
  • Bin    Wang
  • David    Amenda
  • Dinusha    Kumarasiri
  • Erdem    Avni SELÇUK
  • Inderjeet    Singh Jaggi
  • Jan    Vanek
  • Jussi    Roine (Jussi Roine)
  • Lakshmanan    sethu (Lakshmanan Sethu)
  • Marco    Rizzi
  • Michael    Nokhamzon
  • Mike    Maadarani
  • Prasath    Chellappan
  • Rodrigo    Romano (Rodrigo Romano)

Longest runningmost awarded SharePoint MVPs:

  • Michael    Greth    17
  • Daniel    Wessels    12
  • Robert    L. Bogue    12
  • Spencer    J Harbar    12
  • John    Timney    12
  • Rob    Windsor    12
  • Fabrice    Romelard (Fabrice Romelard)    12
  • Fumio    Mizobata (?? ???)    12
  • Pierre    Erol GIRAUDY (Erol GIRAUDY)    12
  • Ai    Yamasaki (?? ? (?? ?))    11
  • Haarón    González (Haarón González)    11
  • Adams    Chao    11
  • Ted    Pattison    11
  • Andrew    Connell    11
  • Sahil    Malik    11
  • Eli    Z. Robillard    11
  • Ed    Musters    11
  • Shane    Young    10
  • Joris    Poelmans    10
  • Hilton    Giesenow    10

The list (data comes from your MVP profile, you don't see it, go update it):

Name Blog Twitter
"Michelle" Caldwell (Michelle Caldwell) Blog
Adams Chao Blog
Adis Jugo Blog adisjugo
Adnan Amin Blog adnan_amin
Adrián Diaz Cervera Blog AdrianDiaz81
Ai Yamasaki (?? ? (?? ?)) Blog ai_yamasaki
Alan Marshall Blog
Albert-Jan Schot (Albert-Jan Schot) Blog
Alberto Diaz Martin Blog adiazcan
Alexey Sadomov Blog sadomovalex
Amanda Perran Blog
Amit Vasu Blog
Anders Dissing Blog andersdissing
Andre Lage Blog aaclage
Andres Felipe Rojas Parra Blog arojaspa
Andrew Connell Blog andrewconnell
Andrey Markeev Blog amarkeev
Antonio Maio (Antonio Maio) Blog
Ashutosh Singh Blog ashutosh80
Asif Rehmani Blog asifrehmani
Atsuo Yamasaki (?? ??) Blog SharePointIssue
Becky Bertram Blog beckybertram
Ben Robb Blog benrobb
Benoît Jester Blog SPAsipe
Bijaya Kumar Sahoo (Bijay Kumar) Blog fewlines4biju
Bin Wang Blog
Bjoern H Rapp (Bjoern H Rapp) Blog bjoern_rapp
Brandon Atkinson Blog
Carlos Citrangulo Blog carlocitrangulo
Cathy Dew Blog catpaint1
Cheng Cheng (??) Blog
Chris Givens Blog givenscj
Chris O'Brien Blog ChrisO_Brien
Chris McNulty Blog cmcnulty2000
Christian Glessner Blog
Christopher Clement Blog ClemChristopher
Chuantao Duan Blog
Claudio Brotto Blog
Colin Phillips Blog itgroove_colin
Corey Roth Blog coreyroth
Dan Usher Blog
Daniel McPherson (Daniel McPherson) Blog danmc
Daniel Wessels Blog mosslive
Darko Milevski Blog
David Mann Blog
David Sánchez Aguilar Blog davidsancheza
David Amenda Blog
Debbie Ireland Blog debbieireland
Destin N Joy Blog
Devendra Velegandla Blog
Dinusha Kumarasiri Blog
Dmitri Plotnikov Blog dmiplo
Doug Ware Blog
Doug Hemminger (Doug Hemminger) Blog
Dux Raymond Sy Blog meetdux
Ed Musters Blog
Edin Kapic Blog ekapic
Elaine van Bergen Blog laneyvb
Eli Z. Robillard Blog
Erdem Avni SELÇUK Blog eravse
Eric Alan Shupps (Eric Shupps) Blog eshupps
Eric Riz Blog rizinsights
Fabian Imaz Blog FabianImaz
Fabian Moritz Blog FabianMoritz
Fabian G Williams Blog fabianwilliams
Fabio Franzini Blog franzinifabio
Fabrice Romelard (Fabrice Romelard) Blog fromelard
Fumio Mizobata (?? ???) Blog
Gaetan Bouveret Blog gbouveret
Gavin Barron Blog gavinbarron
Giuseppe Marchi Blog PeppeDotNet
Gokan Ozcifci Blog GokanOzcifci
Guillaume Meyer (Guillaume Meyer) Blog guillaumemeyer
Gustavo Adolfo Velez Duque Blog
Haarón González (Haarón González) Blog haarongonzalez
Hans Brender (Hans Brender) Blog HansBrender
Heber Lopes Blog heberolopes
Hemendra Agrawal (Hemendra Agrawal) Blog
Hilary Stoupa Blog
Hilton Giesenow Blog themossshow
Hiroaki Oikawa (?? ??) Blog HiroakiOikawa
Hirofumi Ota Blog hrfmjp
Igor Macori (Igor Macori) Blog imacori
Inderjeet Singh Jaggi Blog
Isha Kapoor Blog
Ivan Sanders Blog iasanders
Ivan Padabed (???? ???????) Blog sharepointby
Jake Dan Attis (J. Dan Attis) Blog jdattis
James Milne Blog JamesMilne
Jamie McAllister Blog
Jan Vanek Blog
Jason Warren Blog jaspnwarren
Jason Himmelstein Blog sharepointlhorn
Jason Kaczor (Jason Kaczor) Blog jjkaczor
Jean Paul Blog jeanpaulmvp
Jennifer Ann Mason Blog jennifermason
JeongWoo Choi Blog
Jianyu Yang (???) Blog
John Timney Blog
John D. Ross Blog johnrossjr
John P White (John P White) Blog diverdown1964
John Liu (John Liu) Blog johnnliu
Joris Poelmans Blog
Joseph Tu (???) Blog
Juan Pablo Pussacq Laborde Blog jpussacq
Juan Manuel (Manolo) Herrera (Juan Manuel Herrera Ocheita) Blog jmhogua
Juan Andrés Valenzuela (Juan Andrés Valenzuela) Blog jandresval
Julien Chable Blog
Jussi Roine (Jussi Roine) Blog jussiroine
Jussi Mori Blog JussiMori
Justin Liu (???) Blog FoxdaveJustin
Kamil Jurik Blog KamilJurik
Keith Tuomi Blog keithtuomi
Kevin Trelohan (Kevin TRELOHAN) Blog ktrelohan
Kris Wagner Blog SharePointKris
Lakshmanan sethu (Lakshmanan Sethu) Blog
Laura Derbes Rogers (Laura Rogers) Blog wonderlaura
Liam Cleary Blog helloitsliam
Lionel Limozin Blog limozinlionel
Mahmoud CHALLOUF Blog
Marat Bakirov (????? ???????) Blog
Marc D Anderson Blog
Marco Rizzi Blog marcorizzi
Margriet Bruggeman Blog margrietvuur
Marianne van Wanrooij Blog mariannerd
< a href="https://mvp.microsoft.com/en-us/mvp/Marius%20Constantinescu-5000240" target="_blank">Marius Constantinescu Blog c_marius
Mark Rhodes Blog
Mark Stokes Blog MarkStokes
Martin Harwar Blog point8020
Masaki Nishioka Blog
Matthew McDermott Blog MatthewMcD
Matthias Einig Blog mattein
Melick Rajee Baranasooriya Blog MelickRajee
Michael Nokhamzon Blog mickey75019
Michael Greth Blog mysharepoint
Michael Noel Blog michaeltnoel
Michal Pisarek Blog
Miguel Tabera (Miguel Tabera) Blog migueltabera
Mikael Svenson (Mikael Svenson) Blog
Mike Maadarani Blog
Mike Smith Blog TechTrainNotes
Mirjam van Olst Blog mirjamvanolst
Mohammed A. Saleh Blog mohkanaan
Muhammad Imran Khawar Blog msdev_Pakstatus571218277298348033
Nabil Babaci Blog nabilbabaci
Nguyen Hoang Nhut (Nguyen Hoang Nhut) Blog nhutcmos
Nick Kellett Blog
Nicki Borell Blog NickiBorell
Nicolas Georgeault Blog ngeorgeault
Noorez Khamis Blog nkhamis
Patrick Yong Blog
Paul Olenick Blog
Paul Papanek Stork Blog pstork
Penelope Coventry Blog pjcov
Peter Holpar Blog
Peter Carson Blog carsonpeter
Pierre Vivier-Merle Blog
Pierre Erol GIRAUDY (Erol GIRAUDY) Blog EROL_MVP
Prasath Chellappan Blog
Radi Atanassov Blog
Randy Drisgill Blog
Reza Alirezaei Blog
Ricardo Jose Munoz Blog rmunozcr
Riwut Libinuko Blog cakriwut
Rob Foster Blog
Rob Windsor Blog robwindsor
Robert Voncina Blog R0b3r70SP
Robert L. Bogue Blog
Rodrigo Pinto Blog ScoutmanPt
Rodrigo Romano (Rodrigo Romano) Blog
Roger Haueter Blog techtask
Romeo Donca (Romeo Donca) Blog romeodonca
Ruven Gotz Blog
Sahil Malik Blog
Samuel Zuercher Blog sharepointszu
Sangha Baek Blog SanghaBaek
Scott Jamison Blog
Sean Wallbridge Blog itgroove
Seokhyi Han Blog
Serge Luca Blog
Serge Tremblay Blog Sergepoint
Seung-Jin Kim Blog jincrom
Sezai Komur Blog sezai
Shai Petel Blog shaibs
Shane Young Blog
Shuguang Tu Blog
Sohel Rana Blog
Sonja Madsen Blog
Spencer J Harbar Blog harbars
Stanislav Vyschepan Blog gandjustas
Stéphane Eyskens Blog stephaneeyskens
Steve Smith Blog
Steve Curran Blog spsteve
Susitha Prabath Fonseka Blog
Symon Garfield Blog symon_garfield
Ted Pattison Blog
Thomas Vochten Blog ThomasVochten
Thorsten Hans Blog ThorstenHans
Thuan Nguyen Blog nnthuan
Tobias Zimmergren Blog zimmergren
Todd Klindt Blog
Todd S Baginski Blog toddbaginski
Toni Frankola Blog tonifrankola
Trevor Seward Blog NaupliusTrevor
Usama Wahab Khan (Usama Wahab Khan) Blog usamawahabkhan
Valy Greavu Blog valygreavu
Veronique Palmer Blog veroniquepalmer
Vielka Rojas Blog vkrojas
Vijai Anand Ramalingam (Vijai Anand Ramalingam) Blog
Vincent Biret Blog baywet
Vlad Catrinescu Blog
Waldek Mastykarz Blog waldekm
Wei Du Blog
Wes Preston Blog idubbs
Wesley Hackett Blog weshackett
Wictor Wilen Blog wictor
Wonbae Kim Blog
Yaroslav Pentsarskyy Blog spentsarsky
Yasir Attiq Blog

Subnet masks are important…SharePoint Is Up…err Down

We had this awesome situation the past 5 days.  Another team wanted to use ElasticSearch to index SharePoint.  They would attempt to connect to SharePoint, but were not able to.  Of course, the SharePoint Servers were in fact up as demonstrated by my ability to connect to them from my laptop and from other servers in the farm.  I therefore wrote them off as crazy and put down as a firewall/F5/Linux issue.  But they kept nagging at me and eventually escalated to the higher powers that be and I was forced to deal with it.  Here's how it played out:

Quick Facts:

  • ElasticSearch on its own /28 subnet
  • SharePoint on its own /28 subnet (more on this later)
  • F5 VIPs for load balancing on both sides (both SP WFEs and ElasticSearch queries)
  • Both subnets part of a larger /24 subnet allocation pool

The process (after 5 days of back and forth):

  • Can you ping our server IPs?  Yes
  • Can you hit our SP URLs?  No
  • What happens when you ping via DNS?  We see the F5 VIP IP
  • Change your hosts file to point to a WFE directly, can you hit our server?  Yes
  • Oh, we need a bounceback iRule for the SP servers to talk to each other, let's add that now
  • Maybe we need a reverse proxy on the VIP?  Let's add that?
  • Remove your hosts file, can you hit our servers?  No
  • Fire up wireshark on all the servers, do logging on the F5
  • Traffic flows from the ElasticSearch, through the F5 and does arrive at our SP WFE however the WFE kills the TCP connection and no IIS request is logged – WTF…
  • Chris – "OK guys, let's start at the bottom and work our way up the OSI layers…"
    • Ethernet adapters good? – Yup
    • Level 2 ok?  Yup
    • Level 3 – got IPs? Yup – Chris – "Hey, what is your guys subnet?".  Them – "255.255.255.240".  Chris – "Ours is "255.255.252.0"….FUCK

5 hours over 5 days wasted, frustrated, starting to think they were crazy F5 guys…all because the network guys didn't setup our subnet properly.  What was happening is the SharePoint servers had a huge subnet configured.  This caused the SP servers to think that the ElasticSearch servers were on the same subnet but weren't.  Therefore when it couldn't connect to them using layer 2, it would kill the TCP layer.  Awesome.

Enjoy!
Chris

Stop Killing Yourself Drop Kerberos – Go Claims!

Why…why put yourself through the agony?  To be fair and relatively speaking, kerberos is easy to setup and manage, but its old and stupid.  The whole design is to keep you from tagging the auth controllers each time you login and be able to "delegate" your credentials to some other system so it can do something "on your behalf". 

Hmm…that sounds familiar….claims based auth with auth tokens anyone?  Not a single Saas App uses kerberos…so why are you still using it?  Its just stupid.  If you have a product that relies on Kerberos, then you are living in 1999.  Fast forward 16 years later….

YOU SHOULD DROP ALL THINGS KERBEROS.

Drop those old apps that you don't need anymore for ones that support claims auth and have so much more functionality than the old ones you have.  It's time.  Really.  You can let go now.

BUT CHRIS I CAN'T CUZ…THE VENDOR HASN'T UPDATED THEIR SOFTWARE….

Well…time to drop that vendor's software.  Yeah…tell the Microsoft SQL Server team (isn't that the only reason you still use Kerberos?) to get with the times.  Its ridiculous that they don't support claims based auth and delegated auth based on Claims based tokens. 

Time for software vendors and engineering teams to step up.  It's freakin 2015…I want my sharks with lasers damn it.

 

Chris

 

Building Your Own Push API for O365 (Ingesting Twitter)

Yes, it can be done.  You have to play by the O365 system's rules, but you can do it.  Here's how it can be done…

The high level steps:

  • Find a data source (Twitter, Facebook, Instagram, whatever)
  • Createconfigure an O365 account with access to Azure AD instance for your tenant
  • Ingest the data, transform to format that O365 will accept (Word, PPT, Excel, PDF)
  • Upload the data into O365 (document library)
  • Update the metadata on the doc/item after upload, this includes:
    • Create necessary user
    • Tag the user
    • Create hashtags
    • Share with those users involved
  • Wait up to 15 minutes for your results to display

So let's walk through these steps in a bit more detail shall we?

First Step – get twitter data

This is done by simply using the HttpWebRequest class of .NET and getting the html of a user's feed (provided they have not locked it down, in my case…Christophe ain't indexable when logged in…LOL).  This is a GET request to http://twitter.com/{username

Parse the HTML – I have provided a Util class to help you with this.  ParseValue is super helpful…call me king of html parsing if you will…

You can then use the twitter html response to parse out the tweet feed of the user.  This would include for each tweet:

  • Mentions
  • Text
  • Hashtags

Great, now you have the tweet data into some class structure (such as a hashtable).  Next is to grab a screen shot of all the tweets.  This can be done using the IE Browser control of .NET: 

Bitmap docImage = new Bitmap(width, height);
webBrowser1.DrawToBitmap(docImage, new Rectangle(webBrowser1.Location.X, webBrowser1.Location.Y, width, height));
docImage.Save("c:\temp\" + this.id + ".png");

You can now take that tweet image and import it into a word document using the System.IO.Packaging namespace.

From there, you now need to upload the word document with the tweet image to your O365 instance.  This can be done using the CSOM libraries.

Now that the word doc with the twitter image is loaded, you now need to update the metadata using the CSOM api.  Now this is a bit more advanced in the fact that hashtags become MMS terms and mentions become sharing links:

Sharing an item can be done via some hidden HTML post apis…this ensure that the shared item shows on the other user's feed.

However, if the users doesn't exist…you need to add them to your Azure AD tenant…this can be done by calling an obscure undocumented api…check out the "CreateUser" method.

If you wait a while…UPS will pick up this new Azure AD user and you will be able to tag the user as the creator and modifier of the new word document…errr..umm…tweet.  Which means you might have to run this more than once for each tweet (ah…the life of a lazy Saas app).

In 15 minutes…the document will be indexed properly, the users will see it on their feed and the users' that it is shared with will see it too…Office Graph at its finest…

The code is now posted to codeplex…@williambaer rejoice…however I did not publish the Word doc generation project (OfficeXml) for patent reasons, so you'll have to figure out that part, its not hard, but also not easy:

https://pushapi.codeplex.com

Easy breezy…MVP for another year…boom

CJG 

 

 

Wait What?!? Chris is Joining ShareSquared as CTO?

Yeah, personally, its a bit hard to believe, but I'm going to work for a company again.  It has been a very long time since I have actually reported to someone other than my customers!  To be more specific, since my Avanade and startup days in Seattle back in 2004!  So why do it now?  Quite a few reasons…

#1 – David Kruglov, Jim Duncan, John Honeycutt/Jeff Gunn and the crew

I have know David for over 8 years
now.  I have watched him through his ups and downs, MVP after MVP and
intimately know the details of every person that walked through his
company.  Through it all, he has maintained a level of energy and
integrity that I have not seen in any other owner of a company that I
have met in our little consulting space.  David works hard and plays
hard, but not as crazy as some of the other CEO's I know out there
(especially you ones from down under)!  David has worked his ass off to
get to a point where he has learned how to play this game.  It has
definitely not been without some missteps that he undoubtedly learned
from.  He has some pretty amazing things in the pipeline and he did a
great job selling me on what he has going on.  Right now, everything is going to plan and I
will be calling some of you to see how happy you are where you are [:D]

Jim Duncan is a just simply a rock star. It has truly been a pleasure watching him work for the past two weeks.  He's technical, he's a great manager and leader…and he just simply does an amazing job at managing the projects.  I'm looking forward to continue to work with him and hopefully automate many of the tasks that are…less than pleasurable!

John Honeycutt and Jeff Gunn are on it. It is simply amazing to watch them close deals.  They have some insane close rate that even the guys and gals at IBM would be envious of!  They will be keeping Jim and I busy for a few years to come!

So far, the guys are awesome.  They work hard, they want to do good and they ask questions.  Everything you'd want from a team. We will be bringing on two more people in the coming weeks and I'll let them announce their "move".

#2 – Envisioning My Product Ideas

It is very difficult to make time to build products that you know the world needs without other people helping you (albeit, new technologies help alleviate a lot of the time and effort that is used to take). There are several options to accomplish building your personal product idea such as:

  • Hire people (contractors, employees)
  • Get industry friends to help you build it combining our spare time in exchange for equity
  • Sell the idea to someone so they can build it

Each of these have advantages and disadvantages:

  • Taxes, Health Insurance, Disability…(although you can outsources all this admin stuff these days)
  • Capital to invest 
  • Trust
  • Loss of full potential earnings

ShareSquared offers a set of people that can provide some of the extra oompfh that I need to get some of these ideas out into the wild.  They also have a couple of products that have some potential with some real-world tender love and care put into them.

#3 – Location, location, location

Southern California (SoCal) is my home.  I love it and I hate being away from our lovely home in the "Ranch".  Lidiya and I have built quite the setup in San Diego.  The kids are awesome.  We have super smart, successful friends such that we all feed of each other to make and drive us to do bigger and better things.  Staying home or being able to hop on the train to LA, do a meeting or two and be back in my own bed the same day is priceless.  A laser focus on SoCal (the 8th largest economy in the world) is enough to keep me busy for quite some time.   So fret not if you live outside SoCal, but you should take notice now that we are coming after you if you are doing business in SoCal.  But no matter what the consulting and product battlefield brings, your always welcome in our house!

#4 – Equity

I know my value.  Let me throw some names
out there…IBM, Avanade, Microsoft, eBay, Intel, PayPal, Subway,
General Atomics.  Those are big names.  I rocked all of them.  And that
was all in a few years.  I have since had my own company for the last
10+ years working with people all over the world.  I have done very well (at least, I have kept the wife happy
so that must equate to some level of success)!  You will have to strive
to find a person that has been in these types of big companies, had
their own company, built products and achieved everything they have ever
put their mind too.  They do exist (and you guys and gals know who you are), but you'll have a hard time getting them and keeping them without
keeping us occupied with taking over the world or justifying why we make you 100s or 1000s of thousands of dollars and we don't get a significant cut.

I have a rule that I won't work
anywhere where I don't have skin in the game with a huge payout
involved.  I talked to several other companies exploring the possibility
of working for them, and the salary offers were quite large, but with no possibility of a big payout in exchange for building them something amazing. 

A tip…you don't get
anywhere significant in this world by working solely for a salary. 

#5 – Customers, Money & Value

I want to rule over SoCal with all my other SoCal CEO's and deliver
solutions that just rock it.  I want to drive the best solutions that
focus on the equation that drives everything I do personally……..

P = R – C (Profit =
Revenue – Cost)

I only enjoy talking to executives, I get
them after being one for 10+ years.  I want to make
them tons of cash (and myself in the process).  I want to save them
money in hard times. You may not like it, but the world we live in is
all
about money (<<<insert wife side remark here>>>).  I'm incredibly excited about the productivity "signals" that are about to be released to the world via Office 365.  You will be able to see exactly who is working and who is not.  Office is all about productivity (saving money).  I'm going to be focused like a hawk on value based solutions around the "C" part of the equation.  I'm not going to do any projects that are simply a "Cost" line item, I'm happy to pass those on to my competitors to bloody their name instead.

 #6 – Software Partnerships

ShareSquared has some incredibly strong software ISV relationships.  Some of these companies I have not been that close too, but have watched from afar as they have penetrated tons of accounts and made serious money for themselves and their partners.  A big part of our strategy will be to continue to focus on those partnerships.  Personally I am very excited to be able to implement some of the newer partner product offerings that ShareSqaured is selling.

#7 – M&A (Mergers and Acquisitions) and Big Partnerships

Ruling SoCal will take some serious wheeling and dealing.  You can't fill up the CRM database by solely making cold calls. To be able to scale and grow the company means making some big moves.  I'll be involved in a lot of the growth and partnership strategy for ShareSquared and how we will make it to our "magic" number.  I can't share exactly how that will be done, but I definitely have quite a few things in the pipeline that I hope will get me that much closer to making my personal goals related to ShareSquared's future.

Summary

Starting a new company is not easy.  Growing a company is not easy.   Nothing you do in this world is easy.  I'm looking forward to the challenges that ShareSquared and David Kruglov is presenting me. 

I'm going to go at it just like I have everything else, hard and strong.  Just like my win tonight in my soccer league…it feels great to be number one!  See you on the SoCal battlefield…

 

Workflow Associations lost in migration

Ran into this interesting problem today.  It is related to this long running workflow bug from this post.  As part of the eBay/PayPal split, we are creating a new domain and moving the users.  Of course, some users still exist, some do not.  No matter what, the workflow user will not exist in the target domain.  So the previous bug occurs.

But we ran into another issue.  All the listsite workflow associations disappeared for those "User not found" workflows. Took a couple of hours, but finally figured it out.

If you run the SPFarm.MigrateUserAccount method before updating the non-existing workflow owner to an existing person…you will LOSE ALL ASSOCIATIONS for all the workflows across the farm that the previously migrated user owned!  Ouch…

Lesson learned…be sure to update the workflow modifiedby first, then migrate your users!

Chris

Delve vs Box : What the heck is Delve? Don’t baby me…don’t tech me…give it to me straight! –

At @MS_Ignite I had a very fun, cool, awesome session that we affectionately called "Battle of the Office Graph".  Can you tell from the pic?

Huh, you said Delve in the blog title, why now are you saying "Office Graph"?  Well, that's what this blog post is here to enlighten you about!  So let me explain…the "Office Graph" is the basis for a series of "signals" or "events" that occur in the O365 eco-system that are fed into the SharePoint Search index.  These signals can be a myriad of different things such as "Create", "Update", "Email", blah blah (you can learn all about it here).  These events also have properties that are indexed such that you can "query" them via the SharePoint Search APIs.  So…back to the question that was asked over and over again at the Delve booth at @MS_Ignite…

What is Delve? 

This O365 page tries to tell you, but kinda fails miserably.  Delve, my friends, is simply a UI on top of the SharePoint Search index (yeah…that awesome Ceres code built by the amazingly cool and crazy smart Norwegians that I love to hang out with!) that shows you these various events that you or other people have generated in a "meaningful" way.  At least…that's how it started out anyway.  as some other people have started to notice, the page is taking on the new persona of the "My Profile" page, only rebranded as "Delve". The "meaningful" way is simply a basic set of queries that the Search team put together that they think makes the most sense for a majority of people and organizations on the planet.  Will it work for you?…probably…is it optimal for you?  Maybe not. If you check out Wikipedia…it has a horrible definition that is not even close!  Does it use machine learning and artificial intelligence…ummm no.  As a computer scientist, I can safely say that simple algorithms and data queries don't qualify for machine learning or even come close to AI.  The marketing guys did a really good job and they let the media spin this out of control! It also does not let you manage your emails or pretty much anything else that the page says (as of 5/20/2015)!

Since it is just a simple one page app that makes Ajax calls to the Search API…this is where the ability to make your own "Delve" page (or App) comes into play.  You can create your own pages in O365 that makes calls to the Search API and build your own Delve interface(s).  Currently the default Delve UI page is not extensible unless you highjack the CDN, which you can do inside your network, but not outside it (which of course would make for a terrible user experience). Wait a few more months and you should get the ability to do some customization (although we are not sure exactly what they will entail just yet)!

In addition, the widely awaited and
anticipated "Push API" is coming very soon (likely end of 2015).  This
will allow you to pump your own "signals" into the SharePoint Search
index aka Office Graph aka Delve.  This will kick the crap out of Box
and all the other online storage companies and anyone else that is even
thinking about entering the online storage market!

So….it's this future ability to create your own UI based off the internal and external indexed signals that makes the future of the O365 platform so exciting!  Which brings me to the second part of this blog post…comparing Delve and O365 (OneDrive) to something like Box.  Ok so yeah, they had an IPO recently.  The stock has tanked horribly…why?  Cuz Microsoft is about to destroy them.  If you are stockholder…well…I'm sorry for you.  Get out now!  I'll give them the benefit of the doubt and say its possible that they may use some of that cash to catchup, however, if they simply use it to do Merger and Acquisitions of simple disk drives…well…your screwed.

Real life example: 

eBay has a fairly huge presence on Box but does not use their internal OneDrive (My Site) or their O365 tenant.  Box currently provides a seamless single sign on experience that gains eBay access to cloud hosted corporate data (can you say "I don't trust internal IT"?).  However, it is missing some key features that exist in Office 365 that should make you pause and reconsider your usage of Box.  This is the current experience with eBay Box:

eBay Box: 

Open the Box url, type your ebay email (do NOT type your password)…

 

Home Realm Discovery takes you to the eBay SSO (this is similar with Yammer and O365 solutions)

 

You are presented with your eBay Box application:

 

As you can see, not much going on.  Its just a web UI on top of some storage.  Very lame, very boring.  You don't get anything close to what Office 365 gives you!  But Box does have a couple of nice simple features that O365 does not have, keep reading…

O365 OneDrive:

Open the O365 login page (https://login.microsoftonline.com/) – maybe one day they will change this pic of Santa Monica to something else, been this same image for like 4 years now!

Enter your email and again, Home Realm Discovery takes you to the eBay SSO (this is similar with Yammer and O365 solutions)

 

Once logged in (and if you have a license assigned), you are presented with your O365 tenant.  

At this point, without saying anything…its pretty obvious who the winner is between O365 and Box. But let's do the apples to apples thing shall we?  Clicking on OneDrive, we get the following:

 

Both (OneDrive and Box) are similar when compared to each other directly.  But its the indirect comparisons (pick your poison, apple vs orange, which ever is better is O365) where O365 starts to kick the **** out of Box.  However, Box does have some things that OneDrive does not have…

Box is good at:

  • Notifications (although O365 "My Site" aka OneDrive has it, it is buried and not as friendly as Box):

  • Logging – I know where I logged in from and when.  Try to find that in your O365 UI!:

O365 is good at…everything else!

Look at all the stuff you get with O365…seriously?!?  Box thinks they can compete?  Not even close.  Narrow-minded silicon valley hippies that just managed to pull off getting an IPO for a set of managed disks (aka hard drives).

O365 is bad at…everything Box is good at.

Just look at the simple design of the administration pages above.  OneDrive is a My Site hence, you go to the Settings cog->Site Settings…umm…no.  This equates to you need special training to learn to manage your "My Site" aka OneDrive.  People don't give a flying flip about a "My Site" or "Site Settings".  They want the simplicity of Box in terms of the admin.  The day the O365 team makes OneDrive simple to use with these types of admin UIs is the day the damn thing will rule the world.  Until then…its not even close.  The tech is there, but the UI is not. 

Summary:

That all being said.  It is the ability for your OneDrive to be fed into the Office Graph and the Delve UI that makes it so exciting.  In the "OneDrive" image above, you will notice the "Delve Test" word document in my OneDrive.  In the image below (along with injected Twitter data), you will see the document has in fact been inserted into my Office Graph! 

 

Box doesn't have this, it's a simple web UI on top of some disk drives with Federated Auth ability…LAME!  Get off Box and go O365!

Chris 

The eBay and PayPal Split

*Posting this now, as our part of the split is pretty much done even though we still have a few more weeks before the final split of the two companies*

As many of you know, I was asked to return as the architect to help split eBay and PayPal into two separate companies.  It was the first time I had ever been involved in "splitting" a public company into two parts.  I have been involved in merging companies, but splitting was a whole new ball game.  eBay had acquired Deloitte to advise on the regulatory rules around the split and thus-ly, they naturally would oversee all of our data split activities and approve my split plans.  Before the serious stuff…how bout some pictures of the team?

Pictures:

eBay Team (Vijiya, Surjan, Venu, Sukanya, Lavanya, Harika, Shanti, Asijit and some hidden faces) – I did not take this pic btw!

 

SPS Sillion Valley and Meeting the "Gordon" himself of "Gordon Biersh" (happened whilst at eBay):

 

Teaching the team how to play flip cup!

 

Of course I owned pretty much everything, so "Tell Chris Everything" was burned into everyone's psych…

 

And now the good stuff that will help the tech world….

Active Directory

  • Users, DLs – Another team built this strategy out.  A very talented team from COO (aka Michael Noel's company).  They used custom built scripts and the expensive yet super shitty Quest Tool (now Dell) to migrate users and then keep the password in Sync.
  • Names that change and those that don't  – DL names did not get updated from "ebay" to "paypal".  As you can imagine, that would have caused a massive workload on all Applications involved.  There was however a filtering process for accounts and DLs that did not need to come over.
  • Email addresses – PayPal went to Office 365/Exchange online.  Until the very last second, eBay maintained the MX records for the "Paypal" domain.  Once the user migration started to occur (laptops to the new paypal domain), the user's email address in the ebay system would be removed.  Of course you just can't flip a switch and automatically everyone is migrated and moved.  It took about a week for single users to really start seeing the migration of the MX and Mail box to occur.
    • Tackling migrated user emails – As you can imagine, workflows and other things that relied on the User Info table for email would show the old "ebay.com" alias, but of course, many users moved to "PayPal".  I decided that rather than leak any future data between the companies via workflows or alerts (and keep with SEC and other rules), I updated all users to "paypal.com".  So users that stay at ebay will not receive an email from the PayPal system.
  • The infamous lost of certain attributes – at some point, someone did something not so bright and annihilated two of the most important AD attributes for roughly half the migrated users.  This of course caused havoc throughout the system once the changes were replicated (SharePoint solutions and 3rd party apps use these properties once replicated via FIM to the user profile).  I was on top of it and made sure the AD guys heard from the SP team before anyone else.  It took 2 days to re-replicate all the properties for 25K users, ouch.

Permissions:

Permissions were a pain in the ass.  The AD guys setup a trust so anyone could login from either domain.  Obviously this is a bad thing cuz then you start seeing the UserInfo table fill up with odd ball stuff.  We had some test trust splits, but I made it a point to cut the ties completely after iteration #3.  I did this by doing the following:

  • Deny the old domain – Add the web app policy that denies any old domain users from logging into the new domain and then update the access denied page to remind them to use their new domain credentials
  • Set the People Picker OU – People would see two of each other when assigned permissions or testing things, of course I would get a defect assigned from every person that thought the migration didn't happen until I got fed up and locked it down to only pull from the local site collection user info list and the new domain.

3rd party apps

  • Vast amount of apps that must split like a cell.  Just to give you an idea:
    • Workday
    • SAP
    • SharePoint
    • Active Directory
    • Exchange
    • Human Resource systems
    • IT Ticketing (Remedy, home built)
    • Video solutions
    • File shares
    • SSO (Ping Identity)
  • Every one of these had to have a project team with PMO, architects, developers and business resources to split them off.  Super expensive and a massive undertaking!

Content – What goes, what stays?
The SEC and other regulatory bodies has some pretty strict rules around what could go and stay with each company.  There were several options one could have used to decide what content stayed and went:

  • Let the users tell us #1 (no guidance) – This requires user's to know what sites they use and what content is important.  Ha…I laughed my ass off at this option.  User's can never find or remember where and what they use everyday.  This would be a failure rigth off the bat
  • Let the users tell us #2 (with guidance) – build a tool that shows user's the sites they have viewed, edited whatever in the last 6 months/year. I built it, but they did not come (or rather, we didn't promote it).  User's never would have taken the time, and the business killed it as we didn't want liability for some reason.
  • Tell them what is going – We chose this option.  We did the migration about four times.  Each time we added more sites to the list of "should go".  At some point, no one complained about data missing.  See the next set of data points…

 What we used…

  • My algo ruled – We ended up using an Algorithm I built to decide what should go and what should stay.  It went something like this:  If the site used the "PayPal" master page, its good.  If the site had an ownercreater with a "Paypal.com" email address, its good.  If the site title had the name "PayPal", its good.  If the site didn't meet the first set of criteria, but had a document with the doc name having "PayPal", is was called "Mixed", it also got to go.  Legal loved the algo, signed off, and away we went.
  • Have a process – As much as the algo proved its value, there were still a set of sites that had to go no matter what.  The main intranet site was not tagged as "PayPal", but still had to go.  Shared resource sites managed by "eBay", had to go.  We put these in a special category and user's had to tell us they wanted them or they would get deleted.

IRM – Information Rights Management

  • IRM Enabled Docs – Turns out when you migrate from one domain to another, you lose access to all IRM enabled documents.  Huh…who would have thunk it?

Branding and MasterPages

  • 2007 strikes back! – 2007 had some weird crap in it.  My domain knowledge from the last upgrade helped me to "fix" some SP Hive files to support weird things like missing web part zones and other oddities
  • Lucky lucky – Our site creation process from 3 years ago helped us so much.  All the sites would get tagged based on the user and the templates they selected.  It made it super easy to find the PayPal sites (based on the algo above).
  • PayPal Branding – All migrated sites got PayPal branding, period.  No other companies, no eBay, therefore all master pages and other images were moved to PayPal.  It caused a bit of grief for some sites, but minor.

Single Sign On

  • SSO to SSO – all those apps above…yep…SSOclaims enabled.  eBay has a mandate that *all* new applications much support claims based Auth.  If not, you won't sell it or install it!  This meant migrating every new PayPal instance to the new PayPal SSO.  Not an easy or quick process of course.  I have another post about using the old Kerberos shite coming soon.

URL Migration

  • SystemUpdate – when updating listitems and files, make sure you use SystemUpdate.  It just looks tacky having a bunch of updates for URLs as people find others that have to be updated.
  • Keywords  and Best Bets – ensure that you remove old best bets (ones that point to sites that were deleted) and also make sure that you update the best bet urls so that they point to the new urls
  • InfoPath forms – forms that submit data to lists or other libraries must be updated.  I have a post from the last migration that details the hidden awesome code for in-memory InfoPath updating here
  • Title column and 255 chars – some URLs will get bigger when you replace them. Which means if the users decided to use the damn "Title" column, you will know that you can't change its type from Single Line of Text to Multi-line.  Those items are a lost cause and must be written off as much.  For the other columns, I could easily change the type to multiple lines of text and then update the URL.
  • Crawl Rules  – be sure you update your crawl rules to exclude those really dumb emails from customers that have weird stuff in them that should not show up in search results.  And all the unaccetable keywords that are not allowed in ebay and paypal systems.
  • Profile Properties – make sure you update User Profile properties (such as PictureUrl) that point to the old system to point to the new system
  • Code and Layouts files – Yeah, if you code has static AD domain references, you will have to update that.  And make sure that weird statically coded URLs in layout files are also updated.  This is super bad practice to statically code your absolute urls in your freakin layouts file.

List template and User Solutions

  • List Templates – Just blow that shite away…its ridiculous to try to create something and see 100s of weird list templates showing up
  • User Solutions – I blew all these away, totally worthless

Code, maintaining two code bases

  • TFS – yeah, you have to create new branches to support the changes in each company.  And at some point, they must break the link completely.  It required some serious refactoring in some cases to support both companies with one codebase.  I learned a ton of lessons around when you should put a company name in and when you should not.  In a majority of cases, NEVER put the name of the company somewhere in code.  Horrible, just horrible.
  • Company Names – and speaking about company names.  Never create columns on your lists that have the company name, especially if they will be used as refiners in your search center!  PayPal will forever more have the name "eBay" in the search results.  Bummer…

Testing, testing, testing

  • Have a tool that doesn't suck – When browsing, editing and doing reporting, don't use HP ALM.  It is a horrible piece of junk.  That being said, find one that at least:
    • Allows usersdepartments to enter defects
    • Allows you to easily find defects (assigned to you or the project)
    • Ensure user's don't add to a defect rather than creating new defects (this drove me crazy and I went off on a couple of people).
    • Set priorities for resolution
    • Set Severity and resolution times
    • Make sure people know that a defect will roll to the next migration attempt (deferrable)
  • Have a killer defect manager – we had an awesome lady running our defect management, Sukanya Samal.  Very knowledgeable and very to task, just amazing.  You never know when you might have some jokers like these fellows…
  • Have some great tools – I created several tools three years ago that help with checking the health of the migrated farm.  You should too:
    • Link Checker – checks all the links across the farm recording what pages have what links.  This allows you to go back in and query the pages that didn't get all the links updated.  You can then dynamically run your Url Updater to target just these pages after you have made modifications for the outlier cases
    • Error Check – a tool I have had for a while that checks all SharePoint pages for error conditions (correlation errors, web part error, asp.net error).  Every time this would tell me if someone forgot to install a 3rd party product or some other dependent assembly somewhere.  I would then be able to fix all the pages.  It was also useful for determining pages that were also broken in production that we didn't need to fix in the migration (don't get blamed for someone elses problem!)

Scripts, scripts and more scripts

  • Script everything! – I had over 85+ scripts for migrating the environment.  We could do a full rebuild in about 3 days.  Examples:
    • Install FarmAdd servers to farm
    • Install solutions
    • Create app pools, web apps and service apps
    • Start WFE and App services
    • Add web config entries
    • Attach CDBs
    • Create your web app policies – to add all your testers and admins
    • Create AD and BDC connections, map UPS properties
    • Deploy solutions
    • Update workflows
    • Migrate Users and Groups
    • Create Content Sources
    • Setup Best Bets (Fast and SP)
    • Delete Sites
    • Find and Replace URLs
    • Enable Full Auditing across sites
    • Setup Trusts with certs
    • Set and unghost master pages
    • etc, etc….
  • Utilize script references – I had several scripts that held our common functions and variables This allowed us to modify one file and have all the other scripts target our environments (Staging, QA, dev, production) with no changes.
  • Order Matters – don't just fire off scripts at random.  They must follow a logical order.  Take for instance…update the workflows to an existing user, then fire the MigrateUsers command.
  • Table locks matter – Same reason your OneDrive doesn't sync more than 5000 items, watch for when your scripts query over 5000 items in the DB, this causes a table lock and will stop all other scripts.

Of course, my scripts became famous:

 Migrating Users and Groups

  • Migrate cmds –  If you have ever done a domain to domain migration, you will know the pain involved.  How do you find all the users to call the migration usergroup command on?  How long does it take, and how should I execute it?  Well, turns out that you have to query *every* content database and the UserInfo table to get *every* user and group out.  You could then feed that to a PowerShell script that would update them.  But running that script as a single thread will take DAYS!  Especially with 60K+ users.  You need to create a dynamic script that queries the UserInfo table and then takes an input *char* such as "a".  You can then fire off 26 individual PowerShell scripts that cut the time rough by 26.  This runs so much faster.  Oh, and that same pattern, you do for EVERYTHING involving users.  Make a script that takes a "char" parameter and get it done oh so much faster!

Firewalls and proxy filters 
PayPal went security crazy.  They locked down everything.  Waaayyyy more than eBay.  You couldn't do anything without getting flagged for it in some way or another.  And just about every subnet was isolated from every other subnet.  Ouch.  Some tips…

  • F5 VIPs – ensure that your servers can use the same VIP for load balancing from inside the subnet!  This drove me crazy until I figured out what was going on.  Ensure the F5 guys add the right iRules to the VIP!
  • Outbound proxy filter – damn, when you block your own web properties and wonder why things don't work?  I find it funny that a company will lock down the outbound internet traffic to their own sites, didn't make for a very workable "crawl" system for those sites! 
  • Teams that just can't do it by themselves – eBay is going to Node.JS and Druple with ElasticSearch.  PayPal is going *ALL* Microsoft.  The new intranet team that run the eBay side were not network guys.  And they kept driving me crazy because they couldn't connect to SharePoint and saying it was my responsibility to fix it.  Bullshit.  They just needed to quit being lazy and go talk to the network guys.  Just stupid that "architects" don't know how to diagnose and resolve network issues.
  • FIPS policy – they tried to apply it, but I caught them when they tried it.  SharePoint don't work with FIPS.  It's not that SharePoint isn't secure, its just that it used some non-FIPS algos for hashing some things for speed.  Of course, enabling FIBS causes .NET to exception out anytime a piece of code uses it.  They dropped that pretty fast when I told them how bad it would be for SharePoint and all the other .NET apps on the network.  Reference this

Networks:

  • IPs, subnets and VIPs – oh my!  Make sure your subnets are setup property…reference this

Workflows:

  • The infamous workflow error I surfaced years ago (on top of many others) – This kept bitting me in the ass.  Every migration, every time, without fail.  Some workflows would update fine, some, not at all.  Some would update, but one file would remain.  Retarded.  I eventually had to manually fix association and workflow instances.  Not for the faint of heart.  Reference this post.
  • MigrateUsers and workflow associations – And just if injury and insult wasn't enough…death ensued.  If you run the MigrateUser command and the workflow has an invalid user on and file.Properties["vti_modified" property, you will lose those associations.  Reference ths post.

Audiences:

  • We created the UPS from scratch.  Which means all things related to it were re-created, including audiences.  This meant that all audiences got new IDs.  These new IDs did not map to the audience settings across the list items and pages of the farm.  Ouch.  We had to update all those (but with a script of course).

Notable Twitter Handles:

Summary:

Splitting a company cost a lot of money, time and resources.  I feel sorry for all the people that will have to find something to do (if their sales team doesn't close some deals and find them work) after we are completely done. We are talking 1000s of people to split eBay and PayPal.  They gotta go somewhere, the world keeps spinning and other companies have cash to burn so I guess they'll take some of this knowledge and find another project.  I know that I increased my intrinsic value from this project.  If anything, I now have a new monkier…"Chris Baba".  And some followers:

It seems to be incredibly rare that you get asked to come back and do a project at a company almost fours years later.  Especially of the size and important of this.  Just as it was 4 years ago, this has been an incredibly exciting and amazing experience that I'll cherish as a major accomplishment to add to the many I have worked so hard for.

Hope you learned something to support the migrations you are doing or are thinking about doing, especially those that are about splitting a company off from another!

CJG aka "Chris Baba"
@givenscj

Build, MSIgnite and Bill Baer – All recent Office Announcements

The last Microsoft Ignite post was all fun. This one is all tech!  Here's a list of all the announcements that I could find from the last few weeks (focused on Office product group), I could care less about Windows 10 (I prefer real OSes like System/390):

SharePoint 2016 (many of these came from Bill Baer's tweet storm [:O]):

  • SharePoint Foundation will not exist in SharePoint 2016.  I have known about this for a while…you might even go as far enough to say you can blame it on me and a couple of other people.  But this just makes sense in so many ways.  It would have been nice if they took it one more step to remove the ISO/EXE process, but too much change freaks everyone out!
  • Delve integration is coming to on-premises SharePoint 2013 – There will be a CU released later this year that will allow you to integrate your O365 Delve instance with your on-premises environment.  Think "Yammer" integration style, most likely just a nice little ole link sitting at the top somewhere.  Be sure to get your 3rd party IdP setup so the click bait is seamless!
  • Information security features – SSN regex checker for documents is coming to on-premises (already in O365)
  • Crawl 500 million items – this is necessary for the future of the Push API aka "Cloud Service Application" coming to the general public in Nov timeframe.  once you gain the ability to read/write the index, you will want to put all kinds of things in it!
  • Sign is as different user is back!  – Everyone learned a good lesson from having multiple O365 tenants…
  • Encryption in motion – more to come on this later
  • Responsive master pages – yes, they are coming; it was a painful 3+ years watching all the other tech easily adapt and evolve, but 2016 will get us there.
  • List View Thresholds – As you can imagine, the move to responsive and JS framework with REST APIs removes the older limitations, therefore, no more 5000 item list view threshold (which was more of a database issue [table lock promotion] than SharePoint)
  • Granular server roles DistCache, Workflow, etc
  • Upgrade Path – You must upgrade from 2013.  You cannot jump from anything before 2013
  • Forefront UPS Sync – FIM is out (which is sad because it was an amazing tool)
  • New Update Model – Patch system based on O365 update methodology (always on, no downtime)
  • 10GB uploads – Why you would ever need this is beyond me.  Totally un-necessary.
  • Durable links – I gave them this idea and showed them how to do it based on Oracle Portal and a tool I built a couple years ago.  http://www.sharepointdurablelinks.com

Office 365:

  • OWA with real time authoring details – we finally get real google doc functionality.  Took about as long as I told them it would take to build it (and yeah, you know what email I'm talking about)
  • Office integration with Skype for business – I'm hoping Skype for business brings back the fun and interaction that Hotmail messager had back in the day. 
  • Delve page updatesranding – Add your own actions to the delve page
  • Employee productivity BI Reporting – track employee's time on email, hours worked, time in meetings, etc. I will be doing another post on this later.
  • O365 Admin Workload specific Roles – aka granular permission assignment – hard to believe they called the platform secure before this announcement!
  • Login telemetry – Similiar login telemetry to Box and Yammer (when, where, how you logged in) – again hard to believe that we could call O365 secure before this.
  • Mobile Apps – More mobile apps for new features (O365 Video)

NextGen Portals:
First off, "NextGen Portals" is a marketing term wrapping a set of pages and apis that you "may" already know about.  It was "invented" by the one and only Mark Kashman.  It wraps the concept of several things included but certainly not limited too:

  • O365 Video – Azure media services, video stored in Azure, SP stores pointer and manages data in Azure back end
  • Infopedia – Advanced next generation of the Delve "page" – surface data and info via more search querys
  • Responsive design and inclusion of HTML5 based technology that works across mobile devices

Delve and OfficeGraph:
Just to be clear, Office Graph is a set of search queries that mimic "Supervised" machine learning algorithms.  In my world, I only consider "Unsupervised" machine learning to be true machine learning.  Therefore, machine learning comes later when you can inject and digest the information in much more advanced tools such as IBM Watson.  If you want to learn more about Delve and OfficeGraph, check out my post where I rip anyone who wastes money on Box.

  • Injection of developer "signals" later this year (Nov)

Azure:

  • AzureStack – on-premises Azure instances (cloud in a box).  This is mainly designed to be implemented by hosting providers, but very large customers can also play here.
  • Dedicated O365 – Similar O365 instances are also available to be hosted on-premises

Certainly some cool stuff…just wait until November 2015 when the really crazy amazing stuff comes out.  It will be a great ending to the year for Microsoft.
Chris