<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4151003370208110042</id><updated>2024-11-05T19:05:25.774-08:00</updated><category term="SharePoint 2010"/><category term="Microsoft"/><category term="Desarrollo SharePoint"/><category term="Gerardo Reyes Ortiz"/><category term="SharePoint"/><category term="SharePoint 2013"/><category term="Errores SharePoint"/><category term="México"/><category term="PowerShell"/><category term="Silverlight"/><category term="Visio Services"/><category term="Features"/><category term="MVP"/><category term="Silverlight 3"/><category term="WebCast"/><category term="Workflows"/><category term="Configuracion SharePoint 2010"/><category term="D.F."/><category term="API REST"/><category term="Configuracion SharePoint 2010;"/><category term="Troubleshooting"/><category term="Visual Studio 2010"/><category term="Visual studio"/><category term="WSS"/><category term="Web parts"/><category term="Apps"/><category term="Comunidad SharePoint"/><category term="Configuración SharePoint 2013"/><category term="ODATA"/><category term="SharePoint Server"/><category term="SharePoint; Instalación SharePoint; Troubleshooting; Search Service"/><category term="Silverlight 3.0"/><category term="Silverlight Toolkit"/><category term="WebParts"/><category term="javascript"/><category term="jquery"/><category term="Eventos SharePoint"/><category term="Office 2010"/><category term="PeoplePicker"/><category term="REST"/><category term="SQL Server"/><category term="Scripting"/><category term="Search Service Application"/><category term="SharePoint Designer"/><category term="UPA"/><category term="UPS"/><category term="Workflows SharePoint"/><category term="host header"/><category term="Apps Development"/><category term="Big Bang"/><category term="CAS"/><category term="CSOM"/><category term="Codeplex"/><category term="CompartiMOSS"/><category term="Configuracion SharePoint 2010; Errores SharePoint"/><category term="Configuracion SharePoint 2010; SharePoint 2010"/><category term="Custom Actions"/><category term="Custom Editor Parts"/><category term="Delegate Controls"/><category term="Deployment"/><category term="DisableLoopbackCheck"/><category term="Document Library"/><category term="Entrevista"/><category term="Examenes de Certificación"/><category term="Extract WSP"/><category term="FBA"/><category term="FS4SP"/><category term="Fakes"/><category term="Fast Search Server 2010 For SharePoint"/><category term="Fiddler"/><category term="HTTP.SYS"/><category term="HTTPS"/><category term="JSON"/><category term="Language Pack&#39;s"/><category term="Latam"/><category term="MAXDOP"/><category term="MCSM"/><category term="MSExpertos"/><category term="MVC"/><category term="Microsoft México"/><category term="Microsoft; Codeplex; Screencast;"/><category term="My Sites"/><category term="SQL Server 2012"/><category term="SQL Server Reporting Services"/><category term="Screencast"/><category term="Screencast;"/><category term="Service Applications"/><category term="Service Pack"/><category term="SharePoint 2007"/><category term="SharePoint 2010 SP 1"/><category term="SharePoint API"/><category term="SharePoint Conference"/><category term="SharePoint Emulators"/><category term="SharePoint Farm"/><category term="SharePoint Health Analyzer"/><category term="SharePoint Magazine"/><category term="SharePoint Online"/><category term="SharePoint Search"/><category term="SharePoint Test"/><category term="SharePoint; Desarrollo SharePoint"/><category term="Shims"/><category term="Simposio"/><category term="Simposio Latinoamericano"/><category term="SkyDrive Pro"/><category term="Soporte Microsoft"/><category term="Templates"/><category term="Tip"/><category term="VSeWSS"/><category term="Virtual Machine"/><category term="Visual Studio 2012"/><category term="WCF"/><category term="WSS; IIS 7"/><category term="Web API"/><category term="Web Content Management"/><category term="Web Services"/><category term="Windows 8"/><category term="Windows Live ID"/><category term="Xml"/><category term="appcmd"/><category term="iOS"/><category term="jqGrid"/><category term="onload function"/><title type='text'>Tirando Código</title><subtitle type='html'>Blog acerca de mis experiencias con Silverlight,&lt;br&gt;&#xa;WSS 3.0, MOSS y algunas otras tecnologías</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>107</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-1386364992367700404</id><published>2013-12-11T13:51:00.000-08:00</published><updated>2013-12-16T13:52:05.694-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CompartiMOSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Entrevista"/><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz"/><category scheme="http://www.blogger.com/atom/ns#" term="MVP"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>Entrevista CompartiMOSS</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
CompartiMOSS es una revista digital especializada en temas de SharePoint y algunas tecnologías relacionadas a esta plataforma de colaboración. En la más reciente edición de la revista del mes de Diciembre se publicó una entrevista que me hicieron en días pasados.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Les recomiendo ampliamente lean los artículos de esta revista, y claro también lean la entrevista que me hicieron.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEZJa8csycIlg6xaqBbyR_5Z04aY-_crzRpvPJQJ9lSfG5pggqcTDbL1uea_LMW4AZ9kImlajiwHlQHIKemX09wff5A4wWhYBmLaso2PrCXSX0B-O03R9sHI-M-vwmU1qliKrTQoxdLNc/s1600/revista.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEZJa8csycIlg6xaqBbyR_5Z04aY-_crzRpvPJQJ9lSfG5pggqcTDbL1uea_LMW4AZ9kImlajiwHlQHIKemX09wff5A4wWhYBmLaso2PrCXSX0B-O03R9sHI-M-vwmU1qliKrTQoxdLNc/s320/revista.png&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.compartimoss.com/Revistas/Numero-18&quot;&gt;Link
al número 18 de la revista&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;http://www.compartimoss.com/revistas/numero-18/entrevista-a-gerardo-reyes&quot;&gt;Entrevista
a Gerardo Reyes por Fabian Imaz&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Happy Coding!&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/1386364992367700404/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/1386364992367700404?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/1386364992367700404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/1386364992367700404'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/12/entrevista-compartimoss.html' title='Entrevista CompartiMOSS'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEZJa8csycIlg6xaqBbyR_5Z04aY-_crzRpvPJQJ9lSfG5pggqcTDbL1uea_LMW4AZ9kImlajiwHlQHIKemX09wff5A4wWhYBmLaso2PrCXSX0B-O03R9sHI-M-vwmU1qliKrTQoxdLNc/s72-c/revista.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-211363893117944595</id><published>2013-10-31T20:22:00.000-07:00</published><updated>2014-01-08T20:23:54.116-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Configuración SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Live ID"/><title type='text'>ID4037: The key needed to verify the signature could not be resolved from the following security key identifier</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Hace unos días estaba revisando un portal de SharePoint 2013 que había sido configurado para permitir la autentificación mediante Windows Live ID, la autentificación había sido configurada utilizando las siguientes gu&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;í&lt;/span&gt;as:&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://technet.microsoft.com/en-us/library/ff973117(v=office.14).aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Configure claims-based authentication using Windows Live ID (SharePoint Server 2010)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.wictorwilen.se/Post/Visual-guide-to-Windows-Live-ID-authentication-with-SharePoint-2010-part-1.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Visual guide to Windows Live ID authentication with SharePoint 2010 - part 1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aunque las guías mencionadas son para SharePoint 2010 funcionan para SharePoint 2013 también, tan es así que el portal estuvo funcionando adecuadamente durante la etapa de desarrollo del &amp;nbsp;proyecto (algunas semanas) sin embargo de un día para otro dejo de funcionar la autentificación mediante Windows Live ID y en su lugar el portal mostraba el siguiente error cuando un usuario intentaba autentificarse mediante este método.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhidFfGYEvQXt-g4lmA2rCRSQkbN1SuC8CXOVrp5ekLhqAbFqOMIKSoLL7SGPtleadzo_uNdalEzdGDOpyPQoPwRV6DgtMem7Jpe_ApPJwuSUBXl364ile27-fQLmL5AYqfvtvOOTV-Hig/s1600/Error.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhidFfGYEvQXt-g4lmA2rCRSQkbN1SuC8CXOVrp5ekLhqAbFqOMIKSoLL7SGPtleadzo_uNdalEzdGDOpyPQoPwRV6DgtMem7Jpe_ApPJwuSUBXl364ile27-fQLmL5AYqfvtvOOTV-Hig/s1600/Error.png&quot; height=&quot;300&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
El mensaje:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ID4037: The key needed to verify the signature could not be resolved from the following security key identifier.&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Después de revisar un rato los logs de SharePoint que se generaban al presentarse el error no encontré mayor información acerca del error por lo que decidí revisar los datos de configuración del proveedor de autentificación, sin embargo todo parecía estar correctamente configurado. Por último recordé que al ser esta una instalación de “Staging” los certificados que se utilizan para la configuración son temporales por lo que procedí a revisar &amp;nbsp;la vigencia de los certificados y efectivamente estaban vencidos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez descubierta la causa del error es hora de buscar la solución, la cual describo a continuación:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
1.- Remover los certificados expirados. Para esto pueden utilizar la consola MMC.exe importando el addin de Certificados, identificar los certificados que ya expiraron y eliminarlos, los certificados deben encontrarse en los siguientes almacenes: Trusted Root Certification Authority, Trusted People y SharePoint.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbYXhG4p_aA4l7YjcfI5VP4ZTkUce4SoU1r_z05VaNx6TgHExe9W7GQboFVcW8_zVuGSFPFsVOa0W6gEio286RyF4UzdOSosCAJ1-bvKaWo4TKdlhu1pYcnvtJEg3LATD7NS4MFY6LjDU/s1600/Consola+de+Certificados.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbYXhG4p_aA4l7YjcfI5VP4ZTkUce4SoU1r_z05VaNx6TgHExe9W7GQboFVcW8_zVuGSFPFsVOa0W6gEio286RyF4UzdOSosCAJ1-bvKaWo4TKdlhu1pYcnvtJEg3LATD7NS4MFY6LjDU/s1600/Consola+de+Certificados.png&quot; height=&quot;222&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
2.- Una vez que los certificados han sido removidos se debe descargar de nuevo el certificado para posteriormente instalarse en los mismos almacenes. El certificado debe descargarse de la url https://nexus.passport-int.com/federationmetadata2/2007-06/federationmetadata.xml, se debe copiar y pegar en un archivo de texto lo que se encuentra del nodo X509Certificate, se guarda el archivo con extensión .cer.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd46O2uAJMfntoIEocLtJnvymUBAHwqXQ3FlhN7QQUMFGTRhHyqUsWXDNbdjMrn0cBuk5nVDz89VBWjDen8nUNb5e_n61FNcHr8-OkyUlbloxCNYbf31VHV_qZ5Q0pT6XTIu6va-BC9cY/s1600/certificado+xml.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd46O2uAJMfntoIEocLtJnvymUBAHwqXQ3FlhN7QQUMFGTRhHyqUsWXDNbdjMrn0cBuk5nVDz89VBWjDen8nUNb5e_n61FNcHr8-OkyUlbloxCNYbf31VHV_qZ5Q0pT6XTIu6va-BC9cY/s1600/certificado+xml.png&quot; height=&quot;240&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0X3rOpLdbp4hyphenhyphenyUuMWkb7G0aVvtRfcdZNo8rfz3m7BjqNYnuzGcHlqp4pbjg3IyvU2dzTEcDLjfhzWxjZ9LbNScuUX5ErhLUpGJVMoF8ShnwidVzE_9ig0C95uu4ieM3dW8foHbkCYnc/s1600/certificado+texto.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0X3rOpLdbp4hyphenhyphenyUuMWkb7G0aVvtRfcdZNo8rfz3m7BjqNYnuzGcHlqp4pbjg3IyvU2dzTEcDLjfhzWxjZ9LbNScuUX5ErhLUpGJVMoF8ShnwidVzE_9ig0C95uu4ieM3dW8foHbkCYnc/s1600/certificado+texto.png&quot; height=&quot;196&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
3.- Una vez que se cuenta con el certificado actualizado se debe instalar en los mismos almacenes de los que se eliminó: Trusted Root Certification Authority, Trusted People y SharePoint.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjudtXkslkPxvAbox6nRWl9FglHnQNpfsVF3twkgQk8FgJZ1t96xykkz2guz2CYp5iRnY73K77l4s74zr4HMX7huS6W5s1jUGaaLcPaqgLpM828WTDqD9aE1FWrA5YVm_o03_Tw10yaiMA/s1600/Stores.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjudtXkslkPxvAbox6nRWl9FglHnQNpfsVF3twkgQk8FgJZ1t96xykkz2guz2CYp5iRnY73K77l4s74zr4HMX7huS6W5s1jUGaaLcPaqgLpM828WTDqD9aE1FWrA5YVm_o03_Tw10yaiMA/s1600/Stores.png&quot; height=&quot;400&quot; width=&quot;228&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
4.- Por ultimo ejecutamos este pequeño script de PowerShell para actualizar solo el certificado del Trusted Identity Token Issuer&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:powershell&quot;&gt;$certfile=&quot;C:\temp\LiveID-INT.cer&quot; #path en donde se encuentra el nuevo certificado descargado desde https://nexus.passport-int.com/federationmetadata2/2007-06/federationmetadata.xml
$tokenIssuer=Get-SPTrustedIdentityTokenIssuer -Identity &quot;LiveID INT&quot; #Nombre con el que se registro el Trusted Identity Token Issuer
Set-SPTrustedIdentityTokenIssuer -Identity $tokenIssuer -ImportTrustCertificate $certfile
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Despues de realizar estos sencillos pasos el sitio vuelve a funcionar y ya permite la autentificación mediante Windows Live ID&lt;br /&gt;
&lt;br /&gt;
Happy Configuring!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/211363893117944595/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/211363893117944595?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/211363893117944595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/211363893117944595'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/10/id4037-key-needed-to-verify-signature.html' title='ID4037: The key needed to verify the signature could not be resolved from the following security key identifier'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhidFfGYEvQXt-g4lmA2rCRSQkbN1SuC8CXOVrp5ekLhqAbFqOMIKSoLL7SGPtleadzo_uNdalEzdGDOpyPQoPwRV6DgtMem7Jpe_ApPJwuSUBXl364ile27-fQLmL5AYqfvtvOOTV-Hig/s72-c/Error.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-5928224920652657410</id><published>2013-08-08T18:32:00.000-07:00</published><updated>2013-11-19T18:39:42.340-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Configuracion SharePoint 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server 2012"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server Reporting Services"/><title type='text'>Error configurando SQL Server Reporting Services 2012 en SharePoint 2010</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Hola amigos, el día de hoy con un escenario que encontré hace unos días que intentaba configurar SSRS 2012 en SharePoint 2010.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El escenario es el siguiente: tenía&amp;nbsp;una granja pequeña de SharePoint 2010 SP 2 con dos servidores y un servidor de base de datos con SQL Server 2012 SP 1.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como parte de los requerimientos era necesario habilitar el servicio de Reporting Services en SharePoint 2010, por lo que procedí a descargar el Add-in de Reporting Services para SharePoint:&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=35583&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Microsoft® SQL Server® 2012 SP1 Reporting Services Add-in for Microsoft® SharePoint®&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin embargo después de instalar el Add-in en los servidores de SharePoint y seguir el &lt;a href=&quot;http://technet.microsoft.com/en-us/library/gg492276&quot; target=&quot;_blank&quot;&gt;procedimiento standard de instalación de Microsoft&lt;/a&gt;, que consiste en la ejecución de los comandos de PowerShell:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:powershell&quot;&gt;Install-SPRSService
Install-SPRSServiceProxy
get-spserviceinstance -all |where {$_.TypeName -like &quot;SQL Server Reporting*&quot;} | Start-SPServiceInstance
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Y posteriormente la creación del service application de Reporting Services en el sitio central de administración, noto que no me es posible crearlo, al revisar los servicios iniciados en el servidor me doy cuenta que el servicio SQL Server Reporting Services Service tuvo un error al iniciarse. Como buen consultor intento iniciarlo una vez más&amp;nbsp;(porque todos pensamos que los problemas se resuelven haciendo las mismas cosas muchas veces?) y veo el siguiente error en pantalla:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhewSlBAg3DozQXzj3H-lKlhOx5Uqpr8WA5j0JjAhnhqDSzod2lWCQT-UQ8ehNC30NuvcNVLGmhsX6YYQ7hOT8gp3CuqKZUwicboxCY0_gBbp2lvQyg0YJPd2aaJJ1boYX7yM7pq8xnxE/s1600/Error1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;164&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhewSlBAg3DozQXzj3H-lKlhOx5Uqpr8WA5j0JjAhnhqDSzod2lWCQT-UQ8ehNC30NuvcNVLGmhsX6YYQ7hOT8gp3CuqKZUwicboxCY0_gBbp2lvQyg0YJPd2aaJJ1boYX7yM7pq8xnxE/s320/Error1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pero como siempre, este tipo de mensajes no son de mucha ayuda por lo que revise el visor de eventos de Windows para ver si existe alguna información extra que me ayude a corregir el error, pero solo encuentro el mismo mensaje:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLtuVRO5R4bc07tkedYN7CwgZAAnYN-AHwRL0w_jDtyoHCzyUzyH-Rq3j6kQZw2PeCZpkmZX9el1VNrIQprjv7-w5qa18XbiqfjPQd7pLIdGfZ3rmif33iXPn7eJFKCLkDmL1nSGOYJP8/s1600/Error2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;82&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLtuVRO5R4bc07tkedYN7CwgZAAnYN-AHwRL0w_jDtyoHCzyUzyH-Rq3j6kQZw2PeCZpkmZX9el1VNrIQprjv7-w5qa18XbiqfjPQd7pLIdGfZ3rmif33iXPn7eJFKCLkDmL1nSGOYJP8/s320/Error2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Installation Error: Could not find SOFTWARE\Microsoft\Microsoft SQL Server\110 registry key Error with installing SQL Server Reporting Service Application&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Después de un rato de investigación y de no encontrar nada, vuelvo a leer y revisar los procedimientos de instalación (oficiales y no oficiales) y me doy cuenta que algunos blogs hacen referencia a este Add-in, sin embargo otros hacen referencia, implícitamente, al uso de la media de SQL Server 2012, es decir del archivo ISO con que se instaló SQL Server 2012 y lo utilizan para instalar el Add-in de SSRS en los servidores de SharePoint.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dado que en este punto no sabía que otra cosa intentar más&amp;nbsp;que utilizar los bits de SQL Server 2012 SP 1 para configurar Reporting Services procedo a desinstalar el Add-in:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Quyx_k8hqe0_1j1vq2t22yoQIc_G451T8bxrMK3nuV9VzCfMz9jLZqgKQcueAOfolMCUxFyVDRUsK4TcxCID_VN8G7C1lT8y6NSy4LQs8_hBvAH8RJ54mH__BKilSNv4fMc0COLxgQo/s1600/Desinstalar.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Quyx_k8hqe0_1j1vq2t22yoQIc_G451T8bxrMK3nuV9VzCfMz9jLZqgKQcueAOfolMCUxFyVDRUsK4TcxCID_VN8G7C1lT8y6NSy4LQs8_hBvAH8RJ54mH__BKilSNv4fMc0COLxgQo/s320/Desinstalar.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Y posteriormente utilizando los bits de SQL Server 2012 SP 1 con que se instaló el servidor de base de datos, ejecuto el instalador&amp;nbsp;&amp;nbsp;en los servidores de SharePoint 2013 y selecciono solo los componentes necesarios de Reporting Services.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilnIkzoS5gAq6jHYv2PedO2l11fRuGJ2pP4DhWaqMo3AsY206sSZRNtIcWix0iyDH3T4Z_Yp71-u2nKNj3o16lbCTNteAs8L42gDWV13phK_CvCeikAqAHLqdMroYGYjyxdovjzLkvN84/s1600/Instalar.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilnIkzoS5gAq6jHYv2PedO2l11fRuGJ2pP4DhWaqMo3AsY206sSZRNtIcWix0iyDH3T4Z_Yp71-u2nKNj3o16lbCTNteAs8L42gDWV13phK_CvCeikAqAHLqdMroYGYjyxdovjzLkvN84/s320/Instalar.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Acto seguido vuelvo a ejecutar los comandos de PowerShell y reviso si el servicio fue iniciado adecuadamente, y efectivamente todo funciona como debería.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBwxe8e7R6VMNDa6GZ6AU7kSE1ILhEbhKQQvR34mKIBDS93tWs78QjlUuy1J266m2FLsRutAu8ctlWlucDZ8VSO6tO_bQLCF5t58i_mTEBDqPoyGFpQjmVCZgBEQR6sWOR4eDYqaP0j5c/s1600/Servicio+ejecutandose.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;44&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBwxe8e7R6VMNDa6GZ6AU7kSE1ILhEbhKQQvR34mKIBDS93tWs78QjlUuy1J266m2FLsRutAu8ctlWlucDZ8VSO6tO_bQLCF5t58i_mTEBDqPoyGFpQjmVCZgBEQR6sWOR4eDYqaP0j5c/s640/Servicio+ejecutandose.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Ya solo por curiosidad reviso la versión del Add-in instalado y note que si es diferente a la versión que había estado instalando previamente:&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT52PWO6_tI2rApzsm-NnseT5m9bIYSvkRxN-FIfQk4A4H_hGA1kQ7od6kHSTz8BXMjmXMx1taRllXbD2DPRFOxq7UJtHL9weVsh-RSiHkpq0zVsd52VdlbQJ6J_V47MlswMUgGUhcygk/s1600/Add-in+nueva+version.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;33&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT52PWO6_tI2rApzsm-NnseT5m9bIYSvkRxN-FIfQk4A4H_hGA1kQ7od6kHSTz8BXMjmXMx1taRllXbD2DPRFOxq7UJtHL9weVsh-RSiHkpq0zVsd52VdlbQJ6J_V47MlswMUgGUhcygk/s640/Add-in+nueva+version.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Espero que este post les sirva y ahorre tiempo en el futuro.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
Happy configuring!&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/5928224920652657410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/5928224920652657410?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/5928224920652657410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/5928224920652657410'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/08/error-configurando-sql-server-reporting.html' title='Error configurando SQL Server Reporting Services 2012 en SharePoint 2010'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhewSlBAg3DozQXzj3H-lKlhOx5Uqpr8WA5j0JjAhnhqDSzod2lWCQT-UQ8ehNC30NuvcNVLGmhsX6YYQ7hOT8gp3CuqKZUwicboxCY0_gBbp2lvQyg0YJPd2aaJJ1boYX7yM7pq8xnxE/s72-c/Error1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-8448117947673031195</id><published>2013-07-23T20:06:00.000-07:00</published><updated>2014-02-10T20:21:47.664-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Service Pack"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Server"/><title type='text'>SharePoint 2010 Service Pack 2</title><content type='html'>El dia de hoy se han hecho públicos los bits del service pack 2 de SharePoint 2010, por lo que a continuación les comparto un enlace de donde pueden descargarlos:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=39646&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SharePoint Foundation 2010 SP2&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=39672&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SharePoint Server 2010 SP2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
En este &lt;a href=&quot;http://download.microsoft.com/download/9/5/9/959F3A24-80B3-4930-8FF8-D3C631BB878F/Microsoft%20Office%20and%20SharePoint%202010%20Service%20Pack%202%20Changes.xlsx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;link &lt;/a&gt;pueden encontrar el listado de cambios que se incluyen en el service pack 2&lt;br /&gt;
&lt;br /&gt;
Por su puesto tambien estan disponibles los service pack 2 para los respectivos language packs&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=39674&quot; target=&quot;_blank&quot;&gt;Service Pack 2 for Microsoft SharePoint Foundation 2010 Language Pack&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=39675&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Service Pack 2 for Microsoft 2010 Server Language Pack &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
No olviden primero instalar y probar estos nuevos bits en ambientes de desarrollo y/o pre producción.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitnhHOgC0SccIeqp-T9lpvtpNa7QUFmDtlV1OZn2aby3ZoIIFkFSDk6xLDeV5P-vf6uBgFFtmev3rd2A6Xu8iuVkkjZWuaEcrcLZ6ar2vCsUEdWJlOTqC0K3GAmgIUzMTi47Ilto-x77s/s1600/soft-hard_0.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitnhHOgC0SccIeqp-T9lpvtpNa7QUFmDtlV1OZn2aby3ZoIIFkFSDk6xLDeV5P-vf6uBgFFtmev3rd2A6Xu8iuVkkjZWuaEcrcLZ6ar2vCsUEdWJlOTqC0K3GAmgIUzMTi47Ilto-x77s/s1600/soft-hard_0.jpg&quot; height=&quot;362&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Happy updating!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/8448117947673031195/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/8448117947673031195?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/8448117947673031195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/8448117947673031195'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/07/sharepoint-2010-service-pack-2.html' title='SharePoint 2010 Service Pack 2'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitnhHOgC0SccIeqp-T9lpvtpNa7QUFmDtlV1OZn2aby3ZoIIFkFSDk6xLDeV5P-vf6uBgFFtmev3rd2A6Xu8iuVkkjZWuaEcrcLZ6ar2vCsUEdWJlOTqC0K3GAmgIUzMTi47Ilto-x77s/s72-c/soft-hard_0.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-3268057360246056118</id><published>2013-07-10T20:56:00.000-07:00</published><updated>2014-01-15T20:59:46.154-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Errores SharePoint"/><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><title type='text'>Error &amp;lt;nativehr&amp;gt;0x80070003&amp;lt;/nativehr&amp;gt;&amp;lt;nativestack&amp;gt;&amp;lt;/nativestack&amp;gt; al restaurar una colecci&amp;#243;n de sitios</title><content type='html'>Hace algunos días intentando restaurar una colección de sitios desde un respaldo generado en otra granja, me encontré con el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;nativehr&amp;gt;0x80070003&amp;lt;/nativehr&amp;gt;&amp;lt;nativestack&amp;gt;&amp;lt;/nativestack&amp;gt;

