Ir al contenido principal
SAP

Catálogo de extensiones SAP: decidir una vez, no en cada ticket

Cómo registrar cada decisión de extensibilidad in-app o side-by-side en un catálogo vivo para que la utility no repita el debate con cada requerimiento.

AGT
EvoTech Consulting Company

· 12 min de lectura

Planificador de mantenimiento de una empresa de agua coloca una tarjeta de color en un tablero de tarjetas T en el taller, con una solicitud de trabajo en la mano.

Un analista de facturación pide un campo adicional para marcar las cuentas con reclamo abierto. El arquitecto de la utility tiene la sensación de haber tenido esa conversación hace unos meses, con otro campo y otro key user. Nadie recuerda qué se decidió ni por qué, y el debate vuelve a empezar: ¿alcanza con extender in-app o hay que ir a SAP BTP?

La pieza anterior de esta serie mostró el costo de forzar dentro del core lo que no cabe ahí. Esta cierra el arco con la capa que evita repetir el error en cualquiera de las dos direcciones: un catálogo vivo de decisiones de extensibilidad.

El debate que se repite es un problema de memoria, no de criterio

Por qué el debate vuelve
De la decisión sin registro a la inconsistencia
🧭
Criterio sin registro
En nuestra práctica SAP vemos que muchos equipos de utilities en LATAM tienen criterio; lo que suele faltar es el registro de cómo se aplicó en cada caso.
›
🌫️
La decisión se olvida
Una decisión tomada pero nunca registrada probablemente se olvide.
›
🔄
Debates repetidos
El olvido lleva a debates repetidos o a cambios que contradicen sin saberlo la intención original.
›
⚖️
Inconsistencia
La misma necesidad termina in-app en facturación y side-by-side en reclamos, sin una razón que alguien pueda explicar.
SAP señala que muchos entornos ERP terminan cargados de código a medida, cambios no documentados e integraciones difíciles de mantener (SAP News Center, 2025).

En nuestra práctica SAP vemos que muchos equipos de utilities en América Latina ya tienen algún criterio para decidir dónde construir una extensión. Lo que suele faltar es el registro de cómo se aplicó ese criterio en cada caso.

La guía de arquitectura de Microsoft lo formula sin rodeos: una decisión tomada pero nunca registrada probablemente se olvide, y eso lleva a debates repetidos o a cambios que contradicen sin saberlo la intención original (Microsoft Azure Well-Architected Framework, 2026). Google Cloud agrega que un registro de decisiones ayuda a evitar la repetición de los mismos puntos de discusión y da contexto histórico cuando el equipo retoma un tema (Google Cloud Architecture Center, 2024).

En una utility, el costo de esa amnesia no es solo tiempo de reunión. Es inconsistencia: la misma necesidad termina resuelta in-app en facturación y side-by-side en reclamos, sin una razón que alguien pueda explicar. La propia SAP señala que muchos entornos ERP terminan cargados de código a medida, cambios no documentados e integraciones difíciles de mantener (SAP News Center, 2025).

Lo que recomiendan SAP y el mercado

Tres fuentes, una práctica
Lo que aportan SAP, IgniteSAP y el mercado al catálogo
🏷️
SAP: el vocabulario
Niveles A, B, C y D según integridad arquitectónica, seguridad ante upgrades y alineación con el clean core. Elegir on-stack o side-by-side según el caso de uso, con estrategia BTP-first.
SAP News Center, 2025
📝
IgniteSAP: el hábito
Documentar cada decisión en el momento en que se toma: alternativas evaluadas, nivel asignado y plan de remediación por encima del nivel B. Donde existe, el Centro de Excelencia SAP gestiona el catálogo.
IgniteSAP, 2026
📚
Mercado: el formato
La industria llama a esta práctica registro de decisiones de arquitectura (ADR). El catálogo de extensiones es un ADR aplicado a la extensibilidad.
Microsoft · Google Cloud

SAP ya entregó el vocabulario. Su concepto de niveles clasifica las extensiones en cuatro niveles (A, B, C y D) según integridad arquitectónica, seguridad ante upgrades y alineación con el clean core (SAP News Center, 2025). Asignar un nivel a cada extensión da a TI, arquitectura y negocio un vocabulario compartido para decidir con transparencia dónde invertir (SAP News Center, 2025). Para elegir entre on-stack y side-by-side, SAP pide decidir según el caso de uso y con una estrategia BTP-first (SAP News Center, 2025).

Lo que falta es convertir esa clasificación en memoria institucional. IgniteSAP describe el hábito concreto: documentar cada decisión de extensión en el momento en que se toma, con las alternativas evaluadas, el nivel asignado y el plan de remediación para todo lo que quede por encima del nivel B (IgniteSAP, 2026). El mismo análisis observa un efecto cultural: cuando los desarrolladores saben que cada decisión quedará registrada con su clasificación y su justificación, la discusión sobre el nivel correcto ocurre antes y con más rigor (IgniteSAP, 2026). Y ubica al dueño: donde existe un Centro de Excelencia SAP, es este el que gestiona el catálogo de decisiones de extensión (IgniteSAP, 2026).

