segunda-feira, 18 de novembro de 2013

Microsoft Workflow Manager - (400) Bad Request, 401.2 - Unauthorized



Os eventos abaixo ocorrem normalmente se o Workflow Manager foi reinstalado e/ou mal configurado:

1.

[...]
Microsoft.Workflow.Client.InvalidRequestException: The scope '/SharePoint/default/60b9a4e6-c9c4-46eb-b23e-fd2f63479c8d/76cb7003-0d67-4168-a4db-3698fc642d22' has no workflows under it. HTTP headers received from the server - ActivityId: d951e13a-d566-47e0-b7d4-ef6fe76d2ec0. NodeId: contoso. Scope: /SharePoint/default/60b9a4e6-c9c4-46eb-b23e-fd2f63479c8d/76cb7003-0d67-4168-a4db-3698fc642d22. Client ActivityId : a7aa559c-ffb6-6089-58d6-173f140b4e1a. ---> System.Net.WebException: The remote server returned an error: (400) Bad Request.
[...]

2.

[...]
Microsoft.Workflow.Client.AuthenticationException: A response was returned that did not come from the Workflow Manager. Status code = 401:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <title>IIS 8.0 Detailed Error - 401.2 - Unauthorized</title>
[...]

A solução depende da causa, entretanto existem duas formas para resolver isto:

1. Re-registrar o Workflow Manager, por meio do seguinte comando:

Register-SPWorkflowService –SPSite http://intranet.contoso.com –WorkflowHostUri http://wfserver:12291 –AllowOAuthHttp -scopename SharePoint -force

2. Este script recria o escopo, altera as permissões e registra o WFM (deveria ser executado, se o evento numero 2 continua a ocorrer):

$ScopeUri = http://SERVER:12291/SharePoint
$Scope = SharePoint
$mycredentials = Get-Credential("DOMAIN\WFAPPPOOLUSER")
$SecurityConfig = New-Object Microsoft.Workflow.Client.Security.WindowsSecurityConfiguration("All Users")
$SecurityConfig.WorkflowAdminGroupName = "Users"

Get-SPWorkflowServiceApplicationProxy | Remove-SPServiceApplicationProxy
Remove-WFScope –ScopeUri $ScopeUri
Register-SPWorkflowService –SPSite "http://intranet.contoso.com" –WorkflowHostUri $ScopeUri –AllowOAuthHttp -scopename $Scope -force
Set-WFScopeSecurity -ScopeUri $ScopeUri -Credential $mycredentials -SecurityConfiguration $SecurityConfig

Register-SPWorkflowService http://technet.microsoft.com/pt-br/library/jj663115.aspx
Remove-WFScope http://msdn.microsoft.com/pt-br/library/windowsazure/jj193255(v=azure.10).aspx
Set-WFScopeSecurity http://msdn.microsoft.com/pt-br/library/windowsazure/jj193229(v=azure.10).aspx

[]


quinta-feira, 14 de novembro de 2013

SharePoint 2013 - CU de Outubro 2013 versão 14.0.7108.5000 em vez de 14.0.7110.5000 na Administração Central

A versão do SharePoint 2013 mudou para 14.0.7108.5000 em vez de 14.0.7110.5000 informado no artigo da atualização KB 2825786.

A explicação é simples, os dlls da busca do produto mudaram para 14.0.7110.5000 e os do SharePoint para 14.0.7108.5000. Conforme seguintes screenshots:

Search:

SharePoint:

Be calm :)

[]

Project Server 2013 - Falha de Modo de Exibição Falha ao carregar o modo de exibição. [...]

Evento: "Falha de Modo de Exibição Falha ao carregar o modo de exibição. [...]"

em seguida: "Você não tem permissões para exibir qualquer projeto."

Inglês: "The View Failed to Load", and next one is "You do not have permissions to view".


Esse comportamento ocorre se o modo de exibição default for deletado. Existem duas formas para resolver isto.

1. Aperte Ok, escolhe um outro modo e aperte F5...

2. Ou execute as seguintes queries no banco de dados do PWA:

a.) Identifique o modo de exibição desejado (WVIEW_UID):

SELECT WVIEW_UID, WVIEW_NAME, WVIEW_DESCRIPTION, WVIEW_TYPE, WTABLE_UID
FROM pub.MSP_WEB_VIEW_REPORTS
ORDER BY WVIEW_TYPE, WVIEW_NAME

b.) Identifique o RES_UID do usuário com o comportamento indesejado:

SELECT * FROM pub.MSP_RESOURCES

c.) altere o modo de exibição baseado nas informações das consultas anteriores:

UPDATE pub.MSP_WEB_USERPROPERTIES
SET PROP_STRING=’Valor WVIEW_UID do passo 1’
WHERE RES_UID=’Valor RES_UID do passo 2’ AND PROP_NAME='ViewUidProjectCenterJSGridControl'

Pronto, boa sorte :)

[]

terça-feira, 5 de novembro de 2013

