Leave a comment

Cannot click ‘connect’ for Azure VM

In order to try out the new AZURE portal site (, as well as Windows 10, I’ve created myself a VM – entitled “Wookie10”.

Within the portal though, I’m unable to “connect” to the VM – the button is disabled !?


It turns out that the provisioning of a VM within Azure (for a Windows ‘client’ machine – not Windows Server) does not add the Endpoints to allow for this.

The steps to resolve this are :

(1) Click on the VM you’re using – click SETTINGS

(2) Choose ENDPOINTS

(3) Click [+ ADD]


(3) Enter the following :

** Make sure to keep the PRIVATE PORT = 3389


NB. Just choose a random port :


(4) Click OK – and wait a few moments – check your “Notifications”


You might need to close the ‘blades’ – and then re-select it.

If you’ve done it correctly, you should be able to do REMOTE DESKTOP :


This will save an RDP file – and you’ll be able to connect….

Thanks Azure !


Leave a comment

SharePoint Publishing Feature – Access Denied error for FULL CONTROL user

Within our SharePoint 2013 farm, we have a number of users who are ADMIN – and others who are simply FULL CONTROL.

We’re finding that we get an error when these ‘FULL CONTROL’ users activate the SharePoint Publishing feature.

Sorry, you don’t have access to this page


When looking with LOGS, there are some error messages related :

System.Runtime.InteropServices.COMException: <nativehr>0x81070211</nativehr><nativestack></nativestack>Cannot open file “_catalogs/masterpage/__DeviceChannelMappings.aspx

SPRequest.GetMetadataForUrl: UserPrincipalName=i:0).w|s-1-5-21-1159821373-1672690008-2013803672-278888, AppPrincipalName= ,bstrUrl=/DeviceChannels

System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

ISSUE –> Device Channels

It would appear that these FULL CONTROL users do not have access to the library at the root site, that controls ‘DeviceChannels’.

Even if these aren’t being used within your farm, it’s part of the provisioning code for the Publishing feature.    If that errors, then it all causes the ‘access denied’.

When doing ‘check permissions’ within the library, it shows as this :




Within the library, choose to “GRANT PERMISSIONS” to the specific user – or group.    For some reason, this library has ‘unique permissions’ – it could be a consideration to “re-inherit” permissions.  

Or – grant read-only permissions to EVERYONE.


After you’ve done this, you will find that the “FULL CONTROL” users can now activate the PUBLISHING feature.


Leave a comment

List all Nintex Workflows

When needing to list the workflows within a SharePoint farm, there is a command that can be used from the Nintex SDK :

nwadmin -o FindWorkflows

But – the format (output) of the workflow list is a little tricky to use.   

You simply need to view the lines with “- -“ and “- – – -“ at the start of the line.


I have a newer script that writes out ONE line for each workflow – easy when you need to have a definitive “to do” list of SITE workflows, and LIST workflows.

Here’s the new output :


This can then be loaded into EXCEL – and sorted.

The script is as follows – just a PowerShelll function that processes the output from the NWADMIN command :


If you’d like to use the script – here it is :

function FormatListOfWorkflows
    # build the credential object
    $secpasswd = ConvertTo-SecureString $args[1] -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential($args[0],$secpasswd);

    # find all the workflows and store them in a variable
    $foundworkflows = nwadmin -o FindWorkflows

    foreach($line in $foundworkflows)
        if($line.StartsWith(“Active at “))
            # get the site url
            $site = $line.Replace(“Active at “,””);
        if($line.StartsWith(“– “))
            # get the list name
            $list = $line.Replace(“– “,””);
            #make sure to NOT have &amp; error
            $list = $list.Replace(“&amp;”, “&”)
        if($line.StartsWith(“—- “))
            $loopCount = $loopCount + 1
            $totalCount = $totalCount + 1

            # get the workflow name
            $workflowname = $line.Replace(“—- “,””);

            #get the workflow – exported
            if($list -eq “Site workflow”)
                $s = “SITE WORKFLOW :       SITE > ” + $site + ”    WORKFLOW > ” + $workflowname
                echo $s
            elseif($list -eq “Reusable workflow template”)
                $s = “REUSABLE WORKFLOW TEMPLATE :       SITE > ” + $site + ”    WORKFLOW > ” + $workflowname
                echo $s
            elseif($list -eq “Site collection reusable workflow template”)
                $s = “SITE COLLECTION REUSABLE WORKFLOW TEMPLATE :       SITE > ” + $site + ”    WORKFLOW > ” + $workflowname
                echo $s
                $s = “LIST WORKFLOW :       SITE > ” + $site + ”    LIST > ” + $workflowname + ”    WORKFLOW > ” + $workflowname
                echo $s

$userName = ‘DOMAIN\username’
$userPassword = ‘password’

FormatListOfWorkflows $userName $userPassword


You could change the text further if you need, perhaps include “|” between columns, and can easily create columns when importing into EXCEL.

