Nuevo Update ”1600.2487.8107.12070 / PR1.2” para Nokia Lumia 800 !!!

imageMuy buenas y buenísimas noticias sobre una nueva y mejorada versión, entre otros puntos, la mejora de rendimiento de la batería.

Estos son los aspectos de mejora, recopilados desde aquí, donde podéis ver algunos feebacks:

– The Fast battery drain issue has been fixed
– The lack of audio Bass when listening through headsets has been fixed. There’s a whole lot of bass now..
– The auto-white balance issue with the camera has also been fixed
– The hardware buttons backlights are now always on at all screen brightness levels
– Diagnostics app has been changed to prevent users from getting misleading info about their device
– Focus Mode is now set to Normal by default in the camera app
– More stuff that I won’t talk about.

Podemos descargar la imagen desde “NaviFirm Plus 1.7”.  La no tan buena noticia es que aún no tenemos los fuentes para todas los países, compañías, ni para los libres. Podéis verlo aquí:

image

Por el momento yo esperaré a que  tengamos las de España, pero si alguno lo desea y se aventura que nos adelante sus experiencias.

¿Será realmente este el Update esperado? A ver si es así  y finalmente tenemos de una vez por todas el mejor teléfono del mercado!!

Saludos  “Nokianos”
@JuanluElGuerre

Consigue que la batería de tu Nokia Lumia 800 aguante 1,5 días !!!

WP7_LogoMuy buenas,

Durante estos últimos meses la duración de la batería del Nokia Lumia 800 ha seguido siendo una de mis preocupaciones, como creo que para muchos de vosotros.

Compramos un móvil como es este, y zas, nos encontramos con este inconveniente, la batería. Todos estuvimos a la espera del update “1600.2483.​8106.11500” a través de Zune o, del “1600.2483.​8107.11501” a través de Nokia Care Suite. Después de haber realizado dicho update, aun hoy, muchos de nosotros seguimos con el mismo problema o en algunos casos, quizás peor.

Cada Nokia Lumia 800, plantea una situación distinta, y hay soluciones de los más variopintas en cuanto al ahorro de batería: desactivar, desactivar….. ¡Claro, así es normal que gaste menos! ¿Pero para que queremos el mejor Smart Phone con todo ello desactivado? En mi opinión, no deberíamos llegar a estos extremos, no obstante es una escapada a nuestra mente para quedarnos satisfechos con la magnifica compra. ¿Realmente quieres esto?

Tras vueltas por los foros, incluso tras algunas opiniones de nuestros compañeros, como la de Jorge Serrano y tras,  pruebas, pruebas y más pruebas, mi conclusión se resume como sigue:

Instala uno de estos updates “1600.2483.​810[6|7].1150[0|1]” si realmente no lo has hecho ya, y continua:

  1. Realiza un Hard Reset siguiendo estos pasos:
    • Importate: Antes de nada, ten en cuenta que esta operación eliminará todo el contenido del teléfono.
    • Presiona los botones “Power” + “Volumen” + “Cámara” hasta que el teléfono vibre
    • Suelta el botón “Power” mientras el resto permanecen pulsados hasta que se encienda.
  2. Ajusta algunas opciones que son más o menos lógicas:
    • Establece la notificación de emails a “Manual”. Nokia + WP7 tarda en actualizar los correos de forma manual no mas de 20 ó 30 segs. ¿Para que desperdiciar la mayor ganancia de batería?
    • Desconecta el Bluetooth y actívalo sólo cuando lo necesites.
    • Si usas “WhatsApp” y deshabilitas “Configuración > Datos móviles” – “Conexión a datos” perderás las notificaciones. En mi caso ¡no quiero esto, no al menos siempre! Evidentemente esto si supone un gasto, ¡no obstante dependerá del uso que le des!
    • Desactiva la tareas en Background.
    • Desactiva “Xbox LIVE > Configuración > Connectar con Xbox LIVE”
    • [Opcional] La opción “Configuración > Localicación” dependerá del uso que le des.
    • [Opcional] El Wi-Fi aunque gasta batería, puedes dejarlo activado dependiendo una vez más del uso que le des. En mi caso, el usarlo en casa, y algunos días en la oficina, no ha supuesto una perdida diferencial de batería. Utiliza Wi-Fi siempre que puedas para conectarte a datos, ahorrará batería.
    • [Opcional] Las opciones de notificaciones de actualización “Configuración > Actualización”, puedes desactivarlas. ¡Sabemos de sobra cuando Nokia lanzará una actualización! y si no, al conectarlo a Zune este nos lo hará saber al instante.

Si sigues todos estos ajustes (sin tener en cuenta los opcionales), conseguirás que tu móvil aguante 1,5 días con un uso medió y normal y, sin necesidad de apagarlo o activando el modo “vuelo”.  Por otro lado, si desactivas la conexión a datos, el uso de mi localización, Wifi, etc ni que decir tiene que conseguirás que aguante bastante más, pero como decía al comienzo de este post, no creo que queramos esto teniendo un gran Smart Phone entre nuestras manos.

La opción de Activar o desactivar “Configuracion > Ahorro de batería >  Activar el ahorro de batería hasta la próxima carga”, en mi caso no ha supuesto ningún ahorro de batería extra.  Particularmente, si activo la opción “Configuración > Ahorro de batería > Activar el ahorro de batería siempre que quede poca batería”.

