THE IRONY OF THE EU REFERENDUM

It’s been a weird few days. For many months on Facebook and in other discussions I’ve often defended what I suppose some people might call “the establishment”. The Monarchy, the House of Lords, our voting systems. I have my reasons, which I believe are valid, as to why we should keep these institutions and systems, which I’m happy to discuss another time, this post is not about that, it’s about the topsy-turvy situation we find ourselves in.

I voted Leave, quite determinedly as I believe that the UK should not allow itself to be handed over piecemeal to a European elite dream of a United States of Europe. This would not happen in the short or even medium term, but it would undoubtedly happen in the long term if we remained in the EU.

I believe this to be a bad thing, and I can see it’s a bad thing simply by looking across at our friends in the USA, whose federal government is at the mercy of lobbyists and power brokers. Millions upon millions of money spent on elections, millions upon lobbying backed by powerful corporations. We laugh out loud, if a little sadly, at the USA’s inability to introduce even the simplest of gun controls, why? Because of the gun lobby. There are other lobbies too, but this one impacts the lives of everyday folk in the most tragic ways.

When the Dunblane horror occurred in this country, the government was quick to react, and whilst there was the Manchester incident, shootings have remained mercifully rare in this country. Why could we do this? No lobby powerful enough to control the wheels of our directly elected government or its sanity checking House of Lords.

Ultimately as the EU grows, and expands, big business has realised the secret to getting your goods into the EU, is to lobby the politicians and the bureaucrats, and that is what is happening. The likes of Monsanto and Bayern even now, are trying to get banned bee-killing pesticides into the EU and whilst the EU parliament is providing some temporary obstacles, the EU Commission has rolled over to accommodate them. TTIP is the same, a product of lobbying by big business. As Daniel Hannan a Tory MEP states “big corporations lobby the EU for regulation, not because they are good citizens, but because it means only the big corporations can afford the cost of regulation and hence they can stifle innovation and competition…”. See the full video at https://www.youtube.com/watch?v=tzNj-hH8LkY

I believe the individual governments of sovereign states can more effectively thwart this powerful and undesirable feature of the free-market system, simply by the fact that there are too many of them for a single company to try to control, hence I believe the political union dream of the EU should be avoided at all costs.

Unfortunately, the political and trading aims of the EU are so intertwined now that they cannot be separated, hence my firm belief that we should leave the EU project to hopefully implode on itself and allow countries to find another way trade together, without having undue influence over each other, thereby denying the big business lobbyists their nirvana of a single transnational point of contact.

I have observed that my fellow debaters on Facebook are often decrying the lack of democracy in this country, shaking their proverbial fist at the “establishment”, the “toffs”, the “aristocracy”, the “out of date fuddy-duddies” who protect their own interests. Yet they have failed to see the same faults lie within the EU bureaucracy. The very people who accuse myself and others my age of “living in a past imperial dream age, long gone” are , in my eyes, blind to the absolute peril and tyranny that the United States of Europe project will bring down on Europe and the UK if we stay.

And the amazing irony is, that the very people who have in the past months and weeks berated the “establishment” have through their remain vote and with their determination to undermine a genuine democratic decision by trying to force a second Referendum have aligned themselves with the very organisations and structures they have cursed and derided over and over again.

Strangely, it is the “naïve” Leave voters who have seen through the charade of the “establishment”. The failure to connect with the ordinary people of this country and to deliver the benefits of the growth of the western world in a fair manner. But the “establishment” is not the “toffs” and “Etonians”. And the Leave campaigners know this instinctively. The “establishment” are at the heart of the UK and EU commerce. It is the bankers, the insurance brokers, the investment banks, the big businesses, the career politicians, the spin doctors, the media, the intellectuals, the self-appointed experts, the EU commissioners, politicians and bureaocrats.

They are the people trying to protect their interests, and who in their ivory and concrete towers in Canary Wharf and Brussels are so quick to instantly dismiss as bigotry and racism, the complaints and concerns of the Northern, Welsh and Midlands working classes and middle classes. Those communities can almost hear the snide and derisory insults directed at them, as the establishment sips cups of coffee in the local office Starbucks.

