Todos los proyectos

Informe de uso de licencias: una cifra por país, evidencia por asiento

Flujo del informe de licenciasAsignaciones de licenciaGraphInformes de usoGraph · puede ir cifradoInicios de sesiónEntra IDTelemetría de equiposRemediación de IntuneCruce por asientoColumna UsageSource: qué fuente decidióNivelesmantenerconfirmarrecuperarCSVMás de 25 paísesUn CSV por país · una cifra cada unoCada asiento lleva su evidencia: qué fuente decidió y cuándo se usó por última vez.

Todos los tenants en los que he trabajado tienen el mismo problema: las licencias se asignan y nunca se revisan. Las licencias base (F1, E3, Exchange Online) y los complementos de pago que van encima (Copilot, Power BI Pro, Visio, Project, Planner) se acumulan durante años. Un día alguien pregunta «¿seguimos necesitando todo esto?» y nadie tiene datos para responder.

Así que construí un informe. Un CSV por país, una fila por asiento, y para cada asiento un veredicto: mantener, confirmar con el responsable o recuperar. Solo los complementos sumaban unos 900 asientos, alrededor de 190.000 € al año, así que estaba claro lo que había en juego.

El primer número

La primera versión devolvió una cifra limpia y alarmante: unos 340 asientos de Visio y 180 de Project sin ningún uso, más de 500 en total. Recuperarlos habría sido el ahorro más fácil del año.

También estaba mal, y descubrir por qué es lo que hizo que el informe mereciera confianza.

Dos huecos, una conclusión falsa

Los datos de uso venían de los informes de uso de Microsoft 365 en Graph, cruzados con los titulares de licencia por su nombre principal de usuario. Había dos cosas que nadie había comprobado.

El tenant oculta los datos de usuario en los informes. Hay una opción de privacidad que cifra los nombres en todos los informes de uso. Con ella activada, el cruce por UPN no encontraba nada en silencio, y «sin coincidencia» se estaba leyendo como «sin actividad». Nada fallaba. El informe simplemente tenía menos filas de las que debía, y ninguna fila lo decía.

Visio y Project de escritorio no dejan rastro en la nube. La única señal que Microsoft expone es un inicio de sesión en la aplicación web. Alguien que abre Visio en su PC cada día, con un fichero de una carpeta de red, nunca la genera. Para esos dos productos, «sin uso» y «sin medir» parecían lo mismo.

Qué cambió

En vez de parchear el cruce y seguir, el informe ganó una columna: UsageSource. Cada fila dice ahora de dónde sale su veredicto: informe de uso, registro de inicios de sesión, telemetría del equipo, o no recogido. Quien lo lee distingue un asiento confirmado como inactivo de uno que sencillamente aún no podemos ver.

Para Visio y Project de escritorio no hay API, así que la escribí. Un script pequeño y de solo lectura se ejecuta en el equipo mediante remediaciones de Intune y lee dos señales locales: la lista de ficheros recientes de Office y el contador de lanzamientos de Windows. Devuelve una fecha de último uso por aplicación, que se cruza con el titular de la licencia. La cobertura de equipos se informa al lado, porque un equipo al que el script nunca llegó tampoco es evidencia.

El número que sobrevivió

Con el cruce arreglado y la señal de escritorio añadida, el conjunto recuperable se quedó en unos 300 asientos en más de 20 países, alrededor de 60.000 € al año: unas decenas en cuentas inactivas, la mayoría con la aplicación confirmada sin uso, el resto pendiente de confirmación del responsable. Otros 300 aproximadamente siguen marcados como uso desconocido, y el informe lo dice en lugar de meterlos en una columna u otra.

Menos que 500. Defendible ante la persona a la que se le retira la licencia, cosa que el primer número no era.

Lo que me llevé

La regla que aplico ahora a cualquier informe: la ausencia de datos no es evidencia de ausencia. Si una fuente no cargó, las filas que dependen de ella dicen unknown, nunca cero. Cuesta una columna y es la diferencia entre un número que puedes defender y un número que queda bien.

Todos los proyectos