Los equipos de Microsoft Teams se crean con facilidad, pero no siempre se revisan cuando termina el proyecto que los originó. Con el tiempo, el tenant acumula espacios con propietarios que han cambiado de puesto, invitados que ya no colaboran y documentación cuya finalidad nadie recuerda.
Detectar equipos sin actividad durante más de 180 días es una buena puerta de entrada al gobierno de Microsoft 365. Pero hay una condición: la falta de actividad registrada no es una autorización para eliminar. Primero hay que comprobar qué mide el informe, su cobertura y las necesidades de conservación.
La respuesta práctica
Obtén el inventario de equipos, descarga el informe de actividad D180 y cruza ambos por Team ID. Compara las fechas válidas con la fecha de refresco del informe. Separa los equipos sin fecha y los que no aparecen: son casos para investigar, no inactividad demostrada.
1. Define qué estás buscando
En este artículo, «Teams» se refiere a equipos de Microsoft Teams, no a usuarios, chats individuales ni a toda la actividad de Microsoft 365. El objetivo es preparar una lista de revisión del ciclo de vida de esos espacios.
La regla para una fecha conocida es: fecha de referencia menos última actividad informada, estrictamente mayor que 180 días. Un equipo con exactamente 180 días no entra en «más de 180». Utiliza fechas UTC y una referencia coherente.
Para comparar con un CSV, recomendamos tomar Report Refresh Date como referencia, no la hora actual del ordenador. Así no atribuyes al equipo días de inactividad que el informe todavía no ha observado. Añade al resultado la fecha de extracción y el desfase frente al día de la revisión.
Conviene distinguir cuatro estados: actividad reciente informada; última actividad informada anterior al umbral; fecha vacía; y equipo ausente del informe. Los dos últimos no deben convertirse en un falso «inactivo».
2. Descarga el informe de actividad de equipos
- Accede al centro de administración de Microsoft 365 con un rol autorizado para informes, por ejemplo Reports Reader cuando sea suficiente.
- Abre Reports → Usage → Microsoft Teams → Team usage. Los nombres pueden aparecer traducidos.
- Selecciona el periodo de 180 días, sin limitar la exportación a un día concreto.
- Exporta el CSV y conserva el original como evidencia.
- Comprueba Team ID, Last activity date y Report Refresh Date, además de los indicadores de uso disponibles.
Microsoft documenta ventanas de 7, 30, 90 y 180 días. Los datos de un día aparecen en este informe dentro de 48 horas; la fecha de refresco y las revisiones de calidad pueden producir diferencias entre extracciones.
La última actividad representa la fecha más reciente en la que un miembro del equipo realizó una acción según el informe. No se limita al número de mensajes: un equipo con pocos mensajes no debe darse por abandonado si registra otras acciones.
Privacidad: los informes pueden ocultar nombres. Comprueba que los identificadores permiten la correspondencia con el inventario; no desactives una protección global ni una política de privacidad solo para que una unión funcione. Si falta una clave utilizable, documenta el caso y solicita una vía autorizada.
3. Por qué D180 no demuestra automáticamente «más de 180 días»
D180 define el periodo de agregación. No solicita un historial ilimitado ni devuelve necesariamente una fecha de última actividad para todos los equipos. La documentación general indica que la última actividad puede ser independiente de la ventana seleccionada, pero hay que comprobar el contenido real del informe.
- Fecha anterior al corte: permite clasificar el equipo por su última fecha informada, siempre sujeto a la cobertura del producto.
- Fecha vacía: no permite calcular cuántos días lleva sin actividad. Puede requerir contrastar antigüedad, cobertura o histórico.
- Fila ausente: no equivale a cero actividad. Revisa permisos, identificación, disponibilidad del informe y diferencias entre instantáneas.
- Equipo recién creado: no puede acumular más de 180 días de inactividad desde su creación. La antigüedad del grupo asociado tampoco sustituye siempre la fecha de aprovisionamiento del equipo.
Si el informe no proporciona una fecha antigua y necesitas acreditar un periodo superior a 180 días, combina instantáneas periódicas con una cobertura validada, o utiliza registros históricos autorizados cuya retención alcance el periodo. La ausencia de eventos en un registro incompleto tampoco es prueba suficiente.
4. Cruza inventario y actividad con Microsoft Graph
Una exportación de uso no debe tratarse como inventario completo. Microsoft Graph permite listar los equipos de la organización y obtener el informe por separado.
// Inventario de equipos
GET https://graph.microsoft.com/v1.0/teams
// Informe de actividad agregado en 180 días
GET https://graph.microsoft.com/v1.0/reports/getTeamsTeamActivityDetail(period='D180')
Para el inventario, la documentación indica Team.ReadBasic.All. Para el informe, Reports.Read.All. En autenticación delegada se necesita también un rol administrativo autorizado para los informes; los permisos de aplicación requieren el consentimiento correspondiente. Utiliza una identidad de solo lectura y mínimo privilegio.
La API de informe devuelve una redirección 302 a una URL de descarga preautenticada de corta duración. Trátala como información sensible: no la publiques y no reenvíes el token de Graph al destino de descarga. La API de este informe está documentada para la nube global, no para las nubes gubernamentales o 21Vianet.
En el inventario REST, sigue @odata.nextLink hasta agotar las páginas. La operación GET /teams solo rellena algunas propiedades básicas: no presupongas que devuelve una fecha de creación o un isArchived útil. Para detalles adicionales, consulta el equipo con los permisos que requiera esa operación.
Si utilizas Microsoft Graph PowerShell, esta extracción prepara las dos entradas del clasificador. Ejecuta los comandos en PowerShell con los módulos Authentication, Teams y Reports instalados; aprueba únicamente los permisos necesarios.
Connect-MgGraph -Scopes "Team.ReadBasic.All", "Reports.Read.All"
Get-MgTeam -All |
Select-Object Id, DisplayName |
Export-Csv -Path "inventario-teams.csv" -NoTypeInformation -Encoding utf8
Get-MgReportTeamActivityDetail -Period D180 -OutFile "actividad-teams.csv"
Disconnect-MgGraph
El parámetro -All evita quedarse con la primera página del inventario. Estos comandos son una propuesta documental: no se han ejecutado contra tu tenant. Confirma los módulos y la versión del SDK, la autenticación y los CSV antes de programarlos.
5. Clasifica los CSV sin modificar el tenant
Hemos preparado un script Python descargable que funciona sobre archivos locales, sin dependencias externas. No autentica contra Microsoft 365, no archiva, no bloquea y no elimina equipos.
Descargar clasificador de Teams →
Requisitos: Python 3.10 o posterior, CSV separados por comas, inventario con id y displayName, e informe con las columnas inglesas Team Id, Last Activity Date, Report Refresh Date y Report Period. El clasificador admite variantes de mayúsculas como Id y DisplayName, pero no traduce nombres de columna: si exportas desde una interfaz en español, adapta las cabeceras o utiliza el CSV de Graph.
python detectar-teams-inactivos.py --inventario inventario-teams.csv --actividad actividad-teams.csv --salida revision-teams.csv
El script conserva todos los equipos del inventario, rechaza IDs vacíos o duplicados, exige un informe D180 con una sola fecha de refresco y separa las fechas inválidas o incoherentes. Opcionalmente acepta createdDateTime, si tienes una fecha verificada; no la obtiene ni la inventa. También informa de filas de actividad sin correspondencia en el inventario.
| Clasificación | Significado y siguiente paso |
|---|---|
| MasDe180-SegunUltimaFechaInformada | La fecha válida supera estrictamente 180 días respecto al refresco. Revisar cobertura, propósito y conservación. |
| ActividadInformadaEn180Dias | La fecha está dentro del umbral o en el límite exacto. No entra en el criterio «más de 180». |
| SinFecha-NoConcluyente | Existe fila, pero falta fecha. No inventar una fecha ni un número de días. |
| SinFila-RevisarCobertura | El equipo existe en el inventario, pero no hay correspondencia en actividad. |
| FechaInvalida / FechaIncoherente / FechasIncompatibles | Revisar formato, instantáneas e identidad antes de decidir. |
En móvil, desliza horizontalmente la tabla y los bloques de código si lo necesitas. El clasificador se ha probado con casos de prueba sintéticos, incluidos el límite exacto, una fecha anterior, una fecha vacía y un equipo ausente. No se presentan esos casos como datos reales de un tenant.
6. Comprueba lo que el informe no cubre
La actividad del equipo no equivale a toda su utilidad. Microsoft señala que los recuentos cubren funciones integradas del cliente, pero no cambios mediante integraciones del servicio, como publicaciones de aplicaciones o correos enviados al canal. También documenta limitaciones de telemetría en canales compartidos con usuarios externos.
Antes de declarar un espacio prescindible, revisa con su propietario:
- SharePoint y archivos: si el sitio o los sitios asociados a canales privados y compartidos siguen siendo necesarios o tienen actividad relevante.
- Dependencias: aplicaciones, flujos, agentes, procesos y vínculos que utilizan sus recursos.
- Uso estacional: auditorías, cierres anuales, proyectos en pausa o espacios de contingencia.
- Gobierno: propietarios vigentes, invitados, sensibilidad y accesos públicos.
- Conservación: políticas de retención, expedientes, investigaciones y obligaciones contractuales o legales.
No utilices la fecha de modificación del grupo como sustituto de actividad de Teams. Tampoco basta con mirar la última publicación del canal General: puede existir uso en otros canales o un valor documental sin nuevas publicaciones.
7. Convierte la detección en una decisión de gobierno
Un listado es útil cuando conduce a una decisión trazable, no a una eliminación masiva. Propón al propietario confirmar el propósito, la necesidad futura y el responsable. Define un plazo interno de respuesta y una vía de escalado para los equipos sin propietario.
- Mantener: existe una necesidad vigente; documentar motivo y próxima revisión.
- Corregir: actualizar propietarios, permisos, invitados o dependencias.
- Archivar: el trabajo terminó, pero interesa conservar el espacio y poder reactivarlo.
- Eliminar: solo tras aprobación, revisión de dependencias y validación de conservación.
Microsoft permite reactivar un equipo archivado. El borrado afecta a recursos asociados y requiere más cautela; la recuperación del grupo de Microsoft 365 asociado tiene, por defecto, una ventana de eliminación reversible de 30 días. Ese plazo no es una estrategia de copia de seguridad ni una autorización para borrar.
Ni el script ni el procedimiento propuesto realizan acciones destructivas. Si se automatizan más adelante, deben separarse la detección y la ejecución, exigir aprobaciones y guardar evidencias de la decisión.
8. Establece una revisión periódica
- Guardar instantáneas fechadas del inventario y el informe con acceso restringido.
- Comprobar frescura, cobertura e identidades antes de comparar resultados.
- Enviar a los responsables una lista de revisión, no una sentencia de abandono.
- Registrar decisión, motivo, aprobador y siguiente fecha de revisión.
- Medir casos pendientes, equipos sin propietario y decisiones completadas.
La finalidad es gobernar espacios de colaboración, no evaluar la productividad de las personas. Limita los datos al mínimo necesario y establece conservación y acceso acordes con esa finalidad.
El criterio de IntegroIA
180 días es un umbral de revisión, no una orden de borrado. El gobierno de Teams combina evidencia de uso, propietarios, dependencias y conservación para mantener un entorno útil sin perder información necesaria.
Ayudamos a revisar la colaboración y el gobierno de Microsoft 365 y SharePoint, conectando el inventario técnico con decisiones de negocio.
Fuentes oficiales y alcance
Consulta documental: 4 de octubre de 2026. Las fechas siguientes son las indicadas por Microsoft en cada documento. El artículo y los comandos no representan una auditoría de tu tenant. La lógica local del clasificador se verifica con pruebas sintéticas; autenticación, cobertura y resultados reales deben validarse en tu entorno.
- Informe Team usage: métricas, UTC, latencia y limitaciones · 03/04/2026.
- Graph: getTeamsTeamActivityDetail, permisos, D180 y CSV · 04/04/2024.
- Graph: listar equipos y límites de propiedades devueltas.
- Informes de uso: roles, privacidad y última actividad · 28/08/2026.
- Archivar, eliminar y recuperar un equipo · 17/09/2024.