Fuera del mundo SAP, la industria llama a esta práctica registro de decisiones de arquitectura (ADR). El catálogo de extensiones es, en esencia, un ADR aplicado a la extensibilidad.

Anatomía de una entrada útil

Plantilla mínima
Los campos de una entrada del catálogo de extensiones
📥
Requerimiento y proceso
Qué pidió el negocio y dónde vive: facturación, reclamos o mantenimiento.
🔍
Opciones evaluadas
Incluido el estándar: qué se descartó y por qué.
🏷️
Decisión y nivel
In-app, on-stack o side-by-side, y su clasificación A-D.
⚖️
Criterio determinante
Lo que inclinó la balanza: acoplamiento al proceso, integración con terceros o ciclo de despliegue propio.
📊
Nivel de confianza
Una decisión de baja confianza es candidata natural a revisión.
🚦
Estado
Propuesta, Aceptada o Reemplazada: qué decisión rige hoy.
🔗
Disparadores y vínculos
Qué evento la reabre y qué transportes y exenciones de ABAP Test Cockpit dependen de ella.

Una entrada que sirva dentro de dos años necesita más que un «se hizo en BTP». Nuestra práctica SAP recomienda estos campos como mínimo:

  • Requerimiento y proceso. Qué pidió el negocio y en qué proceso vive: facturación, reclamos o mantenimiento.
  • Opciones evaluadas, incluido el estándar. Qué alternativas se descartaron y por qué. Microsoft pide documentar también las opciones que se descartaron (Microsoft Azure Well-Architected Framework, 2026).
  • Decisión y nivel. Dónde se construyó (in-app, on-stack o side-by-side) y en qué nivel A-D quedó clasificada.
  • Criterio determinante. La razón que inclinó la balanza: acoplamiento al proceso, integración con terceros o ciclo de despliegue propio.
  • Nivel de confianza. Microsoft recomienda registrarlo, porque una decisión tomada con baja confianza es candidata natural a revisión (Microsoft Azure Well-Architected Framework, 2026).
  • Estado. Estados como Propuesta, Aceptada o Reemplazada hacen visible qué decisión rige hoy (Microsoft Azure Well-Architected Framework, 2026).
  • Disparadores de revisión y vínculos. Qué evento obligaría a reabrirla, y qué transportes y exenciones de ABAP Test Cockpit dependen de ella.

Del caso aislado al precedente

El catálogo como precedente
Cómo se usa el catálogo ante cada requerimiento
---
config:
  theme: base
  fontFamily: 'Inter Variable, system-ui, sans-serif'
  themeVariables:
    darkMode: true
    fontFamily: 'Inter Variable, system-ui, sans-serif'
    fontSize: '15px'
    background: '#111113'
    primaryColor: '#1A1A1D'
    primaryTextColor: '#F4F5F8'
    primaryBorderColor: '#B89C5C'
    secondaryColor: '#242428'
    tertiaryColor: '#1A1A1D'
    mainBkg: '#1A1A1D'
    secondBkg: '#242428'
    tertiaryBkg: '#2E2E33'
    lineColor: '#B89C5C'
    textColor: '#F4F5F8'
    titleColor: '#F4F5F8'
    nodeBorder: '#B89C5C'
    clusterBkg: '#1A1A1D'
    clusterBorder: '#2E2E33'
    edgeLabelBackground: '#242428'
    pie1: '#B89C5C'
    pie2: '#f59e0b'
    pie3: '#22c55e'
    pie4: '#d1bf95'
    pie5: '#f97316'
    pie6: '#ef4444'
    pieTitleTextColor: '#F4F5F8'
    pieSectionTextColor: '#F4F5F8'
    pieLegendTextColor: '#F4F5F8'
    pieStrokeColor: '#111113'
    pieOuterStrokeColor: '#111113'
---
flowchart TD
  A([Llega el requerimiento del key user]) --> B[Buscar precedente en el catálogo]
  B --> C{¿Precedente vigente?}
  C -->|Sí| D[Aplicar la misma decisión]
  D --> E[Referenciar la entrada existente]
  C -->|No| F[Evaluar opciones y decidir]
  F --> G[Registrar una entrada nueva]
  E --> H{¿Ocurre un disparador?}
  G --> H
  H -->|Sí| I[Nueva entrada enlazada que la reemplaza]
  I --> J([La anterior se conserva])
  H -->|No| K([Precedente vigente en el catálogo])
  class A inicio
  class C,H decision
  class B,D,E,F,G,I proceso
  class J,K bueno