Todos estos ajustes son el resultado de mis pruebas y concretamente en mi Nokia Lumia 800, no obstante, espero que se ajusten a todos y podamos conseguir ese Nokia que nos merecemos, al menos mientras esperamos al nuevo update, que ya está casi. ¡Ya os contaré!

Saludos @Home
JuanluElGuerre

Windows Azure Startup tasks. Instalando .exe, .msi y .msu

Windows Azure BigMuy buenas,

Cuando es necesario que una de nuestras aplicaciones a desplegar en Azure cuente con algún prerrequisito, Toolkit, SDK Adicional, etc., para que todo funcione correctamente, Azure cuenta con las “Startup Task”, que  seguro que ya conocéis.  Nuestra compañera Gisela ya lo comentó en un post hace ya un tiempo. No obstante, aunque las nociones son estas, existen algunos matices que me gustaría comentar:

Recordemos que estas tareas son necesarias, porque Windows Azure puede decidir en cualquier momento por cuestiones de mantenimiento (transparente para nosotros, eso sí), hacer un movimiento de la maquina  que contiene nuestro role, en cuyo caso si hemos optado por instalar manualmente algunos de estos prerrequisitos, perderíamos dicha configuración y nuestra aplicación dejaría de funcionar si aviso previo.

Para evitar esto necesitaremos configurar las “Startup task” como resumo a continuación:

  • Incluimos en el fichero “ServiceDefinition.csdef” la sección “Startup”:
   1: <WorkerRole name="ElGuerreWorkerRole" vmsize="Small">

   2:     <Startup>

   3:       <Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple">

   4:       </Task>

   5:     </Startup>

   6: ...

  • Situamos el instalable en cada uno de los proyectos (.csproj)  que serán un role de Azure y, establecemos el valor la propiedad “Copy to Output Directory” con el valor  “Copy Allways”.
  • Incluimos también un “.cmd” para indicar las ordenes de instalación que instalaran nuestro instalable y, nuevamente “Copy Allways
  • Al llevar a cabo estas “tasks” podemos encontrarnos con los siguientes tipos:
    • .msi
    • .exe
    • .msu
  • Además del tipo de instalable es muy importante conocer la plataforma a la que este va destinado:
    • Windows  Server 2008 sp2
    • Windows Server 2008 R2

Recordemos también que   por defecto un role de Windows Azure se despliega como Windows Server 2008 Sp2 así que para que en su lugar este sea “R2”  tenemos que establecer el valor de la propiedad  como osFamily="2"  en del fichero de configuración “.cscfg”.

A continuación un ejemplo para la instalación de WIF necesaria para la conexión con CRM OnLine:

  • Creamos “Startup.cmd” para Windows Server 2008 sp2:

1: @echo off

   2: sc config wuauserv start=demand

   3: wusa.exe "%~dp0Windows6.0-KB974405-x64.msu" /quiet /norestart               

   4: sc config wuauserv start=disabled

   5: exit /b 0

  • Para Windows Server 2008 R2 habría que modificar el “0” por un “1”  en la línea 3 del script anterior además de, osFamily=”2”:
   1: wusa.exe “%~dp0Windows6.1-KB974405-x64.msu”

 

Adicionalmente, para incluir  “.dll” en la “gac” es necesario proceder de la misma manera:

  1. Incluir el fichero “gacutil.exe” en nuestro proyecto (.csprog)  y, “Copy Allways”.
  2. Crear un “.cmd” con la instrucción adecuada y “Copy Allways”:
   1: gacutil /nologo /i .Microsoft.IdentityModel.dll 

   2: exit /b 0

Importante: Es necesario seguir los siguientes pasos para guardar los  scripts “.cmd” y que este sea legible por el SSOO y principalmente para evitar problemas durante el deploy. Parece que esto es debido a un “issue / bug” !!!

image

image

image

La “recomendacion” en este post, es incluir nuestros instalables en un directorio“setup” dentro de cada proyecto “.csproj” (Role de Azure)  e indicar esteen la propiedad commandLine de nuestra “Task”. Asi todo estará un poco más organizado:

   1: <Task commandLine="setupstartup.cmd" executionContext="elevated" />

Aquí os dejo un muy buen enlace que también nos guía y llega a profundizar un poco más, y otro más, que incluye ejemplos con PowerShell.

Un camino más ágil, nunca viene mal, ¡seguro que no! Guiño

Saludos

Juanlu @Higuera la Real

Windows Azure – Fixing Reconnect Remote Desktop Error !!!

Windows Azure BigMuy buenas,

Mientras espero la notificación para la actualización en el teléfono de nuevo Firmware del Nokia Lumia 800, a pesar de conocer otros caminos de actualización, entre otros como el que nos cuenta Jorge Serrano aquí, yo sigo pegándome con temas de Windows Azure.

En esta ocasión simplemente quiero comentar un tema que me ha traído de cabeza esta tarde, “una de esas tonterías que al final, son eso, tonterías que te hacen perder el tiempo por que sí”, pues bien, si os encontráis con el error “The Specified User Name does not exist. Verify the Username and try logging in again” al intentar acceder a un Servidor Remoto de Windows Azure, simplemente chequea los pasos que nuestro compañero “Karthikeyan Anbarasan” nos cuenta aquí y que resumo muy brevemente:

  • Guarda el fichero “.rdp” en local