Good luck – and happy NINTEX’ing…


Leave a comment

SLK error with SP2013 – assignment (ID {0})

I’m working on a SharePoint 2013 + SharePoint Learning Kit (SLK) implementation as part of an upgrade from SharePoint 2010.  

We applied the new v1.7 of SLK, as well as the SQL Server patch (update).

We were finding that users could click on a course, but would see the following error message :

The assignment (ID {0}) does not exist or you may not have permission to access it.

Furthermore, this error was ONLY happening ‘in the morning’ on our environment !!


Explanation (after many days of investigation) :

Within the function “LearnerAssignmentListForLearners” (SQL), there is a WHERE clause :

WHERE lui.[Key] = @UserKey

AND GETUTCDATE() >= asi.StartDate


The data rows are added to ‘AssignmentItem’ (asi) as :

  • 16/10/2014 00:00:00     (today at midnight)

But – the UTC date was resolving as :

  • 15/10/2014 22:35:00 (yesterday)

And so – ZERO rows were returned – and the error above occurred.

After a few hours (~11am) the UTC date ticked along – and it all worked !

  • 16/10/2014 00:05:00 (today)

We have changed this FUNCTION to :

WHERE lui.[Key] = @UserKey

AND GETDATE() >= asi.StartDate


changed to


** I wonder if this ONLY impacts users that are more than ~10hrs ahead of the UTC (GMT) time ?      Australia, New Zealand, Fiji, Vanuatu ?


NB.  This has been logged with SLK (CodePlex).

Leave a comment


Over the last few days, the Australian SharePoint conference has been held in Sydney – it’s the FIFTH year that it’s been held – and the third time I’ve presented a session.

The conference began with a speaker dinner, at an amazing gourmet Mexican restaurant – one of the amazing highlights for me was the made-at-the-table guacamole (waitress used a mortar & pestle) – and the tempura cactus chips (!)

Lots of great chatter over more food, and margarita’s and mojito’s – a great crew of local and international speakers.

I had two sessions to deliver, but not until the 2nd day – so I went to see a number of sessions, and spoke with many of the vendors and other colleagues I’ve gotten to know over the years.

There was also a great VEGAS theme party, with blackjack tables, and poker, and a prize wheel too – lots more discussion & fun was had.

But – you’re here to check out the prezzo’s, right ?


Elaine van Bergen and I co-presented this slot, with Elaine covering much of the OOTB and ‘what you get’ aspects of Yammer – as well as considerations related to SSO (Single Sign-On) and DirSync.

I covered the next section, with some deep-dive DEV-content for integration of Yammer into your SharePoint site – we were showing this within Office 365 (btw).

The first of these was using the EMBED tags and SCRIPT blocks – which allows Yammer to inject an IFRAME into your page.   Some minor customisations, but still a bit limited – eg. can’t do any CSS / styles.

The next bit (and more interesting from a ‘code’ perspective) was to use the REST API from the Yammer SDK.  

This requires a SCRIPT tag reference, and then some URL’s to retrieve JSON data.   Then, you can do ‘whatever’ you want.

The demo showed :

  • Some example REST URL’s + the JSON data returned
  • An example GET to retrieve ‘messages’
  • An example GET to retrieve the current user, and determine the GROUPS they are part of – and load into a combo.  
  • The user could then choose a group – and enter some text, and click POST which would then create a Yammer post – nice !

I’ve loaded the slides for anyone wanting to see what we covered – please leave a comment if you’d like more information, and I can do another post about the demos.


My second session for the day was to cover the future of forms, with the perspective of InfoPath being deprecated, as was news earlier in the year.

This was a hot topic – and the presentation room was packed to capacity – every seat taken, and a bunch of people standing up the back, and even sitting on the floor at the front.   Was between 120-130 people – was great to have such a large audience !

My session covered the following aspects :

  • Brief history of InfoPath – why is it being put out to pasture
  • Wrap-up of the SPC348 session from Vegas – and the alternatives shown by Microsoft
    • Excel Surveys (FOSS = Forms On Spread Sheets)
      • Had a great crowd-participation survey “live demo” – lots of fun
    • Forms On SharePoint Lists (FOSL)
      • Not available until end-of-2014 – I had to do JPG demo
    • Structured documents (Word)
      • Much like content fields today – or so it seems
      • Again, not available till end of 2014
    • Access Web Apps
      • Table driven database ‘apps’ – using MS-Access
  • Other considerations
    • Rules/Validation
    • Back-end system integration
    • Workflows

After that run-down, the tone was pretty much “well, none of those are a replacement for InfoPath” !    

(I had a video-game-photo that I found entitled “Wasteland” – LOL !)

The next section covered some 3rd-party alternatives – with overview+demo :

  • Nintex Forms
  • K2 SmartForms (SmartObjects)
  • Formotus

