jueves, 23 de junio de 2016

La version destino del sitio de SharePoint es menor a la soportada por la aplicación SharePoint 2013 local o en nuestras instalaciones (On Premises)

Escenario:

Un App para SharePoint o Add-in como lo renombro Microsoft ahora que deseamos probar en un servidor de desarrollo. El App de hecho esta subida en el Seller Dashboard de Microsoft para Office pero al realizar desde Visual Studio 2015 el deployment ahora nos muestra el siguiente mensaje:


The target version of the SharePoint site is 15.0.4569.1000, which is lower than the minimum supported SharePoint version of the app

Esto es porque en el manifiesto del app es decir el archivo AppManifest.xml esta indicada la versión mínima requerida de SharePoint para ejectuar el App.

 
 Y si abrimos el archivo xml en VS nos muestra el requerimiento mínimo.
 

Lo que debemos de hacer es cambiar el número de 16 a 15 para probarlo en nuestro servidor de desarrollo.


 Y listo el app se implementa exitosamente.



Eso es todo amigos!.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

miércoles, 8 de junio de 2016

Cambios importantes en SharePoint 2016 a tomar en cuenta



SharePoint 2016 un nuevo producto nacido de la experiencia de Microsoft en mantener su solución en la nube como un servicio para millones de usuario, trae cambios importantes a tomar en cuenta especialmente para migraciones de versiones anteriores.