O acesso a bibliotecas do SharePoint utilizando o Windows Explorer está lento - WebDAV

Isto é um problema clássico da integração do SharePoint. O Windows interage nesse cenário com o IIS por meio do serviço local Webclient.

A lentidão ocorre normalmente no primeiro acesso, visto que Windows inicia o serviço por demanda - assim que abrimos uma biblioteca por meio do Windows Explorer. Você deveria alterar o "start up type" do serviço Webclient para "automatic" (>services.msc) e reiniciar o Windows.




About WebDAV


[]



Update:

Existe um White Paper da Microsoft que abrange todos os produtos envolvidos, segue o link:


[]

Features órfãs

w3wp.exe (0x0B7C) 0x130C SharePoint Foundation General 75fe Verbose Failed to determine definition for Feature with ID 'ad999ace-9999-9999-x9z9-999999999999'.  Skipping this feature for element querying consideration.



Features órfãs podem causar uma certa lentidão. Você poderá remover as referências por meio da ferramenta “Feature Admin”.

Trying to store a checked out item (sites/default.aspx) in the object cache. This may be because the checked out user is accessing the page, or it could be that the SharePoint system account has the item checked out.

Trying to store a checked out item (sites/default.aspx) in the object cache.  This may be because the checked out user is accessing the page, or it could be that the SharePoint system account has the item checked out.  To improve performance, you should set the portalsuperuseraccount property on the web application.

Este evento ocorre se o usuário “Super Reader” e “Super User” estão na configuração default. 
Estes usuários são responsável pelo cache dos objetos do SharePoint. Você precisa criar dois usuários e configurar eles no SharePoint como “Super Reader” e “Super User”.


Eu prefiro PowerShell para essa configuração, já tem um script pronto e a explicação do mesmo no artigo. E.g. 
 
$wa = Get-SPWebApplication -Identity "<WebApplication>"
$wa.Properties["portalsuperuseraccount"] = "<SuperUser>"
$wa.Properties["portalsuperreaderaccount"] = "<SuperReader>"
$wa.Update()

[]

sábado, 2 de novembro de 2013

Livro eletrônico gratuito: Microsoft Project Server 2010 Administrator's Guide




O livro da versão 2010 um "must read" para todos os administradores do SharePoint e futuros administradores do Project Server. 

A guia abrange todas as configurações possíveis do produto, como a configuração dos recursos, permissões, OLAP cubes e fluxos entre outros.


[]

Livro eletrônico gratuito: Microsoft Project Server 2013 Administrator's Guide




O livro é um "must read" para todos os administradores do SharePoint e futuros administradores do Project Server. 

A guia abrange todas as configurações possíveis do produto, como a configuração dos recursos, permissões, OLAP cubes e fluxos entre outros.


[]

sexta-feira, 1 de novembro de 2013

Critical Unknown SQL Exception 297 occurred.

OWSTIMER.EXE (0x1EF0) 0x17D4 SharePoint Foundation Database 5586 Critical Unknown SQL Exception 297 occurred. Additional error information from SQL Server is included below.  The user does not have permission to perform this action.


Solução:

Execute a seguinte query na instância do SQL do SharePoint. Você precisará mudar o usuário paro o usuário que executa o serviço do SharePoint Timer, conforme imagem.

GRANT VIEW SERVER STATE TO "contoso\administrator"




[]

A publicação de um fluxo de trabalho de aprovação (out of the box) usando o SharePoint Designer resulta em "Unexpected error associating workflow"

Acompanhado pela mensagem abaixo, os IDs variam:


(0, 0) Activity 'ID11544' validation failed: Cannot resolve Activity 'ID11528'.)
(0, 0) Activity 'ID11547' validation failed: Cannot resolve Activity 'ID11531'.)
(0, 0) Activity 'ID11520' validation failed: Cannot resolve Activity 'ID11501'.)
(0, 0) Activity 'ID11523' validation failed: Cannot resolve Activity 'ID11504'.)

Você precisará salvar o fluxo como arquivo em qualquer lugar e mudar o extensão do arquivo para .cab .

Nós precisamos extrair o arquivo workflow.xoml e renomear a extensão para xml. Você poderá abrir o arquivo com qualquer editor de texto.

Uma vez aberto procure pelo ID da atividade

Search "ID11528" (1 hit in 1 file)
 Line 446:           <ns0:AddToArrayListActivity Value="{ActivityBind ID11545,Path=ReturnValue}" x:Name="ID11544" ReturnValue="{ActivityBind ID11528,Path=ReturnValue}" />

As atividades pertencem a um passo especifico do fluxo, você deveria seguir a raiz até o inicio (para cima :), para identificar o passo do fluxo que cause o comportamento. 
No meu caso:

<ns2:OnTaskProcessCompleted Description="Quando o Processo da Tarefa For Concluído" x:Name="ID7">

Recrie o passo do fluxo identificado no SharePoint Designer utilizando as mesmas configurações/atividades e publica ele no SharePoint.

[]