And the populace of London and the urban areas who voted Remain laugh with them, not seeing the deceit, not realising that they have been drawn into the establishment. They themselves have become the “establishment” tool to preserve the “status quo”, the “norm” and take the “safe route” of EU integration. Quietly letting the real power-brokers of Europe, the lobbyists and big business dictate our future, based on a new “establishment” now even more remote than London, even less in touch with the people and utterly impossible to change through any kind of vote. The European elite’s dream coming true.

One benefit of being my age, is I remember life before the EU, and whilst it was far from perfect, it did exist and was pretty much as now, except our elected government had the final say in all things. We controlled for better or for worse how this Country did things. It wasn’t perfect, it still isn’t. But we knew that in 5 years’ time we could change the government, change direction, should we wish to. The EU has not changed direction in the 40 years it has been in existence. It’s a juggernaut on a single course, no matter what the consequences. It’s monolithic, out of date, but it’s unstoppable and it will be the ruination of more nations like Greece, until somebody has the courage to stand up and say “No more”.

And sadly, it hasn’t been the intellectuals, the bankers, the people with the power who have had the courage to say “No more”, as they are now all part of the “establishment” and are too consumed with keeping the wheels turning, keeping the grants flowing, keeping the gravy train going.

No, it’s the rural workers, the small town workers, the manual workers, those disenfranchised voters, whom nobody now listens to, not even their fellow countrymen, who have seen through the disguise of the EU, seen it for what it really is: the new and future “establishment”, the new “toffs”, the new self-appointed “aristocracy”.

Meanwhile the superior liberal elite of London and urban sanctuaries who so deride the Leave voters as simple rural “idiots” and “racists”, are attempting to usurp the result of democratic referendum so that they can continue blissfully walking into their own oblivion. The multi-national corporations must be rubbing their hands together, laughing …

It’s a topsy-turvy world …

SharePoint 2013 JavaScript API – SP.Taxonomy.LabelMatchInformation

I’ve been working with the SharePoint 2013 JavaScript recently and had cause to want to fetch the Id of a Term within the Term Store using the Taxonomy namespace.

Problem was, the documentation about this particular aspect of the JavaScript API is less than comprehensive to put it politely. In fact it’s pretty mysterious. However I managed to glean that in order to select a specific set of terms relating to a specific label you need to use the SP.Taxonomy.TaxonomySession getTerms() method and pass the method a single parameter of type SP.Taxonomy.LabelMatchInformation.

This is where my problems started.  The documentation says to create an instance of this type you need to pass in a parameter ‘a’ to the constructor.  No information on type of parameter at all.  So I tried simply putting in a string which was the label for my term. Nope. Null? Nope. Zero? Nope.  OK … how about the client context? Bingo!  Yep it’s the client context.  Except that doesn’t actually seem to work when you pass it into the getTerms() method, it doesn’t error, but neither does it actually allow you to enumerate through the returned terms.

OK, back to the drawing board. What about that method called newObject?  So I tried that also with the Client Context and double Bingo … yep created an instance of the SP.Taxonomy.LabelMatchInformation type and it created the enumerator for the returned terms in the call-back function correctly.

So if you want to fetch just a few terms from the term store, don’t bother using the constructor for the SP.Taxonomy.LabelMatchInformation type, use the newObject() method and pass in the Client Context and you’ll be fine….

Almost.

What I also found was that unless you fully populate the SP.Taxonomy.LabelMatchInformation with initial values, it also gives you problems, despite the fact that the documentation says there are default settings.  So here’s a snippet of code to successfully create  a call to the terms store to fetch a specific term:

// Get the client context
var context = SP.ClientContext.get_current();

// Create the taxonomy session passing in the client context
var taxonomySession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);

// Create new instance of LabelMatchInformation
var lmi = SP.Taxonomy.LabelMatchInformation.newObject(context);