La dos noticias más impactantes para esta nueva versión son las siguientes:


  1. La edición gratuita SharePoint Foundation ya no estará disponible para la versión 2016 ( https://products.office.com/en-us/sharepoint/sharepoint-licensing-overview )
  2. El servicio de Excel services ya no esta disponible en ninguna edición de 2016

Para la versión Foundation Microsoft planea que utilicen un versión de prueba de su versión en la nube y se decidan los usuarios por adquirir una subscripción.  Así que para los usuarios de Foundation deberán planear su migración a la nube o bien mantener la versión del producto por mucho más tiempo.  Conozco empresas que aún tienen WSS 3.0 instalado en sus redes.

Para Excel services, Microsoft reemplazo esta funcionalidad con Office Online Server anteriormente conocido como Office Web Apps este producto permite editar los documentos de Office desde el navegador, esto es algo positivo aunque requiere de una inversión ya que es necesario instalar otro servidor con este producto Office Online Server.  Los requisitos de este producto serían los mismos para SharePoint 2016 mínimos.




Otra cosa a tomar en cuenta en la instalación de SharePoint 2016 aunque no es oficial aún es que requiere SQL Server 2014 con SP1 como mínima versión para la versión Standard y para la versión Enterprise requiere SQL Server 2016, y en Sql Server 2016 ya no hay versión BI solo Enterprise y Standard.    Así que habrá que ver si se desea utilizar la version Enterprise de SharePoint 2016 si requiere la versión Enterprise de SQL Server 2016 y no la standard. Esperaremos a la documentación oficial pero hay que tenerlo en cuenta y a la vista.




Así que amigos a prepararse para los desafíos y beneficios que nos traerá esta nueva versión de SharePoint 2016.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

martes, 31 de mayo de 2016

Exportando una biblioteca de 850 GB en SharePoint 2010

Para exportar una biblioteca de este tamaño se necesita espacio disponible mucho espacio disponible.  Alrededor de 2 TB, muy probablemente espacio de una SAN.

Lo interesante del tema es que es muy sencillo de hacerlo entre tanto se realicen los ajustes necesario para que todo funcione como un reloj suizo, es decir exacto y sincronizado.



Para esta mega tarea vamos a utilizar el comando de SharePoint Management Shell export-SPWeb. Pero antes de iniciar tenemos que realizar varias tareas de ajustes importantes para que sea un exíto el proceso.

Primero debemos de mapear el disco de red o Network Drive del File Share donde por lo menos tenemos que disponer de 2 TB por el tamaño de la biblioteca y si se preguntan cuantos elementos tiene alrededor de 265,000 archivos (imágenes y documentos).

net use z: \\ipaddress\share_folder

Luego necesitamos configurar la variable de ambiente del Sistema Operativo %Temp% para que no apunte al directorio del perfil del usuario sino al disco mapeado o Map Drive.  

Para ello abrimos la ventana de consola de línea de comando de Windows y escribimos el siguiente comando:

c:> set Temp = z:\Temp



Bueno ahora levantamos una ventana de SharePoint Management Shell y ejecutamos la siguientes líneas de comando:



net use z: \\ipaddress\share_folder


export-SPWeb -Identity http://hostname/sites/WebSite/SubWeb -ItemUrl "Nombre_Biblioteca" -IncludeUserSecurity -IncludeVersions 4 -Path "z:\MiBiblioteca.cmp" -NoFileCompression-Verbose

-Identity = La Url del subistio donde esta la biblioteca
-ItemUrl = El Nombre de la biblioteca
-IncludeUserSecurity = Incluye los permisos de la biblioteca
-IncludeVersions 4 = El Número 4 Indica todas las versiones
-Path = La ruta y el nombre del archivo donde incluirá todo el contenido migrado
-NoFileCompression = Para que solo cree un archivo y no demore 30% más del tiempo que requiere
-Verbose = Detalle de lo que esta exportando e incluyendo en el archivo

Bueno luego de esto paciencia y esperar que termine.   Para un tamaño tan grande podría demorar hasta 24 horas.

SharePoint4Fun,

Juan Manuel Herrera

sábado, 28 de mayo de 2016

Instalando SharePoint 2010 en Windows Server 2012 R2

Hay clientes que aún estan en SharePoint 2010 y aún no se migran por diversas e importantes razones, pero si desean actualizar el sistema operativo del servidor.   En este caso el cliente sea virtualizar sus servidores físicos y redistribuir el contenido para ello ha solicitado que se instala sobre Windows Server 2012 R2.

Donde está el problema?. 
Pues SharePoint Server 2010 salió al mercado en el año  2010 (Announced Launch date is May 12th, 2010, RTM date (Release to Manufacturing) will be in April) y Windows Server 2012 R2 salió 4 de septiembre de 2012. 

Entonces SharePoint 2010 RTM no tenía soporte para este sistema operativo sino hasta el Service Pack 2.0 según esta publicación https://support.microsoft.com/en-us/kb/2724471  "Before the release of Service Pack 2 (SP2) for Microsoft SharePoint Server 2010, Microsoft did not support SharePoint Server 2010 in a Windows Server 2012 or Windows Server 2012 R2 environment.

However, SharePoint Server 2010 slipstream media SP2 has now been released, and this configuration is supported in Windows Server 2012 and Windows Server 2012 R2. "


Entonces es necesario obtener el slipstrem media  es decir la media que incluya el SP2 lo puede encontrar en suscripción de msdn  como SharePoint Server 2010 with Service Pack 2.0.


Nota: intente crear el slipstream desempacando el SP2 y copiandolo en el directorio updates, pero no me funcionó asi que le recomiendo encuentre el slipstream media de la subscripción msdn o de otra fuente de Microsoft ya que de lo contrario se topará con un sinnúmero de errores.




Es importante mencionar que también el artículo recomienda instalar el CU de Febrero 2014 o superior.  Para validar las últimas actualizaciones de SharePoint puede buscar SharePoint 2010 lastest updates https://technet.microsoft.com/en-us/library/mt715807%28v=office.16%29.aspx.


No se olvide de ejecutar el asistente de Productos y Tecnologías de SharePoint para que actualice adecuadamente la granja de SharePoint.



Happy SharePoint Installation!,

Juan Manuel Herrera Ocheita

jueves, 26 de mayo de 2016

Acceso denegado en la pagina de permisos para un usuario propietario o con permisos de Control Total en SharePoint

Escenario:

Se creo un sub-sitio en SharePoint, se definieron permisos exclusivos y se creo un grupo de propietarios para el sitio.  Luego se definieron permisos exclusivos en una biblioteca y por último en los permisos del sitio de configuró la solicitud de acceso;


 colocando el correo del usuario al que se le asignó la administración del sitio.



Cuando el usuario intenta ir asignar permisos a otros usuarios al sitio o a la biblioteca redirige al usuario a la página de solicitar permisos


El Problema:

Cual fue el problema en este caso.  La lista de solicitud de accesos tenia permisos exclusivos y por ello provocaba el error.

La Solución:

Esta descrita en el siguiente enlace: https://support.microsoft.com/en-us/kb/2911390

Pero basícamente hay que ir a la lista de solicitud de acceso que esta escondida.  Pueden utilizar SharePoint Designer para descubrirla o bien descubrirla desde el navegador.

En las herramientas del desarrollador F12 desde IE buscar la URL que termina con  "pendingreq.aspx." y en response body buscar el id de la lista llamada pagelistid entre corchetes copiar el GUID y luego ejecutar la página para editar la lista  https://URL of affected site or site collection>/_layouts/15/ListEdit.aspx?List=<{GUID}>.  Y luego el procedimiento acostumbrado seleccionar permisos de la lista  y seleccionar la opción Eliminar permisos exclusivos.


Y eso es todo. SharePoint4Fun!,

Juan Manuel Herrera Ocheita

lunes, 23 de mayo de 2016

Como resolver el Error /_vti_bin/client.svc/ProcessQuery UnauthorizedAccessException: Access is denied.

Escenario:

Una app de SharePoint o Add-in de SharePoint como Microsoft denomina ahora las apps en SharePoint dejo repentinamente de desplegar a todos los usuarios el contenido del app.

Esto no solo aplica a las apps sino a cualquier lista dentro de la Aplicación web de SharePoint, como veremos más adelante.  Así que si repentinamente dejo de ver un contenido pueda que este sea su caso.

El usuario me notificó que al agregar el usuario de red como administrador local del servidor, ya le mostraba el contenido del app.   Aún más confuso y extraño este comportamiento que al parecer eran permisos que no tenían los usuarios en el servidor, pero como descubrir si alguien hizo alguna modificación en el servidor ya que es un ambiente de un cliente administrador por el personal del cliente.

Después de revisar la configuración y servicios de Aplicaciones de la granja de SharePoint y constatar que todo estaba bien configurado y funcionando, procedí a indagar en los logs de SharePoint.   Para ello es necesario habilitar los siguientes eventos:



Y esto fue lo que obtuve en el log:
System.UnauthorizedAccessException: Access is denied. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED))     en Microsoft.SharePoint.SPGlobal.HandleUnauthorizedAccessException(UnauthorizedAccessException ex)     en Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML)     en Microsoft.SharePoint.SPField.UpdateCore(Boolean bToggleSealed)     en Microsoft.SharePoint.ServerStub.SPFieldServerStub.InvokeMethod(Object target, String methodName, XmlNodeList xmlargs, ProxyContext proxyContext, Boolean& isVoid)     en Microsoft.SharePoint.Client.ServerStub.InvokeMethodWithMonitoredScope(Object target, String methodName, XmlNodeList args, ProxyContext proxyContext, Boolean& isVoid)     en Microsoft.SharePoint.Client.ClientMethodsProcessor.InvokeMeth... d7c57d9d-5788-b0d0-3f2a-a19b4191ed7d
05/19/2016 12:04:25.15* w3wp.exe (0x3E6C)                       0x34F8 SharePoint Foundation         CSOM                           aiv4i High     ...pdate" Id="348" ObjectPathId="272" />List of all employees.
d7c57d9d-5788-b0d0-3f2a-a19b4191ed7d
05/19/2016 12:04:25.15* w3wp.exe (0x3E6C)                       0x34F8 SharePoint Foundation         CSOM                           aiv4i High     ...ldItemQuery>
http://app-369d6491a3e5c7.apps.bantrabgf.local/InfowareForgetNotEmployees d7c57d9d-5788-b0d0-3f2a-a19b4191ed7d
05/19/2016 12:04:25.15 w3wp.exe (0x3E6C)                       0x34F8 SharePoint Foundation         CSOM                           agmjp High     Original error: System.UnauthorizedAccessException: Access is denied.