The ending message that *I* wanted to leave with people was that you can STILL use InfoPath – it’s not going anywhere – not for 10 years (2023 – end of support).

If you’re using Office 365 of course, that could be sooner (much sooner).

So – don’t panic – just continue “as is” for now – and hopefully we’ll see something from Microsoft towards the end-of-the-year.

The murmurings I’ve heard are that Santa will kind to us – watch this space !

** Again, please leave a comment if you’d like to know more about FORMS – or you can contact me via twitter / email – check the slides for details :

OK – that’s all for now – only a few days until I head off to New Zealand, and do it all again !    

Hope you had a great AUSPC – if you were there.   If not, you MISSED OUT !


Leave a comment

Nintex Workflow FAILED to Start

The current project I’m working on is a sizeable SP2010 to SP2013 upgrade, and we hit a problem with the Nintex Workflow piece.

When running a workflow after upgrading, the message is simply :


When looking at the SharePoint logs, the following message was shown :

Error establishing database connection. SQL Error: 515.: System.Data.SqlClient.SqlException (0x80131904): Cannot insert the value NULL into column ‘DatabaseID’, table ‘SvcApp_NintexWorkflow2013_UPG.dbo.Storage'; column does not allow nulls. INSERT fails.  The statement has been terminated.    

The steps we’d followed, to do the upgrade are via upgrade guide PDF.

  • Install Nintex binaries (using v3.0.7 – as we’re on SP2013 SP1)
  • Restore SQL Server DB
  • Configure within Central Admin

This is where we’d missed a step – oops !


Within Central Admin, you actually have to specify the database to use TWICE.

This is due to the fact that Nintex has a “Config” and “Content” database – mostly (usually) within the same SQL database.

This is the same metaphor is true with SharePoint – Config + Content.

In *MY* environment – this was BLANK. #facepalm !

Once I’d set this correctly – my Nintex Workflows began working – yay !


Leave a comment

Reporting Services w.SharePoint 2013 (SafeControls)

We’ve faced a problem with a SharePoint 2010->SharePoint 2013 upgrade, with regard to the display of SharePoint Reporting Services WebParts.

After installing the SSRS Add-In for Integrated mode, we still had an error :

Web Part Error: A Web Part or Web Form Control on this Page cannot be displayed or imported. The type Microsoft.ReportingServices.SharePoint.UI.WebParts.ReportViewerWebPart, Microsoft.ReportingServices.SharePoint.UI.WebParts, Version=, Culture=neutral, PublicKeyToken=89845dcd8080cc91 could not be found or it is not registered as safe.

This is due to the components from SQL Server 2008 – it’s the v10 DLL.

From a quick look into the WEB.CONFIG, there is a SAFECONTROLS entry for the new v11 Reporting Services WebPart (as part of SQL Server 2012) – AND – also a BINDING REDIRECT for the v10 –> v11 DLL (assembly).

BUT – there isn’t a SafeControls entry – doh !

There was a blogpost about needing to manually add to WEB.CONFIG – no, thanks !

I have SIX web-app’s – and FIVE server’s in the farm – so that would be 30 changes.   AND – that’s for DEV, let alone TEST and PROD.

My resolution (drumroll) was to define a SPWebConfigModification – unfortunately, there were lots of examples in C# – but none using PowerShell.

So – here’s the script to do – just need to run ONCE for each WebApp that needs the fix.

Let me know if this helps you – it was a good ‘win’ for our team :

Add-PsSnapin Microsoft.SharePoint.PowerShell

# USAGE :AddToSafeControls_SSRSv10 -webUrl http://portal

# <SafeControl Assembly=”Microsoft.ReportingServices.SharePoint.UI.WebParts, Version=, Culture=neutral, PublicKeyToken=89845dcd8080cc91″ Namespace=”Microsoft.ReportingServices.SharePoint.UI.WebParts” TypeName=”*” Safe=”True” />

$safeControlsConfig = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification
$safeControlsConfig.Path = “/configuration/SharePoint/SafeControls”
$safeControlsConfig.Name = “SafeControl[@Assembly=’Microsoft.ReportingServices.SharePoint.UI.WebParts, Version=, Culture=neutral, PublicKeyToken=89845dcd8080cc91′][@Namespace=’Microsoft.ReportingServices.SharePoint.UI.WebParts’][@TypeName=’*’][@Safe=’True’]”
$safeControlsConfig.Value = “<SafeControl Assembly=’Microsoft.ReportingServices.SharePoint.UI.WebParts, Version=, Culture=neutral, PublicKeyToken=89845dcd8080cc91′ Namespace=’Microsoft.ReportingServices.SharePoint.UI.WebParts’ TypeName=’*’ Safe=’True’ />”
$webApp = Get-SPWebApplication $webUrl

Write-Host “Finished Updating web.config.”
Remove-PsSnapin Microsoft.SharePoint.PowerShell


Get every new post delivered to your Inbox.

Join 31 other followers