//Populate the various properties
lmi.set_termLabel('MyTerm');
lmi.set_defaultLabelOnly(true);
lmi.set_stringMatchOption(SP.Taxonomy.StringMatchOption.exactMatch);
lmi.set_lcid(_spPageContextInfo.currentLanguage);
lmi.set_resultCollectionSize(1);
lmi.set_trimDeprecated(true);
lmi.set_trimUnavailable(true);
terms = taxonomySession.getTerms(lmi);
context.load(terms);
context.executeQueryAsync(successcallback, failurecallback);

function successcallback(sender, args) 
{
    //Do something with result.
}
function failurecallback(sender, args) 
{
    //Show some error message.
}

Cheers

Dave Mc

Office 365 Web Part Menu Not Available IE11

I’ve finally managed to get around doing some work on investigating SharePoint 2013 Apps.  Yeah, late I know, but that’s the nature of project work and having a full life outside of IT.  Still better late than never I say.

Anyhow, I noticed this strange behaviour on Office 365.  The menu button for the web parts appeared to have changed and all you can do is to minimise or maximise the web part.

image

Further more the web part options in the Ribbon appear to be disabled too.  I’m logged on as Global Administrator for the tenancy by the way with Site Collection administrator permissions.

image

I was using IE11, so I just had this inkling of an idea that it could be a browser issue…  so switching to Chrome sure enough I see on the same page, firstly the Ribbon elements are enabled where appropriate:

image

And secondly, the web part drop down menu appears nicely:

image

So back to IE and using the F12 tools, sure enough if I switch the User Agent String to IE10 but leave document mode as Edge

image

Then the web part menu reappears nicely again.

So how to fix this for all the pages without having to mess around with the F12 tools every time I want to actually edit a page?  Well I’d hoped to just change the X-UA-Compatible meta tag in the header as often this solves such issues.  However the Seattle Master Page already has this set to IE10 – which should tell us something … so no solution there.  It’s not the Document Mode which is the issue really, which is what the X-UA-Compatible meta tag affects.  It’s the User Agent which leads me to suspect that it is the browser itself.  No issue with IE8,9,10, Firefox or Chrome, just IE11. Fab.  If anyone finds a solution let me know.

Cheers

Dave Mc

Method not found: ‘System.String Microsoft.ServiceBus.Commands.Common.SecurityHelper.CreateServerAdministratorRole(System.String, System.String)’

Received this error today when building out a Workflow Manager installation “Production style” following Spence’s Instructions here.  It happened directly I tried to actually build the Workflow Manager Farm.  UP until then everything had gone to plan as per Spence’s instructions. A quick “Bing” and I came across this article.  Which hinted that was missing Service Bus 1.0 Package.  Absolutely not!  It was all installed through the Web Deploy.  I had however opted to install CU1 to the Service Bus 1.0 when I installed everything.  What was I thinking!  A CU that actually doesn’t break anything …? 

So I uninstalled Service Bus 1.0 CU, Service Bus 1.0 and Windows Fabric then re-installed Service Bus 1.0 and it all went through no problem.

Cheers

Dave Mc

“The ‘fld’ start tag on line 1 does not match the end tag of ‘sFld’. Line 1 Position 3037”

This error appeared on a Customer’s Central Admin site recently, basically when trying to do anything useful such as view the Service Applications, change Diagnostic Logging levels, in fact trying to do anything useful with the farm.  It also manifested itself in PowerShell and if you viewed the Running Timer Jobs you noticed that they were ALL paused… NOT a good situation. 

After running through a number of recommended fixes or approaches on the forums, our team pretty much came to a standstill on this one.  Was it an error masking something else or was it actaully the correct error message?

So after a deal of looking around and finding nothing of use on the interweb, I contacted my fellow MVPs asking if anybody had had a similar message, and luckily one of the http://www.sharepointpt.org founders Rodrigo Pinto has experienced it in a test system using SharePoint 2007.  He said it really was the real error and referred to a corrupted entry in the SharePoint Config database.

