sexta-feira, 28 de fevereiro de 2014

Caracteres Especiais e SharePoint

Todos os sistemas envolvidos pelo SharePoint criam uma oportunidade para o uso dos caracteres não suportados. O que é permitido no SharePoint não é permitido no SQL e o que é permitido no Project Server não é permitido no AD.




Até a posição do caracter pode determinar se o caracter é suportado ou não. Por exemplo o caracter _ é invalido no AD se o ID do usuário inicia com ele, porém é aceitado em qualquer outro lugar no ID....

Seguem os caracteres não suportados para cada tecnologia envolvida:

1. SharePoint

(~, #, %, &, *, {}, \, :, <>, /, +, |, “)

2. SQL Server 

/  \   : [  ]  .  =

3. NTFS

" / \ * ? < > | :

4. LDAP

(  )  \  NUL

Considerando a informação acima, podemos chamar de "Best Practices" evitar o uso dos seguintes caracteres no SharePoint:

/ " ; : < > | [ ] , . ' ? ~ ` ! $ % ^ & * ( ) - + = { }

As limitações do SharePoint - http://technet.microsoft.com/en-us/library/ff919564(v=office.14).aspx

O sistema de arquivos NTFS - http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29

Abraços

quarta-feira, 26 de fevereiro de 2014

SharePoint 2013 - lançamento do SP1

O service pack numero um foi liberado, seguem os links/KBs.

Service Pack 1 para Microsoft SharePoint Server 2013 (KB2817429)http://support.microsoft.com/kb/2817429
Service Pack 1 para Microsoft SharePoint Foundation 2013 (KB2817439)
Service Pack 1 para Microsoft Project Server 2013 (KB2817434) http://support.microsoft.com/kb/2817434
Service Pack 1 para Microsoft SharePoint Server 2013 Language Pack (KB2817438) http://support.microsoft.com/kb/2817438
Service Pack 1 para Microsoft Office Web Apps Server (KB2817431) http://support.microsoft.com/kb/2817431
Service Pack 1 para Microsoft Office 2013 (KB2817430) 32/64-Bit Edition http://support.microsoft.com/kb/2817430

Essa planilha contem detalhes dos SPs


Boa atualização!


[]

segunda-feira, 24 de fevereiro de 2014

SharePoint - Sys.WebForms.PageRequestManagerServerErrorException: An unexpected error occured.

O evento descrito ocorreu na edição de uma pagina no SharePoint, conforme abaixo:

Evento no UI (User Interface):


"Sys.WebForms.PageRequestManagerServerErrorException: An unexpected error occured."

Evento nos logs do SharePoint:

w3wp.exe (0x182C) 0x2720 SharePoint Foundation Runtime tkau Unexpected System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))    at Microsoft.SharePoint.Library.SPRequest.GetListsWithCallback(String bstrUrl, Guid foreignWebId, String bstrListInternalName, Int32 dwBaseType, Int32 dwBaseTypeAlt, Int32 dwServerTemplate, UInt32 dwGetListFlags, UInt32 dwListFilterFlags, Boolean bPrefetchMetaData, Boolean bSecurityTrimmed, Boolean bGetSecurityData, Boolean bPrefetchRelatedFields, ISP2DSafeArrayWriter p2DWriter, Int32& plRecycleBinCount)     at Microsoft.SharePoint.SPListCollection.EnsureListsData(Guid webId, String strListName)     at Microsoft.SharePoint.SPListCollection.Undirty()     at Microsoft.SharePoint.SPBaseCollection.GetEnumerator()     at Microsoft.SharePoint.SPWeb.GetCatalog(SPListTemplateType typeCatalog)     at Microsoft.SharePoint.Publishing.WebControls.MediaWebPart.get_WebPartAdderId()     at Microsoft.SharePoint.Publishing.WebControls.InsertMediaRibbonButton.RegisterRequiredScripts()     at Microsoft.SharePoint.Publishing.WebControls.InsertMediaRibbonButton.OnPreRender(EventArgs e)     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

Solução / Causa:

Acima ocorre normalmente se os grupos default do SharePoint foram deletados / alterados. Nesse caso aqui "Leitores do Recurso de Estilo" que eu recriei. Você pode editar a pagina assim que você recriou o(s) grupo(s).

Grupos padrão do SharePoint no SharePoint Server

[]

terça-feira, 18 de fevereiro de 2014

SharePoint - Hora do SharePoint permanece no horário de verão

Bom, esse artigo chega um pouco tarde de qualquer forma espero que ajuda! O horário de verão está definido no arquivo timezone.xml. SharePoint não altera o horário de verão em uma versão pre-SP2 porque o governo brasileiro aprovou um decreto que determina o horário de verão até 2019 recentemente.