image

  • Edítalo y marca la casilla “Always ask for credential”
  • Gardalo
  • y Listo, ya puedes conectarte si volver a ver de nuevo el error.

image

Espero que os ahorre algún tiempo, al menos, en aquellas ocasiones en las que tengáis un día complicado y os cueste centraos.

Saludos @Hard Weekend
Juanlu

El update de WP7 “8107” ya casi está. ¿Solucionará el Nokia Lumia 800 “battery issue”?

Muy buenas,

La noticia se merece el post, aunque sea cortito, 😀

Hace una semana escribía este post, sobre el issue / problema de la batería del Nokia Lumia 800, y la espera al nuevo update que solucionaría el problema, pues bien, en esta ocasión y tras mi impaciencia, desde Movistar me responden a una de mis preguntas como sigue:

Informaros que nos han comentado lo siguiente, si un usuario ya tiene el terminal y actualiza a la nueva versión con Zune, el nombre de la versión será 1600.2483.8106.11500, y todos los equipos que se produzcan nuevos, llevarán la misma versión pero su nombre/identificador es el 1600.2483.8107.11501. Estas dos numeraciones son la misma versión.

Y estará disponible en una semana aproximadamente.

Este nuevo update contendrá:

  • It solves a problem of the keyboard on the screen, preventing the keyboard to disappear while typing
  • Resolves an issue with syncing Gmail
  • It solves a problem of access to the location. After the upgrade, the function IO hub sends to Microsoft anonymous information contact the Wi-Fi access points and antennas for mobile phones in the vicinity, only if you have allowed access to and use of location information from part of the “I’m here.”
  • Revocation of certificates issued by DigiCert Sdn Bhd to solve a problem of encryption
  • Fixes a problem with the e-mail related to Microsoft Exchange Server 2003. When you reply to or forward an email, the original message is now included in the response.
  • Fixes an issue of notification of voicemail

Adicionalmente, Microsoft aprovechará para incluir algunos cambios que puedes ver aqui:

  • Datos Moviles: Donde ahora permitirá seleccionar entre la velocidad más alta 3G y la normal (EDGE/GPRS)
  • Fecha y hora: Configuración automática de la fecha a partir de la red de telefono.

Si alguien no recibe el update desde su proveedor de red o no quiere esperar, puede hacerlo manualmente (con el riesgo que conlleva) según indican los primeros “cocineros”  de XDA-Developers aquí y aquí.  ¡Seguro que en breve nuestro Windows Phone parecerá cualquier otra cosa, jejeej…!

Saludos @Home
Juanlu

Analizando “Battery Issue” & “Power on Charge” en Nokia Lumia 800. Un poco de cabezonería….

WP7_Logo

Muy buenas y Feliz 2012 a tod@s,

Después de varios días, indagando en el tema de la batería del Lumia 800, “Googleando” y mirando y participando en los foros de Nokia, además de mi cabezonería por identificar la causa del “Battery Issue” / “Battery Fix” / “Battery Problem”…, saco algunas conclusiones que me gustaría compartir a fin de poder disfrutar durante más tiempo del nuevo Lumia 800, al menos, hasta el 18 de enero que es a partir de cuando tendremos realmente ante nuestras manos el “mejor”.

Diferentes issues o problemas en cada Lumia:

  1. Batería con 1519mA y con una carga máxima de 900mA.  En este caso, obtén el IMEI “*#06#” y ponte en contacto con con Nokia facilitándole esta información para que te cambien el terminal. Aquí, a pesar de todo se ve la calidad de servicio:
    • Contact Info:
    • Alternate #: (if any)
    • Best call back time:
    • Email Address:
    • Home Address:
    • IMEI:
    • Network Operator:
  2. Batería con 1519mA y con una carga máxima de 1250mA (Este es mi caso).
  3. Imposibilidad de finalizar las llamadas.
  4. Largas esperas y comportamientos extraños en la carga de la batería una vez que esta se ha descargado completamente.

Aunque hay algún otro, estos son los problemas que he podido comprobar a mi alrededor y que no dejan de seguir apareciendo. Todos ellos para las recientes versiones de Firmware: “1600.2475.7720.11414” y “1600.2479.7740.11451” (Ultima actualización).

