Download all SPC12 PowerPoints and Videos – PowerShell Script

Back by popular demand, here is the script to grab all the PowerPoints and Videos.  This year the script shouldn't take down the site (like it did last year b/c everyone downloaded it and ran it at the same time) as they actually built it on Azure (blobs)!!!

The authentication part was quite a bit different than last year's because you needed to pass the wctx to azure after you were logged into LiveID.  This then must be passed on to the MySPC website where you are then simply using an ASP.NET Session and a .ASPXAUTH cookie.

Once logged into the site, you must hit every session page.  I did this for you already and all the valid session ids are in the "sessions.txt" file.  If you find I missed one, simply add it to the file and re-run the script. After hitting a page, you will see that the links to the files are stored in an Azure Blob endpoint (http://hubb.blob.core.windows.net/f6e6035d-a0cd-42d4-aa62-c12756979e5f-published).  The links to these end points expire after a small amount of time and have a querystring auth component.   This means you need to download the files as you hit each page.  If you wait too long, you will need to get the links again.

There are two important variables in the script (one is downloadPPTX and the other is downloadVideos).  I'm not that interested in videos so by default, the variable is set to $false.  Being that this is on Azure, I was somewhat surprised to see the performance wasn't that great.  I would have though the files would download a lot quicker!

RAR File is attached below… be sure to run it a few times over the next few days…they still haven't posted all the powerpoints and videos.

UPDATE:  Add the following to the script to handle special characters in your password:

#endcode the password
[Reflection.Assembly]::LoadWithPartialName("System.Web")
$encodedPassword = [System.Web.HttpUtility]::UrlEncode($password)
GetAuth $username $encodedPassword

Enjoy,
Chris

SharePoint Conference 2012 and Product Vendor Review!

The SharePoint conference 2012 was this past week (11/11-11/15).  It was one of my favorite conferences ever!  For those of you that don't know the story, the conference got started off a good two weeks before hand for us.  It started when I created a script to drag Dux around Vegas and create a Gangnam Style video.  This slowly blossomed into a full production.  We signed on 5 main actors:  Myself (Chris), my wife (Lidiya), Dux Raymond Psy, Marcy Keller and Erica Toelle.  Marcy was kind enough to put together an instructional video that we all practiced with the two weeks before the conference.  I'll tell you…it was crazy difficult.  Dux went on to inquire with the SharePoint Conference organizers about a special Tuesday night performance as an opening to Bon Jovi – talk about pressure!

Sunday we started off from San Diego and drove up to Vegas.  Luckily, we made it in 3:15 and got in around 1pm.  We stayed in the Wynn and made the daily trip to the conference parking garage.  We started off with our practice routine of Gangnam Style for the flashmob.  We had two performances scheduled for the week (one flash mob on Monday and the Tuesday night opening for the attendee party – we actually did quite a few more).  Truth be told…I never actually made it to any sessions the entire week!  I had too many meetings and catching up with friends and business partners.  I did however get the chance to stop by all the product booths and get the low down on some of the new kids on the SharePoint block.  It took me 2 conference days to do it!  There were some real jewels that I was able to find.  Here is my ranked list:

  1. Pistachio by LimeLeap (@PistachioApps)- This tool is a much needed replacement for those features in BCS that you did not and have not been able to do.  This tool allows for the runtime configuration of dynamic forms for backend data entry and searching.  The UI and web parts were very simple and slick in design and the admin UI was simple too.  The neat thing about their forms were that they maintained referential integrity constraints via dropdowns – something BCS CANNOT do.  They only support SQL Server at the moment and the architecture could use a few tweaks, but I was impressed! (contact: Jed Lake – jlake@limeleap.com)
  2. AdLib (@AdlibSoftware)- How is it that I never met these guys?  Being a big courseware and documentation tool guy, I found their solution for "compiling" documents using multiple sources and metadata from those source just simply outstanding!  They have a full API and workflow designer for building documents unlike anything I have ever seen.  I asked incredibly hard use cases and they had an example of each.  Turns out that several other vendors on the Expo floor use their solutions.  (contact: Craig Gleason – cgleason@adlibsoftware.com)
  3. PleaseTech (@pleasetech)- A VERY innovative way of co-authoring documents.  The technology will convert the files to HTML for a REAL co-authoring experience.  Each edit and change is stored in their app layer.  When the editing is complete, the document is sent back to its source in SharePoint (or wherever).   This may sound trivial, but I had a very in-depth conversation with their CEO and it is anything but!  The UI is incredibly simple and not too fancy, but it gets the job done! (contact: David Cornwell – david.cornwell@pleasetech.com)
  4. MobileHelix A
    mobile device play very different from MobileEntree and ShareGate in that it is an Enterprise level solution.  MobileHelix provides a BizTalk
    like layer (sources, channels, transformations,etc) for publishing
    source content to mobile devices.  I was impressed with the architecture
    of the solution and Maureen's in-depth knowledge about the product and
    how it differentiated from "perceived" competitors (Maureen Blando –
    maureen@mobilehelix.com)
  5. VizIt – Their tool allows to to collaborate on "sections" of a document.  Most of the vendors refer to this as annotation.  I thought the demo was really slick as you could do a search, find a document, pull it up in their viewer from the results, then highlight sections to make your annotations. (contact: Neicole Crepeau – neicole.crepeau@vizit.com)
  6. X20 Media – A very interesting new media play.  It allows you to build channels from MANY types of sources and then subscribe to those sources.  For a simple comparison, it is similar to subscribing to RSS feeds in your favorite reader, but they have enabled multiple types of channels.  They call their product SharePointTV.  It is a go-to market strategy for them to start out with SharePoint, but I can see the use cases are WAY past sharepoint. (contact – Scott Kelly – scottk@x20media.com)
  7. Attini- Who didn't love NewsGator?  I thought their solutions (using Service Apps to aggregate events to a new feed) were pretty awesome.  But, come 2013, they have a lot of innovation they are going to have to do.  Aditi is new to the community, and as such I see them super hungry to build new innovative products around gapping holes in SharePoint Social. (Daniel McPherson – daniel@zevenseas.com)

Honorable and notable mentions:

  • SkyTap – a new player in the cloud-hosted space.  Evidently they can host multiple same subnet instances in an on-demand fashion.  This is great for guys like me that build courseware and want training centers to be able to teach it without having issues in building the VMs.  This is going to be very important when doing labs in SharePoint 2013. (George Stamos – gstamos@skytap.com)
  • Tzuami –  I was very impressed with Roey Ladelsky.  He was very knowledgeable in migration scenarios.  He gave me a few ideas that I had never thought of! (Roey Ladelsky – roey@tzunami.com)
  • HiSoftware – There were a lot of products in various spaces on the Expo floor.  Many of them very specialized, like some were targeted at Encryption, some on Permissions control, some on document archival.  After taking a look at HiSoftware, it was pretty obvious they had ALL the pieces.
  • Cipher – Although not directly related to SharePoint in any way, their Social Network monitoring solution was pretty slick.  Being from a governmentdefense contractor at the moment, I can tell you monitoring of people "talking" or posting stuff is a big deal.  Their solution has lots of use cases other than government.  It had a lot of neat sets of reports out of the box. (Tanya Sewell – t.sewell@cipher-sys.com)

Not so honorable mentions:

  • All the SAP integration vendors.  Geez, I know lots of people have SAP (including my last two clients), but dang…why so many ISVs?  It definitely made it difficult to differentiate them all.  Their was one differential point, they all seemed to cover HR, but only a few went past the HR module into other modules.

Here are some videos and pictures from the week (watch for links a bit later):

  • Monday
    • Flashmob (Video) – Erica, Chris, Lidiya, Dux and Marcy
    • AvePoint party at Hard Rock
  • Tuesday
    • Attendee Party (MS Video)  –  Mandalay Bay
  • Wednesday
    • Axceler party – Tryst
    • After party at Caesar's
    • After after party at Foundation Room at Mandalay Bay
  • Thursday
    • ACS Party – Tryst
  • Friday
    • Fabian Williams Wedding!

You can also check out my PowerShell script for getting all the PowerPoints and Videos here:

https://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2012/11/19/Download-all-SPC12-PowerPoints-and-Videos-_2D00_-PowerShell-Script.aspx

Enjoy,
Chris

Halloween Bounty 2012

The stuff candy marketing dreams are made of…here's the bounty this year:

74 – Whoppers
47 – M&Ms
42 – Reese's
40 – Crunch
36 – Milky Way's
34 – Snickers
32 – Hershey's
25 – Twix
23 – SweetTarts
20 – KitKats
15 – Twizzlers
15 – Swedish Fish
14 – Tootsie Rolls
13 – Heath
12 – Almond Joy's
10 – Skittles
9 – Muskateers
5 – Ring Pops
…lots of misc…

SharePoint Active Directory Node Limit is hard coded! – EditDSServer.aspx

Since no one answered my question on twitter, I went back to trying
to figure this out on my own.  When you are editing the AD Connection on
the editdsserver.aspx you may run into an issue with not seeing all the
nodes in an OU.  Why?  Well, its because there is a limit on the number
of nodes that are queried.  One may ask…"can I change this"?

The
answer is no. You can change the timeouts in various different ways,
but there is NO WAY to change the node limit.  Why?  Because in the code
for the EditDSServer.aspx page, you will find a method called
"_DoLdapDirectorySearch".  This has a HARDCODED hex value of "0x3e8". 
What is that in decimal?  Its 1000.  Yes, you read that right, the hard
coded node limit is 1000 nodes.   Why is this a problem you ask?  Well,
if you needed to exclude a set of service accounts in an OU container
in your "User" OU, you won't be able to see it because it likely starts
with an "S".  If you scroll down the list, you will see the nodes end
around "M". 

Being that I am the one and only "CJG", I think to
myself, let's do this through ForeFront!  Easy enough, fire up
MIISClient.exe, change the values (b/c it DOESN'T have a limit), remove
the OUs and click Save.  I'm thinking, yeah…that was easy.  No,
Forefront will also un-check the "Users" OU when you do it like this. 
Then you lose the 1000s of users you had in the sync.  This is obviously
very bad (worse than having the service accounts in the list).

So
what do you do?  You find a blog post like this one by @mosshater that
shows you how to get at the AD connection to be able to set the naming
contexts:

http://mosshater.blogspot.com/2010/10/powershell-add-active-directory.html

This is SOOO painful…
Chris

Project Server 2010 – Waiting For Resources

I ran into this interesting state in project server last week and was able to resolve it this morning.  You may find that the timer job never executes itself..why?  Have no clue!  Especially since we already ran it three times previously and it always worked!

So I figured a way to successfully fire it manually from PowerShell:

$job = get-sptimerjob -id 4d9b0bd6-2919-4256-b030-c9d50c168e57
$wa = get-spwebapplication https://projects.contoso.com
$job.Execute($wa.id)

Keep in mind that rather execute in the owstimer process it will run as the current PowerShell user.  That user must have access to the database server to apply security and create databases.

Enjoy!
Chris

The Azure Access Control service is unavailable.

Lovely error right?  You can spend a lifetime trying to figure out why you can't get rid of this error.  But that's what community is for!  After writing my own OAuth apps to hit the SharePoint AppsSTS (appssts.svc), I finally know why this error occurs!

Turns out that O365 SharePoint Farms have a special Service Application installed.  This service application is not available to us mere mortals with Beta version of SP2013 running on-premise.  The service application is called "Azure Access Control Service Application".  It has a corresponding Proxy that goes with it.  When your SharePoint App code executes, it makes a call to this ACS proxy.  If it doesn't find the existance of one of them in your Farm, it fails with a null reference, and then you get the "The Azure Access Control service is unavailable." error. 

What does the proxy do?  It actually will grab the Azure EndPoint for OAuth2 and do the delegation calls.  You can see this xml document here:

https://accounts.accesscontrol.windows.net/metadata/json/1

Now you may be thinking…can I trick it?  Well, even if you could (which you can't), notice the "Location" fields in the SharePoint endpoint below.  Doing the same endpoint call in SharePoint, you will see that those "location" fields are not populated so you couldn't do it anyway!

http://intranet.contoso.com/_layouts/15/metadata/json/1

Nothing you can do about it with an onpremise installation of SharePoint 2013.  Whatever app you built, something in it is wanting to be deployed to O365.  This tells you that Microsoft is driving you to it by leaving out real OAuth endpoints in SP2013 in Beta.  You can find several differnt ways to get an access token in the beta but none of them really support the notion of a clientid and secret when working with on-premise.  Just FYI, one way (that is as close to OAuth as you can get) is particuarlly bad as it doesn't have any auth on it and I can get auth tokens all day long!!!

All that being said,  there are hints of the ablity to do this in RTM.  You can find several layouts pages (AppRegNew.aspx) dedicated to creating applications that live on-premise and use real OAuth calls (clientid and secret).  However, sad to say, nothing really works at the moment in the beta (believe me…I have tried). The fact that the code is even exposed about the ACS Service Application is because there is a generic interface that can be replaced in later code to make calls to other services, however, it looks like they just didn't get around to putting all the plumbing in yet.

So, don't fret about the above error, you can't do anything about it with on-premise apps. 
Chris

Working with SharePoint 2013 Distributed Cache Service (DCS)

As part of the latest course, i wanted to show how to get in and see what was in the cache of SharePoint.  I also wanted to add my own items via web parts.  Since the DCS is really AppFabric, and I have worked with it before, I didn't see it being a tough set of labs to put together.  However, I found that all the SPDistributedCache classes are marked as "internal".   This leave the regular .NET API to make calls into the service layers.   I found a great little set of code written by Stephane Eyskens (@stephaneeyskens) here:

http://www.silver-it.com/node/111

That is one of the better pieces of sleuthing I have seen in a while!

Chris

OAuth 2.0 – How long will it survive?

Yeah, lots of people are using OAuth.  Its evolution from WRAP->OAuth 1.0 has in my opinion been mostly good.  However, there are always the details of how something is built that makes you realize, not everything is what it seems to be:

http://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/

After reading the article…go to the last part…I tweeted that all not too long ago.  I did the same for REST in SharePoint 2010.

You have to wonder.  Who is the "Enterprise" in this case?  Hint…My guess is the name starts with an "M" and ends in "T"

Chris

SharePoint 2013 – The parameter ‘token’ cannot be a null or empty string

This is a painful error that pretty much has zero results on google.  It happens the moment you try to get a context from a SharePoint redirect to your web application.  A quick google, there is a blog post for this that references something misconfigured in the Office 365 side:

http://social.msdn.microsoft.com/Forums/en-US/appsforsharepoint/thread/535f939f-63a6-4779-92fa-575322e6b46e

But there is something else going on.  If your version of Visual Studio and Office Developer tools does not match office 365 (which is on RTM now) you will get this error!  In my case, I had the RTM of Visual Studio 2012, but a back level of the Office Developer Tools. 

After updating all Development tools to RTM version this went away!  But note, the error will ALWAYS occur the first time you hit the HTTPS web application (the one where you click the exception for the certificate).  Try a second time and the token will actually exist and the app will run. 

Another error that will disappear is the dreaded (also reference this post for information on this error):

Microsoft.SharePoint.SPException: The Azure Access Control service is unavailable

These don't display in S2S configured applications (using Windows Auth) so these apps won't display these errors.

Chris

How many VMs and how much memory for a TRUE SharePoint 2013 Development Farm?

The TRUTH…you actually need at least 5 VMs to really do true development in SharePoint 2013:

1) Domain Controller – 2GB ( pointed out that on server core, this can be knocked down to 512MB)
2) SVR-SPWFE01 – 8GB
3) SVR-OWA01 – 8GB
4) CLIENT01 – 4GB
5) SVR-SPAPP01 – 8GB

Why? Domain Controller being separate is straight-forward. You need
a SharePoint instance for sure (SVR-SPWFE01), this can host the visual
studio for development of server and client side code. You need a OWA
instance because it won’t let you install on a SP instance. You need a
client machine because you have to install Visual Studio express for
Windows Phone development to do things with Push Notifications and mobile
programming.  And the last instance is for doing true Search
development with a multi-role search architecture.

If you don’t have these FIVE, you can’t do every single development
task one would need to do in SharePoint 2013. Trust me, I have already
tried to get it down and it just doesn’t work.

The one that really pisses me off, is the Client machine.  I don't understand why Microsoft chose to FORCE us to install Visual Studio Express to do Window Phone Development.  It is ridiculous to have to do that.  Its a PRIME example of why Windows Phone development hasn't taken off.  They haven't been serious about preventing any inhibitors to development.  They just haven't made it easy to train people in classrooms that need everything installed on a single machine (including Server and SharePoint, et all).  It's also stupid to expect people to go through the hassle of dual booting their machines and losing productivity just to do Windows Phone development.

Total of at least 24GB of memory to run a full development environment.

Go buy an IBM X-Series server now!
CJG