Existem duas formas para resolver isso. Eu recomendo aplicar a opção um porque alterações nos arquivos de configuração podem gerar futuros problemas, porém a escolha depende do seu cenário. 


UPDATE: As atualizações não atualizam o horário de verão no SharePoint, adicionarei em breve mais detalhes!


1. Aplique a atualização do Windows KB2863058 e em seguida o SP2 no SharePoint 2010 - KB2687453 ou KB2687452 caso o Project Server esteja instalado.


2. Altere o arquivo timezone.xml (c:\program files\common files\microsoft shared\web server extentions\14\config\).


a.) Abre o arquivo em um editor de texto e localize as seguintes linhas:


<TimeZone ID="8" Name="(UTC-03:00) Brasilia" Hidden="FALSE">

      <Bias>180</Bias>
      <StandardTime>
        <Bias>0</Bias>
        <Date>
          <Month>2</Month>
          <Day>4</Day>
          <Hour>23</Hour>
          <Minute>59</Minute>
          <Second>59</Second>
          <Milliseconds>999</Milliseconds>
          <DayOfWeek>6</DayOfWeek>

b.) Altere <Day>4</Day> para <Day>3</Day> (terceiro domingo).

Você precisará deletar o cache da configuração do SharePoint para aplicar essa alteração imediatamente, conforme artigo - SharePoint - PowerShell script para limpar o cache da configuração.

Update: As atualizações do Windows não influenciam no SharePoint nesse comportamento especifico... a ultima atualização que deveria ter resolvido acima é seguindo o "Centro de Ajuda e Suporte para Horário de Verão" a atualização cumulativa do agosto de 2011.

O arquivo timezone.xml não está listado nas atualizações anteriores e não vai ser listado nas atualizações futuras....


Eu recomendo a controlar a configuração antes da mudança no ano que vem, visto que o horário de verão termina no ano 2015 no quarto domingo de mês fevereiro, conforme tabela abaixo:



Ano
Data de final do horário de verão
Domingo numero
Data de início do horário de verão
Domingo numero
2013
Domingo, 17 de Fevereiro, 00:00
3
Domingo, 20 de Outubro, 00:00
3
2014
Domingo, 16 de Fevereiro, 00:00
3
Domingo, 19 de Outubro, 00:00
3
2015
Domingo, 22 de Fevereiro, 00:00
4
Domingo, 18 de Outubro, 00:00
3
2016
Domingo, 21 de Fevereiro, 00:00
3
Domingo, 16 de Outubro, 00:00
3
2017
Domingo, 19 de Fevereiro, 00:00
3
Domingo, 15 de Outubro, 00:00
3
2018
Domingo, 18 de Fevereiro, 00:00
3
Domingo, 21 de Outubro, 00:00
3
2019
Domingo, 17 de Fevereiro, 00:00
3
Domingo, 20 de Outubro, 00:00
3

Resumindo: Teremos uma tarefa administrativa a mais no ano que vem (também no SP 2013, visto que a configuração é a mesma). 

"Vertrauen ist gut Kontrolle ist besser" (Confiar é bom, controlar é melhor)

Update 02/2015: O artigo http://support.microsoft.com/kb/888253/en menciona que o tag <Day> é o contador das semanas e representa o dia da transição do horário de verão para o horário normal. O dia de transição no caso do Brasil é o domingo e o tag <Day> deve ter o valor 3 no ano 2015.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
<Day>n</Day> represents the nth week of the month when standard time or daylight saving time starts, where n is a number that represents the transition day. If the transition day occurs on a Sunday, the value "1" indicates the first Sunday of the month. The value "2" indicates the second Sunday of the month, and so on. The value "5" indicates the last Sunday of the month.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

TimeZone Element (Regional Settings)

History Element (Regional Settings)

How to manually update the DST period for a time zone definition in Windows SharePoint Services by modifying the Timezone.xml file

[]

domingo, 16 de fevereiro de 2014

SharePoint 2010 - Atualização cumulativa 02/2014



A atualização cumulativa 02/2014 foi liberado, seguem os links dos KBs e das atualizações.
Obervação: A instalação do SP2 é um requirimento.

Os KBs:

KB 2863938 - SharePoint Foundation 2010
KB 2863913 - SharePoint Server 2010

KB 2863917 - SharePoint Server 2010 com Project Server

Os downloads:


[]

sexta-feira, 14 de fevereiro de 2014

Workflow Manager - Failed to query the Oauth S2S metadata endpoint

