Rodrigo Romano – MVP SharePoint Server

Registros de um Especialista SharePoint :)

Posts Tagged ‘SharePoint

MVP Showcast – 2014

leave a comment »


Olá SharePointers,

Anualmente acontece uma série de Webcasts realizados por MVPs brasileiros que abordam assuntos diversos de suas especialidades. São 3 trilhas, infra-estrutura, desenvolvimento e produtividade.

O conteúdo das palestras são bem interessantes, vale a pena conferir. O site do evento é: https://mvpshowcast.azurewebsites.net.

Eu participarei desse evento fazendo um webcast junto com o Carlos Citrangulo falando sobre produtividade com o SharePoint 2013. Inscrevam-se: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032594716&Culture=pt-BR&community=0

Abraços!

Written by Rodrigo Romano

August 26, 2014 at 10:53 am

Posted in Dicas, SharePoint

Tagged with , , ,

Office 365 + Salesforce

leave a comment »


Olá SharePointers,

Para quem ainda não sabe, a Microsoft investe cada vez mais em integração de forma a consolidar a sua plataforma de nuvem como sólida e líder de mercado.

A plataforma Office 365 (SharePoint, Exchange, Lync e outros produtos – http://office.microsoft.com/en-001/business/what-is-office-365-for-business-FX102997580.aspx) assume um papel interessante no mercado e sua oferta e funcionalidades fazem com que o produto seja cada vez mais lúder de mercado.

Gartner_Social_Software_Workplace.png

Magic Quadrant for Social Software in the Workplace

Além disso, vimos “recentemente” a aquisição e integração do Yammer com essa plataforma, adicionando recursos ainda mais intereressantes para o usuário final.

Não bastasse isso, foi anunciado há algum tempo uma integração forte com o Salesforce, vejam o anúncio aqui: http://www.microsoft.com/en-us/news/press/2014/may14/05-29mayannouncementpr.aspx.

Essa notícia não é propriamente nova, mas como muitos desconhecem achei que valia a pena escrever um post e comentar sobre o assunto.

O que vocês acham disso?

 

Abraços 🙂

Written by Rodrigo Romano

August 22, 2014 at 2:59 pm

SharePoint Apps: Como utilizar o People Picker?

leave a comment »


Olá SharePointers,

Hoje vou falar sobre como utilizar o People Picker quando estamos desenvolvendo uma app para SharePoint.

O primeiro passo, é carregar os scripts que serão utilizados (ver imagem abaixo) e colocar a div quer será utilizada para criação do controle dinamicamente.

image

 

Após a criação dos controles acima, basta colocar o código abaixo em um arquivo .js e adicioná-lo a página como referência que o People Picker funcionará perfeitamente.

 

// Run your custom code when the DOM is ready. $(document).ready(function () { // Specify the unique ID of the DOM element where the // picker will render. initializePeoplePicker('peoplePickerDiv'); }); // Render and initialize the client-side People Picker. function initializePeoplePicker(peoplePickerElementId) { // Create a schema to store picker properties, and set the properties. var schema = {}; schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup'; schema['SearchPrincipalSource'] = 15; schema['ResolvePrincipalSource'] = 15; schema['AllowMultipleValues'] = true; schema['MaximumEntitySuggestions'] = 50; schema['Width'] = '280px'; // Render and initialize the picker. // Pass the ID of the DOM element that contains the picker, an array of initial // PickerEntity objects to set the picker value, and a schema that defines // picker properties. this.SPClientPeoplePicker_InitStandaloneControlWrapper(peoplePickerElementId, null, schema); } // Query the picker for user information. function getUserInfo() { // Get the people picker object from the page. var peoplePicker = this.SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan; // Get information about all users. var users = peoplePicker.GetAllUserInfo(); var userInfo = ''; for (var i = 0; i < users.length; i++) { var user = users[i]; for (var userProperty in user) { userInfo += userProperty + ': ' + user[userProperty] + '<br>'; } } $('#resolvedUsers').html(userInfo); // Get user keys. var keys = peoplePicker.GetAllUserKeys(); $('#userKeys').html(keys); // Get the first user's ID by using the login name. getUserId(users[0].Key); } // Get the user ID. function getUserId(loginName) { var context = new SP.ClientContext.get_current(); this.user = context.get_web().ensureUser(loginName); context.load(this.user); context.executeQueryAsync( Function.createDelegate(null, ensureUserSuccess), Function.createDelegate(null, onFail) ); } function ensureUserSuccess() { $('#userId').html(this.user.get_id()); } function onFail(sender, args) { alert('Query failed. Error: ' + args.get_message()); }

Bem simples, não acharam?

 

Abraços! 😀

 

Referência

http://msdn.microsoft.com/en-us/library/jj713593.aspx

Written by Rodrigo Romano

August 11, 2014 at 9:47 am

Troubleshooting SharePoint/Office365: Sideloading of apps is not enabled on this site

leave a comment »


Olá SharePointers,
Estava desenvolvendo uma SharePoint Hosted app para o Office 365 e, para minha surpresa, apareceu o erro abaixo.
Esse erro acontecia quando quando tentava fazer o deploy via Visual Studio.

 

Para resolver esse erro, basta rodar o script que está disponível nesse link: http://1drv.ms/1qDs0oy

 

Referência:

http://blogs.msdn.com/b/officeapps/archive/2013/12/10/enable-app-sideloading-in-your-non-developer-site-collection.aspx

Abraços! 😀

Written by Rodrigo Romano

August 2, 2014 at 12:28 pm

Troubleshooting: Failed to call GetTypes on assembly Microsoft.Office.TranslationServices

leave a comment »


 

Olá SharePointers,

Hoje peguei um cenário “diferente”.

Após aplicar o Cumulative Update de Março/2013 no SharePoint 2013 RTM, todas as vezes que tentava rodar o Configuration Wizard aparecia o erro abaixo:

Failed to initial the upgrade sequence.

An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown. Additional exception information: Exception of type ‘Microsoft.SharePoint.Upgrade.SPUpgradeException’ was thrown.

Fui no REGEDIT e alterei o valor da chave SetupType para CLEAN_INSTALL. O caminho da chave é: "HKLM\Software\Microsoft\Shared Tools\Web Server Extensions\14.0\WSS".

Após esse processo, rodei novamente o erro abaixo apareceu:

image

 

Após verificar o Cumulative Update, identifiquei que o que foi utilizado era para SharePoint Foundation e não SharePoint Server, o que fez com que algumas dlls não estivessem mais disponíveis.

 

Abraços 😀

Written by Rodrigo Romano

July 30, 2014 at 3:54 pm

SharePoint e Javascript – Amor ou ódio?

leave a comment »


Olá SharePointers,

Javascript e suas bibliotecas assumem um papel cada vez mais relevante na vida de um desenvolvedor moderno. É comum encontrar pessoas que digam que atualmente é uma das “linguagens” mais importantes para um desenvolvedor de SharePoint. Sei que esse ponto é controverso, mas esse é um tema que está cada vez mais presente no nosso dia-a-dia.

Notamos que a Microsoft fez um grande esforço para “mudar” um pouco a nossa cabeça e colocou no SharePoint 2013 o conceito de Apps, que, de uma forma bem simplista, é HTML e JavaScript.

Para quem ainda não está familiarizado, David Mann (SharePoint MVP – EUA) fez um curso muito interessante no Pluralsight: http://pluralsight.com/training/Courses/TableOfContents/developing-sharepoint-2013-javascript.

O SharePoint contém uma quantidade enorme de funções prontas que podem ser reutilizadas para nos ajudar durante o desenvolvimento de alguma solução. Algumas delas não estão documentadas no MSDN.

Para ajudar no desenvolvimento, existem alguns plugins para o Visual Studio. Dentre eles, recomendo esse aqui: http://visualstudiogallery.msdn.microsoft.com/288a2b0f-1357-47b4-8215-1134c36bdf30

Voltando ao código, vou citar algumas funções que podem ajudar bastante no desenvolvimento e não estão documentadas em lugar nenhum:

  • url = SP.Utilities.UrlBuilder.replaceOrAddQueryString(url, key, value): Esse método recebe uma URL e modifica ou inclui um parâmetro na QueryStrig. O Retoro é a URL modificada.
  • url = SP.Utilities.UrlBuilder.removeQueryString(url, key): Esse método remove um parâmetro da query string (e seu valor) de uma URL.
  • url = SP.Utilities.UrlBuilder.urlCombine(url1, url2): Combina duas URLs e garante que não tenha nenhuma “/” redundante.

 

O ideal, antes de sair desenvolvendo, é pensar se o que precisamos fazer não existe no SharePoint. E, se existir, tentar entender como ele realiza tal operação e fazermos do mesmo jeito.

Referências Adicionais

http://msdn.microsoft.com/en-us/library/office/ee549589(v=office.14).aspx

http://chuvash.eu/2012/01/24/parameterize-an-javascript-object-and-create-url/

http://www.wictorwilen.se/Post/Working-with-URLs-in-SharePoint-2010-JavaScripts.aspx

 

Abraços!

Written by Rodrigo Romano

July 11, 2014 at 9:32 am

SharePoint: Alterações no banco de dados

leave a comment »


Olá SharePointers,

É muito comum ouvirmos falar que qualquer alteração nos bancos de dados do SharePoint resultam em perda da garantia do produto.

Mas, já pararam para pensar o que realmente acontece? Quais mudanças implicam na perda da garantia? O que deve ser feito em caso de alguém descobrir essas alterações?

Vamos lá:

Primeiro, vamos identificar o que não é suportado:

  • Adicionar triggers no banco de dados
  • Adicionar novos índices ou alterar os existentestables
  • Adicionar, modificar ou deletar qualquer chave primária ou estrangeira
  • Modificar ou deletar stored procedures
  • Chamar stored procedures diretamente, com exceção das descritas em SharePoint Protocols documentation

    (http://msdn.microsoft.com/en-us/library/cc339475.aspx)

  • Adicionar novas stored procedures
  • Adicionar, modificar ou deletar qualquer dado de qualquer tabela referente ao produto
  • Adicionar, modificar ou deletar qualquer coluna nas tabelas do produto
  • Fazer qualquer modificação ao schema do banco de dados
  • Adicionar tabelas em qualquer um dos bancos do produto
  • Trocar o collation do banco de dados
  • Rodar a stored procedure DBCC_CHECKDB WITH REPAIR_ALLOW_DATA_LOSS (Entretanto, rodar DBCC_CHECKDB WITH REPAIR_FAST e REPAIR_REBUILD é suportado, porque esses comandos só atualizam os índices do banco associado.)
  • Habilitar SQL Server change data capture (CDC)
  • Habilitar SQL Server transactional replication
  • Habilitar SQL Server merge replication
  •  

    Caso seja descoberto alguma dessas modificações (durante uma call com o suporte da Microsoft) você deverá fazer uma das ações abaixo:

    • Fazer um restore do banco de dados para a última versão que não contém essas modificações
    • Roll back em todas as modificações do banco de dados

     

    Embora todas essas modificações se refiram a alterações, operações de leitura também são proibidas.

    Qualquer operação de leitura programaticamente ou manual pode causar locks dentro do SQL Server e, com isso, resultar em queda de performance. Sendo assim, qualquer leitura ao banco de dados que não seja utilizando um artefato providenciado pelo time de desenvolvimento do SharePoint ou pelo time de suporte é considerado “não suportado” e são barreiras para que o time de suporte continue te atendendo.

    Para quem quiser ler mais sobre o assunto, acesse esse link: http://support.microsoft.com/kb/841057/en-us

    Abraços 😀

    Written by Rodrigo Romano

    July 10, 2014 at 11:41 am