Luego utilice Fiddler  para ver el tráfico de la aplicación:

Y me mostró la siguiente información:

Aunque el 401 es un mensaje de no autorizado es el comportamiento esperado con la autenticación ntlm ya que luego le sigue un 200 OK que indica que pudo realizar la acción solicitada.  Así que fiddler no me ayudo mucho en este caso.

La aplicación lo que hace es desplegar de una lista dentro del AppWeb el contenido, pero me estaba reportando un acceso denegado. No fue sino hasta que exporte la lista completa a excel que me percate que tenia 5008 elementos. Y esto me recordó el umbral de máximo de elementos por lista que tiene configuración SharePoint de forma predeterminada.  Y ahora hacía sentido que los usuarios administradores si podía ver el contenido ya que el umbral de los administradores y auditores es de 20,000 elementos.   

Solución:

Fue solo ampliar el umbral a nivel de aplicación web de 5,000 elementos a 10,000 elementos para que se pueda leer el contenido que no desplegaba.   Cómo hacerlo vea el siguiente enlace: http://stevemannspath.blogspot.com/2013/05/sharepoint-2013-list-view-threshold.html

Otras soluciones:

Depurar el listado de la lista, eliminando o filtrando el contenido ver este enlace:

http://en.share-gate.com/blog/demystifying-the-sharepoint-lists-thresholds

O bien modificando el código para que lea de forma filtrada.

https://blogs.msdn.microsoft.com/ericwhite/2009/11/20/using-the-sharepoint-2010-managed-client-object-model-accessing-large-lists/

Eso esto amigos, un día mas en las aguas profundas de SharePoint World!

Saludos,

Juan Manuel Herrera Ocheita

sábado, 30 de abril de 2016

Asignando valor predeterminado a una propiedad de un elemento Web de forma declarativa SharePoint 2013

Asignando valor predeterminado a una propiedad de un elemento Web de forma declarativa SharePoint 2013





Para agregar un valor predeterminado a una propiedad de un elemento web debemos de ir al código de servidor o Code Behind del control de usuario, como se muestra en la imagen de abajo.

Debemos definir una propiedad pública de la clase del control de usuario.  Y agregar los atributos: WebBrowsable,WebDisplayName, WebDescription,Category y Personalizable, como se muestra en el código de abajo.

Luego vamos a definir un módulo dentro del proyecto, esto nos permitirá adicionar páginas y elementos web a las páginas cuando se instale la solución y agregar el valor predeterminado a la propiedad.




Luego creamos una Application Page como plantilla para entonces crear una instancia de la página donde definamos el elemento web.




En la página se define las zonas de los elementos web para poner distribución de los elementos Web dentro de la página.




Ahora vamos a modificar el archivo elements.xml donde se define la instancia de la página y los elementos web dentro de ella.


     


Y través del nodo properties, definimos los nombres de cada propiedad con su respectivo valor.

Y eso es todo!

SharePoint4Fun!,

Juan Manuel Herrera Ocheita