Eu configurei esses dias um novo ambiente para desenvolver fluxos de trabalho e encontrei um comportamento interessante. 
Observação: Eu entendo abaixo como workaround e não recomendo a seguir esses passos em um ambiente de produção.

O cenário é seguinte: Web Application configurado para utilizar http e o Workflow Manager (WFM) para não aceitar conexões http.



1. Registrando o WFM no SharePoint resulta em seguinte evento no Powershell:

Register-SPWorkflowService -SPSite "http://sp2013dev/" -WorkflowHostUri "https://sp2013dev.contoso.com:12290" -force

Register-SPWorkflowService : Failed to query the OAuth S2S metadata endpoint
at URI 'http://sp2013dev/_layouts/15/metadata/json/1'. Error details: 'The
metadata endpoint responded with an error. HTTP status code: Forbidden.'. HTTP
headers received from the server - ActivityId:
d5911e15-e529-469b-887a-24629551f543. NodeId: SP2013DEV. Scope: /SharePoint.
Client ActivityId : 3b09edcf-2fee-4ea8-98b0-699c58fba14e.
At line:1 char:1
+ Register-SPWorkflowService -SPSite "http://sp2013dev/" -WorkflowHostUri
"https:/ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
    + CategoryInfo          : InvalidData: (Microsoft.Share...WorkflowService:
   RegisterSPWorkflowService) [Register-SPWorkflowService], InvalidRequestExc
  eption
    + FullyQualifiedErrorId : Microsoft.SharePoint.WorkflowServices.PowerShell
   .RegisterSPWorkflowService

Nos logs do SharePoint o seguinte evento:

