Workflow Manager setup issue

Considerando chiusa la partita di Siena in Eurolega ne approfitto per parlare di un problema che ho avuto nei giorni scorsi nel setup di Workflow Manager per SharePoint 2013.

Come forse saprete SharePoint (Server) 2013 supporta una nuova infrastruttura di Workflow, molto più evoluta rispetto alle versioni precedenti. Per implementare questa infrastruttura è necessario installare un nuovo componente, Workflow Manager. Non voglio entrare ora nel dettaglio, magari ce ne sarà occasione più avanti, ma alla fine di questo post vi riporto le sessioni della prossima SharePoint & Office Conference su questo tema, dove potrete approfondire l’argomento a vostro piacimento.

Tornando al mio setup, TechNet propone di eseguire l’installazione da Web Platform Installer, ma il link presente nell’articolo porta (ad oggi) ad una versione precedente (Beta 1) di Workflow Manager, ormai superata. Così, sempre dalla stessa piattaforma, ho eseguito la ricerca del prodotto che ho trovato rapidamente nella sua versione finale.

Web Platform Installer

Peccato solo che il setup sia finito molto presto con un errore molto poco chiaro.

Error Workflow Manager

Anche il messaggio nei log e nel event viewer non mi suggeriva niente di preciso:

Event Viewer

Event ID 11722 Product: Windows Fabric — Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action DoFabricSetup, location: C:\Program Files\Windows abric\bin\Fabric\Fabric.Code.1.0\MSIHiddenAppLauncher.exe, command:FabricSetup /operation:install /gac /trace:”C:\ProgramData\Windows abric\Fabric\log” /fabricDataRoot:”C:\ProgramData\Windows Fabric\\” /traceBufferSizeInKB:128 /traceFileSizeInMB:128/fabricPrincipal:”DOMAIN\Username”

Dopo aver trovato un thread interessante in uno dei forum su TechNet relativo a Lync 2013 e soprattutto dopo un consulto con Claudio, sono venuto a capo del problema.

Il server su cui stavo provando ad installare Workflow Manager era configurato con impostazioni regionali Italiane: locale, tastiera, formato di data e ora, ecc… Pare proprio che a Workflow Manager tutto questo non piacesse affatto. Purtroppo non sono riuscito a capire quale fosse l’impostazione precisa causa dell’errore: Location? Data? Ora? Tastiera? Boh… Fatto sta che portando temporaneamente questi parametri su valori “en-US” sono riuscito a completare il setup senza altri problemi.

Come promesso ecco l’elenco delle sessioni sul tema “worklow” che potrete seguire alla Office & SharePoint Conference 2013 il 6, 7 e 8 Marzo.

Marzo si avvicina, siete pronti? 🙂
– Riccardo

SharePoint & Office Conference 2013


Refinement Panel: errore nel link Show more

Poche settimane fa sono incappato in un problema a dir poco “curioso”. Cliccando sul link “show more” nel refinement panel di una pagina dei risultati di ricerca personalizzata, al posto di mostrare un numero più ampio di scelte, non succedeva proprio niente.

Refinement Panel

Controllando con la developer toolbar ho notato l’errore di script seguente (The value of the property “SearchEnsureSOD” is null or undefined, not a Function object).

L’errore mi è sembrato molto strano, perchè XSLT e CSS a parte avevo solo rimosso la web part relativa al box di ricerca.

Dopo una breve ricerca ho scoperto che il punto è proprio questo. Senza la Search Box Web Part (o analgo controllo in master page) viene sollevata questa eccezione.

A questo punto mi sono incuriosito e ho cercato nel mio piccolo di approfondire un pò l’argomento. La prima cosa che ho notato analizzando le chiamate http della pagina con Fiddler è stata che con la web part in pagina vengono caricati due file javascript in più, il search.js e ajaxtoolkit.js.

Fiddler Results

Controllando l’output della pagina ho inoltre notato che, oltre a non effettuare la chiamata al file search.js, nella versione della pagina senza box di ricerca (web part o controllo non fa differenza) mancano una serie di funzioni javascript.

HTML

A pensarci bene avrei potuto fare un’altro paio di verifiche, ad esempio richiamare “a mano” il file search.js dal page layout, peccato non mi sia venuto in mente prima, maybe next time 🙂

SearchEnsureSOD(-Riccardo)


Operation caused a stack overflow

Qualche settimana fa, preparando una demo su FAST Search for SharePoint 2010, ad un certo punto alcune delle web part della pagina dei risultati della ricerca (search refiner e core result web part) hanno cominciato ad andare saltuariamente in errore. L’errore era il “classico” Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer. If the problem persists, contact your Web server administrator.

L’errore, comune quando si commette un errore nella personalizzazione dell’XSLT di una Data Form Web Part, mi è parso molto strano a causa del fatto che non avevo affatto modificato i template XSLT di quelle Web Part.

Verificato il Correlation ID con le informazioni presenti nel ULS log ho trovato questo messaggio:

Error while executing web part: System.StackOverflowException: Operation caused a stack overflow.
at Microsoft.Xslt.NativeMethod.CheckForSufficientStack()
at <xsl:template match=”Result”>(XmlQueryRuntime , XPathNavigator )
at <xsl:apply-templates>(XmlQueryRuntime , XPathNavigator )
at <xsl:template name=”dvt_1.body”>(XmlQueryRuntime , XPathNavigator )
at Root(XmlQueryRuntime )  … (continua)

La causa di questo errore era nota da qualche tempo a Microsoft, di fatto se la trasformazione dei template XSLT impiega più di 1 secondo viene sollevata questa eccezione. Nel mio caso, date le risorse della VM, questo era assolutamente possibile, ma in vista della demo con il cliente dovevo assolutamente risolvere l’errore.

A partire dalla Cumulative Update di Febbraio 2012 è stato aggiunto un nuovo metodo grazie al quale, tramite Powershell, è possibile aumentare il timeout. E’ sufficiente uno script di tre righe, eccolo:

$farm = Get-SPFarm
$farm.XsltTransformTimeOut = 5
$farm.Update()

Data la soluzione, vale la pena comunque soffermarsi sulle motivazioni che portano a questo errore, cioè verificare attentamente le performance della farm e  revisionare i propri template XSLT.

– Riccardo


Ottenere lo User account dal SID con PowerShell

Molto spesso nelle attività di troublshooting, gli errori loggati nell’event viewer riportanto il SID (Security UserID) e non l’account dell’utente oggetto dell’errore.

sid

A mio avviso per riuscire ad individuare più velocemente la causa dell’errore è più utile capire di che utente si tratta. Con un semplice script Powershell siamo in grado in pochi secondi di avere queste informazioni.

$txtSid = “S-1-5-21-1728663923-1447296957-2387823518-1105”
$sid = New-Object System.Security.Principal.SecurityIdentifier($txtSid)
$objUser = $sid.Translate([System.Security.Principal.NTAccount])
$objUser.Value

A questo indirizzo trovate maggiori informazioni in proposito http://technet.microsoft.com/en-us/library/ff730940.aspx.

Happy troubleshooting
– Riccardo