Perspectivas Office365

Con el reciente cambio en la funcionalidad de sitios públicos de Office365 ha surgido una gran variedad de comentarios generando cierta incertidumbre en muchos usuarios sobre todo en lo que respecta al futuro de Office365.

Acerca de la retirada de la funcionalidad de Sitios públicos solo puedo decir que es algo que ya se venía previendo. Esta funcionalidad permitía a las empresas disponer de un sitio público pensado para la publicación de contenido y dirigido sobre a todo a pequeñas empresas. Desde el principio ha sido un servicio incompleto y muy limitado con la idea que solo fuera utilizado por pequeñas empresas, aunque personalmente no lo he recomendado nunca.

A partir de enero los nuevos clientes de Office365 no podrán utilizar este servicio, pero dispondrán de otras alternativas que se irán conociendo.

 

El hacer obsoleto el servicio de sitios públicos tiene cierta lógica en el planteamiento de Microsoft acerca del uso de Office365 y cómo se ofrecerán los servicios a lo largo de estos años. Office365 se concibe como una plataforma de productividad pensada para tareas internas o de colaboración corporativas más que una plataforma para la publicación de contenido. En este caso Windows Azure nos ofrece una gran variedad de funcionalidades para poder crear sites públicos ya que ha sido pensado como una plataforma donde poder desplegar nuestras soluciones y portales.

Para aquellos usuarios que quieran disponer de servicios integrados entre Windows Azure y Office365 podremos consumir los servicios de Office365 a través de las APIs de cada uno de sus servicios o incluso utilizar el API específica de Office365. Todo esto podremos hacerlo gracias a la integración de autenticación que podremos conseguir con Windows Azure Active Directory. Durante el DevCamp que se hico recientemente en Madrid pudimos aprender cómo hacer esta integración.

 

El caso de los sitios públicos no es el único caso en el que Microsoft ha generado cierta incertidumbre en cuanto a su futuro, las soluciones Sandbox por ejemplo, están desaconsejadas aunque de momento siguen estando disponibles. Las soluciones Sandbox nos permitían desplegar ciertas personalizaciones sobre SharePoint Online para adaptar su funcionamiento. Como alternativa se aconseja el uso de las Apps de SharePoint cuyo objetivo es aislar las personalizaciones de SharePoint en procesos externos a SharePoint integrándose a través del Modelo de Objetos Cliente o bien a través de los servicios REST de SharePoint.

 

Todo hace pensar que la tendencia será la de utilizar los servicios de Office365 en modo OOB y extraer todas las personalizaciones fuera de Office365 utilizando éste a través de las distintas APIs. Es decir, que Office365 se convertiría en una gran API con distintas implementaciones (como SharePoint o Exchange) que podríamos utilizar «as is» o bien crear nuestra propia implementación. Por ejemplo: Delve, es una implementación de Office Graph que podemos utilizar tal cual viene o bien crear nuestra propia implementación consumiendo el API de Office Graph, pero de momento no tiene pinta que podamos personalizar radicalmente el aspecto o funcionalidad de Delve.

 

Si pensamos entonces en «¿cuál es el sentido de todas estas limitaciones?», lo más acertado es pensar que el Cloud está forzando a Microsoft a replantear el ciclo de vida de sus servicios en Cloud para adaptarse al cambio lo más rápidamente. La velocidad en la que las compañías hacen un rollout de sus servicios en el Cloud es muchísimo mayor a lo que estábamos acostumbrados con las típicas instalaciones y despliegues on-premise. Por tanto Microsoft debe estar preparado a sacar nuevas funcionalidades ágilmente. Pero para ello:

  1. Debe hacer rollouts más pequeños en menos tiempo y retirar aquellas funcionalidades que no funcionan para centrarse en las que verdaderamente aportan valor.
  2. Debe disponer de un entorno homogéneo de funcionalidades y personalizaciones para ser capaz de hacer actualizaciones de la plataforma más rápidamente.