At line:1 char:1
+ Restore-SPSite http://webapplication:12345/sites/sitecollection_name -Pat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
    + CategoryInfo          : InvalidData: (Microsoft.Share...dletRestoreSite:
   SPCmdletRestoreSite) [Restore-SPSite], DirectoryNotFoundException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletRestoreSite&lt;br /&gt;
La instrucción de PowerShell que estaba utilizando era algo como lo siguiente&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:powershell&quot;&gt;Restore-SPSite -Identity http://server_name/sites/sitecollection -Path c:\temp\site_name.bak&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Buscando un poco en la web se encuentran algunas referencias de dos posibles razones y formas de corregir este error:&lt;br /&gt;
&lt;br /&gt;
1.- Managed Path incorrecto. Esto en caso de que el managed path &quot;sites&quot; no estuviera registrado como un path valido en el web application, la solución evidentemente es agregarlo. No era mi caso&lt;br /&gt;
&lt;br /&gt;
2.- Permisos. Ejecutar el comando de Restore-SPSite con un usuario sin permisos; la solución obviamente es ejecutar el comando con un usuario administrador de la granja de SharePoint. Desafortunadamente tampoco era mi caso.&lt;br /&gt;
&lt;br /&gt;
La forma en que yo pude realizar satisfactoriamente la restauración de la colección de sitios en la granja de destino fue a partir de un backup realizado desde la base de datos de contenido, a continuación enumero los pasos a seguir para realizar este workaround.&lt;br /&gt;
&lt;br /&gt;
1.- Identificar la base de datos de contenido que contiene la coleccion de sitios que deseamos restaurar en la granja destino.&lt;br /&gt;
2.- Realizar un full backup de esta base de datos mediante SQL Server Management Studio (o mediante t-sql).&lt;br /&gt;
3.- Mover el respaldo realizado a una ubicacion que pueda ser accedida desde la base de datos de la granja destino.&lt;br /&gt;
4.- Restaurar la base de datos de contenido en una nueva base de datos dentro de la instanacia de SQL Server de la granja de SharePoint destino.&lt;br /&gt;
5.- Montar la base de datos con el siguiente comando de PowerShell:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:powershell&quot;&gt;Mount-SPContentDatabase &quot;Nombre_de_la_base_de_datos_de_contenido_restaurada&quot;  -WebApplication http://webapplication_destino&lt;/pre&gt;
&lt;br /&gt;
Por ultimo es importante recordar que una base de datos de contenido puede contener mas un site collection por lo que si este es su caso, desafortunadamente tendrán que borrar manualmente las colecciones de sitios que no utilicen.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Referencias&lt;/b&gt;:&lt;br /&gt;
&lt;a href=&quot;http://technet.microsoft.com/es-es/library/ff607788.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Restore-SPSite&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://technet.microsoft.com/es-es/library/ff607581.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Mount-SPContentDatabase&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy Coding!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/3268057360246056118/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/3268057360246056118?isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/3268057360246056118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/3268057360246056118'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/07/error-al-restaurar-una-colecci-de-sitios.html' title='Error &amp;lt;nativehr&amp;gt;0x80070003&amp;lt;/nativehr&amp;gt;&amp;lt;nativestack&amp;gt;&amp;lt;/nativestack&amp;gt; al restaurar una colecci&amp;#243;n de sitios'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-7360705534120113267</id><published>2013-06-28T20:41:00.000-07:00</published><updated>2014-02-10T20:43:02.803-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apps"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SkyDrive Pro"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8"/><title type='text'>SkyDrive Pro app para Windows 8 e iOS</title><content type='html'>Tal como lo dice el titulo de este post, el día de ayer Microsoft libero la app de SkyDrive Pro para Windows 8 y para iOS, las cuales pueden ser descargadas desde sus respectivos stores.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;div&gt;
Desafortunadamente estas apps solo funcionan para suscriptores de Office 365 que utilizan SharePoint Online (SPO), pero esperemos que en un futuro cercano Microsoft agregue soporte para deployments on-premises&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://itunes.apple.com/app/id655772279&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3QDHoNwRS85bMvvzjyKi-PJbI9N4nvwGdMW-xsAyDT0lOhk_sW_xIyjss_J7yHPu2i54zVAjYq9wD-pSRITWrP6S3XJPdtlRoYUTPLk8btO1VeB_XqI_grel9EOMAQmZkXUThPaUb1Is/s1600/image1.png&quot; height=&quot;320&quot; width=&quot;304&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Happy testing!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/7360705534120113267/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/7360705534120113267?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/7360705534120113267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/7360705534120113267'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/06/skydrive-pro-app-para-windows-8-e-ios.html' title='SkyDrive Pro app para Windows 8 e iOS'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3QDHoNwRS85bMvvzjyKi-PJbI9N4nvwGdMW-xsAyDT0lOhk_sW_xIyjss_J7yHPu2i54zVAjYq9wD-pSRITWrP6S3XJPdtlRoYUTPLk8btO1VeB_XqI_grel9EOMAQmZkXUThPaUb1Is/s72-c/image1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-4432103286153781220</id><published>2013-06-22T21:10:00.000-07:00</published><updated>2014-01-21T21:15:09.397-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API REST"/><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Online"/><title type='text'>Listar folders utilizando la API REST de SharePoint Online</title><content type='html'>En ocasiones es necesario navegar programáticamente a través de la estructura de carpetas de una librería de documento o de una carpeta en específico, esta actividad es bastante sencilla realizándola mediante la API de servidor de SharePoint con la que hemos venido trabajando los últimos años.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq-mK3rZbzN_8LYYgesZxqCSuZXAMV5cogrdhVR9G_2v73QPtxAHlwdGRl52FlXdpSdak1Ei3ypy1S0-dZNQ4nV4ENFgBieX5Dca7W2XWGD-0hdx_W9-txEBnozysF77mfMLGCoCog5Fw/s1600/Document+Library.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq-mK3rZbzN_8LYYgesZxqCSuZXAMV5cogrdhVR9G_2v73QPtxAHlwdGRl52FlXdpSdak1Ei3ypy1S0-dZNQ4nV4ENFgBieX5Dca7W2XWGD-0hdx_W9-txEBnozysF77mfMLGCoCog5Fw/s1600/Document+Library.png&quot; height=&quot;255&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Sin embargo a partir del nuevo paradigma de desarrollo de apps para SharePoint 2013, nos enfrentamos a nuevas formas de realizar los que antes ya hacíamos con API del servidor utilizando y nos lleva a utilizar métodos mucho más estándares y que son compatibles con el nuevo modelo de apps, me refiero a  utilizar la API REST de SharePoint 2013.&lt;br /&gt;
&lt;br /&gt;
En esta ocasión voy a ejemplificar como cumplir con la tarea de listar las carpetas de una librería de documentos mediante la api REST, lo primero que necesitamos en comenzar a construir la consulta REST a utilizar contra una librería de documentos, en principio la siguiente consulta nos mostraría la información de una librería de documentos:&lt;br /&gt;
&lt;br /&gt;
https://myportal.sharepoint.com/_api/web/GetFolderByServerRelativeUrl(&#39;/Folders%20Library&#39;)&lt;br /&gt;
&lt;br /&gt;
Donde “Folders Library” es el nombre de la librería de documentos de la cual quiero mostrar sus carpetas. Noten el uso del método GetFolderByServerRelativeUrl que se encuentra a nivel del “objeto” Web y el cual nos permite abrir un folder en particular, en este caso la librería de documentos en si misma.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJWOGQCwidX6P5_KUJvJ-maD9kFORI1Zki5vGFH90t8icyWf0OoDc-7I8Jk6DESN5WuFco85seO1t8IMSu9lD9sCbsYVHw4pS8AyO474PnTUFvgwInd40j1eAsMDWE0iyB-owaH1mVPwg/s1600/Elementos+libreria.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJWOGQCwidX6P5_KUJvJ-maD9kFORI1Zki5vGFH90t8icyWf0OoDc-7I8Jk6DESN5WuFco85seO1t8IMSu9lD9sCbsYVHw4pS8AyO474PnTUFvgwInd40j1eAsMDWE0iyB-owaH1mVPwg/s1600/Elementos+libreria.png&quot; height=&quot;90&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Lo siguiente es utilizar la opción $expand para acceder a la “propiedad” Folders de la librería de documentos, algo como lo siguiente:
https://myportal.sharepoint.com/_api/web/GetFolderByServerRelativeUrl(&#39;/Folders%20Library&#39;)?$expand=Folders&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzADMDUxtu4TbXegnNw5GVlr6OP3CfxU_Ur06kwXizXU9d-vijTu30d05qptlwMvo1_LulQWhW1xtictVbeiTSOJBfYR1W62eglNtGMA0kLgjD0F-y45MO6LcwbCf4dGsm13Vjamfzy8Q/s1600/Opcion+Expand.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzADMDUxtu4TbXegnNw5GVlr6OP3CfxU_Ur06kwXizXU9d-vijTu30d05qptlwMvo1_LulQWhW1xtictVbeiTSOJBfYR1W62eglNtGMA0kLgjD0F-y45MO6LcwbCf4dGsm13Vjamfzy8Q/s1600/Opcion+Expand.png&quot; height=&quot;208&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Por ultimo solo usamos la opción $select para seleccionar los campos que necesitamos, recuerden que siempre debemos limitar la cantidad de información que solicitamos al servidor, solo para fines de optimizar nuestro desarrollo, la url de consulta final:&lt;br /&gt;
&lt;br /&gt;
https://myportal.sharepoint.com/_api/web/GetFolderByServerRelativeUrl(&#39;/Folders%20Library&#39;)?$select=Folders/name,Folders/ServerRelativeUrl,Folders/ItemCount&amp;amp;$expand=Folders&lt;br /&gt;
&lt;br /&gt;
Una vez que tenemos lista la consulta solo agrego un código de ejemplo que pinta las carpetas que se encuentran dentro de la librería de documentos como un listado, Show me the money!
&lt;br /&gt;
&lt;br /&gt;
El script:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js; html-script=true&quot;&gt;&lt;!-- jQuery desde el CDN de Google--&gt;
&lt;script src=&quot;//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
$(function () {
   var htmlImages=&#39;&lt;ul&gt;&#39;;
   var baseUrl = &quot;https://myportal.sharepoint.com&quot;;
   var requestUri =  baseUrl + &quot;/_api/web/GetFolderByServerRelativeUrl(&#39;/Folders%20Library&#39;)?$select=Folders/name,Folders/ServerRelativeUrl,Folders/ItemCount&amp;$expand=Folders&quot;;
 var requestHeaders={&quot;ACCEPT&quot;:&quot;application/json;odata=verbose&quot;,}
 //se realiza la llamada ajax
 $.ajax({
  url: requestUri,       //Url de la consulta a realizar
  type:&quot;GET&quot;,          //tipo de la llamada
  contentType:&quot;application/json&quot;, //el tipo de contenido que esperamos recuperar, JSON
  headers: requestHeaders
  })
  .done(function (data){
   for (var i = 0; i &lt; data.d.Folders.results.length; i++){
    htmlImages+=&quot;&lt;li&gt;&lt;a href=&#39;&quot;+ data.d.Folders.results[i].ServerRelativeUrl + &quot;&#39;&gt;&quot; + data.d.Folders.results[i].Name + &quot;(&quot; + data.d.Folders.results[i].ItemCount + &quot;)&lt;/a&gt;&lt;/li&gt;
&quot;;
   }
   htmlImages+=&quot;&lt;/ul&gt;
&quot;;
   $(&quot;#container&quot;).html(htmlImages);
  });
})
&lt;/script&gt;

&lt;!-- Aqui se pintaran los folders--&gt;
&lt;div id=&quot;container&quot;&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
El resultado:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDvwMlUuRyGTssPFE0qzmxpKd2Cw53kNAq-6UOljUBnanH2Tl6SPH2TqiEFk4ChvFPUaBY5fOLXILivZAAK7UP9PzOWKr0-DWgGR-gPesg9pdzYeorSRm8iBmPFWELfu4JX8hs0nwqbYw/s1600/Listado+de+folders.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDvwMlUuRyGTssPFE0qzmxpKd2Cw53kNAq-6UOljUBnanH2Tl6SPH2TqiEFk4ChvFPUaBY5fOLXILivZAAK7UP9PzOWKr0-DWgGR-gPesg9pdzYeorSRm8iBmPFWELfu4JX8hs0nwqbYw/s1600/Listado+de+folders.png&quot; height=&quot;298&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Happy Coding!&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/4432103286153781220/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/4432103286153781220?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/4432103286153781220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/4432103286153781220'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/06/listar-folders-utilizando-la-api-rest.html' title='Listar folders utilizando la API REST de SharePoint Online'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq-mK3rZbzN_8LYYgesZxqCSuZXAMV5cogrdhVR9G_2v73QPtxAHlwdGRl52FlXdpSdak1Ei3ypy1S0-dZNQ4nV4ENFgBieX5Dca7W2XWGD-0hdx_W9-txEBnozysF77mfMLGCoCog5Fw/s72-c/Document+Library.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-4489116142213065623</id><published>2013-06-05T21:16:00.000-07:00</published><updated>2013-11-26T21:17:37.465-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Farm"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Search"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Server"/><title type='text'>Recomendaciones para despliegue SharePoint 2013</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;
Recientemente me he embarcado en un proyecto que implica el
despliegue de una granja de SharePoint 2013 con 16 &amp;nbsp;servidores, si, como lo leyeron… 16
servidores!&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Dado que el propósito de esta arquitectura será servir como
un repositorio central de una gran cantidad de documentos, es decir Archiving,
se ha diseñado una arquitectura que a grandes rasgos es integrada por los siguientes
servidores:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
3 servidores Web Front End&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
2 Servidores de Aplicación&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
11 Servidores dedicados para el servicio de búsqueda&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Sin lugar a dudas más adelante estaré comentando como me ha
ido con este despliegue de SharePoint, por el momento comparto algunos de los
enlaces que a mí me han servido bastante para dimensionar y diseñar este
monstruo de granja:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc262787.aspx#ContentDB&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Software boundaries and limits forSharePoint 2013&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/hh547464(v=office.14).aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Scaletest report for very large scale document repositories&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;&lt;a href=&quot;http://blogs.technet.com/b/meamcs/archive/2013/04/09/configuring-sharepoint-2013-search-topology.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Configuring SharePoint 2013 SearchTopology&lt;/span&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc262485.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Hardware and software requirementsfor SharePoint 2013&lt;/span&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/ff686793.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Install prerequisites for SharePoint2013 from a network share&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc678868.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Database types and descriptions(SharePoint 2013)&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/ff607733.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Configure SQL Server security forSharePoint 2013 environments&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Calibri, sans-serif; font-size: 11pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;









&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;http://blog.blksthl.com/2013/02/21/tcpip-ports-of-sharepoint-2013/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;TCP/IP Ports of SharePoint 2013&lt;/span&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Adicionalmente, y dado que es un proyecto que estamos
realizando en conjunto con MCS (Microsoft Consulting Services) el equipo de
soporte premier me ha recomendado instalar los siguientes fixes liberados hasta
el momento, tómenlos en cuenta para sus implementaciones:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;http://support.microsoft.com/kb/2767999&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SharePoint Server 2013 update: March 12, 2013&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;a href=&quot;http://support.microsoft.com/kb/2726992&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SharePoint Server 2013cumulative update package (SharePoint server-package): April 26, 2013&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Happy Configuring!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/4489116142213065623/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/4489116142213065623?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/4489116142213065623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/4489116142213065623'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/06/recomendaciones-para-despliegue.html' title='Recomendaciones para despliegue SharePoint 2013'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-3839680480569829696</id><published>2013-05-29T22:17:00.000-07:00</published><updated>2013-12-02T22:19:21.777-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API REST"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="ODATA"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>SharePoint 2013 - Recuperar imagenes de libreria de imagenes mediante REST</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En estos últimos días me he estado jugando un poco con la
API REST para crear funcionalidad para SharePoint Online en donde, como todos
ustedes ya saben, no se puede desplegar soluciones full trust. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La API REST de SharePoint es tan fácil de usar que combinándola
con un poco de JavaScript y utilizando alguno de los frameworks más populares
como jQuery, Knockout, JsRender, etc, etc, se pueden lograr cosas bastante funcionales
y sobre todo muy visuales.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En esta ocasión voy a compartir un ejemplo de cómo recuperar
las Urls de las imágenes que se encuentran en una librería de imágenes para
mostrarlas en una WebPart.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lo primero que debemos hacer y tal vez lo más “difícil” es
construir la consulta ODATA que recupere los metadatos que necesitamos para
obtener las urls de las imágenes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En mi ejemplo la librería de imágenes se llama “Car Images”
y se encuentra dentro de un subsitio WXYZ (el nombre de sus subsitio), por lo
que la url podría quedar como la siguiente:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
https://sitioprincipal/subsitio/&lt;b&gt;_api/web/Lists/getbytitle(&#39;Car%20Images&#39;)/items?$Expand=File&amp;amp;$select=File/ServerRelativeUrl&lt;/b&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La parte fundamental es la que esta marcada en negro, con esa
consulta podemos recuperar las urls de las imágenes, sin embargo existe el inconveniente
de que las urls que recuperamos pertenecen a las imágenes originales y que
pueden ser muy grandes (como en mi caso) por lo que lo ideal es recuperar las imágenes
pequeñas o thumbnails que se crean automáticamente cuando los archivos de imágenes
se cargan en la biblioteca. Para lo anterior se debe modificar un poco la
consulta para acceder a la carpeta “_t” que es en donde se encuentran esas imágenes
miniatura, y quedaría de la siguiente manera:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
https://sitioprincipal/subsitio/_api/web/&lt;b&gt;GetFolderByServerRelativeUrl(&#39;Car%20Images/_t&#39;)&lt;/b&gt;?$Expand=Files&amp;amp;$select=Files/ServerRelativeUrl&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Noten el uso de la función GetFolderByServerRelativeUrl para
acceder a la carpeta “_t” y enumerar las imágenes miniatura. Una vez que ya
tenemos la consulta lo siguiente es escribir un Html muy sencillo en el que se ejecute
esta consulta y se pinten las imágenes en el HTML. Algo como lo siguiente podría
funcionar:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;brush:js; html-script=true&quot;&gt;&lt;!-- jQuery desde el CDN de Google--&gt;
&lt;script src=&quot;//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
$(function () {
   var htmlImages=&#39;&lt;ul&gt;&#39;;
   var baseUrl = &quot;https://mySharePointOnline.sharepoint.com&quot;;
   var requestUri =  baseUrl + &quot;/subsitio/_api/web/GetFolderByServerRelativeUrl(&#39;Car%20Images/_t&#39;)?$Expand=Files&amp;$select=Files/ServerRelativeUrl&quot;;
 var requestHeaders={&quot;ACCEPT&quot;:&quot;application/json;odata=verbose&quot;,}
 //se realiza la llamada ajax
 $.ajax({
  url: requestUri,       //Url de la consulta a realizar
  type:&quot;GET&quot;,          //tipo de la llamada
  contentType:&quot;application/json&quot;, //el tipo de contenido que esperamos recuperar, JSON
  headers: requestHeaders
  })
  .done(function (data){
   for (var i = 0; i &lt; data.d.Files.results.length; i++){
    htmlImages+=&quot;&lt;li&gt;&lt;img src=&#39;&quot; + data.d.Files.results[i].ServerRelativeUrl + &quot;&#39;&gt;&lt;/li&gt;
&quot;;
   }
   htmlImages+=&quot;&lt;/ul&gt;
&quot;;
   $(&quot;#container&quot;).html(htmlImages);
  });
})
&lt;/script&gt;

&lt;!-- Aqui se pintaran las imagenes--&gt;
&lt;div id=&quot;container&quot;&gt;
&lt;/div&gt;
&lt;/pre&gt;
Y si ponemos este Html dentro de un content editor...funciona!&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNtBuYGiGuHfz4GfavCQMx5kLQm1bGFDm6jY4xmSUxFVQ-zjA4pHOJZwJon-gPRxayS2flzKb4IL9UNq9jC8piSZKNqB9E1vVeY1KK6qac-7HaYYK-9oHgj5L09-h_2N1qwHBfNwxMccs/s1600/Final.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNtBuYGiGuHfz4GfavCQMx5kLQm1bGFDm6jY4xmSUxFVQ-zjA4pHOJZwJon-gPRxayS2flzKb4IL9UNq9jC8piSZKNqB9E1vVeY1KK6qac-7HaYYK-9oHgj5L09-h_2N1qwHBfNwxMccs/s400/Final.png&quot; width=&quot;381&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
Nótese que en este caso por simplicidad solo concateno texto para formar el HTML, algo que podría hacerse mucho mas elegante con Knockout por ejemplo, pero eso sera en un siguiente post.&lt;br /&gt;
&lt;br /&gt;
Happy coding!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/3839680480569829696/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/3839680480569829696?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/3839680480569829696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/3839680480569829696'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/05/sharepoint-2013-recuperar-imagenes-de.html' title='SharePoint 2013 - Recuperar imagenes de libreria de imagenes mediante REST'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNtBuYGiGuHfz4GfavCQMx5kLQm1bGFDm6jY4xmSUxFVQ-zjA4pHOJZwJon-gPRxayS2flzKb4IL9UNq9jC8piSZKNqB9E1vVeY1KK6qac-7HaYYK-9oHgj5L09-h_2N1qwHBfNwxMccs/s72-c/Final.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-4045084689086965933</id><published>2013-05-12T19:38:00.000-07:00</published><updated>2013-05-12T19:38:20.500-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apps"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="WebCast"/><title type='text'>Webcast - Nuevo modelo de aplicaciones con Sharepoint 2013</title><content type='html'>Hola amigos, quiero invitarlos al Webcast &lt;strong&gt;&lt;u&gt;&lt;a href=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032548200&amp;amp;Culture=es-AR&amp;amp;community=0&quot; target=&quot;_blank&quot;&gt;Nuevo modelo de aplicaciones con Sharepoint 2013&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;, que estaré impartiendo como parte del ciclo de Webcast de Visual Studio 2012.&lt;br /&gt;
&lt;br /&gt;
El Webcast se llevara a cabo el Lunes 27 de Mayo del 2013 a las 2:00 PM&amp;nbsp;(GMT-06:00)&amp;nbsp;hora de la ciudad de México. &lt;br /&gt;
&lt;br /&gt;
Les comparto la &lt;a href=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032548200&amp;amp;Culture=es-AR&amp;amp;community=0&quot; target=&quot;_blank&quot;&gt;URL para el registro&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
Espero contar con su asistencia&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNRCT5RpUH6i3OyK8mkWDpHfM9bgPPV7a3A76oWCesPM74KzF8tG8iXFjwcvujsEpUZyeMct0L1sNUGBskS-ICMtJV81mUR0DgkqLS6algK6Y86quHKjcp_5mophyphenhyphen4QtT9jHT4qZr1mOc/s1600/image8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;243&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNRCT5RpUH6i3OyK8mkWDpHfM9bgPPV7a3A76oWCesPM74KzF8tG8iXFjwcvujsEpUZyeMct0L1sNUGBskS-ICMtJV81mUR0DgkqLS6algK6Y86quHKjcp_5mophyphenhyphen4QtT9jHT4qZr1mOc/s400/image8.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Happy code!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/4045084689086965933/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/4045084689086965933?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/4045084689086965933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/4045084689086965933'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/05/webcast-nuevo-modelo-de-aplicaciones.html' title='Webcast - Nuevo modelo de aplicaciones con Sharepoint 2013'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNRCT5RpUH6i3OyK8mkWDpHfM9bgPPV7a3A76oWCesPM74KzF8tG8iXFjwcvujsEpUZyeMct0L1sNUGBskS-ICMtJV81mUR0DgkqLS6algK6Y86quHKjcp_5mophyphenhyphen4QtT9jHT4qZr1mOc/s72-c/image8.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-5975991715772605811</id><published>2013-05-05T21:40:00.000-07:00</published><updated>2013-12-01T21:43:58.322-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API REST"/><category scheme="http://www.blogger.com/atom/ns#" term="ODATA"/><category scheme="http://www.blogger.com/atom/ns#" term="REST"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>SharePoint 2013 REST - Feed format not supported</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Si están comenzando &amp;nbsp;a adentrarse en la creación de apps para SharePoint 2013, tal vez de las operaciones más básicas que están realizando es consumir la api REST de SharePoint, y dada la facilidad con que se puede hacer una consulta ODATA a través de la barra de navegación del explorador es muy probable que se enfrenten a la siguiente situación cuando crean una consulta:&lt;/div&gt;
&lt;br /&gt;
Internet Explorer muestra el mensaje: &lt;b&gt;Feed format not Supported.&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDjdIRQrdSjggPzB-9DiXV0a8r7UhcRjBZ6uh3uuXpdSapFt5vWBGYML7Ncf2qb1_agKp_TQPF__MrHsKSfcEH3sxMJowqKkKBvQdIDaeYFHokD7K1G9qTMDeCIpyY_W3F2qpjZM-b48o/s1600/Feed+format+not+Supported.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;272&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDjdIRQrdSjggPzB-9DiXV0a8r7UhcRjBZ6uh3uuXpdSapFt5vWBGYML7Ncf2qb1_agKp_TQPF__MrHsKSfcEH3sxMJowqKkKBvQdIDaeYFHokD7K1G9qTMDeCIpyY_W3F2qpjZM-b48o/s400/Feed+format+not+Supported.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Por suerte es bastante fácil solucionar esto, simplemente sigan los siguientes pasos:&lt;br /&gt;
&lt;br /&gt;
En el menú &lt;b&gt;Tools&lt;/b&gt; de Internet Explorer seleccionen la opción &lt;b&gt;Internet Options&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1gTdwXGjTDJmuxCEbTfOJ-r1LPHxqcQ2d14Jf49atTBW8RvG-Bn9gBUZJQJ-0k-7Q73Yi0K3Txr0bof5OvBUmxFCgCOiAjJrhNpgMP4u9dfdbbfMWkHRFzbTOeMB95ocOyVNYOU21TCQ/s1600/Internet+Options.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;315&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1gTdwXGjTDJmuxCEbTfOJ-r1LPHxqcQ2d14Jf49atTBW8RvG-Bn9gBUZJQJ-0k-7Q73Yi0K3Txr0bof5OvBUmxFCgCOiAjJrhNpgMP4u9dfdbbfMWkHRFzbTOeMB95ocOyVNYOU21TCQ/s400/Internet+Options.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
En la pestaña &lt;b&gt;Content &lt;/b&gt;seleccionen la opción &lt;b&gt;Feeds and Web Slices&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPEcVX0id0khBbPEWE-nvCK8YTmFfaMv9WuSMxuBUKw4kH_bjEH5zNOR9qY07WCEe-sSrHXNvw6oC5oR51ViN0qQH7kQ8dFMETHDjHG7broKZRa-BlBij3pqVbs4ne0HBWn7ox3QQQIw8/s1600/Feed+and+Web+Slices.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPEcVX0id0khBbPEWE-nvCK8YTmFfaMv9WuSMxuBUKw4kH_bjEH5zNOR9qY07WCEe-sSrHXNvw6oC5oR51ViN0qQH7kQ8dFMETHDjHG7broKZRa-BlBij3pqVbs4ne0HBWn7ox3QQQIw8/s400/Feed+and+Web+Slices.png&quot; width=&quot;311&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Asegúrense que la opción &lt;b&gt;Turn on feed Reading view&lt;/b&gt; no está seleccionada&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif0IRfQMpG7jt-BSzubrN_Jgl4S8Ic3nAd0EZ0SBTekKnILTZik_nCpuA3d-44yV4MK2aIZ4HUpUHKPT09nO67wb8wD-XHiu_gIg_w11Hh4SueoDKRoIH7rYFGGX1uYbNSrW98-ufrPW8/s1600/Turn+off.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif0IRfQMpG7jt-BSzubrN_Jgl4S8Ic3nAd0EZ0SBTekKnILTZik_nCpuA3d-44yV4MK2aIZ4HUpUHKPT09nO67wb8wD-XHiu_gIg_w11Hh4SueoDKRoIH7rYFGGX1uYbNSrW98-ufrPW8/s320/Turn+off.png&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Eso solucionara este pequeño inconveniente&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqyJ7qI5dg6VttsRIGDBbCiUW6k_Y0WAwm28RFbsC-v2eJtKZY2KwQh7D15seIDa0DvjSZGHRIG4Jtt79Fg-GxAD5PQ70-nV3D3AA3uiQlN8hvcURIUqXDfBDpObsB91aDX2mBbfCevt4/s1600/Good.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;315&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqyJ7qI5dg6VttsRIGDBbCiUW6k_Y0WAwm28RFbsC-v2eJtKZY2KwQh7D15seIDa0DvjSZGHRIG4Jtt79Fg-GxAD5PQ70-nV3D3AA3uiQlN8hvcURIUqXDfBDpObsB91aDX2mBbfCevt4/s400/Good.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Happy Coding!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/5975991715772605811/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/5975991715772605811?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/5975991715772605811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/5975991715772605811'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/05/sharepoint-2013-rest-feed-format-not.html' title='SharePoint 2013 REST - Feed format not supported'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDjdIRQrdSjggPzB-9DiXV0a8r7UhcRjBZ6uh3uuXpdSapFt5vWBGYML7Ncf2qb1_agKp_TQPF__MrHsKSfcEH3sxMJowqKkKBvQdIDaeYFHokD7K1G9qTMDeCIpyY_W3F2qpjZM-b48o/s72-c/Feed+format+not+Supported.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-8672425915525483454</id><published>2013-05-01T19:42:00.000-07:00</published><updated>2013-12-27T19:52:42.848-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apps"/><category scheme="http://www.blogger.com/atom/ns#" term="Apps Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Fiddler"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="ODATA"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Web API"/><title type='text'>Recomendaciones para iniciar a construir apps para SharePoint 2013</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Algo de lo cual me he dado cuenta últimamente es que desafortunadamente los desarrolladores de SharePoint que solo desarrollan para esta plataforma tienen nulos o vagos conocimientos de algunas otras tecnologías/plataformas/frameworks y es que haciendo una reflexión del día a día al que nos enfrentamos los desarrolladores SharePoint (me incluyo) lo común es crear elementos tales como:&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Features&lt;/li&gt;
&lt;li&gt;Event Receivers&lt;/li&gt;
&lt;li&gt;Jobs&lt;/li&gt;
&lt;li&gt;Web Services&lt;/li&gt;
&lt;li&gt;WebParts&lt;/li&gt;
&lt;li&gt;Workflows&lt;/li&gt;
&lt;li&gt;Master Pages&lt;/li&gt;
&lt;li&gt;Paginas (ASPX)&lt;/li&gt;
&lt;li&gt;User Controls (ASCX)&lt;/li&gt;
&lt;li&gt;Etc, etc&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Además de lo acotado que es el ámbito técnico de los elementos de desarrollo de SharePoint, y por favor no me mal entiendan, la variedad de soluciones que se pueden construir con y sobre SharePoint es casi ilimitada sin embargo los elementos a utilizar tecnológicamente hablando son relativamente pocos (los listados arriba), lo que ocasiona que con el tiempo nos encasillemos en cosas como el desarrollo ASP.NET “tradicional”.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dicho y aclarado lo anterior, no es de extrañarse la renuencia de los desarrolladores ahora que Microsoft quiere evangelizarlos para construir, diseñar y pensar en términos de apps en lugar de soluciones tradicionales (Farm Solutions) ya que las Apps implican muchos conceptos y tecnologías nuevos, y a veces hasta desconocidos, para este grupo de desarrolladores.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Es imprescindible que comencemos a aprender todos estos conceptos/frameworks/tecnologías&amp;nbsp;ASAP si no queremos quedarnos fuera de la jugada y con el tiempo ir quedando relegados. Evidentemente no es posible aprender todo en una noche (o acaso les funciono cuando estudiaban la noche antes del examen? ) pero si es posible ir diseñando un track de auto capacitación que nos permita acercarnos a esta nueva apuesta de Microsoft.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlgeBEHZdertZ0kwlpP26FD-Q9oRkKQLxGiR1JehVtl9Y_GhZbA-xbKSBOAy9SCIz9wvL9VWFAxzdpPuYgr5GOH5-ttsoZYkOHI8C0j5h7-5N1svkrbFhuQkh8sNFWVMpcgi5YFt2pCS0/s1600/apps+for+sharepoint.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlgeBEHZdertZ0kwlpP26FD-Q9oRkKQLxGiR1JehVtl9Y_GhZbA-xbKSBOAy9SCIz9wvL9VWFAxzdpPuYgr5GOH5-ttsoZYkOHI8C0j5h7-5N1svkrbFhuQkh8sNFWVMpcgi5YFt2pCS0/s400/apps+for+sharepoint.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A continuación les menciono y comparto un primer paquete de enlaces de los temas y herramientas con los que un “desarrollador SharePoint 2013” debería estar familiarizado, en posts subsecuentes iré agregando algunos otros enlaces recomendados junto con los ejemplos de desarrollos para SharePoint 2013, por el momento revisen lo siguiente:&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Temas&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.odata.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ODATA&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.asp.net/mvc/tutorials/mvc-5/introduction/getting-started&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ASP.NET MVC 5&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/office/jj164022.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;How to: Complete basic operations using SharePoint 2013 REST endpoints&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.asp.net/web-api&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Web API&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://jquery.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Jquery&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Herramientas&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://fiddler2.com/get-fiddler&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Fiddler&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://office.microsoft.com/en-us/store/odata-querybuilder-WA104051159.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ODATA QueryBuilder&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/library/gg589507(VS.85).aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Internet Explorer Developer Tools&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://developers.google.com/chrome-developer-tools/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Chrome Developer Tools&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Adicionalmente es muy recomendable que si tienen la oportunidad de adquirir una subscripcion al sitio de entrenamiento en linea de Pluralsight lo hagan sin dudarlo, tiene una amplia biblioteca de recursos tecnicos de muy buena calidad.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por el momento pueden iniciar con estos temas, si consideran que hay alguna herramienta o tema fundamental para iniciar el desarrollo de Apps que no haya mencionado no duden en comentar!&lt;/div&gt;
&lt;br /&gt;
Happy Coding!&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/8672425915525483454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/8672425915525483454?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/8672425915525483454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/8672425915525483454'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/05/recomendaciones-para-iniciar-construir.html' title='Recomendaciones para iniciar a construir apps para SharePoint 2013'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlgeBEHZdertZ0kwlpP26FD-Q9oRkKQLxGiR1JehVtl9Y_GhZbA-xbKSBOAy9SCIz9wvL9VWFAxzdpPuYgr5GOH5-ttsoZYkOHI8C0j5h7-5N1svkrbFhuQkh8sNFWVMpcgi5YFt2pCS0/s72-c/apps+for+sharepoint.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-7520117660899341275</id><published>2013-03-05T10:18:00.000-08:00</published><updated>2014-02-04T10:27:11.350-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Document Library"/><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Rich Text Field in SharePoint Document Library</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Se han visto en la necesidad de agregar una columna de texto enriquecido a una librería de documentos de SharePoint?&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Si es así, se habrán dado cuenta que las librerías de documentos permiten crear un campo de texto multilinea pero no permite utilizar texto enriquecido.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBS3MhOmp1FaJrx-3wFsViXaErlEj2HKN9o26MBRK_VwHCTxpZHBLy4KYcTxxYZD9U59lRNZGLdWPlxN3KrheMllO0-yYbFWmsJpSrFt6w3RZnbyKvquGcb4Z2uBjCzd5IlNo6jDfIWPM/s1600/Document+Library.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBS3MhOmp1FaJrx-3wFsViXaErlEj2HKN9o26MBRK_VwHCTxpZHBLy4KYcTxxYZD9U59lRNZGLdWPlxN3KrheMllO0-yYbFWmsJpSrFt6w3RZnbyKvquGcb4Z2uBjCzd5IlNo6jDfIWPM/s1600/Document+Library.png&quot; height=&quot;267&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
De manera predeterminada las librerías de documentos de SharePoint no permiten utilizar el texto enriquecido en una columna. De hecho si miramos dentro de las propiedades del campo en la librería de documentos, utilizando PowerShell, veremos que en efecto los valores de los campos no son los adecuados para poder ingresar texto enriquecido en la columna recién creada.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWX7p49nVFxhYvz1ILJA-UnTvlabj2zEEDGa8DVLEnbtO1FtBMTHGp8h6gkC7SfiSB2mH7JaWraGncejTJLkpQ6p4v-dALzV88iUSFDrNV_AleNnFQCbgOh0PPUjA0dAStVGg9ePuMKnY/s1600/Rich+text+field+settings+default.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWX7p49nVFxhYvz1ILJA-UnTvlabj2zEEDGa8DVLEnbtO1FtBMTHGp8h6gkC7SfiSB2mH7JaWraGncejTJLkpQ6p4v-dALzV88iUSFDrNV_AleNnFQCbgOh0PPUjA0dAStVGg9ePuMKnY/s1600/Rich+text+field+settings+default.png&quot; height=&quot;268&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Sin embargo siempre se puede utilizar un poco de scripting para &quot;corregir&quot; todo. A continuación el fragmento de PowerShell que modifica este comportamiento.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:powershell&quot;&gt;cls
$site= Get-SPSite -Identity http://sharepoint/sites/Test/
$web = $site.RootWeb

$lists= $web.Lists[&quot;Documents&quot;]
$field=$lists.Fields[&quot;RichTextColumn1&quot;]

$field.RichText=$True
$field.RichTextMode=&quot;FullHtml&quot;
$field.UnlimitedLengthInDocumentLibrary=$True

$field.Update()&lt;/pre&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYnSVMCTZdavJonfHECUUttNoxWsJa0Mgl6iBdkI_B2DD1o09ZbYqnJs-81lT9-2kCwM_f5Yh0oA_SkcXsD97h-vtJqlvwJr69AdDJWALh6dM7JAruGcL-kNWdaOTeFBc8Y3YhIqKyWdk/s1600/Result.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYnSVMCTZdavJonfHECUUttNoxWsJa0Mgl6iBdkI_B2DD1o09ZbYqnJs-81lT9-2kCwM_f5Yh0oA_SkcXsD97h-vtJqlvwJr69AdDJWALh6dM7JAruGcL-kNWdaOTeFBc8Y3YhIqKyWdk/s1600/Result.png&quot; height=&quot;245&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Adicionalmente deben tener cuidado con la propiedad UnlimitedLengthInDocumentLibrary, ya que podría causar problemas de performance si el usuario decide agregar mucho texto en esa columna o si esta columna será utilizada como metadato de alguno de los documentos de Office, ya que estos últimos tienen la restricción de solo soportar 255 caracteres como máximo.&lt;br /&gt;
&lt;br /&gt;
Happy Scripting!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/7520117660899341275/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/7520117660899341275?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/7520117660899341275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/7520117660899341275'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/03/rich-text-field-in-sharepoint-document.html' title='Rich Text Field in SharePoint Document Library'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBS3MhOmp1FaJrx-3wFsViXaErlEj2HKN9o26MBRK_VwHCTxpZHBLy4KYcTxxYZD9U59lRNZGLdWPlxN3KrheMllO0-yYbFWmsJpSrFt6w3RZnbyKvquGcb4Z2uBjCzd5IlNo6jDfIWPM/s72-c/Document+Library.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-2909496642188406242</id><published>2013-02-05T09:16:00.000-08:00</published><updated>2013-02-12T09:24:03.939-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Examenes de Certificación"/><category scheme="http://www.blogger.com/atom/ns#" term="MCSM"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>Exámenes liberados para SharePoint 2013</title><content type='html'>Tal vez aún no se hayan dado cuenta, pero un par de exámenes de SharePoint 2013 ya fueron liberados desde el 1 de Febrero. Los exámenes liberados son:
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-331&quot; target=&quot;_blank&quot;&gt;Core Solutions of Microsoft SharePoint Server 2013&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-332&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Advanced Solutions of Microsoft SharePoint Server 2013&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Estos exámenes forman parte del path de certificación para MCSM de SharePoint&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.microsoft.com/learning/en/us/mcsm-sharepoint-certification.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWbs4kr8c3muc_1p_aOxz8Ad7_cy1-n8Qv9iAGdbpLn_vUqHwVxsWAOkpIazdi14vanRb9-180ymOR6VBTdly3pNdjHa-ZjU7kQs2eanf3oDpDUOFNVA2gcmcOTYe0ZIMD7rb-U59vQQU/s400/img1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Adicionalmente, se enviaron los resultados para los que presentaron alguno de estos exámenes el pasado noviembre de 2012, cuando todavía se encontraban en fase beta. Yo presenté y pasé el examen &lt;strong&gt;Core Solutions of Microsoft SharePoint Server 2013,&lt;/strong&gt; además de poder contribuir a generar feedback a Microsoft para ese examen.&lt;br /&gt;
&lt;br /&gt;
Desafortunadamente los exámenes del path de certificación de desarrollo aún no han sido liberados&lt;br /&gt;
&lt;br /&gt;
Pues a preparar los exámenes!!!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/2909496642188406242/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/2909496642188406242?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/2909496642188406242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/2909496642188406242'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/02/exmanes-liberados-para-sharepoint-2013.html' title='Exámenes liberados para SharePoint 2013'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWbs4kr8c3muc_1p_aOxz8Ad7_cy1-n8Qv9iAGdbpLn_vUqHwVxsWAOkpIazdi14vanRb9-180ymOR6VBTdly3pNdjHa-ZjU7kQs2eanf3oDpDUOFNVA2gcmcOTYe0ZIMD7rb-U59vQQU/s72-c/img1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-8559138921128724249</id><published>2013-01-18T15:59:00.000-08:00</published><updated>2013-01-20T16:13:22.711-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fakes"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Emulators"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Test"/><category scheme="http://www.blogger.com/atom/ns#" term="Shims"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2012"/><title type='text'>Pruebas unitarias con SharePoint Emulator Package</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
No &lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%; mso-ansi-language: ES-MX; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-font-family: Arial; mso-fareast-language: EN-US;&quot;&gt;sé &lt;/span&gt;si ustedes hayan notado el mes pasado (con todas las fiestas que había) que el equipo de Visual Studio anuncio el paquete de SharePoint Emulators de Visual Studio 2012 para SharePoint 2010.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
De entrada este paquete solo aplica para SharePoint 2010 y utilizándolo en Visual Studio 2012. Es comprensible que este paquete solo aplique para SharePoint 2010, dado el poco tiempo que lleva SharePoint 2013 liberado, además de que la finalidad del emulador es poder probar código de servidor, mismo que Microsoft desalienta escribir para SharePoint 2013.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este paquete se puede instalar a través de NuGet. Solo tienen que buscarlo y aparece dentro de los resultados.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh89kr44VriNk8BzfWxUAzn4FUUU9SJIYGm5ePld9QeU5JwCFdLTauyuiKgnm5zI8dXoqk5foL0lvjzc5cb6Xbplsdete-flgh51CB-041uX5u_njBHltv45EWqwFPR2oyot6bjQFCPi-Y/s1600/img1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh89kr44VriNk8BzfWxUAzn4FUUU9SJIYGm5ePld9QeU5JwCFdLTauyuiKgnm5zI8dXoqk5foL0lvjzc5cb6Xbplsdete-flgh51CB-041uX5u_njBHltv45EWqwFPR2oyot6bjQFCPi-Y/s400/img1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
En el pasado había sido bastante difícil aislar los componentes SharePoint de una solución para realizar pruebas unitarias, debido a que estos componentes dependen enormemente de SharePoint, es decir, para poder realizar la ejecución de pruebas de esos componentes era necesario tener instalado SharePoint.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
SharePoint Emulators Package nos permite crear pruebas unitarias y ejecutarlas sin tener instalado un ambiente de SharePoint, este paquete se basa en el concepto de &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hh549176.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Shims&lt;/a&gt; de &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hh549175.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Microsoft Fakes&lt;/a&gt; para crear un contexto (un conjunto de Shims) en memoria de los objetos más comunes dentro de la API de SharePoint. Con lo que, para crear una prueba unitaria que utiliza objetos de la API de SharePoint lo único que debe hacer es encerrar el código que estamos probando dentro de un SharePoint Emulator Scope.&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:csharp; highlight:[4]&quot;&gt;[TestMethod]
public void CreateList()
{
	using (SharePointEmulationScope scope = new SharePointEmulationScope(Microsoft.QualityTools.Testing.Emulators.EmulationMode.Enabled))
	{
		using (SPSite site = new SPSite(&quot;http://UrldePrueba/&quot;))
		{
			using (SPWeb web = site.OpenWeb())
			{
				Assert.IsNotNull(web);

				//Definiendo la lista
				Guid listId = site.RootWeb.Lists.Add(listName, listName, SPListTemplateType.GenericList);
				SPList list = site.RootWeb.Lists[listId];
				Assert.IsNotNull(list);
				Assert.AreEqual(list.Title, listName, &quot;Bad list name!&quot;);

				//agregando los campos a la lista
				list.Fields.Add(&quot;Code&quot;, SPFieldType.Number, true);
				list.Fields.Add(&quot;Name&quot;, SPFieldType.Text, true);
				list.Fields.Add(&quot;Description&quot;, SPFieldType.Text, true);

				//agregando dos nuevos elemento a la lista
				SPListItem item1 = list.Items.Add();
				item1[&quot;Code&quot;] = 1;
				item1[&quot;Name&quot;] = &quot;West&quot;;
				item1[&quot;Description&quot;] = &quot;West Region&quot;;
				item1.Update();

				SPListItem item2 = list.Items.Add();
				item2[&quot;Code&quot;] = 1;
				item2[&quot;Name&quot;] = &quot;East&quot;;
				item2[&quot;Description&quot;] = &quot;East Region&quot;;
				item2.Update();

				Assert.AreEqual(list.ItemCount, 2, &quot;Bad number of items&quot;);
			}
		}
	}
}

&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como mencionaba antes, este paquete solo contiene los Shims para los objetos de uso más común dentro de la API de SharePoint, por lo que habrá casos es los que al hacer uso de ciertos métodos o propiedades, que devuelven un tipo de objeto que no tiene su correspondiente Shim dentro del emulador,&amp;nbsp; obtendremos excepciones de tipo NotSupportedException, como por ejemplo al intentar utilizar el método GetItems de un objeto SPList, que devuelve un objeto de tipo SPListItemCollection.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiObrU6E9TtLl48w2pgnV1RdLRjVyYb9fGrBbx9oo9a0d2jrat2hHCDi_oQje8gSY5mOvQRyJOM3mZO6ZKd6OwWc0lQxF50I9lyWniQABrc0SLYU6SvHsF86OkdjEvwQ7RFRBcXxz0-O-0/s1600/img2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;263&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiObrU6E9TtLl48w2pgnV1RdLRjVyYb9fGrBbx9oo9a0d2jrat2hHCDi_oQje8gSY5mOvQRyJOM3mZO6ZKd6OwWc0lQxF50I9lyWniQABrc0SLYU6SvHsF86OkdjEvwQ7RFRBcXxz0-O-0/s400/img2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
El siguiente código muestra el método que se está probando, en la línea 17 está la llamada al método GetItems que lanzará la excepción.
&lt;br /&gt;
&lt;pre class=&quot;brush:csharp; highlight: [17]&quot;&gt;public string GetNameByCode(string listName, SPWeb web, int code)
{
	SPList list = web.Lists[listName];

	var listQuery = new SPQuery
	{
		Query = String.Format(
			&quot;&lt;where&gt;&quot; +
			&quot;&lt;eq&gt;&quot; +
			&quot;&lt;fieldref name=&quot;Code&quot;&gt;&quot; +
			&quot;&lt;value type=&quot;Number&quot;&gt;{0}&lt;/value&gt;&quot; +
			&quot;&lt;/fieldref&gt;&lt;/eq&gt;&quot; +
			&quot;&lt;/where&gt;&quot;, code)
	};

	string name = string.Empty;
	foreach (SPListItem item in list.GetItems(listQuery))
	{
		name = item[&quot;Name&quot;].ToString();
	}

	return name;
}

&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lo genial de esto, es que es posible inyectar Shims al Emulador para los tipos no soportados, como por ejemplo para SPListItemCollection,&amp;nbsp;de la forma tradicional, es decir usando Shims, como se aprecia de las líneas 41 a la 50&lt;/div&gt;
&lt;pre class=&quot;brush:csharp; highlight: [41,42,43,44,45,46,47,48,49,50]&quot;&gt;[TestMethod]
public void SearchItemById()
{
	int searchById = 2;

	using (SharePointEmulationScope scope = new SharePointEmulationScope(Microsoft.QualityTools.Testing.Emulators.EmulationMode.Enabled))
	{
		using (SPSite site = new SPSite(&quot;http://UrldePrueba/&quot;))
		{
			using (SPWeb web = site.OpenWeb())
			{
				Assert.IsNotNull(web);

				//Definiendo la lista
				Guid listId = site.RootWeb.Lists.Add(listName, listName, SPListTemplateType.GenericList);
				SPList list = site.RootWeb.Lists[listId];
				Assert.IsNotNull(list);
				Assert.AreEqual(list.Title, listName, &quot;Bad list name!&quot;);

				//agregando los campos a la lista
				list.Fields.Add(&quot;Code&quot;, SPFieldType.Number, true);
				list.Fields.Add(&quot;Name&quot;, SPFieldType.Text, true);
				list.Fields.Add(&quot;Description&quot;, SPFieldType.Text, true);

				//agregando dos nuevos elemento a la lista
				SPListItem item1 = list.Items.Add();
				item1[&quot;Code&quot;] = 1;
				item1[&quot;Name&quot;] = &quot;West&quot;;
				item1[&quot;Description&quot;] = &quot;West Region&quot;;
				item1.Update();

				SPListItem item2 = list.Items.Add();
				item2[&quot;Code&quot;] = 2;
				item2[&quot;Name&quot;] = &quot;East&quot;;
				item2[&quot;Description&quot;] = &quot;East Region&quot;;
				item2.Update();

				Assert.AreEqual(list.ItemCount, 2, &quot;Bad number of items&quot;);

				//Agregamos el Shimp para el objeto SPListItemCollection
				if (scope.EmulationMode == EmulationMode.Enabled)
				{
					var fakeList = new ShimSPList(list);
					fakeList.GetItemsSPQuery = (query) =&amp;gt;
					{
						var shim = new ShimSPListItemCollection();
						shim.Bind(new[] { list.Items[0], list.Items[1] });
						return shim.Instance;
					};
				}

				RegionGateway gateway = new RegionGateway();

				//Ahora al realizar la llamada al metodo GetNameByCode, no se lanzara la excepcion
				string result = gateway.GetNameByCode(listName, site.RootWeb, searchById);
				Assert.AreNotEqual(string.Empty, result, true, &quot;Search Failed!&quot;);


				Region searchItem = gateway.GetRegionById(listName, web, 1);
				Assert.IsNotNull(searchItem);
				Assert.AreEqual(&quot;West&quot;, searchItem.Name, true);
			}
		}
	}
}

&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin duda alguna un importante paquete que debiéramos usar desde ya para las pruebas unitarias de nuestro código. Ahora lo importante sería preguntar para cuando este paquete estará disponible para SharePoint 2013.&lt;/div&gt;
&lt;br /&gt;
Por último les comparto el proyecto de Visual Studio para que vean el código y puedan analizarlo mejor.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;120&quot; scrolling=&quot;no&quot; src=&quot;https://skydrive.live.com/embed?cid=102EA40B907ACCFB&amp;amp;resid=102EA40B907ACCFB%2125435&amp;amp;authkey=AIlrmhPRDebnQDk&quot; width=&quot;98&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
Referencias&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/jj822928.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Using emulators to isolate unit tests for Sharepoint 2010 applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/26/introducing-sharepoint-emulators.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Introducing SharePoint Emulators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hh549175.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Isolating Code under Test with Microsoft Fakes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hh549176.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Using shims to isolate your application from other assemblies for unit testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;strong&gt;Happy Code!&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/8559138921128724249/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/8559138921128724249?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/8559138921128724249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/8559138921128724249'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/01/pruebas-unitarias-con-sharepoint.html' title='Pruebas unitarias con SharePoint Emulator Package'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh89kr44VriNk8BzfWxUAzn4FUUU9SJIYGm5ePld9QeU5JwCFdLTauyuiKgnm5zI8dXoqk5foL0lvjzc5cb6Xbplsdete-flgh51CB-041uX5u_njBHltv45EWqwFPR2oyot6bjQFCPi-Y/s72-c/img1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-546382119090483446</id><published>2013-01-09T21:25:00.000-08:00</published><updated>2013-01-09T21:29:25.645-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API REST"/><category scheme="http://www.blogger.com/atom/ns#" term="jqGrid"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>JqGrid y la API REST de SharePoint 2013</title><content type='html'>El motivo de este post es mostrar un ejemplo de como combinar el uso del jqGrid obteniendo datos de una lista de SharePoint a través de la API REST.&lt;br /&gt;
&lt;br /&gt;
Antes que nada, supongo que muchos de ustedes conocen el &lt;a href=&quot;http://www.trirand.net/demoaspnet.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;jqGrid&lt;/a&gt;, si no es así, se están perdiendo de un plugin de jquery bastante interesante, muy fácil de usar y con bastantes características como:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Formatear celdas&lt;/li&gt;
&lt;li&gt;Reordenar columnas&lt;/li&gt;
&lt;li&gt;Menús contextuales para filas&lt;/li&gt;
&lt;li&gt;Barras de menús personalizadas&lt;/li&gt;
&lt;li&gt;Carga de datos desde diferentes fuentes como XML, JSON, etc&lt;/li&gt;
&lt;li&gt;Multiseleccion&lt;/li&gt;
&lt;li&gt;Resizing&lt;/li&gt;
&lt;li&gt;Edición en línea&lt;/li&gt;
&lt;li&gt;Agrupación&lt;/li&gt;
&lt;li&gt;Búsqueda&lt;/li&gt;
&lt;li&gt;Paginación&lt;/li&gt;
&lt;li&gt;Y un largo etcétera.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Lo anterior combinado con la practicidad de la nueva API REST de SharePoint 2013 permite a los desarrolladores crear aplicaciones realmente sorprendentes.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Escenario:&lt;/strong&gt;&lt;br /&gt;
Tengo un sitio de SharePoint con una lista llamada Sales con las columnas y datos que se aprecian en la imagen&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMjTgZDLuPXMqkHZB2_iIWZkbBiWEsLZVECxQJF_T-DdycBlj5EqF7wC7t78mIWfYWtz7XrDIiAaAhjJ9ugjQy8aYBgZ6dRcvKtogYaca_f9VpzATW9Zsd80GfYNyziPrxsvkHCTp-oqo/s1600/img1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMjTgZDLuPXMqkHZB2_iIWZkbBiWEsLZVECxQJF_T-DdycBlj5EqF7wC7t78mIWfYWtz7XrDIiAaAhjJ9ugjQy8aYBgZ6dRcvKtogYaca_f9VpzATW9Zsd80GfYNyziPrxsvkHCTp-oqo/s400/img1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;strong&gt;Requerimiento:&lt;/strong&gt;&lt;br /&gt;
Es necesario mostrar en una pagina, una vista de la lista utilizando alguna de las características arriba mencionadas, como ordenación, menús contextuales, multiseleccion, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Solución:&lt;/strong&gt;&lt;br /&gt;
Como siempre y para cualquier problema, no hay una solución única, pero yo me inclinaría por usar jqGrid, porque la solución es muy sencilla, fácil de codificar y ni siquiera requiere crear un wsp o una App (cosa que hare en otro post) que se instale y despliegue en la granja.&lt;br /&gt;
&lt;br /&gt;
Solo hare uso de la webpart &lt;strong&gt;Script Editor&lt;/strong&gt; para agregar un poco de HTML y JavaScript a una pagina cualquiera de SharePoint.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgMirh-rmKtNp75LZ6sg1J4ntR2ooemTJXl7fGEZv3lzKijsfZsxxLrdibJoKwX6EE6fEF52KFLbtdtagDTII3NA6zzMglTQynSsym3ut9QQvt4VM_TpxBCquHHMEp4I2bCYmy7PtDtes/s1600/img3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;289&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgMirh-rmKtNp75LZ6sg1J4ntR2ooemTJXl7fGEZv3lzKijsfZsxxLrdibJoKwX6EE6fEF52KFLbtdtagDTII3NA6zzMglTQynSsym3ut9QQvt4VM_TpxBCquHHMEp4I2bCYmy7PtDtes/s640/img3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A continuación el código completo utilizado:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;height: 500px; overflow: scroll;&quot;&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;&lt;!--Referencia CDN a la hoja de estilos del tema para jqGrid (el azulito pues)--&gt;
&lt;link href=&quot;http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/themes/redmond/jquery-ui.css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;/link&gt; 
&lt;!--Referencia local al archivo ui.jqgrid.css, que se descarga desde nuestro sitio SharePoint de la libreria de estilos--&gt;
&lt;link href=&quot;http://sp2013app/Style/js/ui.jqgrid.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;/link&gt;
&lt;!--Referencia CDN de jquery v 1.8.3--&gt;
&lt;script language=&quot;javascript&quot; src=&quot;http://ajax.microsoft.com/ajax/jquery/jquery-1.8.3.js&quot; type=&quot;text/javascript&quot;&gt; &lt;/script&gt; 
&lt;!--Referencia del archivo js del jqGrid que se descarga desde nuestra libreria de estilos del sitio de SharePoint--&gt;
&lt;script language=&quot;javascript&quot; src=&quot;http://sp2013app/Style/js/jquery.jqGrid.min.js&quot; type=&quot;text/javascript&quot;&gt; &lt;/script&gt; 

&lt;script type=&quot;text/javascript&quot;&gt;
$(onPageLoad);

//funcion que se ejecuta en el evento onLoad de la pagina
function onPageLoad()
{
 //adjuntamos a el evento onclick del boton &#39;getSales&#39; la funcion getSales()
 $(&quot;#getSales&quot;).click(getSales);
   $(document).ready(function () {
   //configuramos el jqGrid
    $(&quot;#SalesTable&quot;).jqGrid({
    datatype: &#39;local&#39;,
    autowidth: true,
    height: 230,
    colNames: [&#39;ID&#39;, &#39;Order Date&#39;, &#39;Region&#39;, &#39;Representative&#39;, &#39;Item&#39;, &#39;Units&#39;, &#39;Unit Cost&#39;, &#39;Total&#39;],
    colModel: [
     { name: &#39;ID&#39;, index:&#39;ID&#39;, width: 80 , sorttype:&quot;int&quot;},
     { name: &#39;Title&#39;, width: 80 , sorttype:&quot;date&quot;},
     { name: &#39;Region&#39;, width: 80 },
     { name: &#39;Rep&#39;, width: 80 },
     { name: &#39;Item&#39;, width: 80 },
     { name: &#39;Units&#39;, width: 80 },
     { name: &#39;Unit_x0020_Cost&#39;, width: 80 },
     { name: &#39;Total&#39;, width: 80 , sorttype:&quot;float&quot;},
    ],
    caption: &#39;Sales via OData&#39;
  });
   });
}

//funcion que se ejecuta cuando hacemos click en el boton &#39;Obtener Ventas&#39;
function getSales(){
 //Url REST de la consulta que estamos haciendo, recuperamos los elementos de la lista &#39;Sales&#39;
 var requestUri = &quot;http://sp2013app/_api/web/lists/getByTitle(&#39;Sales&#39;)/items/&quot;;
 //Se establece el header ACCEPT de manera adecuada
 var requestHeaders={
      &quot;ACCEPT&quot;:&quot;application/json;odata=verbose&quot;,
 }
 //se realiza la llamada ajax mediante jquery
 $.ajax({
 url: requestUri,    //Url de la consulta a realizar
 type:&quot;GET&quot;,      //tipo de la llamada
 contentType:&quot;application/json&quot;, //el tipo de contenido que esperamos recuperar, JSON
 headers: requestHeaders,  //headers correctos
 error:onError,      //en caso de error se ejecuta la funcion onError()
 success: onGetSalesSuccess  //en caso de exito, se ejecuta la funcion onGetSalesSuccess()
 }); 
}

//funcion que se ejecuta en caso de que la llamada REST sea exitosa
function onGetSalesSuccess(data){
 if(!data)return;
  //por cada uno de los resultados obtenidos se agrega una fila al jqGrid
  $.each(data.d.results,function(index, value){
   $(&quot;#SalesTable&quot;).jqGrid(&#39;addRowData&#39;, value.ID, value);
  });
 $(&quot;#SalesTable&quot;).jqGrid(&#39;SalesTable&#39;,&#39;#pager2&#39;,{edit:false,add:false,del:false});
}

function onError(xhr, status){
 alert(xhr.response.message);
}

&lt;/script&gt;
&lt;/pre&gt;
&lt;pre class=&quot;brush:html&quot;&gt;&lt;!-- Uncomment this HTML code before to use the example
&lt;input id=&quot;getSales&quot; type=&quot;button&quot; value=&quot;Obtener Ventas&quot; /&gt;
&lt;table id=&quot;SalesTable&quot;&gt;&lt;/table&gt;
&lt;div id=&quot;pager2&quot;&gt;
&lt;/div&gt;
--&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;strong&gt;La explicación:&lt;/strong&gt;
&lt;br /&gt;
Primero agregamos algunas referencias a los archivos js y css, tanto del grid como de jquery
&lt;br /&gt;
&lt;pre class=&quot;brush:html&quot;&gt;&lt;!--Referencia CDN a la hoja de estilos del tema para jqGrid (el azulito pues)--&gt;
&lt;link href=&quot;http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/themes/redmond/jquery-ui.css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;/link&gt; 
&lt;!--Referencia local al archivo ui.jqgrid.css, que se descarga desde nuestro sitio SharePoint de la libreria de estilos--&gt;
&lt;link href=&quot;http://sp2013app/Style/js/ui.jqgrid.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;/link&gt;
&lt;!--Referencia CDN de jquery v 1.8.3--&gt;
&lt;script language=&quot;javascript&quot; src=&quot;http://ajax.microsoft.com/ajax/jquery/jquery-1.8.3.js&quot; type=&quot;text/javascript&quot;&gt; &lt;/script&gt; 
&lt;!--Referencia del archivo js del jqGrid que se descarga desde nuestra libreria de estilos del sitio de SharePoint--&gt;
&lt;script language=&quot;javascript&quot; src=&quot;http://sp2013app/Style/js/jquery.jqGrid.min.js&quot; type=&quot;text/javascript&quot;&gt; &lt;/script&gt; 
&lt;/pre&gt;
&lt;br /&gt;
Luego agregamos el código para configurar el jqGrid, es decir las columnas, el ordenamiento, etc, etc. y el código para realizar la llamada REST y manejar la respuesta para hacer el Binding de datos JSON con el grid
&lt;br /&gt;
&lt;div style=&quot;height: 300px; overflow: scroll;&quot;&gt;
&lt;pre class=&quot;brush:js&quot;&gt;$(onPageLoad);

//funcion que se ejecuta en el evento onLoad de la pagina
function onPageLoad()
{
 //adjuntamos a el evento onclick del boton &#39;getSales&#39; la funcion getSales()
 $(&quot;#getSales&quot;).click(getSales);
   $(document).ready(function () {
   //configuramos el jqGrid
    $(&quot;#SalesTable&quot;).jqGrid({
    datatype: &#39;local&#39;,
    autowidth: true,
    height: 230,
    colNames: [&#39;ID&#39;, &#39;Order Date&#39;, &#39;Region&#39;, &#39;Representative&#39;, &#39;Item&#39;, &#39;Units&#39;, &#39;Unit Cost&#39;, &#39;Total&#39;],
    colModel: [
     { name: &#39;ID&#39;, index:&#39;ID&#39;, width: 80 , sorttype:&quot;int&quot;},
     { name: &#39;Title&#39;, width: 80 , sorttype:&quot;date&quot;},
     { name: &#39;Region&#39;, width: 80 },
     { name: &#39;Rep&#39;, width: 80 },
     { name: &#39;Item&#39;, width: 80 },
     { name: &#39;Units&#39;, width: 80 },
     { name: &#39;Unit_x0020_Cost&#39;, width: 80 },
     { name: &#39;Total&#39;, width: 80 , sorttype:&quot;float&quot;},
    ],
    caption: &#39;Sales via OData&#39;
  });
   });
}

//funcion que se ejecuta cuando hacemos click en el boton &#39;Obtener Ventas&#39;
function getSales(){
 //Url REST de la consulta que estamos haciendo, recuperamos los elementos de la lista &#39;Sales&#39;
 var requestUri = &quot;http://sp2013app/_api/web/lists/getByTitle(&#39;Sales&#39;)/items/&quot;;
 //Se establece el header ACCEPT de manera adecuada
 var requestHeaders={
      &quot;ACCEPT&quot;:&quot;application/json;odata=verbose&quot;,
 }
 //se realiza la llamada ajax mediante jquery
 $.ajax({
 url: requestUri,    //Url de la consulta a realizar
 type:&quot;GET&quot;,      //tipo de la llamada
 contentType:&quot;application/json&quot;, //el tipo de contenido que esperamos recuperar, JSON
 headers: requestHeaders,  //headers correctos
 error:onError,      //en caso de error se ejecuta la funcion onError()
 success: onGetSalesSuccess  //en caso de exito, se ejecuta la funcion onGetSalesSuccess()
 }); 
}

//funcion que se ejecuta en caso de que la llamada REST sea exitosa
function onGetSalesSuccess(data){
 if(!data)return;
  //por cada uno de los resultados obtenidos se agrega una fila al jqGrid
  $.each(data.d.results,function(index, value){
   $(&quot;#SalesTable&quot;).jqGrid(&#39;addRowData&#39;, value.ID, value);
  });
 $(&quot;#SalesTable&quot;).jqGrid(&#39;SalesTable&#39;,&#39;#pager2&#39;,{edit:false,add:false,del:false});
}

function onError(xhr, status){
 alert(xhr.response.message);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Y por ultimo tenemos el código HTML que sirve como contenedor del grid, me refiero al input, la tabla y el div. Solo basta descomentar el código HTML al ser usado

&lt;br /&gt;
&lt;pre class=&quot;brush:html&quot;&gt;&lt;!-- Descomentar este codigo
&lt;input id=&quot;getSales&quot; type=&quot;button&quot; value=&quot;Obtener Ventas&quot; /&gt;
&lt;table id=&quot;SalesTable&quot;&gt;&lt;/table&gt;
&lt;div id=&quot;pager2&quot;&gt;
&lt;/div&gt;
--&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;strong&gt;El resultado:&lt;/strong&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSd_GikwbFtn7Om0m2VziZxfcPpsiWD-faKEh3q3I0znzSy5alIWgSorvSwh2WJoDPpoENGJaVot4uXs8SxBlzhIc2yfHVhsMZNnPsGyPjRgyL5_oMqnVrWeQ3Cpch4eR-808B7tDA8Xo/s1600/jqGrid+in+SharePoint+2013.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSd_GikwbFtn7Om0m2VziZxfcPpsiWD-faKEh3q3I0znzSy5alIWgSorvSwh2WJoDPpoENGJaVot4uXs8SxBlzhIc2yfHVhsMZNnPsGyPjRgyL5_oMqnVrWeQ3Cpch4eR-808B7tDA8Xo/s400/jqGrid+in+SharePoint+2013.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Happy Coding!&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/546382119090483446/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/546382119090483446?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/546382119090483446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/546382119090483446'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/01/jqgrid-y-la-api-rest-de-sharepoint-2013.html' title='JqGrid y la API REST de SharePoint 2013'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMjTgZDLuPXMqkHZB2_iIWZkbBiWEsLZVECxQJF_T-DdycBlj5EqF7wC7t78mIWfYWtz7XrDIiAaAhjJ9ugjQy8aYBgZ6dRcvKtogYaca_f9VpzATW9Zsd80GfYNyziPrxsvkHCTp-oqo/s72-c/img1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-1104502774399611518</id><published>2013-01-04T12:41:00.000-08:00</published><updated>2013-01-09T17:26:31.492-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Configuración SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Content Management"/><title type='text'>HTML Field Security en SharePoint 2013</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Una de las nuevas características en el área de Web Content Management en SharePoint 2013 es que ahora existe una opción llamada HTML Security Settings que se encuentra en la sección de configuración &amp;nbsp;de administradores de la colección de sitios, por lo que evidentemente se debe contar con este rol para utilizarla.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieYc6mjgT3Aoe57ONMXhFEa526WYJjYKZzhHcsWz6HmRQjq_Hq2cC4yc9akYirpeFmrml5TLcLmBYhvxPSoz0QsbOV9IgRI5G6-5CGny4lvC5rA3O1rmIBOEWfZ4CmTL_2S3RBj9MJfxY/s1600/img1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;292&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieYc6mjgT3Aoe57ONMXhFEa526WYJjYKZzhHcsWz6HmRQjq_Hq2cC4yc9akYirpeFmrml5TLcLmBYhvxPSoz0QsbOV9IgRI5G6-5CGny4lvC5rA3O1rmIBOEWfZ4CmTL_2S3RBj9MJfxY/s400/img1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En SharePoint 2013 los creadores de contenido de un sitio puede agregar iframes en cualquier página, ya sea utilizando la opción &lt;strong&gt;Embed Code&lt;/strong&gt; del menú &lt;strong&gt;Insert&lt;/strong&gt; del &lt;strong&gt;Ribbon&lt;/strong&gt;, o utilizando la nueva webpart Script Editor.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_0WSQnWA33aKYn1WB3LD9OOtjhO5jj-aWZWQ5VInO3oJKMBJ1m302YlTDUyoFAh04vrKCmWNhoAaejfZDFwYLOUbr6YUwSqPP5ayk6Oya_eAf4VA_MavvkiP51iZIBVLTdSYuTxz1jWA/s1600/img2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;142&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_0WSQnWA33aKYn1WB3LD9OOtjhO5jj-aWZWQ5VInO3oJKMBJ1m302YlTDUyoFAh04vrKCmWNhoAaejfZDFwYLOUbr6YUwSqPP5ayk6Oya_eAf4VA_MavvkiP51iZIBVLTdSYuTxz1jWA/s400/img2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgMirh-rmKtNp75LZ6sg1J4ntR2ooemTJXl7fGEZv3lzKijsfZsxxLrdibJoKwX6EE6fEF52KFLbtdtagDTII3NA6zzMglTQynSsym3ut9QQvt4VM_TpxBCquHHMEp4I2bCYmy7PtDtes/s1600/img3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgMirh-rmKtNp75LZ6sg1J4ntR2ooemTJXl7fGEZv3lzKijsfZsxxLrdibJoKwX6EE6fEF52KFLbtdtagDTII3NA6zzMglTQynSsym3ut9QQvt4VM_TpxBCquHHMEp4I2bCYmy7PtDtes/s400/img3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hasta aquí ninguna novedad, en el pasado también se podían agregar iframes a una página de SharePoint, obviamente no utilizando las opciones arriba descritas ya que estas son nuevas en SharePoint 2013, pero si se podía hacer. Lo que la opción HTML Security viene a cubrir era la necesidad de los administradores de SharePoint (esos tipos a los que cualquier toque de creatividad les molesta) de poder restringir los dominios a los cuales se puede agregar o referenciar dentro de un iframe en un sitio de SharePoint.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este setting permite habilitar a los usuarios con rol de &quot;Contributors&quot; el poder agregar iframes a partir de un listado de dominios permitidos, poder referenciar cualquier dominio o no poder insertar iframes con contenido externo a SharePoint en absoluto. La opción por default es permitir a los contribuidores agregar iframes con un listado de sitios también predefinido, como se aprecia en la imagen.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGMPiOCXN6myhPlsW-B5j9vH4iSsEeZb4ZZagdJg33BLc9i8dYJNjCHBn6txhyDY3HWeNszbDhq5yHOyC6mh9W26EmK4KwtTyKgFMFTz5hAjttNWhirdE2nygb7F_qD8S626Qfn_djr8I/s1600/img4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGMPiOCXN6myhPlsW-B5j9vH4iSsEeZb4ZZagdJg33BLc9i8dYJNjCHBn6txhyDY3HWeNszbDhq5yHOyC6mh9W26EmK4KwtTyKgFMFTz5hAjttNWhirdE2nygb7F_qD8S626Qfn_djr8I/s400/img4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para este ejemplo voy a agregar un iframe a una página de SharePoint referenciando uno de mis sitios favoritos, Channel 9. Aunque como se puede apreciar en la imagen, obtendré un mensaje indicándome que no cuento con los permisos suficientes para agregar el iframe.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNGq-C4YcMMpHHAQpzoj9eKGd-Ge_N1ge911RqUnrTMlcdRFr_XUH8dnXUS_SilWh5cnFu1MuH9-xPArO6_LspVpBYM2l9-WTOZaOiHNChpF-ElPmxkeWcScds-laWbLR9MWLZ_4owZDU/s1600/img5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNGq-C4YcMMpHHAQpzoj9eKGd-Ge_N1ge911RqUnrTMlcdRFr_XUH8dnXUS_SilWh5cnFu1MuH9-xPArO6_LspVpBYM2l9-WTOZaOiHNChpF-ElPmxkeWcScds-laWbLR9MWLZ_4owZDU/s1600/img5.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lo que se debe hacer es ir a apartado de configuración de HTML Security Settings y agregar el dominio &lt;a href=&quot;http://channel9.msdn.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;channel9.msdn.com&lt;/a&gt; (para este ejemplo), y acto seguido intentar de nuevo agregar el iframe.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Y con esto podemos ya agregar satisfactoriamente una referencia a contenido externo, de manera un poco más ordenada.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmItAH0U3fAVNjJ6BLZilbd94h-SPiBNP9dnhpnIupmCjUFzbcc1su-kwQgmQGsXVHag-oZC4z7rP54LdUt1nweBBV3FGxmHfIDwzA0hJ39ltr7A1uQAndBcZteCxmDWBJOc3MZXMe2vA/s1600/img6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmItAH0U3fAVNjJ6BLZilbd94h-SPiBNP9dnhpnIupmCjUFzbcc1su-kwQgmQGsXVHag-oZC4z7rP54LdUt1nweBBV3FGxmHfIDwzA0hJ39ltr7A1uQAndBcZteCxmDWBJOc3MZXMe2vA/s400/img6.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcJj7pZsxv9TOUW_xufuzZDrqDVH-o1DE1e_0fbd4tOwX3KPk_dtLMR7GjY-WeKuWqojZyeLmX4vVgXJvX_Uk3ektvRz08BODWeNKCGvwZjMQvsKsKMmKeeP1dMe3Apgm-bV21ZKYuwo/s1600/img7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;188&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcJj7pZsxv9TOUW_xufuzZDrqDVH-o1DE1e_0fbd4tOwX3KPk_dtLMR7GjY-WeKuWqojZyeLmX4vVgXJvX_Uk3ektvRz08BODWeNKCGvwZjMQvsKsKMmKeeP1dMe3Apgm-bV21ZKYuwo/s400/img7.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Un último comentario es que este setting solo aplica/restringe&amp;nbsp;a los usuarios con el rol de &quot;Contributors&quot;, es decir que si eres el dueño del sitio o un site collection administrator, ni te preocupes por este tipo de limitantes que solo aplican a los simples mortales. Lo que debería preocuparte es revisar tu modelo de gobernabilidad en SharePoint.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;strong&gt;Happy Configuring!&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/1104502774399611518/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/1104502774399611518?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/1104502774399611518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/1104502774399611518'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2013/01/html-field-security-en-sharepoint-2013.html' title='HTML Field Security en SharePoint 2013'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieYc6mjgT3Aoe57ONMXhFEa526WYJjYKZzhHcsWz6HmRQjq_Hq2cC4yc9akYirpeFmrml5TLcLmBYhvxPSoz0QsbOV9IgRI5G6-5CGny4lvC5rA3O1rmIBOEWfZ4CmTL_2S3RBj9MJfxY/s72-c/img1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-4979211338247047037</id><published>2012-12-14T00:09:00.000-08:00</published><updated>2012-12-17T00:18:30.130-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSOM"/><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint"/><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz"/><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="MVP"/><category scheme="http://www.blogger.com/atom/ns#" term="REST"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>The HTTP header ACCEPT is missing or its value is invalid making rest call using JavaScript</title><content type='html'>Es bastante&amp;nbsp;común&amp;nbsp;que al intentar hacer una llamada utilizando la API REST para SharePoint 2013 utilizando JavaScript, como la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;function onGetCustomers(){
 var requestUri = _spPageContextInfo.webAbsoluteUrl + &quot;/_api/web/lists/getByTitle(&#39;Clientes&#39;)/items/?$select=Title,Nombre,Apellidos&quot;;
 
 //$.getjson() falla
 jqCall = $.getJSON(requestUri,null, onGetCustomersSuccess);
 jqCall.error(onError);
}
&lt;/pre&gt;
&lt;br /&gt;
Nos encontremos con un error como este:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4zxmvxfsO0ro0peCYfKtjqx-lQy56Tr6fuQaECxaww0EGc5Ac0HdC3n-9Cn42hCmBefsN3J6tPjHolYYj7q5v7y5ezzwnOT4ggufmDCCBBdyy6WdNX8cerjdrNFkMvQulNKdw0hvi7AE/s1600/img1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;77&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4zxmvxfsO0ro0peCYfKtjqx-lQy56Tr6fuQaECxaww0EGc5Ac0HdC3n-9Cn42hCmBefsN3J6tPjHolYYj7q5v7y5ezzwnOT4ggufmDCCBBdyy6WdNX8cerjdrNFkMvQulNKdw0hvi7AE/s640/img1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
25d&lt;br /&gt;
{&quot;error&quot;:{&quot;code&quot;:&quot;-1, Microsoft.SharePoint.Client.ClientServiceException&quot;,&quot;message&quot;:{&quot;lang&quot;:&quot;en-US&quot;,&quot;value&quot;:&quot;The HTTP header ACCEPT is missing or its value is invalid.&quot;},&quot;innererror&quot;:{&quot;message&quot;:&quot;The HTTP header ACCEPT is missing or its value is invalid.&quot;,&quot;type&quot;:&quot;Microsoft.SharePoint.Client.ClientServiceException&quot;,&quot;stacktrace&quot;:&quot; &amp;nbsp; at Microsoft.SharePoint.Client.Rest.RestRequestProcessor.Process()\r\n &amp;nbsp; at Microsoft.SharePoint.Client.Rest.RestRequestProcessor.ProcessRequest()\r\n &amp;nbsp; at Microsoft.SharePoint.Client.Rest.RestService.ProcessQuery(Stream inputStream, IList`1 pendingDisposableContainer)&quot;}}}&lt;br /&gt;
0&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Y esto se debe sencillamente a que si inspeccionamos a detalle los headers enviados en la&amp;nbsp;petición&amp;nbsp; encontraremos que hace falta algo adicional:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Headers enviados como parte del request:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf80nGhMOzSu5OWCi4i7YKn-0dbxyB1mwzArahApy9eprUsMw117smqyoxmjJeVPZXpcV9SGeBuFOgMamZF_4RmRC5IJVBif6f0zywT0NUcUJU9pwb8QvhdMYkUhiqULN3h4qUHdrGTVQ/s1600/img2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;168&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf80nGhMOzSu5OWCi4i7YKn-0dbxyB1mwzArahApy9eprUsMw117smqyoxmjJeVPZXpcV9SGeBuFOgMamZF_4RmRC5IJVBif6f0zywT0NUcUJU9pwb8QvhdMYkUhiqULN3h4qUHdrGTVQ/s640/img2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Al hacer este tipo de llamadas debemos indicar, junto con el header &lt;b&gt;Accept=application/json&lt;/b&gt;, el header: &lt;b&gt;odata=verbose&lt;/b&gt;, es decir&amp;nbsp;quedaría&amp;nbsp;de esta forma: &amp;nbsp;&amp;nbsp;&lt;b&gt;Accept=application/json; odata=verbose&lt;/b&gt;. Esto debido a que por el momento solo se soporta el formato verbose de JSON, el formato &quot;light&quot; no es soportado.&lt;br /&gt;
&lt;br /&gt;
Luego entonces cambiamos la llamada para incluir este header, por el siguiente&amp;nbsp;código:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;function onGetCustomers(){
 var requestUri = _spPageContextInfo.webAbsoluteUrl + &quot;/_api/web/lists/getByTitle(&#39;Clientes&#39;)/items/?$select=Title,Nombre,Apellidos&quot;;

 var requestHeaders={
 &quot;ACCEPT&quot;:&quot;application/json;odata=verbose&quot;,
 }

 $.ajax({
 url: requestUri,
 type:&quot;GET&quot;,
 contentType:&quot;application/json&quot;,
 headers: requestHeaders,
 success:onGetCustomersSuccess,
 error:onError
 });
}
&lt;/pre&gt;
&lt;br /&gt;
Después&amp;nbsp;de realizar esto, la respuesta sera satisfactoria&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3raEVxrvGIz7q5CU_jiCDzyzNq1rizfiezqtdCR0WSfZQOF1Mx6CkN25Mt2vpOFvoRodSFYbt2iddjG47XENJmAwyKENwnXh_3WnolWHfFC9a-mVQPlscxnCtMYpTo40noEykWbsrr4Q/s1600/img3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;548&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3raEVxrvGIz7q5CU_jiCDzyzNq1rizfiezqtdCR0WSfZQOF1Mx6CkN25Mt2vpOFvoRodSFYbt2iddjG47XENJmAwyKENwnXh_3WnolWHfFC9a-mVQPlscxnCtMYpTo40noEykWbsrr4Q/s640/img3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Algunas referencias:&lt;br /&gt;
&lt;a href=&quot;http://blogs.msdn.com/b/officeapps/archive/2012/11/05/important-developer-changes-from-office-and-sharepoint-2013-preview-to-office-and-sharepoint-2013.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Important developer changes from Office and SharePoint 2013 Preview to Office and SharePoint 2013&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.odata.org/media/30002/OData%20JSON%20Verbose%20Format.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;OData Verbose JSON Format&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy Coding!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/4979211338247047037/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/4979211338247047037?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/4979211338247047037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/4979211338247047037'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2012/12/the-http-header-accept-is-missing-or.html' title='The HTTP header ACCEPT is missing or its value is invalid making rest call using JavaScript'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4zxmvxfsO0ro0peCYfKtjqx-lQy56Tr6fuQaECxaww0EGc5Ac0HdC3n-9Cn42hCmBefsN3J6tPjHolYYj7q5v7y5ezzwnOT4ggufmDCCBBdyy6WdNX8cerjdrNFkMvQulNKdw0hvi7AE/s72-c/img1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-7830964345542133417</id><published>2012-12-08T02:23:00.000-08:00</published><updated>2012-12-10T09:01:09.620-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Custom Actions"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>Add Sign In as Different User in SharePoint 2013 with custom action</title><content type='html'>Si ya han estado utilizando SharePoint 2013, por lo menos en ambientes de pruebas, se&amp;nbsp;habrán&amp;nbsp;dado cuenta que en el&amp;nbsp;menú&amp;nbsp;de acciones personales la&amp;nbsp;opción&amp;nbsp;&quot;Sign as Different User&quot; simplemente ya no esta, todos&amp;nbsp;pensábamos&amp;nbsp;que era solo una&amp;nbsp;omisión&amp;nbsp;de la&amp;nbsp;versión&amp;nbsp;beta, pero ahora que se han liberado la&amp;nbsp;versión&amp;nbsp;definitiva, vemos con asombro que sigue sin aparecer.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB8vYdsrt3MlnaqbxykZQTarGs6xYqjzc6AIHEKEGMee8XGD2OvnHW7P0tq9imw1X35swUHBIOO0UXESmLIjo2gB_GQ-CrjzGPy-Kk9aY5BZY-R4dYBCZzI0s_GWyoL_ZITG18qI40xDU/s1600/img1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB8vYdsrt3MlnaqbxykZQTarGs6xYqjzc6AIHEKEGMee8XGD2OvnHW7P0tq9imw1X35swUHBIOO0UXESmLIjo2gB_GQ-CrjzGPy-Kk9aY5BZY-R4dYBCZzI0s_GWyoL_ZITG18qI40xDU/s1600/img1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Nick Grattan muestra en su ejemplo de &lt;a href=&quot;http://nickgrattan.wordpress.com/2012/07/23/sign-in-as-different-user-and-sharepoint-2013/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;como agregar esta opcion al menu&lt;/a&gt;, sin embargo es necesario mencionar que no es una buena practica (sin tomar en cuenta que no es soportada por Microsoft) modificar los archivos que&amp;nbsp;están&amp;nbsp;en el folder 15, ademas de que en un ambiente multiservidor se&amp;nbsp;deberían&amp;nbsp;modificar al menos todos los WFE&#39;s.&lt;br /&gt;
&lt;br /&gt;
Una mejor&amp;nbsp;solución, desde mi particular punto de vista, es crear un custom action que agregue la&amp;nbsp;opción&amp;nbsp;al&amp;nbsp;menú&amp;nbsp;mediante una feature que se despliegue en la granja de SharePoint.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nuestro Objetivo&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRpQ55sjZkeyrDpYniwei59b8PX4BIe6nZPoaEEdXqveefLYN1b7eh1IYDP8wR0EGMu6pJMAd_7I5LFa_3y9xFV8Faf6UbC4Wm2R_sKsWFXctxkrC-gPZCD1r5xnc42wFbw3yDuUwSf4E/s1600/img2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRpQ55sjZkeyrDpYniwei59b8PX4BIe6nZPoaEEdXqveefLYN1b7eh1IYDP8wR0EGMu6pJMAd_7I5LFa_3y9xFV8Faf6UbC4Wm2R_sKsWFXctxkrC-gPZCD1r5xnc42wFbw3yDuUwSf4E/s1600/img2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Para lo cual, crearemos una&amp;nbsp;solución&amp;nbsp;en blanco de SharePoint 2013, agregando un elemento de tipo &quot;Empty Element&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje5T5jymIfoz-8kjz3mL4bFaEgndtcm0R8VvK77_VYXzqX0Qa4CbuGs56WK3czLCY8pFW1mUC2sc3Ks3_VN40FZjJlpu93U0jvRGbUo9jF-2kHYEAdJoz3MXjBtHvUrYjNAa6C1VNzcLE/s1600/img4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;273&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje5T5jymIfoz-8kjz3mL4bFaEgndtcm0R8VvK77_VYXzqX0Qa4CbuGs56WK3czLCY8pFW1mUC2sc3Ks3_VN40FZjJlpu93U0jvRGbUo9jF-2kHYEAdJoz3MXjBtHvUrYjNAa6C1VNzcLE/s400/img4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Y agregamos el siguiente&amp;nbsp;código&amp;nbsp;al archivo Elements.xml que se ha creado&lt;/div&gt;
&lt;pre class=&quot;brush:xml;&quot;&gt;&lt;elements xmlns=&quot;http://schemas.microsoft.com/sharepoint/&quot;&gt;
  &lt;customaction description=&quot;Sign in as Different User&quot; groupid=&quot;PersonalActions&quot; id=&quot;0acdbd94-eba8-11db-8314-0800200c9a66&quot; location=&quot;Microsoft.SharePoint.StandardMenu&quot; sequence=&quot;100&quot; title=&quot;Sign in as Different User&quot;&gt;
            &lt;urlaction url=&quot;/_layouts/closeConnection.aspx?loginasanotheruser=true&quot;&gt;
  &lt;/urlaction&gt;&lt;/customaction&gt;
&lt;/elements&gt;
&lt;/pre&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Luego cambiamos el scope de la feature que se creo&amp;nbsp;al agregar el archivo Elements, el scope que debemos establecer es WebApplication para que podamos aprovechar ese elemento en toda la&amp;nbsp;aplicación&amp;nbsp;web&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjB8AS70c_9sTL_y5WfY6K8dbsKS72Xa8BeW5uw4zmtR_Ieb5gWXko0ncq_mC2kwS_RjTxybF8TizV9i8xHOu0tOeNl0kUICg1DDHJxsdE10r47Zk0kAkXPiOCHeiVPa0bvqwWh06dn2Q/s1600/img5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;273&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjB8AS70c_9sTL_y5WfY6K8dbsKS72Xa8BeW5uw4zmtR_Ieb5gWXko0ncq_mC2kwS_RjTxybF8TizV9i8xHOu0tOeNl0kUICg1DDHJxsdE10r47Zk0kAkXPiOCHeiVPa0bvqwWh06dn2Q/s400/img5.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Por&amp;nbsp;último hacemos el deploy de nuestro custom action y ya podremos ver el nuevo elemento del&amp;nbsp;menú&amp;nbsp;que nos permite firmarnos con diferentes usuarios&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwF6vGw3ud4YkCWk978cOBlTtQo2a2DzGHZyUUFA-CmKcn-lvc9ohdFsmVKPitn0jJy3Q1J7xTIM_goDcS8AYCMK8UKqXzvJMZbAQflVyDc74jakyVHYrZlVs8Lz6kLheSh5YqdDFofo4/s1600/img3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;258&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwF6vGw3ud4YkCWk978cOBlTtQo2a2DzGHZyUUFA-CmKcn-lvc9ohdFsmVKPitn0jJy3Q1J7xTIM_goDcS8AYCMK8UKqXzvJMZbAQflVyDc74jakyVHYrZlVs8Lz6kLheSh5YqdDFofo4/s400/img3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Para concluir les comparto el&amp;nbsp;código.&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;120&quot; scrolling=&quot;no&quot; src=&quot;https://skydrive.live.com/embed?cid=102EA40B907ACCFB&amp;amp;resid=102EA40B907ACCFB%217969&amp;amp;authkey=ANSdvrU3e7nSQ1w&quot; width=&quot;98&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Happy Coding&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/7830964345542133417/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/7830964345542133417?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/7830964345542133417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/7830964345542133417'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2012/12/add-sign-in-as-different-user-in.html' title='Add Sign In as Different User in SharePoint 2013 with custom action'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB8vYdsrt3MlnaqbxykZQTarGs6xYqjzc6AIHEKEGMee8XGD2OvnHW7P0tq9imw1X35swUHBIOO0UXESmLIjo2gB_GQ-CrjzGPy-Kk9aY5BZY-R4dYBCZzI0s_GWyoL_ZITG18qI40xDU/s72-c/img1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-1930369575249918330</id><published>2012-12-07T21:35:00.003-08:00</published><updated>2012-12-07T21:58:00.778-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Latam"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="WebCast"/><title type='text'>Webcast - CSOM y la API REST para SharePoint 2013</title><content type='html'>Como parte de la&amp;nbsp;continuación&amp;nbsp;del exitoso&amp;nbsp;maratón&amp;nbsp;de SharePoint que se llevo a cabo el&amp;nbsp;día&amp;nbsp;29 de&amp;nbsp;Noviembre&amp;nbsp; y que desafortunadamente tuvo que &lt;a href=&quot;http://blog.siderys.com/2012/11/maraton-de-sharepoint-2013-suspendido.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;suspenderse por motivos&amp;nbsp;técnicos&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Quiero invitarlos al webcast que&amp;nbsp;estaré&amp;nbsp;impartiendo el&amp;nbsp;día&amp;nbsp;martes 11 de Diciembre de este 2012.&lt;br /&gt;
El horario es&amp;nbsp;02:00 – 03:00 (GMT +1), es decir (7:00 pm a 8:00 pm hora del centro de&amp;nbsp;México&amp;nbsp;UTC-6:00)&lt;br /&gt;
&lt;br /&gt;
Ademas comparto la lista completa de webcast que se estaran impartiendo.&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21px; margin: 0px 0px 0cm 1em; padding: 0px 0px 0px 1em;&quot; type=&quot;disc&quot;&gt;
&lt;li class=&quot;ecxMsoNormal&quot; style=&quot;font-size: 11pt; margin: 0px 0px 0.0001pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032538865&amp;amp;Culture=es-ES&amp;amp;community=0&quot; style=&quot;color: #954f72; cursor: pointer;&quot; target=&quot;_blank&quot;&gt;24:00 – 01:00 (GMT +1): Nuevas características Para IT Pros en SharePoint 2013 – Ricardo Muñoz.&lt;/a&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;ecxMsoNormal&quot; style=&quot;font-size: 11pt; margin: 0px 0px 0.0001pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032538867&amp;amp;Culture=es-ES&amp;amp;community=0&quot; style=&quot;color: #954f72; cursor: pointer;&quot; target=&quot;_blank&quot;&gt;01:00 – 02:00 (GMT +1): Desarrollo de Componentes de SharePoint sobre SharePoint Server 2013 – Manolo Herrera.&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;ecxMsoNormal&quot; style=&quot;font-size: 11pt; margin: 0px 0px 0.0001pt; text-align: justify;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;a href=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032539076&amp;amp;Culture=es-ES&amp;amp;community=0&quot; style=&quot;color: #954f72; cursor: pointer;&quot; target=&quot;_blank&quot;&gt;02:00 – 03:00 (GMT +1): CSOM y la API REST para SharePoint 2013 – Gerardo Reyes&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;ecxMsoNormal&quot; style=&quot;font-size: 11pt; margin: 0px 0px 0.0001pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032539000&amp;amp;Culture=es-ES&amp;amp;community=0&quot; style=&quot;color: #954f72; cursor: pointer;&quot; target=&quot;_blank&quot;&gt;03:00 – 04:00 (GMT +1): Consideraciones para justificar la inversión en SharePoint 2013 – Haaron González.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Espero me puedan acompañar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032539076&amp;amp;Culture=es-ES&amp;amp;community=0&quot; target=&quot;_blank&quot;&gt;Entrar al evento&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Happy Coding!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/1930369575249918330/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/1930369575249918330?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/1930369575249918330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/1930369575249918330'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2012/12/webcast-csom-y-la-api-rest-para.html' title='Webcast - CSOM y la API REST para SharePoint 2013'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-3824537442998776548</id><published>2012-11-30T00:05:00.000-08:00</published><updated>2013-01-13T00:07:08.294-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MVP"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Conference"/><title type='text'>SharePoint Conference 2012</title><content type='html'>Pues bien, ha sido un evento fabuloso, bastante bien organizado.&lt;br /&gt;
&lt;br /&gt;
La calidad de profesionales que tuve oportunidad de conocer y las opiniones que compartimos fueron realmente valiosas&lt;br /&gt;
&lt;br /&gt;
Las vegas es una ciudad asombrosa con muchos lugares a donde ir, aunque muy cara. De noche siempre hay algo que hacer&lt;br /&gt;
&lt;br /&gt;
Sin duda un evento que quedara para la historia&lt;br /&gt;
&lt;br /&gt;
Algunas fotos.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc6cc71oRjZBnMKuTouNa2ryAeX1OjLX9_OMeO53K1FB8ybIQdgRB0XIewvchvaCEBL7Iqr51OqZtRxHjvuSxslH9fJFS_ZDPZBS55LTzXEUxQbcyAt_3tw1h78TlDrlZXoiv8NzFTBq8/s1600/20121112_150731.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc6cc71oRjZBnMKuTouNa2ryAeX1OjLX9_OMeO53K1FB8ybIQdgRB0XIewvchvaCEBL7Iqr51OqZtRxHjvuSxslH9fJFS_ZDPZBS55LTzXEUxQbcyAt_3tw1h78TlDrlZXoiv8NzFTBq8/s320/20121112_150731.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7zH9vVbKgx_NC9yzJxQTohEBx0VwXAmnzrj3xpmZddvVwUxaigZhV25-qNDIl5fjaIR7f1AQ4_vIGAC2r9GTx-bX4V7qRy_wM9Re8vmNsTIFQgbSE07ZOC6yeMYWuW6Fa_ecPrHbOn6c/s1600/DSC02452.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7zH9vVbKgx_NC9yzJxQTohEBx0VwXAmnzrj3xpmZddvVwUxaigZhV25-qNDIl5fjaIR7f1AQ4_vIGAC2r9GTx-bX4V7qRy_wM9Re8vmNsTIFQgbSE07ZOC6yeMYWuW6Fa_ecPrHbOn6c/s400/DSC02452.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLDIJjpslqCsvelXrW6uA-FkBiMwtmNpUSskovLb_d0sfW2bjwVx3iigT6UzQmSj4nmQ-pC2s5JkLNtw7WR5VuxD7eyQ5NGLV9riFzmIrqOFec1Wi8hj_PLh4WhrZMjfcAQHMROglnTVE/s1600/DSC02453.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLDIJjpslqCsvelXrW6uA-FkBiMwtmNpUSskovLb_d0sfW2bjwVx3iigT6UzQmSj4nmQ-pC2s5JkLNtw7WR5VuxD7eyQ5NGLV9riFzmIrqOFec1Wi8hj_PLh4WhrZMjfcAQHMROglnTVE/s400/DSC02453.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx7GSR5sdvktdX_uAXoTED93pTSrDsLSepEm6Tqp4O_srp3xpMPG22CsloC9t6wt6rU9cdL_B0mkL1_E5dXtcq7cAtl4mzI1fK1X0p4WDp70I0IZJirH3LBHaD1L9RLLY2BfRstO7ba4k/s1600/DSC02469.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx7GSR5sdvktdX_uAXoTED93pTSrDsLSepEm6Tqp4O_srp3xpMPG22CsloC9t6wt6rU9cdL_B0mkL1_E5dXtcq7cAtl4mzI1fK1X0p4WDp70I0IZJirH3LBHaD1L9RLLY2BfRstO7ba4k/s400/DSC02469.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi37NXYPbs-i6tm2NZfpGLcOhLcYh-PBBzyjkv6AzF8OTrWjyTRUpsNLgHaZqkGVszb8YvpmCKpYTxU9OwHpsvLm5XEuIa6emMiQbFVvcpqH-xUFRGKFKW_19hmasnvZVQbrU5OxTB5VF8/s1600/DSC02472.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi37NXYPbs-i6tm2NZfpGLcOhLcYh-PBBzyjkv6AzF8OTrWjyTRUpsNLgHaZqkGVszb8YvpmCKpYTxU9OwHpsvLm5XEuIa6emMiQbFVvcpqH-xUFRGKFKW_19hmasnvZVQbrU5OxTB5VF8/s400/DSC02472.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXzw4wIRqelGVZIHH_H1Az55uI2IRhXe7xXekiLbPyYehVymuDtrA__UFOnIrm2GfzD1ePhKIhi2XMflRVsGDxazYvMEGqdyfH-O_RfXpwAHKRDFfwL5gEAALzY00O8E9ZpVWIeLuf9IU/s1600/DSC02476.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXzw4wIRqelGVZIHH_H1Az55uI2IRhXe7xXekiLbPyYehVymuDtrA__UFOnIrm2GfzD1ePhKIhi2XMflRVsGDxazYvMEGqdyfH-O_RfXpwAHKRDFfwL5gEAALzY00O8E9ZpVWIeLuf9IU/s400/DSC02476.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9AFgB5CI-ucQXybTrgDGELPUrM5uGgZer0uGl6CvrqTxch0NxdT0h3hP1uoorzoo58aN_lCiNHsc_zRikOcdj5fxFlbdcP4AaCHIfzC40i84rpFxAOqQlUsJPmv2tFvP-QRHUtFZKloQ/s1600/DSC02483.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9AFgB5CI-ucQXybTrgDGELPUrM5uGgZer0uGl6CvrqTxch0NxdT0h3hP1uoorzoo58aN_lCiNHsc_zRikOcdj5fxFlbdcP4AaCHIfzC40i84rpFxAOqQlUsJPmv2tFvP-QRHUtFZKloQ/s400/DSC02483.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0M1GmoB4gQjjcp-jRXUOb_kw4e4P5adwfaTN0JKtC9KyGAcFmtb56WqToxzuO3_Mu5UiEW978Xy7zBnQQc1Q4mp_VqamFfOCWiCpNDmr8lHmbjiWAAXapumhG8cvtj4wIFnJ9BIbTCx0/s1600/DSC02515.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0M1GmoB4gQjjcp-jRXUOb_kw4e4P5adwfaTN0JKtC9KyGAcFmtb56WqToxzuO3_Mu5UiEW978Xy7zBnQQc1Q4mp_VqamFfOCWiCpNDmr8lHmbjiWAAXapumhG8cvtj4wIFnJ9BIbTCx0/s400/DSC02515.JPG&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/3824537442998776548/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/3824537442998776548?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/3824537442998776548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/3824537442998776548'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2012/11/sharepoint-conference-2012.html' title='SharePoint Conference 2012'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc6cc71oRjZBnMKuTouNa2ryAeX1OjLX9_OMeO53K1FB8ybIQdgRB0XIewvchvaCEBL7Iqr51OqZtRxHjvuSxslH9fJFS_ZDPZBS55LTzXEUxQbcyAt_3tw1h78TlDrlZXoiv8NzFTBq8/s72-c/20121112_150731.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-2279865255514501073</id><published>2012-11-04T21:12:00.001-08:00</published><updated>2012-11-04T21:22:17.097-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint"/><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Workflows"/><category scheme="http://www.blogger.com/atom/ns#" term="Workflows SharePoint"/><title type='text'>SharePoint 2010 - New instances of this workflow template are currently disallowed</title><content type='html'>¿Les ha pasado que alguna vez quieren iniciar una instancia de un flujo de trabajo y aparece este mensaje de error?&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Bueno púes a mí me había pasado muchas veces, solo que nunca al utilizar código para iniciar automáticamente un flujo de trabajo, es decir, siempre que había obtenido este mensaje de error había sido utilizando la interfaz de usuario, para lo cual existen muchas referencias en la red para solucionarlo.&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blogit.create.pt/blogs/miguelisidoro/archive/2008/07/12/SharePoint-2007-_2D00_-New-instances-of-this-workflow-template-are-currently-disallowed.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SharePoint 2007 - New instances of this workflow template are currently disallowed&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://blogs.msdn.com/b/sowmyancs/archive/2008/11/15/error-new-instances-of-this-workflow-template-are-currently-disallowed.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Error: New instances of this workflow template are currently disallowed.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
¿Pero y cómo podemos resolverlo cuando hablamos de código?&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Al igual que cuando lidiamos con este error al intentar inicializar in flujo de trabajo utilizando la interfaz de usuario, este error se debe a que existe más de una versión del mismo flujo relacionada con la lista o cualquier otro elemento al que se pueda asociar un workflow como librerías de documentos, sitios, etc., en mi caso específico con un tipo de contenido.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para ejemplificar este escenario, muestro a continuación mi código de powershell que tenía este error, y el cual simplemente intentaba iniciar programáticamente todas las instancias de una lista de SharePoint con el estatus de “Cancelled”:&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:powershell; highlight: [15]&quot;&gt;cls
#Add-PSSnapin microsoft.sharepoint.powershell
$siteUrl=&quot;http://sp2010/mysite&quot;
$site = Get-SPSite -Identity $siteUrl

foreach($web in $site.AllWebs)
{
    $list=$web.Lists[&quot;List&quot;]
    $manager=$site.WorkFlowManager
   
    foreach($ct in $list.ContentTypes)
    {
        if($ct.Name -eq &quot;MyContentType&quot;)
        {
            $swapWorkflowAssociation = $Ct.WorkflowAssociations[0]
        }
    }
    
    #Si la referencia al objeto WorkflowAssociation es null, no intentamos iniciar el WF
    if($swapWorkflowAssociation -eq $null) { continue } 
   
    foreach($listItem in $list.Items)
    {
        foreach($workflowInstance in $listItem.Workflows)
        {
        
            if($workflowInstance.InternalState -eq [Microsoft.SharePoint.Workflow.SPWorkflowState]::Cancelled)
            {
               $data=$workflowAssociation.AssociationData
               try
               {
                    $result = $manager.StartWorkflow($listItem, $workflowAssociation, $data, $True)
               }
               catch
               {
                    #Write-Host $_.Exception.ToString()
               }
               
               $cadena =   &quot;Se inicia el WF|&quot; + $web.Url + &quot;|&quot; + $listItem.ID.ToString() + &quot;|&quot; + $listItem.Title + &quot;|&quot; + $workflowInstance.InternalState
               
               Write-Host $cadena 
            }  
        }
    } 
}

&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como comente antes, en la línea marcada obtenía este mensaje de error. El error estaba en que debido al proceso de &lt;strike&gt;prueba y error&lt;/strike&gt; desarrollo iterativo, el tipo de contenido tenía más de una versión del flujo de trabajo asociado, por lo que al intentar recuperar una referencia al objeto WorkflowAssociation, no se recuperaba precisamente la más “reciente” o actual. El truco está en que las versiones viejas del flujo de trabajo, además de ser establecidas con el atributo “No New Instances”, siempre son renombradas de la forma: “NombreDeMiWorkflow (fecha)”, excepto para la Asociación más reciente (la correcta).&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por lo que, para evitar este error, se debe validar que la propiedad Name del objeto WorkflowAssociation, sea exactamente como la establecimos en un principio, sin fechas (o algún otro texto adicional). &lt;/div&gt;
&lt;pre class=&quot;brush:powershell;&quot;&gt;$swapWorkflowAssociation = $Ct.WorkflowAssociations[0]
&lt;/pre&gt;
&lt;br /&gt;
Para concluir, el código corregido&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:powershell; highlight: [19,20,21,22]&quot;&gt;cls
Start-SPAssignment –Global
#Add-PSSnapin microsoft.sharepoint.powershell
$siteUrl=&quot;http://sp2010/mysite&quot;

$site = Get-SPSite -Identity $siteUrl

foreach($web in $site.AllWebs)
{
    $list=$web.Lists[&quot;List&quot;]
    $manager=$site.WorkFlowManager
   
    foreach($ct in $list.ContentTypes)
    {
        if($ct.Name -eq &quot;MyContentType&quot;)
        {
            foreach($swapWorkflowAssociation in $Ct.WorkflowAssociations)
            {
                if($swapWorkflowAssociation.Name -eq &quot;MyWorkflowName&quot;) 
                {
                    $workflowAssociation = $swapWorkflowAssociation
                }
                
            }
        }
    }
   
   #Si la referencia al objeto WorkflowAssociation es null, no intentamos iniciar el WF
   if($swapWorkflowAssociation -eq $null) { continue } 
   
    foreach($listItem in $list.Items)
    {
        foreach($workflowInstance in $listItem.Workflows)
        {
        
            if($workflowInstance.InternalState -eq [Microsoft.SharePoint.Workflow.SPWorkflowState]::Cancelled)
            {
               $data=$workflowAssociation.AssociationData
               try
               {
                    $result = $manager.StartWorkflow($listItem, $workflowAssociation, $data, $True)
               }
               catch
               {
                    #Write-Host $_.Exception.ToString()
               }
               
               $cadena =   &quot;Se inicia el WF|&quot; + $web.Url + &quot;|&quot; + $listItem.ID.ToString() + &quot;|&quot; + $listItem.Title + &quot;|&quot; + $workflowInstance.InternalState
               
               Write-Host $cadena 
            }  
        }
    } 
}
&lt;/pre&gt;
&lt;br /&gt;
Happy Coding!</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/2279865255514501073/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/2279865255514501073?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/2279865255514501073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/2279865255514501073'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2012/11/sharepoint-2010-new-instances-of-this.html' title='SharePoint 2010 - New instances of this workflow template are currently disallowed'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-8175322638541284389</id><published>2012-10-12T18:11:00.000-07:00</published><updated>2013-01-13T18:13:29.903-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Extract WSP"/><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2007"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><title type='text'>Extraer archivos WSP instalados en una granja SharePoint</title><content type='html'>Hace unos&amp;nbsp;días&amp;nbsp;mientras me encontraba en medio de una migracion de SharePoint 2007 a SharePoint 2010, me vi en la necesidad de descargar un par de soluciones personalizadas (archivos WSP) de la granja de SharePoint 2007 ya que no&amp;nbsp;había&amp;nbsp;código&amp;nbsp;fuente de esas soluciones y se&amp;nbsp;tenían&amp;nbsp;que hacer ajustes para que funcionaran de manera adecuada.&lt;br /&gt;
&lt;br /&gt;
Después de buscar un par de minutos me&amp;nbsp;encontré&amp;nbsp;con esta utilidad que pueden descargar desde MSDN, me refiero al &lt;a href=&quot;http://archive.msdn.microsoft.com/SPSolutionExtractor&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SharePoint Farm Solution Extractor&lt;/a&gt;, funciona bastante bien y es muy&amp;nbsp;fácil&amp;nbsp;de usar.&lt;br /&gt;
&lt;br /&gt;
Ademas&amp;nbsp;también&amp;nbsp;encontré&amp;nbsp;en &lt;a href=&quot;http://social.technet.microsoft.com/forums/en-US/sharepointadminprevious/thread/079e2964-348c-4c1d-a227-2aff10a8deeb&quot; target=&quot;_blank&quot;&gt;este foro de Microsoft&lt;/a&gt;, que otra forma practica de hacerlo es utilizando PowerShell, sin embargo para mi no era muy practico ya que el servidor no tenia instalado PowerShell :(&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:powershell&quot;&gt;[System.Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SharePoint&quot;)
$farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
$farm.Solutions | % { 
  $filename = ($pwd.ToString() + &quot;\&quot; + $_.SolutionFile.Name); 
  write-host (&quot;Saving&quot; + $filename); 
  $_.SolutionFile.SaveAs($filename) 
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Por ultimo, también les comparto un ejemplo de como guardar todos los archivos WSP&#39;s de una granja SharePoint 2010 en un directorio que indiquen utilizando PowerShell&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:powershell&quot;&gt;cls
#path en donde se guardaran los archivos WSP&#39;s, este path debe existir antes de ejecutar el script
$path=&quot;c:\wsps\&quot;
$farm = Get-SPFarm
foreach($item in $farm.Solutions)
{
 $file = $item.SolutionFile
 Write-Host &quot;Guardando el archivo&quot; $file.Name
 $file.SaveAs($path+$file.Name)
}

&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Happy Coding!&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/8175322638541284389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/8175322638541284389?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/8175322638541284389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/8175322638541284389'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2012/10/extraer-archivos-wsp-instalados-en-una.html' title='Extraer archivos WSP instalados en una granja SharePoint'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-5697778124600539280</id><published>2012-09-06T19:00:00.001-07:00</published><updated>2012-09-10T07:46:37.984-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Configuración SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="MAXDOP"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting"/><title type='text'>SharePoint 2013 - SQL Server instance does not have the required &quot;max degree of parallelism&quot;</title><content type='html'>No sé ustedes pero yo personalmente aún ahora, probando el preview de SharePoint 2013, cruzo los dedos cada vez que el wizard de configuración se encuentra en el paso &quot;Creating the configuration database…&quot;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEYZg-NUHN3L7YfKHfCdSFlbWkkV1c0iXbiYl_GwdJPhFPH-YwfRIEhmwJFaKjVqnN02eE7_aPSeiqxXAueCJILoU2Qv56QuWQ7RJnBd6nMfk_FTU14mNLSvElIrpiAmo8x_RDPTcQoac/s1600/img3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;275&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEYZg-NUHN3L7YfKHfCdSFlbWkkV1c0iXbiYl_GwdJPhFPH-YwfRIEhmwJFaKjVqnN02eE7_aPSeiqxXAueCJILoU2Qv56QuWQ7RJnBd6nMfk_FTU14mNLSvElIrpiAmo8x_RDPTcQoac/s320/img3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Precisamente el error del que hablaremos el día de hoy, ocurre al momento de estar creando la base de datos de configuración de nuestra flamante granja de SharePoint 2013:

&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Failed to create the configuration database.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This SQL Server instance does not have the required &quot;max degree of parallelism&quot; setting of 1. Database provisioning operations will continue to fail if &quot;max degree of parallelism&quot; is not set 1 or the current account does not have permissions to change the setting.  See documentation for details on manually changing the setting.
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgftA0F31y9iPRosUxOFJQtSUixbPdhJ-cTuZLEBf0A6OgWZfc2z1DY-ZtEudoW6rhIeDFTQvmKtfaNeAL56brNP4h_wJteXGdiyjp_z1F_zSGy3g5OzprDBpd5aDl3wu2kzcbVYI3yprU/s1600/img4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgftA0F31y9iPRosUxOFJQtSUixbPdhJ-cTuZLEBf0A6OgWZfc2z1DY-ZtEudoW6rhIeDFTQvmKtfaNeAL56brNP4h_wJteXGdiyjp_z1F_zSGy3g5OzprDBpd5aDl3wu2kzcbVYI3yprU/s320/img4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Lo único rescatable de este escenario de error es que si te llega a ocurrir, es porque casi seguramente estas usando la filosofía de mínimos privilegios o least-privileges, es decir la cuenta con la que estas instalando SharePoint 2013 solo tiene los roles dbcreator y securityadmin de base de datos, lo cual es muy bueno pero insuficiente para modificar el setting “max degree of parallelism” por el cual ocurre el error. De hecho si lees bien el mensaje de error, si la cuenta que será usada como Farm Administrator tuviera permisos de modificar el setting, lo hubiera hecho.&lt;br /&gt;
&lt;br /&gt;
Ahora bien, después de la sección de reflexiones, como se resuelve este inconveniente?
&lt;br /&gt;
&lt;br /&gt;
Primero le llamas al amigo DBA, o consigues una cuenta administradora de la base de datos. Para modificar el “max degree of parallelism” puedes ocupar cualquiera de las siguientes dos opciones:
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Utilizando la UI
&lt;/strong&gt;&lt;br /&gt;
1. Abrir Microsoft SQL Server Management Studio
&lt;br /&gt;
2. Conectarse a la instancia en la que se intenta crear la granja de SharePoint, con la cuenta administradora
&lt;br /&gt;
3. Hacer click en Properties sobre el nombre de la instancia, aparecerá un cuadro de dialogo
&lt;br /&gt;
4. Modificar a 1 el valor del elemento &lt;strong&gt;Max Degree of Parallelism&lt;/strong&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVuKki-rN3ngjvL-sV0p__astHFCiw_iz_ynVb-wNGuYqaTe0Q7h2OmjfV1vdExFQDKOvH7Z6NE-rqQ1nt-YxCt-huf3oEMWn0NLkTVCsskazAysvGBFeq_I1ZXcTOM5pWmhw2lvF_t4I/s1600/img1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;382&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVuKki-rN3ngjvL-sV0p__astHFCiw_iz_ynVb-wNGuYqaTe0Q7h2OmjfV1vdExFQDKOvH7Z6NE-rqQ1nt-YxCt-huf3oEMWn0NLkTVCsskazAysvGBFeq_I1ZXcTOM5pWmhw2lvF_t4I/s400/img1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;strong&gt;Utilizando el stored procedure sp_configure
&lt;/strong&gt;&lt;br /&gt;
Ejecuta las siguientes instrucciones en una ventana de query
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;sp_configure &#39;show advanced options&#39;, 1; 
GO
RECONFIGURE WITH OVERRIDE; 
GO
sp_configure &#39;max degree of parallelism&#39;, 1; 
GO
RECONFIGURE WITH OVERRIDE; 
GO

&lt;/pre&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-iF7Qq_M_kMvgf8q90kGl96SJa1NVD1fDkyWxNE7ZzPoekpwB51syohWCZpDxlyfIQQwkS1ii11KUlsbKm1MEfJjQ1AFc7kKv3PT9AtIQQ4TTZbFpp9bAEwboAsWTQt0Jz59hAmoPZpw/s1600/img2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-iF7Qq_M_kMvgf8q90kGl96SJa1NVD1fDkyWxNE7ZzPoekpwB51syohWCZpDxlyfIQQwkS1ii11KUlsbKm1MEfJjQ1AFc7kKv3PT9AtIQQ4TTZbFpp9bAEwboAsWTQt0Jz59hAmoPZpw/s640/img2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Después de ejecutar cualquiera de estas dos soluciones no olvides borrar la base de datos SharePoint_Config, que se creó en el intento fallido de creación de la granja. Por último vuelve a ejecutar el wizard para la configuración de la granja de SharePoint 2013
&lt;br /&gt;
&lt;br /&gt;
Y bueno, mientras ven como avanza el wizard, no estaría demás que leyeran las siguientes referencias:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc262957(v=office.15).aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Install and Configure SharePoint 2013 preview&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://download.microsoft.com/download/1/F/6/1F6D3BE4-1174-4320-A1D1-C0E2681CCCF3/Deployment-guide-for-SharePoint-2013-Preview.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Deployment guide for Microsoft SharePoint 2013 preview&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://support.microsoft.com/kb/329204&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;General guidelines to use to configure the MAXDOP option&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blogs.msdn.com/b/cindygross/archive/2011/01/28/the-ins-and-outs-of-maxdop.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;The ins and outs of MAXDOP&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy Configuring!
</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/5697778124600539280/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/5697778124600539280?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/5697778124600539280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/5697778124600539280'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2012/09/sql-server-instance-does-not-have.html' title='SharePoint 2013 - SQL Server instance does not have the required &quot;max degree of parallelism&quot;'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEYZg-NUHN3L7YfKHfCdSFlbWkkV1c0iXbiYl_GwdJPhFPH-YwfRIEhmwJFaKjVqnN02eE7_aPSeiqxXAueCJILoU2Qv56QuWQ7RJnBd6nMfk_FTU14mNLSvElIrpiAmo8x_RDPTcQoac/s72-c/img3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4151003370208110042.post-2997882755785348209</id><published>2012-08-12T20:43:00.000-07:00</published><updated>2012-08-12T20:43:17.320-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Workflows"/><category scheme="http://www.blogger.com/atom/ns#" term="Workflows SharePoint"/><title type='text'>Creando custom workflow activities para SharePoint 2010</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Una de las mejores prácticas a la hora de crear flujos de trabajo (no solo para SharePoint) es encapsular funcionalidad común o reutilizable en actividades personalizadas, esto nos permitirá hacer flujos de trabajo mucho más mantenibles, disminuyendo así la cantidad de código que escribimos dentro del “code behind”, y es que al menos en mi muy humilde opinión, el código que escribimos debería ser mínimo y para casos muy específicos. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Además de todas las ventajas que implica el uso de actividades personalizadas, es bastante sencillo crearlas, a continuación explicaré el paso a paso de cómo crear una actividad que nos permita la creación de sub-sitios.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Pensemos en el siguiente escenario: El administrador de un sitio recibe muchas peticiones para generar sub sitios dentro del sitio que él administra, esta aburrido de hacer está tarea tan repetitiva, él lo que desea es salir temprano de la oficina y darle duro al &lt;strike&gt;PS3&lt;/strike&gt; Xbox 360, por lo que se le ocurre automatizar el proceso de solicitud de creación de sitios mediante una lista en la cual los solicitantes puedan ingresar la información fundamental para la creación del sitio y una justificación de porque lo necesitan, de esta manera el administrador solo recibe un mail de que tiene una tarea pendiente, entra a revisar la tarea y la aprueba (si es el caso) y automágicamente el sitio se provisiona, cool no!?. Pues entonces comencemos a&amp;nbsp; darle forma a los sueños de este administrador ficticio. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Primero creamos una solución de tipo de Sequential Workflow que nos servirá para probar la actividad personalizada que crearemos, después creamos un proyecto de tipo Workflow Activity Library que será en donde crearemos las actividades de workflow personalizadas.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJwWKgm0ymhs6OTBgG5BoFgHJUZfigan8cd1p4LzxKtePahkmAj-cxqzZ5yQzxvHkAGs0TPP4x_7U-ROzSFY6H9qvXZ1JDg2cVRQMpRD2VRZBXQPoiYzmihVhy-EnU5dMwDzWFspVL3M/s1600/img1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;263&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJwWKgm0ymhs6OTBgG5BoFgHJUZfigan8cd1p4LzxKtePahkmAj-cxqzZ5yQzxvHkAGs0TPP4x_7U-ROzSFY6H9qvXZ1JDg2cVRQMpRD2VRZBXQPoiYzmihVhy-EnU5dMwDzWFspVL3M/s400/img1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Acto seguido agregamos una clase con el nombre que tendrá la actividad personalizada, en este caso &lt;strong&gt;CreateNewSubSite&lt;/strong&gt;, y heredamos de la clase base &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.workflow.componentmodel.activity.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Activity&lt;/a&gt;.&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtVC7L8KpW0kEOZc57phUBsSgnGWqUZghBjoJ2yjBS-7AhG4EUk2fGimX-soYVg9RUy2YKwIDsefIQp8bU7xIkx10i2F6yBlFhILRGycD-jqhhS1pE9DISuSy2v4uRqHS2v3RmWW4ZK9s/s1600/img2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;97&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtVC7L8KpW0kEOZc57phUBsSgnGWqUZghBjoJ2yjBS-7AhG4EUk2fGimX-soYVg9RUy2YKwIDsefIQp8bU7xIkx10i2F6yBlFhILRGycD-jqhhS1pE9DISuSy2v4uRqHS2v3RmWW4ZK9s/s400/img2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Creamos las propiedades que tendrán la información necesaria para crear el sub sitio: &lt;em&gt;SiteName&lt;/em&gt;, &lt;em&gt;SiteUrl&lt;/em&gt;, &lt;em&gt;SiteLCID&lt;/em&gt;, &lt;em&gt;TemplateName&lt;/em&gt;, &lt;em&gt;SiteDescription&lt;/em&gt;, &lt;em&gt;UseUniquePermissions&lt;/em&gt; y una propiedad para almacenar el contexto de ejecución del workflow.&amp;nbsp; Lo primero que debemos notar es que las propiedades que creamos son dependency properties (propiedades de dependencia), esto para permitir a cualquiera que use nuestra actividad poder enlazar (Binding) estas propiedades para que en tiempo de ejecución los valores se calculen. Si aún no sabes que es o para que se utilizan las property dependencies, &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms752914.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;lee esto&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;height: 400px; overflow: scroll;&quot;&gt;
&lt;pre class=&quot;brush:csharp&quot;&gt;public static readonly DependencyProperty SiteNameProperty = DependencyProperty.Register(&quot;SiteName&quot;, typeof(string), typeof(CreateNewSubSite));
public static readonly DependencyProperty SiteUrlProperty = DependencyProperty.Register(&quot;SiteUrl&quot;, typeof(string), typeof(CreateNewSubSite));
public static readonly DependencyProperty SiteLCIDProperty = DependencyProperty.Register(&quot;SiteLCID&quot;, typeof(uint), typeof(CreateNewSubSite), new PropertyMetadata((uint)1033));
public static readonly DependencyProperty TemplateNameProperty = DependencyProperty.Register(&quot;TemplateName&quot;, typeof(string), typeof(CreateNewSubSite), new PropertyMetadata(&quot;STS#1&quot;));
public static readonly DependencyProperty SiteDescriptionProperty = DependencyProperty.Register(&quot;SiteDescription&quot;, typeof(string), typeof(CreateNewSubSite));
public static readonly DependencyProperty UseUniquePermissionsProperty = DependencyProperty.Register(&quot;UseUniquePermissions&quot;, typeof(bool), typeof(CreateNewSubSite));

public static DependencyProperty __ContextProperty = System.Workflow.ComponentModel.DependencyProperty.Register(&quot;__Context&quot;, typeof(Microsoft.SharePoint.WorkflowActions.WorkflowContext), typeof(CreateNewSubSite));

[Description(&quot;The name of the new subsite&quot;)]
public string SiteName
{
 get { return (string)GetValue(SiteNameProperty); }
 set { SetValue(SiteNameProperty, value); }
}

[Description(&quot;Relative Url of the new subsite. You should consider that any space will be codified, for example MySite=MySite, Financial Area=Financial%20Area&quot;)]
public string SiteUrl
{
 get { return (string)GetValue(SiteUrlProperty); }
 set { SetValue(SiteUrlProperty, value); }
}

[Description(&quot;Specify the LCID of the language that will be used to create the subsite. Example: English=1033, Spanish=3082. For more reference you can see http://technet.microsoft.com/en-us/library/ff463597.aspx&quot;)]
public uint SiteLCID
{
 get { return (uint)GetValue(SiteLCIDProperty); }
 set { SetValue(SiteLCIDProperty, value); }
}

[Description(&quot;Specify the template name that will be used to create the subsite. Example: GLOBAL#0 = Global template, STS#0 = Team Site, STS#1 = Blank Site.&quot;)]
public string TemplateName
{
 get { return (string)GetValue(TemplateNameProperty); }
 set { SetValue(TemplateNameProperty, value); }
}

[Description(&quot;Specify the description of the new subsite&quot;)]
public string SiteDescription
{
 get { return (string)GetValue(SiteDescriptionProperty); }
 set { SetValue(SiteDescriptionProperty, value); }
}

[Description(&quot;Specify if the site will have unique permissions&quot;)]
public bool UseUniquePermissions
{
 get { return (bool)GetValue(UseUniquePermissionsProperty); }
 set { SetValue(UseUniquePermissionsProperty, value); }
}

public WorkflowContext __Context
{
 get { return (WorkflowContext)GetValue(__ContextProperty); }
 set { SetValue(__ContextProperty, value); }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
La parte medular para la creación de nuestra actividad personalizada es sobreescribir el método Execute, el cual contiene el código principal a ejecutar por la actividad personalizada. En este ejemplo tomamos los valores de las propiedades para crear el sub sitio, no sin antes ejecutar algunas validaciones.&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:csharp&quot;&gt;protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
 SPSecurity.RunWithElevatedPrivileges(() =&amp;gt;
  {
   using (SPSite site= new SPSite (__Context.Site.ID))
   {
    using (SPWeb web = site.AllWebs[__Context.Web.ID])
    {
     //before to add the new subsite, we need to validate some settings, remember! never trust in another dev
     //first at all, validate the LCID
     SPLanguage language = SPRegionalSettings.GlobalInstalledLanguages.Cast&lt;splanguage&gt;().FirstOrDefault(x =&amp;gt; x.LCID == SiteLCID);
     if (language == null)
     {
      throw new ArgumentException(string.Format(&quot;The value &#39;{0}&#39; for SiteLCID is not supported, are you sure corresponding language pack is already installed?&quot;, this.SiteLCID));
     }
     
     //then validate the name of site template
     SPWebTemplate webTemplate = site.GetWebTemplates(this.SiteLCID).Cast&lt;spwebtemplate&gt;().FirstOrDefault(x =&amp;gt; x.Name == this.TemplateName);
     if (webTemplate == null)
     {
      throw new ArgumentException(string.Format(&quot;The specified TemplateName=&#39;{0}&#39; is not supported for specified language=&#39;{1}&#39;&quot;, this.TemplateName, language.DisplayName));
     }

     //then validate the SiteUrl is unique
     if (web.Webs.Names.Contains(SiteUrl))
     {
      throw new ArgumentException(&quot;The SiteUrl is not unique, there is another subsite with the same SiteUrl&quot;);
     }

     web.Webs.Add(SiteUrl, SiteName, SiteDescription, SiteLCID, webTemplate, UseUniquePermissions, false);
    }
   }
  }
 );

 return ActivityExecutionStatus.Closed;
}
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Así de simple ya tenemos una actividad personalizada lista para ser utilizada. Para este ejemplo agregamos el proyecto del workflow (&lt;strong&gt;WorkfllowDemo&lt;/strong&gt;) y el proyecto de las actividades personalizadas (&lt;strong&gt;CustomActivities&lt;/strong&gt;) en la misma solución, por lo que al compilar la solución automáticamente la actividad que creamos aparece en el toolbox. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvp-nnhsIy-2W1iqBVEkXNun3IpT1XQwbj3-lZZSbACC0RWywKi6mam44xNQd4AGO6H74M7iWeDI3JBqcJFzTgzdisE5V_g0AZhNEgBFS-7lzioJwGrks1Mub3Z2T8ncAJNkswRXWFOz4/s1600/img3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;291&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvp-nnhsIy-2W1iqBVEkXNun3IpT1XQwbj3-lZZSbACC0RWywKi6mam44xNQd4AGO6H74M7iWeDI3JBqcJFzTgzdisE5V_g0AZhNEgBFS-7lzioJwGrks1Mub3Z2T8ncAJNkswRXWFOz4/s400/img3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Aunque también se puede solo agregar la referencia a la dll que contiene las actividades utilizando la ventana de diálogos para agregar elementos al Toolbox, para poder utilizar las actividades sin necesidad del código fuente.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTvN9c8tOz8KwAxEz6DUFhXJT2J6FmIiydgdVS0VKnFQkEABaW9-q40LUhNqsfi_FKtPYU-9fFPZet_1dbeRX-Z0OwnyJEqO9utXwADzDZWe8WnQ3Pf0Z0bXeOQZ0mKFTu33LQRWzFXJo/s1600/img4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;286&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTvN9c8tOz8KwAxEz6DUFhXJT2J6FmIiydgdVS0VKnFQkEABaW9-q40LUhNqsfi_FKtPYU-9fFPZet_1dbeRX-Z0OwnyJEqO9utXwADzDZWe8WnQ3Pf0Z0bXeOQZ0mKFTu33LQRWzFXJo/s400/img4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
El paso siguiente es arrastrar la actividad CreateNewSubSite al diseñador de workflows y configurar sus propiedades con la información para crear el subsitio.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsP65HVbLyz0q4nlHIJ6YN2FeTmgAXrnmI4bYYWfqyG84dFEIP3xtNuKQiyNoqoxXxN1Mg8ocOprGS7kVvti0C6jV41yo_r2Mb8VE5Tsf15ObPJhmJEcC2tIVehhHQbUCZufEGam0y5dE/s1600/img5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsP65HVbLyz0q4nlHIJ6YN2FeTmgAXrnmI4bYYWfqyG84dFEIP3xtNuKQiyNoqoxXxN1Mg8ocOprGS7kVvti0C6jV41yo_r2Mb8VE5Tsf15ObPJhmJEcC2tIVehhHQbUCZufEGam0y5dE/s400/img5.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Como se aprecia en la imagen anterior, agregamos solo una actividad más para escribir en la lista de Workflow History que el sitio fue creado correctamente. Ahora hablemos un poco a cerca de la lista que utilizaremos para las solicitudes de nuevos sitios, la cual solo contiene dos columnas: SiteName y SiteUrl. Es a esta lista a la cual asociaremos el flujo de trabajo.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHfIjJ3sqMSqDC4DPDvw2byfzhWESYYaJ_n5ORwyhLVcR3aDI0TaVdOn6qsclxKXw7g8nUf3pT1ZGX98nEVeypoGzp1pr9J5XBhOkYzUwEv2lN4mlD2xIssayo0BCDGVnFPm7Q_Bp_Lis/s1600/img6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHfIjJ3sqMSqDC4DPDvw2byfzhWESYYaJ_n5ORwyhLVcR3aDI0TaVdOn6qsclxKXw7g8nUf3pT1ZGX98nEVeypoGzp1pr9J5XBhOkYzUwEv2lN4mlD2xIssayo0BCDGVnFPm7Q_Bp_Lis/s400/img6.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Configuramos el flujo para que se ejecute al crear un nuevo elemento en la lista y podremos ver como se crea el sitio automáticamente, además del mensaje en el historial del flujo de trabajo&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHTo09G9gDh163Old3PiZO5O26zPzgYmFa2TLcFS5Q6pXxMhxYY_IWyyrQq8ZWbH9V-aBRSKAfi5v_bWA8UDlWnC0N5k5z3v0IRcDFADQpgfkEXVOzAyU4XqQSEp0NgxHTfak0CYrazGs/s1600/img7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;62&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHTo09G9gDh163Old3PiZO5O26zPzgYmFa2TLcFS5Q6pXxMhxYY_IWyyrQq8ZWbH9V-aBRSKAfi5v_bWA8UDlWnC0N5k5z3v0IRcDFADQpgfkEXVOzAyU4XqQSEp0NgxHTfak0CYrazGs/s400/img7.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKz46PeB36tKMc2vDbzR6F9moGHKOdCkWngF2R0YydjwbgUzXEc7sJZ3tlzKkdA6TvUbKj1h2BY6QVX_TmwVcBw0v9lntZXU9reuUpT-muaqKlZ6dvn5uYLAWSHJAxSIveVj0iBW5al4o/s1600/img8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKz46PeB36tKMc2vDbzR6F9moGHKOdCkWngF2R0YydjwbgUzXEc7sJZ3tlzKkdA6TvUbKj1h2BY6QVX_TmwVcBw0v9lntZXU9reuUpT-muaqKlZ6dvn5uYLAWSHJAxSIveVj0iBW5al4o/s400/img8.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNy2K-Y8chvcaK7Q2hMvzrh-M0DEAAoAkaJBurECbO6CgwsWKxMCN9P67RLN4B8AZfLRsz_2Wi9dznQDQTSBY5qV_DHuJanF-BubEQ3WJd3wCKGGM16Lso2X_h7aiJYegjSKXg6LMsCcQ/s1600/img9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;63&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNy2K-Y8chvcaK7Q2hMvzrh-M0DEAAoAkaJBurECbO6CgwsWKxMCN9P67RLN4B8AZfLRsz_2Wi9dznQDQTSBY5qV_DHuJanF-BubEQ3WJd3wCKGGM16Lso2X_h7aiJYegjSKXg6LMsCcQ/s400/img9.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivNgi6uBaJJxVBE7WDnJchho0vuifuem0HJh5ZFvuhn8cnE5hGeWETyXVJv-hCP2f2IWzh6sGEgsO0dvFvenj5ZlwxJ1bycrn2vdpP1GaYJ-dNBk9xgdOV8YFdi24pINQmYvLQmMc5KcE/s1600/img10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;172&quot; kda=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivNgi6uBaJJxVBE7WDnJchho0vuifuem0HJh5ZFvuhn8cnE5hGeWETyXVJv-hCP2f2IWzh6sGEgsO0dvFvenj5ZlwxJ1bycrn2vdpP1GaYJ-dNBk9xgdOV8YFdi24pINQmYvLQmMc5KcE/s640/img10.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Les comparto &lt;a href=&quot;http://sdrv.ms/NsG43T&quot; target=&quot;_blank&quot;&gt;el código&lt;/a&gt; y si tienen algún comentario o pregunta no duden en hacerla&lt;br /&gt;
&lt;br /&gt;
Happy coding!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gerardo-reyes.blogspot.com/feeds/2997882755785348209/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4151003370208110042/2997882755785348209?isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/2997882755785348209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4151003370208110042/posts/default/2997882755785348209'/><link rel='alternate' type='text/html' href='http://gerardo-reyes.blogspot.com/2012/08/creando-custom-workflow-activities-para_12.html' title='Creando custom workflow activities para SharePoint 2010'/><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJwWKgm0ymhs6OTBgG5BoFgHJUZfigan8cd1p4LzxKtePahkmAj-cxqzZ5yQzxvHkAGs0TPP4x_7U-ROzSFY6H9qvXZ1JDg2cVRQMpRD2VRZBXQPoiYzmihVhy-EnU5dMwDzWFspVL3M/s72-c/img1.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>