Analizando estos problemas y la obsesión por que la batería aguante cuanto más mejor, he seguido los siguientes pasos:

  1. Seguir algunas indicaciones para optimizar el uso de la batería.
    • Desabilitar la 3G.  En sitios donde haya poca cobertura, el teléfono no parará de rastrearla hasta intentar conseguirla lo que implicar una gran gasto de la misma.
    • Desabilitar “Settings – Find my Phone”. Supuestamente es un servicio y como tal consume.
    • Desabilitar “Settings – games – Connect with Xbox LIVE”
    • Desabilitar la tareas de segunto plano
    • Desabilitar la sincronización automática de los emails
    • Habilitar el ahorro de batería
    • etc.
  2. Analizar la herramienta “Diagnostics” (##634#), donde se pueden sacar algunas conclusiones

Battery_Diagnostics_App

  • “Current (Discharging)”, indica la velocidad a la que se descarga la batería.   Este valor tiende a ser más o menos constante rondando los 147mA y 190mA aproximadamente, dependiendo de las funcionalidades activadas/desactivadas comentadas anteriormente y a excepción de estos altibajos como el caso de la 3G, si se activa e inmediatamente se analiza este dato, puede observarse como se incrementa la velocidad al doble aproximadamente durante el tiempo de establecimiento de la señal, de ahí, que los lugares donde la señal sea débil esto puedo afectar realmente.
  • “Remaining Charge Capacity”, este valor debería ser igual al valor del “Full Charge Capacity” y que hasta ahora no  es posible alcanzar debido a uno de los Issue, es decir, se está desaprovechando casi un 20% de batería que no se usa.

Sinceramente y a pesar de todos estos ajustes, el mayor agente de descarga de la batería es el “VICIO” de no dejarlo descansar, yo, particularmente ¡ no paro!

Por otro lado, y como ya tenía el teléfono desbloqueado con el Chevronwp7, he instalado otra aplicación de gestión de la batería: “Battery Status”, que puedes instalar con la aplicación “Application Development” incluida en el SDK 7.1 de Windows Phone.

WP7_Application Development Deploy

Cosa curiosa, además de ser una aplicación muy completa y bastante mejor que la anterior (teniendo en cuenta que se trata de una herramienta de testing), esta si que parece indicar que el cargo de la batería se hace por completo. Aquí un ejemplo al 95%.

Screen Capture

¡Ahora si que vienen las dudas!  ¿Realmente es un problema de batería o simplemente se trata de un bug en la herramienta nativa de chequeo/testing?  ¿En que parámetros (distintos) se basa esta otra aplicación para hacer los cálculos? Las respuestas a estas preguntas dan un poco igual si no pueden compararse, así que veremos que pasa llegado el 18 de Enero y si los datos varia para mejor. ¿Cumplirá Nokia lo que se comenta por distintos foros?, ¿Superará  finalmente a sus competidores ?  Bajo mi punto de vista, si supera esta prueba, ¡los Lumia 800 comenzarán a salir hasta debajo de las piedras!

Otro dato y muy curioso, es que algunos dicen que con el tiempo la batería va mejorando, personalmente y con datos estadísticos, puedo aportar poco, pero creo que esto radica en que después de un tiempo, sin darnos cuenta el uso que hacemos del teléfono no es tan continuado y ese “VICIO” inicial desaparece. ¡El Lumia 800 está para sacarle el máximo partido, no os canséis, a programarlo y a experimentar con el, jeje…!

Continuaré analizando más datos gracias a esta nueva herramienta, que además de generar gráficos con históricos del uso de la batería,  muestra un listado con los procesos que se encuentran en ejecución, pero eso será en un siguiente post. 

Nota: En estos instantes chevronwp7 ya no vende más tokens, parece que se han agotado (http://www.technologytell.com/gadgets/87693/chevronwp7-tokens-have-been-sold-out/) así que aquellos que no tengáis desbloqueado el teléfono, tendréis que esperar para poder instalar “Battery Status”.

Saludos
Juanlu, ElGuerre

Lumia 800 y sus primeros inconvenientes, ¡la duración de la batería!

Muy buenas,

Hace uno días, ya obtuve mi regalo de estas Navidades, ¡He sido bueno!, jeje.. Finalmente, el “Lumina 800” está en mi poder.

Una vez que he jugueteado un poco y visto sus enormes capacidades así como el juguetito que realmente es, he comenzado a indagar un poco y a ver algunos de sus alcances, algunos de los cuales comento a continuación:

  • La primera de las necesidades al disponer del Windows Phone 7 (WP7) es disponer de Zune, aplicación con la que podremos conectar el Movil al ordenador para comenzar a transferir información.

Es aquí nada más comenzar donde surge mi primer problema: “can’t connet to your phone. Disconnect it, restart it, then try connecting again.”

Este error es debido al certificado personal que se instala automáticamente al conextar el WP7 a Zune. Relacionado posiblemente con la aplicacíón del DNIe o similar. Desinstálala y todo arreglado. A posteriori podrás volverla a instalar.

  • Seguidamente y tras haber instalado las aplicaciones básicas y más importantes, mi siguiente preocupación, como con cada uno de los móviles que he tenido hasta el momento, es la batería. Y si, aunque parezca mentira y muy a mi pesar, existen problemas con la batería del Nokia Lumia 800:

Lo primero es detectar el problema. Para ello, y, una vez seguidas las recomendaciones de ahorro de batería del manual de usuario, teclea el siguiente código “##634#”, esto lanzará una aplicación en tu móvil (y que a partir de este momento tendrás instalada (“Diagnostics”)), cuyo propósito es realizar un chequeo en profundidad del mismo.  Entre estos chequeos se encuentra el que busco “Battery Status”. Si tu batería tiene un problema, podrás comprobar que aunque lo parezca, nunca se carga al 100%. En mi caso, el Nokia Lumia 800, dispone de 1500MA de los cuales sólo se cargan unos  1200 ó 1300MA. Adicionalmente,  su porcentaje de carga, siempre es de “65535%”. No sé si no lo entiendo o no quiero entenderlo, pero ¡como realmente sea así, ¡me parece una cagadita! no me parece muy acertado.

Afortunadamente, y a pesar de todo, el problema radica en el software, en el Windows Phone, que no es capaz de gestionarla adecuadamente.  Con un poco de paciencia, el próximo 18 de Enero tendremos la actualización pertinente con este problema corregido. Si aún así, no quieres esperar a tal día, Nokia te remplazará el móvil sin problemas, (No he hecho la prueba ni lo he intentado, jeje…). Aquí tenéis más detalle sobre el bug de la batería.

image

  • Por otro lado y, viendo la otra cara de la moneda, a diferencia de Apple, Microsoft ha decidido dar la opción de desbloquear el teléfono de manera legal y controlada por sólo unos 7€, simplemente obtén el código adecuado siguiendo las instrucción indicadas en: http://labs.chevronwp7.com/

El 18 de Enero es el día, en que realmente se hará efectivo mi regalo !!!

Saludos y FELIZ NAVIDAD Y PROPERO AÑO NUEVO 2012 a todos
Juanlu

Are Out !!! SQL Azure DataSync CTP y Windows Azure Autoscaling Block Beta

Muy buenas,

Hace unos días escribía un post sobre la Preview de SQL Azure DataSync, pues bien, ya tenemos la CTP y, como parece ser que no ha cambiado desde entonces, me ahorro el hacer el tour con la herramienta, jeje..

Como no hay una buena noticia sin dos, también tenemos a nuestra disposición una beta de Patterns & Practices, “Windows Azure Autoscaling Block” que puedes descargar directamente desde desde NuGet:

Si estás interesado como yo en el auto-escalado, entonces empieza por aquí con sus novedades:

  1. El estabilizador aumenta la histéresis (“tendencia de un material a conservar una de sus propiedades, en ausencia del estímulo que la ha generado.”) en el escalo de operaciones mediante la prevención de reglas reactivas de acciones repetidas y erróneas.
  2. El Throttiling (regulador), permite limitar o desactivar ciertas operaciones relativamente caras en la aplicación cuando la carga está por encima de determinados umbrales.
  3. Notificaciones de emails, permite enviar notificaciones a destinatarios configurados para tomar decisiones manuales o realizar alguna otra acción correctiva.
  4. Conjunto valores de contadores para cada role definido en el almacén de información de servicios  (utilizado principalmente por el estabilizador, pero los usuarios también podrán usarlo en operandos de condiciones de la reglas).
  5. Capacidad para definir acciones personalizadas para reglas reactivas.
  6. Capacidad de especificar operandos personalizados para su uso en condiciones de reglas reactivas.
  7. Nueva funciones "Max" y "Growth" en la definición de operaciones.
  8. Mejora en los mensajes para la evaluación de reglas y escalado para determinar mejor lo que está sucediendo en el sistema.
  9. Nuevo ID de evaluación para correlacionar todos los mensajes de registro de un pase de evaluación específica.
  10. Cargas JSON para registrar los mensajes para ayudar a las herramientas que monitoricen e interpreten los mensajes.
  11. Clases de utilidad y definiciones de constantes para leer y analizar los mensajes de registro.
  12. Mejoras en la herramienta de configuración, mejores nombres y descripciones de objetos de configuración, validación, y un editor de cadenas de conexión de Windows Azure.
  13. Actualización de la lógica en el RulesEvaluator.
  14. Renombrado de la propiedad "nombre" por "alias" a fin de eliminar ciertas ambigüedades.
  15. Renombrado "SourceLogger" por "SystemDiagnosticsLogger".
  16. Refactorizado del elemento XML “scale” en el esquema de reglas para hacerlas más amigables (mediante la la eliminación de las propiedades "targetType" y "unit") e inferirlas a partir de su uso.
  17. Proporcionan una mejor definición de puntos cuando hay datos suficientes para que el block/componente pueda evaluar una regla.
  18. Nuevo elemento booleano NOT para especificar condiciones de la regla.
  19. Soporte para expresiones aritméticas básicas (multiplicación y división) en los parámetros en la especificación de condiciones de la regla.
  20. "Rank" (prioridad) a las reglas reactivas.

Para más detalle, no te olvides de CodePlex.

Hasta aquí por el momentosobre el auto-escalado !

Saludos @Working hard…
Juanlu

TFS Integration Tool: Integrando/migrando de CMMI 4.2 a CMMI 5 y mapeos para Task y Requirements

Muy buenas,

No tenía pensado comentar nada al respecto, pero después de aprender a usar la herramienta, detectar algunos bugs y un poco de trabajo de “chinos”, creo que es una pequeña ayuda para que podáis entender la migración entre distintos “Team Projects” con distintas plantillas de procesos:

Antes de nada, para el que no conozca “TFS Integration Tool (o, TFS Integration Platform)” es un herramienta de CodePlex, que facilita la migración/integración entre diferentes versiones de Work Items, Bug Tracking, etc.

Aunque está en beta, siempre que no se haya “customizado” complicadamente algún work item, cosa que no es de extrañar en algún caso, Risa), la herramienta funciona bastante bien, salvo algunas limitaciones en cuanto a items que no son migrados a día de hoy:

  • Check-in notes
  • Labels
  • Permissions
  • Workspaces
  • Pending Changes
  • Shelvesets
  • File encodings
  • Subscriptions
  • Test Cases
  • Check-in policies
  • Reports
  • Team Portal / SharePoint
  • Process Templates
  • Work item queries
  • Builds
  • Warehouse data

Hasta donde he podido llegar, los “Labels” si los migra, Risa.

Aunque podemos encontrarnos casos más complejos, entre otros, que el TeamProject destino exista y ya tenga bastante código, Work Items, changesets, etc, por el momento, os dejo un resumen de mi caso en concreto (desde “MSF for CMMI Process Improvement v4.2” a “MSF for CMMI Process Improvement CMMI5”) donde el TeamProject destino está recién creado:

  • Crea el “TeamProject” destino basado en la Platilla “MSF for CMMI Process Improvement v5.0
  • Abre la consola de administración de TFS y asignar el usuario con el que se vaya a lanzar la migración desde el “TFS Integration” dentro del grupo “Team Foundation Services Account”. Como en la mayoría de los casos seremos nosotros mismos, los que lancemos la migración, pues bastará con seguir los pasos (1) y (2) según indico en la siguiente figura, y si ya apareces como “Administrator Console Users”, haz click en “Reaply” para que se puedan aplicar los permisos oportunos y, todo listo.     Si quieres conocer más información al respecto de este punto, echa un vistazo a este post de “Willy’s Cave”.

image

  • Abre el “TFS Integration”, crea una nueva configuración(“Create new”) y elige “VersionControlAndWorkItemTracking.xml
  • Selecciona el “Workflow Type” “Custom(el resto, en la versión “2.1.10324.0” no parece que vayan del todo bien, no se guardan las reglas, tienes que aplicar de  nuevo la migración y finalmente la esta nunca se produce !!!)

image

  • Utiliza los siguientes valores para realizar tu configuración de Mapeo/Migración:

image

  • En el paso (2) aparecerá una nueva ventana donde tendrás que indicar los mapeos entre los distintos Work Items y sus campos.

image

  • Este mapeo está listo para los Work Items de tipo “Requirement” y “Task”, el resto podrás crearlos tu mismo sin mayor esfuerzo una vez que entiendas estos, eso si, tendrás que conocer las diferencias de campos y poder hacer así el mapeo.
   1: <SettingXml>

   2:   <WITSessionCustomSetting>

   3:     <Settings />

   4:     <WorkItemTypes>

   5:       <WorkItemType LeftWorkItemTypeName="Task" RightWorkItemTypeName="Task" fieldMap="Migrate2Tasks" />

   6:       <WorkItemType LeftWorkItemTypeName="Requirement" RightWorkItemTypeName="Requirement" fieldMap="Migrate2Requirements" />

   7:       <WorkItemType LeftWorkItemTypeName="Bug" RightWorkItemTypeName="Bug" fieldMap="*" />

   8:       <WorkItemType LeftWorkItemTypeName="Issue" RightWorkItemTypeName="Issue" fieldMap="*" />

   9:       <WorkItemType LeftWorkItemTypeName="Change Request" RightWorkItemTypeName="Issue" fieldMap="*" />

  10:     </WorkItemTypes>

  11:     <FieldMaps>

  12:  

  13:       <FieldMap name="Migrate2Tasks">

  14:         <MappedFields>

  15:  

  16:           <!-- Mapeo de todos los campos -->

  17:           <MappedField LeftName="*" RightName="*" MapFromSide="Left" />

  18:  

  19:           <!--- Excepciones a los mapeos  -->

  20:           <!-- Mapeos sin destino -->

  21:           <MappedField LeftName="Severity" RightName="" MapFromSide="Left" valueMap="" />

  22:           <MappedField LeftName="Issue" RightName="" MapFromSide="Left" valueMap="" />

  23:           <MappedField LeftName="Start Change Date" RightName="" MapFromSide="Left" valueMap="" />

  24:           <MappedField LeftName="Exit Criteria" RightName="" MapFromSide="Left" valueMap="" />

  25:           <MappedField LeftName="Test Id" RightName="" MapFromSide="Left" valueMap="" />

  26:           <MappedField LeftName="Test Name" RightName="" MapFromSide="Left" valueMap="" />

  27:           <MappedField LeftName="Test Path" RightName="" MapFromSide="Left" valueMap="" />

  28:           <MappedField LeftName="Estimate" RightName="Microsoft.VSTS.Scheduling.OriginalEstimate" MapFromSide="Left" valueMap="" />

  29:           <!-- Mapeos con cambio en el destino -->

  30:           <MappedField LeftName="Triage" RightName="Microsoft.VSTS.Common.Triage" MapFromSide="Left" valueMap="TriageMap" />

  31:           <MappedField LeftName="Priority" RightName="Microsoft.VSTS.Common.Priority" MapFromSide="Left" valueMap="PriorityMap" />

  32:           <MappedField LeftName="Discipline" RightName="Microsoft.VSTS.Common.Discipline" MapFromSide="Left" valueMap="DisciplineMap" />

  33:           <MappedField LeftName="Task Type" RightName="Microsoft.VSTS.Common.TaskType" MapFromSide="Left" valueMap="TaskTypeMap" />          

  34:  

  35:         </MappedFields>

  36:       </FieldMap>

  37:  

  38:       <FieldMap name="Migrate2Requirements">

  39:         <MappedFields>

  40:  

  41:           <MappedField LeftName="*" RightName="*" MapFromSide="Left" />

  42:  

  43:           <MappedField LeftName="Issue" RightName="" MapFromSide="Left" valueMap="" />

  44:           

  45:           <MappedField LeftName="Rank" RightName="Microsoft.VSTS.Common.StackRank" MapFromSide="Left" valueMap="" />

  46:           <MappedField LeftName="Estimate" RightName="Microsoft.VSTS.Scheduling.OriginalEstimate" MapFromSide="Left" valueMap="" />

  47:  

  48:           <MappedField LeftName="Requirement Type" RightName="Microsoft.VSTS.CMMI.RequirementType" MapFromSide="Left" valueMap="RequirementType2Map" />

  49:           <MappedField LeftName="Priority" RightName="Microsoft.VSTS.Common.Priority" MapFromSide="Left" valueMap="PriorityMap" />          

  50:           <MappedField LeftName="Triage" RightName="Microsoft.VSTS.Common.Triage" MapFromSide="Left" valueMap="TriageMap" />

  51:  

  52:           <!-- These are not exist on target  -->

  53:           <!--<MappedField LeftName="Start Date" RightName="Microsoft.VSTS.Scheduling.StartDate" MapFromSide="Left" valueMap="" />

  54:           <MappedField LeftName="Finish Date" RightName="Microsoft.VSTS.Scheduling.FinishDate" MapFromSide="Left" valueMap="" />-->

  55:  

  56:         </MappedFields>

  57:       </FieldMap>      

  58:     </FieldMaps>

  59:  

  60:     <ValueMaps>

  61:       <!-- Tasks values  -->

  62:       <ValueMap name="TriageMap">

  63:         <Value LeftValue="Pending" RightValue="Pending"/>

  64:         <Value LeftValue="More Info" RightValue="More Info"/>

  65:         <Value LeftValue="Info Recv" RightValue="Info Received"/>

  66:         <Value LeftValue="Triaged" RightValue="Triaged"/>

  67:       </ValueMap>

  68:  

  69:       <ValueMap name="PriorityMap">

  70:         <Value LeftValue="1" RightValue="1" />

  71:         <Value LeftValue="2" RightValue="2" />

  72:         <Value LeftValue="3" RightValue="3" />

  73:         <!--<Value LeftValue="" RightValue="4" />-->

  74:       </ValueMap>

  75:  

  76:       <ValueMap name="DisciplineMap">

  77:         <Value LeftValue="Analysis" RightValue="Analysis" />

  78:         <Value LeftValue="User Experience" RightValue="User Experience" />

  79:         <Value LeftValue="User Education" RightValue="User Education" />

  80:         <Value LeftValue="Test" RightValue="Test" />

  81:       </ValueMap>

  82:  

  83:       <ValueMap name="TaskTypeMap">

  84:         <Value LeftValue="Analysis" RightValue="Corrective Action" />

  85:         <Value LeftValue="User Experience" RightValue="Mitigation Action" />

  86:         <!--<Value LeftValue="" RightValue="Planned" />-->

  87:       </ValueMap>

  88:  

  89:       <ValueMap name="RequirementType2Map">

  90:         <Value LeftValue="Scenario" RightValue="Scenario"/>

  91:         <Value LeftValue="Quality of Service" RightValue="Quality of Service"/>

  92:         <Value LeftValue="Functional" RightValue="Functional"/>

  93:         <Value LeftValue="Operational" RightValue="Operational"/>

  94:         <Value LeftValue="Interface" RightValue="Interface"/>

  95:         <Value LeftValue="Security" RightValue="Security"/>

  96:         <Value LeftValue="Safety" RightValue="Safety"/>

  97:         <!--<Value LeftValue="" RigthValue="Business Objective"/>

  98:         <Value LeftValue="" RigthValue="Feature"/>-->

  99:       </ValueMap>

 100:     </ValueMaps>

 101:   </WITSessionCustomSetting>

 102: </SettingXml>

 103: <SettingXmlSchema />

  • Algunas notas aclaratorias sobre el mapeo:
    • Las líneas de la 5 a la 9, indican los Work Items a mapear.
    • Las líneas 5 y 6 incluyen el atributo “fieldMap” cuyo valor indica el mapeo en particular, que se corresponden con las líneas 17 y 38 respectivamente.
    • Adicionalmente en este código hago algunas aclaraciones al respecto, así que no habrá problema en entenderlo.
    • Las líneas de la 60 a la 100, indican los diferentes valores para las opciones posibles de ciertos campos.
    • Las líneas comentadas se corresponden principalmente con aquellos mapeos de campos que no existen en origen pero si en el destino (en el nuevo TeamProject), por tanto no las mapeo, puesto que no son requeridas.

Nota: Para completar el resto de mapeos, haz uso de los fichero “XML” de las distintas plantillas, así podrás conocer el detalle de los mapeos a realizar.

  • Guarda los cambios “Save to Database.
  • Y comienza con la integración/migración “Current Migration” – “Start

image

  • Una vez finalizado el proceso, podrás comprobar que el nuevo TeamProject contiene todo el código; Work Items, labels, Branching (sin “Trak Changeset” !), changeset asociados, etc., y si estableces como parámetro de configuración,  el “Workflow Type”, “Custom” para un “Frecuency”,  “ContinousAutomatic”, podrás comprobar que a medida que cambias código, haces “CheckIn”, etc., todo se verá reflejado en el nuevo como si se tratara del mismo TeamProject.

De la misma manera que este proceso de integración entre dos TeamProject ha sido un éxito, también podrás hacerlo para distintas “Queries” de origen y por tanto, “Area Path”, etc. El peso principal recae sobre cada uno de los mapeos según he comentado antes, y podrás hacerlo, para distintas plantillas de proceso, Scrum, MSF Agile, etc., e incluso entre distintas  plantillas origen y destino.

Mucha suerte y espero que sirva de ayuda/aclaración, Guiño

Saludos @TFS

Juanlu, elGuerre

SQL Azure DataSync Preview. Sincronizando… ¡Step by step!

Muy buenas,

Como sabéis durante esta semana estamos en el Pass Summit 2011, donde SQL es el protagonista y donde espero que salgan a relucir muchas de las novedades que estamos esperando y principalmente desde el área de Windows Azure, concretamente en este caso, SQL Azure.

Esta son los puntos a tratar sobre SQL Azure :

    1. A lap around Microsoft SQL Azure and a discussion of what’s new
    2. Building Offline Applications for Windows Phones and Other Devices using Sync Framework and SQL Azure
    3. Migrating & Authoring Applications to Microsoft SQL Azure
    4. Building Large Scale Database Solutions on SQL Azure
    5. Introducing SQL Azure Reporting Services
    6. Loading and Backing Up SQL Azure Databases
    7. SQL Azure Data Sync – Integrating On-Premises Data with the Cloud
    8. SQLCAT: SQL Azure Learning from Real-World Deployments
    9. SQLCAT: Administering SQL Azure and new challenges for DBAs

De momento SQL Azure Data Sync en su nueva y reciente versión Preview y su integración en el Portal de Azure.

En un post anterior ya comenté como se llevaba a cabo esta sincronización para la CTP 2. Ahora todo es más intuitivo y fácil gracias a los nuesvos Wizards paso a paso. Muy bien conseguidos, sin duda !!!  +10.

En primer lugar, lo que tenemos que hacer es generar una provisión, y para ello, bastará con hacer click en “Provisión”, acertar los terminos de uso, seleccionar una subscripción y esperar unos segundos.

image

A continuación ya estamos listo para comenzar el proceso de sincronización y seguir el Wizard, ¡a buen entendedor pocas palabras bastan!:

image

He aquí los los pasos para trabajar con esta nueva versión y generar un proceso completo de sincronización en este caso una sincronización BIDIRECCIONAL, entre una BBDD en SQL OnPremise y otra en SQL Azure:

  • Indicar un nombre para el grupo de sincronización, ej.: “Sync 1”

image

  • Añadir al proceso una BBDD SQL local

image

  • La primera vez que ejecutes este paso (2) necesitarás instalar en local el software “Client Sync Agent”, de manera que este permitirá al Portal de Azure configurar las sincronizaciones  conociendo así las conexiones  SQL Server locales. Para completar este paso por primera vez sigue estas indicaciones:

image

image

A continuación descarga e Instala el “Client Sync Agent” (Herramienta de Configuración con SQL Server Local + Servicio Windows).

Introduce un nombre cualquiera a asignar al agente. También tendrás que obtener la Key para poder configurar el “Client Sync Agent”.image

Una vez instalado el cliente (necesitaras las credenciales de un usuario para hacer el logon del servicio Windows (Agente)), sigue estos otros pasos para configurar el agente:

  1. Introduce la key obtenida en el paso anterior haciendo click en el botón "Submit Agent Key Configuration".
  2. Introduce las credenciales del servidor local de SQL Server haciendo click en el botón “Register”.

image

Vuelve al portal. Ahora ya podrás tener acceso a la BBDD local desde el portal de Azure y podrás continuar con el proceso.

Una vez completados los pasos anteriores o si ya tenías configurado un agente puedes optar por uno de las siguientes opciones, dependiendo de si ya habías creado o no una sincronización.

Opción (1) – Por primera vez:

image

image

Opción (2):

image

Paso 3: Ahora a configurar la BBDD de Azure sobre la que queremos realizar el proceso de sincronización, para ello, esta debe existir previamente.

image

Paso 4: Indicar cada cuanto tiempo queremos que se ejecute la sincronización, si queremos o no habilitar el proceso de sincronización y la política de conflictos (que información prevalece ante un conflicto, la de SQL Azure (Hub) o SQL Server Local (Client)),

image

Paso 5: Editar el mapeo de sincronización, (eso sí, de momento para una sóla base de datos) e incluso establecer filtros en relación a valores de campos.

 image

Después de esto y para terminar, lo único que nos queda es “Deploy”.

image

Y aquí, el resultado del portal una vez la sincronización ya está esta en curso:

image

Una vez finalizado el proceso las BBDD, tanto la local como la SQL Azure, incluirán un mayor numero de objetos; tablas, procedimientos almacenados y tipos definidos por el usuario, todos ellos con el prefijo “DataSync.”

image

Proceso listo, modifiquemos donde modifiquemos, en SQL Server o en SQL Azure, la información se verá reflejada en ambos.

También he de decir, que la consulta de logs (Log Viewer) ha mejorado bastante con respecto a su predecesor, ahora permite búsquedas por filtros (Sync Group, Agent, Database, Log Type y Date range):

image

Nota: Si la sincronización en lugar de ser bidireccional, es entre BBDDs de Azure (“Sync between SQL Azure databases”), la instalación del Agente en local no es necesaria.

Ahora a esperar a ver que más nos van contando en el Pass Summit 2011 !!! .

Saludos
Juanlu, elGuerre