So we dived into SQL Management Studio and looked at the [dbo].[Objects] table and with the help of Notepad++ and it’s extraordinary searching capabilities, we tracked down an entry relating to the User Profile Sync service which when put into XML Notepad displayed the exact same error as we were getting through the web UI and through PowerShell.

Here’s what I found :

<sFld type="Byte">196</sFld>
<sFld type="t">False</sFld>
<sFld type="Int32" name="profileStoreLanguage">1033</sFld>
<sFld type="String" name="profileStoreLanguagePacksApplied">[1033]</sFld>
<sFld type="Int32" name="profileStoreCollationId">25</sFld>
<sFld type="Int32" name="daysWorthOfEventsToKeep">7</sFld>
<sFld type="Int32" name="nextSynchronizationStage">2</sFld>
<fld type="Microsoft.Office.Server.Administration.UserProfileApplication+ILMInstallStage, Microsoft.Office.Server.UserProfiles, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" name="ilmInstallStage">C>0</sFld>
<sFld type="Byte">0</sFld>
<sFld type="Byte">0</sFld>

Now I don’t know about you, but I could see form the go get, that this was plainly the cause of the error. Position 3037 is highlighted in red. 

How on earth did this happen? Well we never found out, but the customer reported that a Virtual Host had failed the night the Timer Jobs stopped running, so I can only assume some weird write error to the Config database occurred as we later discovered that the system was part way through a User Profile Sync.

How did we fix it?  Well, we didn’t want to have to rebuild the farm, but as it stood we couldn’t actually de-provision the User Profile Service , as neither the UI or PowerShell were working enough to allow that, so that was looking likely, but we opted instead to carry out what is strictly an “Unsupported Action”, i.e updating a SharePoint database directly, but we felt in this case it was worth it for the sake of the customer, and ourselves. 

We had a good backup of the Config database form before the incident, so I could actually extract the entry before the incident occurred and indeed we examined the entry and it was perfectly formed XML unlike the above.  So after backing up all the essential databases again, shutdown the WWW service, Timer Service, Administration Service, Search Service, even FIM then I ran a simple SQL update statement to replace the above rubbish with the entry from the Config database backup and lo and behold, the farm sprung into life, timer jobs restarted, I could navigate around Central Admin and even view the User Profile Service management screen.  UPS Sync even had restarted up. 

Needless to say the customer was pleased as punch.

So sometimes you have do “Unsupported Actions” for the sake of the business.  Just don’t make a habit of them.

Cheers

Dave Mc

SharePoint 2013 Sandbox Solutions – Deprecated or Not?

Had this clarification today from Microsoft on the status of Sandbox Solutions:

“The only thing that is deprecated is sandboxed code. If you created a sandboxed solution in VisualStudio and set the “Include Assembly In Package” property to false, this is a declarative-only solution and that is not deprecated”

So basically provided there is no code in your sandbox solution you are good to go and that is not being removed from SharePoint 2013.

Hope that helps clear-up the rather confused messaging from MS about this!

Cheers

Dave Mc

 

SharePoint 2013 “Sorry, this site hasn’t been shared with you”

This rather annoying message kept coming up on our on-premise (well on-Azure) SharePoint 2013 farm when we tried to create a new subsite of any kind.  After a fair amount of beating around and finding nothing around to indicate the cause, I eventually tried adding the current user to the Web Application User Policy in Central Administration and gave it Full Control.  That didn’t seem to work, still got the message.  I then tried the same again but also ticked the “Account operates as System” which did seem to work!  I then tried to add in a Security Group  with Full Control to the User Policy but this would not let me use the “Account operates as System” option.

So this workaround would appear to be OK for a test/dev/demo environment so we’ve opted for this at the moment, but seeing as you cannot have a Group operating as System it’s not really practical for production. I’ve seen other people say re-create the Web Application – well not really an option in this case.  So if anybody has the solution fit for production, please let me know!

Cheers

Dave Mc