De este modo, en lugar de esperar tres años para sacar un nuevo conjunto de funcionalidades que vayan a la par con su versión de producto on-premise, la idea sería ir sacando pequeñas funcionalidades incompletas que en función de su éxito se seguirían mejorando o bien se descontinuarían.

Esto obligaría al equipo de Office365 a realizar actualizaciones de su plataforma de forma regular, teniendo en cuenta la gran variedad de personalizaciones que pueden llegar a hacer sus usuarios, las actualizaciones se podrían complicar provocando pérdidas de servicio o malfuncionamiento. La única forma de asegurar que una actualización no provocará un comportamiento inesperado sería tener un control absoluto de la plataforma, de ahí que la tendencia sea el reducir las personalizaciones sobre los servicios.

 

Todo esto no saldrá gratis, es posible que muchos usuarios pierdan el sentido de utilizar una plataforma donde la mejor forma de personalizarla sea implementando una solución a medida. A esto se sumaría la retirada de funcionalidades y de funcionalidades incompletas que darían la sensación de ser una plataforma poco robusta.

Sin duda se plantea un año de cambios en Office365 donde esperemos que se centren más en mejorar lo que ya hay que en añadir nuevas funcionalidades incompletas. Como desarrolladores, tendremos que centrarnos más en la integración con Office365 donde se abren nuevos escenarios y posibilidades.

 

Feliz 2015!

 

 

DISCLAIMER: El texto es una opinión personal del autor, no refleja ni representa la opinión de Microsoft ni de ninguno de sus trabajadores.

 

 

 

Cómo crear un developer site y catálogo de aplicaciones en SharePoint Online

El Developer site consiste en una plantilla de colección de sitios para el test, publicación y depuración de Apps de SharePoint. Si estamos desarrollando una app de SharePoint solo podremos depurar si utilizamos una colección de sitios de tipo Developer site.

 

El catálogo de aplicaciones permite administrar de forma centralizada las apps de Office y SharePoint disponibles para ser utilizadas desde las distintas colecciones de sitio. Por defecto el catálogo de aplicaciones no está disponible, por lo que habrá que crearlo desde la sección «aplicaciones» de la administración de SharePoint Online.

A continuación seleccionaremos «catálogo de aplicaciones» y «crear un nuevo sitio de catálogo de aplicaciones».

En la siguiente pantalla indicaremos los datos para crear una nueva colección de sitios de tipo Developer site que se utilizará como catálogo.

 

Error “Unable to open Lookup list” con columnas de taxonomía

Las columnas de taxonomía utilizan por debajo una referencia a la lista “TaxonomyHiddenList”. Durante una migración o una restauración de contenido podemos perder esta referencia provocando un error general al visualizar la columna o intentar utilizarla desde cualquiera de las vistas de una lista o biblioteca, encontrado en el log entradas del tipo:

System.Runtime.InteropServices.COMException: Esta lista no existe.  La página seleccionada contiene una lista que no existe. Es posible que otro usuario la haya eliminado.

Error while executing web part: Microsoft.SharePoint.SPException: Esta lista no existe.  La página seleccionada contiene una lista que no existe. Es posible que otro usuario la haya eliminado.

Si analizamos los logs por encima de estos errores encontraremos una traza con el ID de la lista utilizada:

Unable to open Lookup list ‘{60ef64a9-fc75-47c0-b2cf-f2b59001eea3}’.[Error was 0x81020026]

 

Para solucionar el problema debemos actualizar el esquema de la columna de taxonomía con el ID de la lista TaxonomyHiddenList y el ID del sitio raíz adecuados. El esquema de una columna lo encontraremos en la propiedad “SchemaXml” aunque si trabajamos con columnas localizadas utilizaremos la propiedad “SchemaXmlWithResourceTokens”.

Comparto con vosotros un script con el que podréis actualizar las referencias de cualquier columna de taxonomía https://gallery.technet.microsoft.com/Unable-to-open-lookup-list-e0c59b0b

if ((Get-PSSnapin «Microsoft.SharePoint.PowerShell» -ErrorAction SilentlyContinue) -eq $null) {

    Add-PsSnapin Microsoft.SharePoint.PowerShell

}

 

 