classDef inicio fill:#3a352b,stroke:#B89C5C,color:#ffffff
classDef decision fill:#473519,stroke:#f59e0b,color:#ffffff
classDef proceso fill:#33363c,stroke:#9aa0aa,color:#ffffff
classDef bueno fill:#193e2b,stroke:#22c55e,color:#ffffff
Cada entrada funciona como precedente: antes de abrir el debate, el equipo busca una decisión para un requerimiento equivalente. Cuando la decisión cambia, no se edita: se reemplaza con una entrada nueva enlazada.Microsoft Azure Well-Architected Framework, 2026

El valor del catálogo aparece con la segunda solicitud parecida. Cada entrada funciona como un precedente: antes de abrir el debate, el equipo busca si ya existe una decisión para un requerimiento equivalente.

Con el tiempo emergen patrones por proceso. Una validación transaccional estrechamente acoplada al proceso tiende a resolverse on-stack, mientras que las aplicaciones más grandes, la automatización de flujos o todo lo que tenga un ciclo de despliegue independiente tiende a ir side-by-side en BTP (IgniteSAP, 2026). Un flujo de reclamos que coordina canales externos, por ejemplo, encaja en el segundo grupo. El catálogo convierte esas tendencias en reglas locales verificables, no en opiniones de quien esté en la reunión.

Cuándo una decisión vieja deja de valer

Un catálogo que nunca se revisa se vuelve tan peligroso como no tenerlo. Muchos requerimientos que hace cinco años justificaban código a medida hoy los cubre el estándar (IgniteSAP, 2026), y el ritmo con que SAP libera nuevas APIs se aceleró como parte del programa clean core (IgniteSAP, 2026). Cuando no existe una API liberada, cualquier solución interina de nivel C debe tratarse como temporal (IgniteSAP, 2026).

Por eso cada entrada necesita disparadores explícitos, no solo una fecha de revisión en el calendario:

Cuándo reabrir una entrada
Cuatro disparadores de revisión, además del calendario
🆕
Nuevo release
Un nuevo release de S/4HANA obliga a revisar la entrada.
🔌
API liberada
La liberación de una API que antes faltaba. Mientras no exista, la solución interina de nivel C debe tratarse como temporal.
🏢
Modelo operativo
Un cambio de modelo operativo también reabre la decisión.
📈
Volumen e integraciones
Un cambio relevante en el volumen o en las integraciones del proceso.
  • un nuevo release de S/4HANA;
  • la liberación de una API que antes faltaba;
  • un cambio de modelo operativo;
  • un cambio relevante en el volumen o en las integraciones del proceso.

Cuando la decisión cambia, no se edita: se escribe una nueva entrada que reemplaza a la original y se enlazan ambas (Microsoft Azure Well-Architected Framework, 2026). Google Cloud recomienda además dejar constancia de la decisión previa y del motivo del cambio (Google Cloud Architecture Center, 2024).

El catálogo también detecta la deriva. Un registro de exenciones de ABAP Test Cockpit que crece sin revisión es uno de los indicadores tempranos más claros de deriva de gobierno (IgniteSAP, 2026). Una exención sin entrada de catálogo que la respalde es una señal de alerta inmediata.

Por dónde empezar sin crear burocracia

Una consultora funcional SAP y un supervisor de facturación de una distribuidora eléctrica revisan juntos solicitudes impresas frente a una laptop en la oficina de atención al cliente.

Para una utility con IS-U heredado, el punto de partida no es una hoja en blanco. Microsoft indica que el registro de decisiones debe iniciarse también en cargas brownfield y generarse de forma retroactiva a partir de las decisiones pasadas conocidas (Microsoft Azure Well-Architected Framework, 2026). La semilla natural son las últimas solicitudes de facturación, reclamos y mantenimiento que ya pasaron por el debate in-app versus side-by-side.

El catálogo no es un producto que haya que licenciar: es una práctica. Puede vivir en una wiki central accesible también para los dueños de negocio (Google Cloud Architecture Center, 2024). El dueño es el Centro de Excelencia donde exista, o quien ya aprueba las excepciones donde no lo haya.

La regla que lo mantiene vivo es sencilla: cada transporte debe llevar un vínculo al requerimiento de origen en la herramienta de gestión de cambios (IgniteSAP, 2026). Nuestra práctica SAP extiende esa regla a la entrada del catálogo que justifica la extensión.

EvoTech Consulting acompaña a utilities y empresas de oil & gas de LATAM en ese paso: sembrar el catálogo con las decisiones existentes, definir sus campos y disparadores, y conectarlo con el gobierno del core que ya opera.

Fuentes

Conversemos 30 minutos

¿Este análisis mapea un mercado donde ya operas o estás evaluando entrar?

Revisamos tu caso específico, mapeamos los riesgos que aplican, y te decimos honestamente si es oportunidad para ti —sin pitch comercial, solo discusión técnica y estratégica.

Al enviar aceptas ser contactado por AGT Consultoría para el assessment solicitado. Tus datos no serán compartidos con terceros ni usados para publicidad.

EvoTech Consulting Company · AGT Consultoría
#clean core #extensibilidad #gobierno sap #s/4hana #sap btp #utilities