02/13/2014 05:30:41.01   PowerShell.exe (0x17E0)          0x002C       SharePoint Foundation  PowerShell  6tf2   High         Microsoft.Workflow.Client.InvalidRequestException: Failed to query the OAuth S2S metadata endpoint at URI 'http://sp2013dev/_layouts/15/metadata/json/1'. Error details: 'The metadata endpoint responded with an error. HTTP status code: Forbidden.'. HTTP headers received from the server - ActivityId: 71ac11da-2767-4d34-b9fd-0537e08c0bf0. NodeId: SP2013DEV. Scope: /SharePoint. Client ActivityId : 05cdfb77-c6c3-4526-9686-1e09bf084eee. ---> System.Net.WebException: The remote server returned an error: (400) Bad Request.     at Microsoft.Workflow.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)     at Microsoft.Workflow.Client.HttpGetResponseAsyncResult`1.End(IAsyncResult result)     at Microsoft.Workflow.Client.ClientHelpers.SendRequest[T](HttpWebRequest request, T content)     --- End of inner exception stack trace ---     at Microsoft.Workflow.Client.ClientHelpers.SendRequest[T](HttpWebRequest request, T content)     at Microsoft.Workflow.Client.WorkflowManagementClient.SendRequest[T](HttpWebRequest request, T content)     at Microsoft.Workflow.Client.ScopeManager.PublishScopeInternal(ScopeDescription description, String[] pathSegments)     at Microsoft.SharePoint.WorkflowServices.WorkflowServerPairingContext.EnsureFarmScope(Boolean configureOAuth)     at Microsoft.SharePoint.WorkflowServices.PowerShell.RegisterSPWorkflowService.InternalProcessRecord()     at Microsoft.SharePoint.PowerShell.SPCmdlet.ProcessRecord()    05cdfb77-c6c3-4526-9686-1e09bf084eee

Todos os eventos indicaram problemas no acesso do endpoint "http://sp2013dev/_layouts/15/metadata/json/1" e realmente o acesso na pagina utilizando o navegador  resultou em 403 (forbidden).

Eu executei o mesmo comando com o parâmetro -AllowOAuthHttp com sucesso, sem problemas no endpoint, conforme abaixo:



Eu removi em seguida o Workflow Service Application com o comando Get-SPWorkflowServiceApplicationProxy | Remove-SPServiceApplicationProxy para reproduzir o problema novamente.

E desta vez consegui registar o WFM sem o parametro -AllowOAuthHttp....



PS C:\Users\administrator.CONTOSO> Get-SPWorkflowServiceApplicationProxy | Remove-SPServiceApplicationProxy

Confirm
Are you sure you want to perform this action?
Performing operation "Remove-SPServiceApplicationProxy" on Target
"WorkflowServiceApplicationProxy Name=Workflow Service Application Proxy".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):y
PS C:\Users\administrator.CONTOSO> Register-SPWorkflowService -SPSite "http://sp2013dev/" -WorkflowHostUri "https://sp2013dev.contoso.com:12290" -force
WARNING: Overwriting existing scope named "SharePoint" in the workflow server.
 If another SharePoint farm was registered using this scope, that farm may not
be able to continue working with the workflow server unless re-registered under
 another scope name.
PS C:\Users\administrator.CONTOSO>


[]



terça-feira, 11 de fevereiro de 2014

SharePoint 2013 - Distributed Cache (App Fabric) Error Codes



O cache distribuido é um conjunto de caches e qualquer troubleshooting no SharePoint 2013 requer que este recurso esteja num estado saudável. Seguem os códigos de erro que eu usarei nos próximos artigos relacionados ao distributed cache:



Error code string
DataCacheErrorCode constant
ERRCA0001
CacheItemVersionMismatch
ERRCA0002
RegistryKeyOpenFailure
ERRCA0003
InvalidArgument
ERRCA0004
UndefinedError
ERRCA0005
RegionDoesNotExist
ERRCA0006
KeyDoesNotExist
ERRCA0007
RegionAlreadyExists
ERRCA0008
KeyAlreadyExists
ERRCA0009
NamedCacheDoesNotExist
ERRCA0010
MaxNamedCacheCountExceeded
ERRCA0011
ObjectLocked
ERRCA0012
ObjectNotLocked
ERRCA0013
InvalidCacheLockHandle
ERRCA0014
InvalidEnumerator
ERRCA0015
NotificationInvalidationNotSupported
ERRCA0016
ConnectionTerminated
ERRCA0017
RetryLater
ERRCA0018
Timeout
ERRCA0019
ClientServerVersionMismatch
ERRCA0020
SerializationException
ERRCA0021
ServerNull
ERRCAdmin001
CacheAdminHostsRunning
ERRCAdmin002
CacheAdminRequestTimeoutResultUnknown
ERRCAdmin003
CacheAdminTimeout
ERRCAdmin004
CacheAdminNullArgs
ERRCAdmin005
CacheAdminUnknownError
ERRCAdmin006
CacheAdminQuorumNotUp
ERRCAdmin007
CacheAdminStoreAccessFailure
ERRCAdmin008
CacheAdminHostsNotRunning
ERRCAdmin009
CacheAdminCacheNotPresent
ERRCAdmin010
CacheAdminHostNotPresent
ERRCAdmin011
CacheAdminCacheAlreadyPresent
ERRCAdmin012
CacheAdminRegionNotPresent
ERRCAdmin013
CacheAdminNoQuorumIfHostStopped
ERRCAdmin014
CacheAdminNoSeedNodes
ERRCAdmin015
CacheAdminHostRunning
ERRCAdmin016
CacheAdminHostNotRunning
ERRCAdmin017
CacheAdminConfigDeleteHostError
ERRCAdmin018
CacheAdminConfigAddHostError
ERRCAdmin019
CacheAdminDefaultCacheCreateFailure
ERRCAdmin020
CacheAdminDeleteInProgress
ERRCAdmin021
CacheAdminCacheCreationInconsistencyFailure
ERRCAdmin022
CacheAdminHostNameResolveFailure
ERRCAdmin023
CacheAdminNoHosts
ERRCAdmin024
CacheAdminClusterRefreshFailed
ERRCAdmin025
CacheAdminClusterTimeout
ERRCAdmin026
CacheAdminRemoteRegistryAccessFailed
ERRCAdmin027
CacheAdminWindowsAccountInvalid
ERRCAdmin028
CacheAdminWindowsAccountAlreadyPresent
ERRCAdmin029
CacheAdminWindowsAccountNotPresent
ERRCAdmin030
CacheAdminGrantClientAccountErrorFormat
ERRCAdmin031
CacheAdminRevokeClientAccountErrorFormat
ERRCAdmin032
CacheAdminInvalidOperation
ERRCAdmin033
CacheAdminClusterNotReady
ERRCAdmin034
CacheAdminHostRefreshFailed
ERRPS001
CacheAdminClusterSettingsReadError
ERRPS002
CacheAdminInvalidClusterSettings
ERRPS003
CacheAdminMaxCachesCreated
ERRPS004
CacheAdminPortsDuplicated
ERRPS005
CacheAdminClusterDown
ERRPS006
CacheAdminStatsIncorrect
ERRPS007
CacheAdminInvalidSecuritySettings
ERRPS008
CacheAdminInstallPathReadError
ERRPS009
CacheAdminCacheNotCreated
ERRPS010
CacheAdminCacheNotRemoved


E os sub-códigos:

Error substatus string
DataCacheErrorSubStatus constant
ES0001
None
ES0002
ES0003
ES0004
ReplicationQueueFull
ES0005
KeyLatched
ES0006
ES0007