function Fix-UnableToOpenLookupList( [Parameter(Mandatory=$true)][string] $siteCollectionURL, [Parameter(Mandatory=$true)][string] $internalFieldName)

{

    $site = get-spsite $siteCollectionURL

    $web = $site.RootWeb

 

    $field = $web.Fields.GetFieldByInternalName($internalFieldName)

    if($field -eq $null)

    {

        Write-Host -ForegroundColor Red «ERROR: Missing $($internalFieldName) column.»

    }

    else

    {

        $txHiddenList = $web.Lists[«TaxonomyHiddenList»]

        if($txHiddenList -eq $null)

        {

            Write-Host -ForegroundColor Red «ERROR: Missing TaxonomyHiddenList.»

        }

        else

        {

            $strXmlSchema = «<r>$($field.SchemaXmlWithResourceTokens)</r>»

            $xmlSchema = [xml]$strXmlSchema

            $xmlfield = $xmlSchema.r.SelectSingleNode(«Field»)

            $xmlfield.List = «{$($txHiddenList.ID)

            $xmlfield.WebID = «{$($web.ID)

 

            $strXmlSchema = $xmlfield.OuterXml

            $field.SchemaXml = $strXmlSchema

            $field.Update($true)

 

            Write-Host -ForegroundColor Green «Done.»

        }

    }

}

 

 

Un ejemplo de un esquema de columna de tipo Taxonomía sería el siguiente XML.

<Field Type=»TaxonomyFieldType» DisplayName=»$Resources:EPContentManagement,EstimationTypeDisplayName;»

       List=»{60ef64a9-fc75-47c0-b2cf-f2b59001eea3}»

       WebId=»3c8e614a-be52-4210-93ac-8b40d3a85227″

       ShowField=»Term$Resources:core,Language;»

       StaticName=»EstimationType»

       Group=»$Resources:EPContentManagement,EPGroupName»

       ID=»{b04c8f3f-cbbf-4fdc-b646-639377c1395a}»

       SourceID=»{5ec29463-9b4b-403d-b6c1-958d526382b7}»

       Name=»EstimationType» Mult=»FALSE» Version=»6″ Required=»FALSE» EnforceUniqueValues=»FALSE» ShowInEditForm=»FALSE» ColName=»int3″ RowOrdinal=»0″>

  <Default />

  <Customization>

    <ArrayOfProperty>

      <Property>

        <Name>SspId</Name>

        <Value xmlns:q1=»http://www.w3.org/2001/XMLSchema» p4:type=»q1:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>7f76724b-947d-4aaf-a042-fcbe5a247852</Value>

      </Property>

      <Property>

        <Name>GroupId</Name>

      </Property>

      <Property>

        <Name>TermSetId</Name>

        <Value xmlns:q2=»http://www.w3.org/2001/XMLSchema» p4:type=»q2:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>cf28e84e-ab80-4727-a95e-55a183a63825</Value>

      </Property>

      <Property>

        <Name>AnchorId</Name>

        <Value xmlns:q3=»http://www.w3.org/2001/XMLSchema» p4:type=»q3:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>00000000-0000-0000-0000-000000000000</Value>

      </Property>

      <Property>

        <Name>UserCreated</Name>

        <Value xmlns:q4=»http://www.w3.org/2001/XMLSchema» p4:type=»q4:boolean» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>false</Value>

      </Property>

      <Property>

        <Name>Open</Name>

        <Value xmlns:q5=»http://www.w3.org/2001/XMLSchema» p4:type=»q5:boolean» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>false</Value>

      </Property>

      <Property>

        <Name>TextField</Name>

        <Value xmlns:q6=»http://www.w3.org/2001/XMLSchema» p4:type=»q6:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>{91e2b0ab-363b-47de-9c95-5d6cdad201eb}</Value>

      </Property>

      <Property>

        <Name>IsPathRendered</Name>

        <Value xmlns:q7=»http://www.w3.org/2001/XMLSchema» p4:type=»q7:boolean» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>false</Value>

      </Property>

      <Property>

        <Name>IsKeyword</Name>

        <Value xmlns:q8=»http://www.w3.org/2001/XMLSchema» p4:type=»q8:boolean» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>false</Value>

      </Property>

      <Property>

        <Name>TargetTemplate</Name>

        <Value xmlns:q9=»http://www.w3.org/2001/XMLSchema» p4:type=»q9:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance» />

      </Property>

      <Property>

        <Name>CreateValuesInEditForm</Name>

        <Value xmlns:q10=»http://www.w3.org/2001/XMLSchema» p4:type=»q10:boolean» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>false</Value>

      </Property>

      <Property>

        <Name>FilterAssemblyStrongName</Name>

        <Value xmlns:q11=»http://www.w3.org/2001/XMLSchema» p4:type=»q11:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>Microsoft.SharePoint.Taxonomy, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Value>

      </Property>

      <Property>

        <Name>FilterClassName</Name>

        <Value xmlns:q12=»http://www.w3.org/2001/XMLSchema» p4:type=»q12:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>Microsoft.SharePoint.Taxonomy.TaxonomyField</Value>

      </Property>

      <Property>

        <Name>FilterMethodName</Name>

        <Value xmlns:q13=»http://www.w3.org/2001/XMLSchema» p4:type=»q13:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>GetFilteringHtml</Value>

      </Property>

      <Property>

        <Name>FilterJavascriptProperty</Name>

        <Value xmlns:q14=»http://www.w3.org/2001/XMLSchema» p4:type=»q14:string» xmlns:p4=»http://www.w3.org/2001/XMLSchema-instance»>FilteringJavascript</Value>

      </Property>

    </ArrayOfProperty>

  </Customization>

</Field>

 

 

[Evento MadPoint] Novedades presentadas en la SharePoint Conference 2014

El próximo 13 de Junio nos juntaremos en MadPoint para ver todas las novedades presentadas el pasado mes de marzo en la SharePoint Conference 2014 en Las Vegas.

Hablaremos del reciente Service Pack 1, de las novedades para desarrolladores, del fin de InfoPath, de la nueva versión que se lanzará en 2015, de todas las novedades de Office 365 y del nuevo concepto del Office Graph y de Oslo.

Queremos que este evento sea participativo y nos gustaría abrir un poco de debate para comentar qué os parecen todas estas novedades y cómo veis el futuro de la plataforma. ¡Os animamos a participar!

 

Regístrate gratis:

http://www.eventbrite.com/e/madpoint-novedades-presentadas-en-la-sharepoint-conference-2014-tickets-11780416543

   

 

Datos de interés

  • Audiencia: Jefes de proyecto, decisores de negocio, desarrolladores.
  • Experiencia previa: Plataforma Office 365 y/o SharePoint 2013.
  • Fecha: Viernes 13 de Junio de 2014.
  • Hora: 16:00 – 19:00 (GMT +1).
  • Lugar: Colegio Tajamar, C/ Pío Felipe 12, 28038 MADRID . Sala Student Tech Club.
  • Evento gratuito

 

Agenda:

  • Resumen de las novedades del Service Pack 1 y de la SharePoint Conference
  • Novedades para desarrolladores de SharePoint y Office 365
  • Relaciones en la empresa, el nuevo Office Graph y Oslo
  • InfoPath ha muerto, ¿qué nos depara el futuro?

 

Página de registro (gratis):

http://www.eventbrite.com/e/madpoint-novedades-presentadas-en-la-sharepoint-conference-2014-tickets-11780416543

 

Te esperamos!!!

Office para iPad en detalle I

El pasado 25 de Marzo se anunció la disponibilidad de Office para iPad para descarga desde Apple Store. En concreto disponemos de las nuevas aplicaciones de Word, Excel y PowerPoint (También podemos utilizar OneNote pero ya estaba disponible anteriormente). Office para iPad consiste en una versión mucho más avanzada de Office mobile pensada para trabajar con documentos en un entorno iPad (iOs7) de forma conectada tanto para visualizar documentos como para editarlos/crearlos.

 

Licenciamiento

La versión de Office para iPad se ofrece de forma gratuita para visualización de documentos y para los usuarios que dispongan de una cuenta de Office365 dispondrán de la posibilidad de editar y crear documentos desde iPad.

Desde el App Store encontraremos tres apps distintas para Word, Excel y PowerPoint que podremos descargar de forma gratuita.

imageimageimage

 

Al abrirlas nos preguntará si deseamos utilizarla de forma gratuita o comprar Office 365 Home. Si seleccionamos la opción de compra podremos adquirirla con nuestro usuario de App store o bien utilizar una subscripción Office365 Home que hayamos adquirido previamente. En este caso si seleccionamos la opción “ya tengo una subscripción” nos preguntará por nuestro usuario de App Store y no por el de Office365.

Para activar Office para iPad con cuenta de Office365 accederemos a la aplicación desde la opción gratuita, a continuación seleccionaremos el icono del “carrito de compra” que encontraremos en la parte inferior de la aplicación y pulsaremos en “Activar iniciando sesión”. Aparecerá entonces una ventana donde tendremos que introducir las credenciales de una cuenta de Office365.

imageimage

 

Podemos utilizar con los planes de Office365: Office 365 Home, Office 365 Small Business Premium, Office 365 Midsize Business, Office 365 E3 and E4 , Office 365 Education A3 and A4, Office 365 ProPlus, y Office 365 University.

 

Características

Entre las características de Office para iPad destacan:

  • Experiencia de usuario similar a la de escritorio: disponemos de una misma experiencia desde el Ribbon aunque siempre guardando la apariencia de un app de iPad.
  • Integración con OneDrive y OneDrive empresarial: Podemos iniciar sesión en One Drive y seguir trabajando con los documentos que tuviéramos almacenados o guardarlos directamente sobre nuestro espacio de OneDrive.
  • Compartir documentos por email o mediante un enlace.
  • Edición simultánea de un documento: varios usuarios pueden editar sobre el mismo documento al mismo tiempo ( yo lo he probado desde iPad y Word Online).
  • Disponibilidad de muchas de las funcionalidades de escritorio: como imágenes, tablas, SmartArt, fórmulas, gráficos, formatos condicionales, filtros, …

 

Word para iPad

imageimageimageimage

 

imageimageimageimageimage

imageimageimage

 

Power Point para iPad

imageimageimageimageimageimage

Compartir ficheros desde OneDrive

El almacenamiento de OneDrive nos ofrece la capacidad de disponer de almacenamiento de documentos de trabajo desde cualquiera de nuestros dispositivos a través de Office365.

OneDrive nos proporciona un espacio de almacenamiento al que podemos acceder directamente desde la barra de Office365 o desde el cliente de sincronización de OneDrive que nos permite sincronizar el contenido de una carpeta local con OneDrive.

Una de las funcionalidades añadidas recientemente es la de poder compartir documentos de forma sencilla con compañeros dentro del mismo tenant o con usuarios externos que no tengan una suscripción a nuestro Office365.

 

OneDrive por debajo se basa en la funcionalidad de biblioteca de documentos de SharePoint sobre los perfiles de SharePoint, de manera que la funcionalidad de compartir se basará en la funcionalidad «Share documents» de SharePoint 2013 que permite compartir un documento o una carpeta de forma rápida sin necesidad de configurar permisos.

La funcionalidad de compartir aporta una gran ventaja respecto a versiones anteriores ya que no será necesaria la intervención de un administrador para compartir y dispondremos de una vista desde la que ver los usuarios con los que estamos compartiendo.

Desde el panel emergente encontraremos la opción «Share» o «Compartir» que mostrará un panel en el que podremos indicar los usuarios que queremos que tengan acceso para visualizar o editar (los permisos en este caso dependerán de si nosotros podemos editar el documento).

 

 

Los usuarios que podemos utilizar en Office365 podrán ser usuarios de nuestro tenant de Office365 o usuarios externos o invitados. Es importante diferenciar entre los tipos de usuarios ya que de momento los usuarios tendrán todas las funcionalidades de nuestro Office365 y los usuarios invitados los indicaremos a través de su email y solo podrán acceder a los documentos para consulta o edición.

Cuando compartimos un documento por defecto recibirá un correo con un enlace al documento. Al acceder al enlace se solicitará que indique el tipo de usuario:

  • Microsoft, para usuarios de Hotmail, Outlook.com o Xbox.
  • Corporativo, para usuarios con cuentas de Office365.

Para aquellas cuentas que no sean de tipo Microsoft (aka Gmail) tendrán que asociarla a una cuenta Microsoft.

 

 

 

 

Desde la opción «Compartido con» o «Shared with» podremos consultar qué usuarios tienen acceso y en qué nivel.

Dispondremos además de una vista en la que poder ver los usuarios pendientes de aceptar la invitación, las solicitudes de acceso y un histórico de solicitudes realizadas.

 

Otra de las funcionalidades interesantes solo para los usuarios de Office365 es la de «Compartidos conmigo» o «Shared with me«. Esta funcionalidad nos muestra todos los documentos que nos hayan sido compartidos.

Lo más interesante de esta funcionalidad es que esta vista utiliza el WebPart «SharedWithMeViewWebPart» que encontraremos en el namespace «Microsoft.SharePoint.Portal.WebControls». Este WebPart muestra con un aspecto similar al de una biblioteca los documentos que se han compartido con el usuario utilizando el motor de búsqueda para calcular los elementos.

De modo que si nos acaban de compartir un documento, es posible que durante unos minutos no veamos ese documento en esta opción ya que habrá que esperar hasta que se haya realizado la siguiente indexación.

Dónde puedo descargar el cliente Office 2013 y Lync 2013 en Office365?

Si el administrador nos habilita el uso de Office o Lync podremos descargarnos el software desde el propio Office365 y utilizarlo con la licencia de Office365.

desde cualquiera de los servicios de Office365 dispondremos de la opción “Configuración de Office365” en el área de nuestro perfil de la barra superior. Desde esta pantalla podremos modificar las preferencias de nuestro usuario de Office365 y descargarnos el software habilitado.

image

Encontraremos una sección con los enlaces para descarga del cliente Office 2013, Lync 2013, herramientas de escritorio y una sección donde poder encontrar los enlaces de las aplicaciones para dispositivos móviles o tabletas (Windos Phone, iPhone, iPad, BlackBerry, Android).

Cuando instalemos el cliente Office no nos pedirá código de licencia, y será al arrancarlo cuando tendremos que indicar una cuenta de usuario de Office365 válida. Office utilizará esta cuenta para validar la licencia y poder integrarse con otros servicios como SharePoint Online.

imageimage

image

image

Cómo activar ISE para PowerShell

La consola de PowerShell ISE (Windows PowerShell Integrated Scripting Environment ) nos proporciona un entorno avanzado para escribir y editar scripts de PowerShell, probar incluso poder depurarlos.

Por defecto la consola viene deshabilitada por lo que tendremos que activarla como una característica de Windows desde el Server Manager:

  • Desde la consola de Administración de servidor > seleccionamos “Características”
  • En la parte de la derecha seleccionamos “Agregar características”
  • Marcamos la característica “Windows PowerShell Integrated Scripting Environment” y aceptamos. Es necesario que previamente tengamos instalado .Net Framework 3.5 SP1.

imageimageimage

 

image

Cambiar la foto del perfil de Office365

La foto del usuario de Office365 se almacena internamente en el AD asociado en el atributo thumbnailPhoto, para cambiarla podemos realizarlos desde varios sitios:

Desde el perfil de SharePoint:

image

Desde el perfil de OWA(Outlook Web Access):

image

Al final nos aparecerá la misma página emergente con una url del tipo https://outlook.office365.com/ecp/PersonalSettings/EditAccount.aspx?rfr=olk&chgPhoto=1&exsvurl=1&realm=mysuscription.onmicrosoft.com&IsDlg=1&wa=wsignin1.0

image

 

Siendo administrador también es posible subir las fotos para otros usuarios desde PowerShell (blog Marc Valk).