← Arquitectura por épica

FT-INT-03 · Entrada de SKUs creados en SAP

Arquitectura del Nuevo PIM por épica · corte del 18-oct-2026

Propuesta del TL: no sustituye la spec de cada épica

Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.

Qué responde. Cómo funciona por dentro FT-INT-03: qué piezas participan, en qué orden hablan, qué APIs hay que construir con su request y su response, y qué le entrega a la épica siguiente.

Para quién. Los equipos que van a construir la épica, QA y arquitectura.

Estado. [Propuesta] del TL del Nuevo PIM, 18-oct-2026, construida sobre ADR-12. La spec de cada épica dice el qué; estas páginas, el cómo.

Fuente. docs/arquitectura/por-epica/epicas/FT-INT-03.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-INT-03-entrada-skus-sap-exclusion-conciliacion.md.

En 30 segundos

Todo artículo que se crea en SAP, venga de una propuesta, de la MM41, de PLM o de B2B, regresa en el archivo 122. Esta épica hace que cada uno llegue al PIM sin intervención: la ingesta (MS-07) lee el archivo, aparta lo que excluyen las reglas que Gobierno de Datos configura con motivo y responsable, y entrega el resto a Producto. Lo que no entra queda en una lista «no vive» para reprocesarlo o pedirlo a SAP.

  • Módulo dueño: MS-07 Ingesta de archivos. También participan: MS-01 Catálogo, MS-02 Producto, MS-14 Avisos y ayuda.
  • Etapa 5 · SKU en SAP. Recibe «PE-5 · Visto bueno dado» y entrega «PE-6 · SKU asignado».
  • APIs: construye 4 y usa 6 que construyen otras épicas.
  • Eventos: publica 8 y consume 4.

1. Dónde encaja

Recibe

DeQué
PE-5 · Visto bueno dadoLa propuesta en Creación de SKU, con los 4 TXT ya entregados a SAP y la tarea SKU en SAP abierta.
FT-PRD-02 · Creación de SKU con SAPLa regla única del 122 en Producto (API-02-049): SKU y EAN únicos por negocio, estado por negocio e identidad de Marketplace.
FT-REF-01 · Datos de referencia administrablesLa tabla de exclusiones de SAP por grupo de artículos, negocio, flujo u origen, con motivo, responsable y revisión, que MS-07 tiene en memoria.
FT-INT-04 · Catálogos maestros, precios y costos desde SAP/S4HLa jerarquía comercial y los proveedores de SAP ya cargados en el catálogo.

Entrega

AQué
PE-6 · SKU asignadoCada variante con su SKU y su EAN: la propuesta pasa a En enriquecimiento y el artículo nacido en SAP entra al PIM con su plantilla.
FT-PRD-02 · Creación de SKU con SAPLos registros del 122 que leyó MS-07, ya filtrados por las exclusiones y en lotes de hasta 100, productos antes que atributos.
FT-CAT-04 · Clasificación SAP derivadaCada SKU del 122 con su grupo de artículos y su tipo de producto, para asignarle plantilla y la hoja que falte.
FT-INT-06 · Avisos de cambios a Entrada Única y consumidoresLos Conjuntos Look que crea SAP (E14), ya leídos por MS-07.
FT-INT-02 · Publicación a OMS, DWH y SeñalizaciónEl SKU asignado (SKU_ASSIGNED), del que sale el envío exprés a OMS, incluida la multioferta de Esfera.
FT-RAC-04 · Consistencia entre sistemas y gobierno de datos proactivoEl libro de registros de SAP y la lista «no vive» por variante, para la consistencia entre sistemas.
FT-RAC-06 · Métricas de tiempos por paso y clasificación de erroresLos errores de SAP (el 141 y los SKU que no viven) que avisa MS-07 con SAP_ARTICLE_FAILED, para clasificarlos como detectados en SAP.
FT-MIG-04 · Convivencia P360 ↔ nuevo PIMLa lectura del 122 lista para encenderse por interfaz en el corte, cuando P360 deje de leer esa carpeta.

Cambios de estado que hace

TransiciónDe → aCuándo
T02Inicio → Creación de SKUAlta directa de PLM, MM41 o B2B.
T06Creación de SKU → En enriquecimientoSAP crea el artículo (archivo 122).

Tareas que abre o cierra: SKU en SAP, Gobierno de Datos.

2. Diagrama de contexto

Quién participa y cómo se conecta. Las pantallas llegan por el BFF del portal, que valida el token y compone; cada módulo vuelve a validar el token y decide sus permisos con los roles de MS-13.

🟩 Verde: nuevo, se construye · 🟦 Azul: ya existe y se queda, se reutiliza su código · 🟧 Naranja: temporal o se retira (se apaga en R3) · ⬜ Gris: sistema externo · ★ módulo dueño

Sistemas externos

Nuevo PIM · un solo sistema

Pantallas y sistemas

Personas

Deja por transferencia de archivos el 122: productos y atri…
Deja el 122 de un artículo hecho en l…
y 1 más

OBJECT_FINALIZE

Recibir la respuesta 122 de SAP
Recibir un Conjunto Look de SAP

Clasificar lo que llega de SAP

SAP_ARTICLE_CREATED
SAP_ARTICLE_FAILED

SKU_ASSIGNED
STATUS_CHANGED
y 1 más

Plan de cambio de entradas
Confirmar un plan del catálogo

REFERENCE_TABLE_CHANGED

REFERENCE_TABLE_CHANGED

Registros de SAP y su resultado
Reprocesar registros que no viven
y 1 más

SAP_ARTICLE_FAILED

Gobierno de Datos

Entrada Única · Vendor Center

Archivos e imágenes

Eventos

Base pim

★ MS-07 Ingesta de archivos

MS-01 Catálogo

MS-02 Producto

MS-14 Avisos y ayuda

BFF del portal

SAP

Contexto de FT-INT-03

3. Diagrama de flujo

El camino principal, paso por paso. Cuando una pantalla llama a un módulo se ven dos flechas: la pantalla al BFF y el BFF al módulo. Los eventos salen del outbox del módulo después de guardar; quien los consume ignora los repetidos.

EventosMS-01 CatálogoMS-02 ProductoBase·pimMS-07 Ingesta de archivosArchivosSAPEventosMS-01 CatálogoMS-02 ProductoBase·pimMS-07 Ingesta de archivosArchivosSAP1. Deja por transferencia de archivos el 122: productos y atributos2. Avisa que llegó un archivo nuevoOBJECT_FINALIZE3. Registra el par de archivos con copia y huella4. Aparta lo excluido con la regla que lo excluyó5. Entrega productos y luego atributos, en lotes de 100POST /internal/product/sap/1226. Pide plantilla por grupo y producto, crea la hojaPOST /api/v2/rules/classify7. Asigna SKU y EAN por negocio y cierra SKU en SAP8. Guarda el resultado de cada registro9. Avisa lo aplicado con su archivo y registroSAP_ARTICLE_CREATED10. Avisa el SKU asignadoSKU_ASSIGNED11. Pasa la propuesta a En enriquecimientoSTATUS_CHANGED
Flujo principal de FT-INT-03
Los pasos en texto
PasoDeAQué haceAPI o evento
1SAPArchivos e imágenes (almacén y CDN)Deja por transferencia de archivos el 122: productos y atributos—
2Archivos e imágenes (almacén y CDN)MS-07 Ingesta de archivosAvisa que llegó un archivo nuevocatalog.egress.files/OBJECT_FINALIZE
3MS-07 Ingesta de archivosBase pimRegistra el par de archivos con copia y huella—
4MS-07 Ingesta de archivosBase pimAparta lo excluido con la regla que lo excluyó—
5MS-07 Ingesta de archivosMS-02 ProductoEntrega productos y luego atributos, en lotes de 100API-02-049
6MS-02 ProductoMS-01 CatálogoPide plantilla por grupo y producto; crea la hojaAPI-01-018
7MS-02 ProductoBase pimAsigna SKU y EAN por negocio y cierra SKU en SAP—
8MS-07 Ingesta de archivosBase pimGuarda el resultado de cada registro—
9MS-07 Ingesta de archivosEventosAvisa lo aplicado con su archivo y registrocatalog.sap.inbound/SAP_ARTICLE_CREATED
10MS-02 ProductoEventosAvisa el SKU asignadocatalog.product.changed/SKU_ASSIGNED
11MS-02 ProductoEventosPasa la propuesta a En enriquecimientocatalog.product.changed/STATUS_CHANGED

3.1 Artículo o Conjunto Look creado directo en SAP

EventosBase·pimMS-01 CatálogoMS-02 ProductoMS-07 Ingesta de archivosArchivosSAPEventosBase·pimMS-01 CatálogoMS-02 ProductoMS-07 Ingesta de archivosArchivosSAP1. Deja el 122 de un artículo hecho en la MM412. Avisa que llegó el archivoOBJECT_FINALIZE3. Entrega el registro que no trae propuestaPOST /internal/product/sap/1224. Pide la plantilla por grupo y productoPOST /api/v2/rules/classify5. Da de alta el producto con ID LVP o SBB más SKU6. Avisa el alta del artículo nacido en SAPPRODUCT_CREATED7. Entrega el Conjunto Look del archivo E14POST /internal/product/sap/look
Artículo o Conjunto Look creado directo en SAP

3.2 Si Gobierno de Datos reactiva un grupo excluido

MS-02 ProductoMS-07 Ingesta de archivosEventosMS-01 CatálogoEntrada Única · Vendor CenterMS-02 ProductoMS-07 Ingesta de archivosEventosMS-01 CatálogoEntrada Única · Vendor CenterGobierno de DatosBFF1. Cambia la exclusión de un grupo con su motivo2. Pide el plan del cambio a la tablaPOST /api/v2/reference-tables/{t}/entries/plans3. Confirma el cambioPOST /api/v2/catalog-plans/{planId}/apply4. Avisa que cambió la tabla de exclusionesREFERENCE_TABLE_CHANGED5. Entrega el cambio y refresca la tabla en memoriaREFERENCE_TABLE_CHANGED6. Busca los SKU que esa regla dejó fueraGET /api/v2/sap-ingest/records?interface=&result=&key=&notAlive=7. Pide reprocesarlos con el motivoPOST /api/v2/sap-ingest/records/reprocess8. Entrega los registros que ya pasanPOST /internal/product/sap/122Gobierno de DatosBFF
Si Gobierno de Datos reactiva un grupo excluido

3.3 Lista «no vive» y reenvío

Entrada Única · Vendor CenterMS-14 Avisos y ayudaEventosBase·pimMS-07 Ingesta de archivosArchivosSAPEntrada Única · Vendor CenterMS-14 Avisos y ayudaEventosBase·pimMS-07 Ingesta de archivosArchivosSAPGobierno de DatosBFF1. Deja el control diario de artículos creados2. Avisa que llegó el archivo de controlOBJECT_FINALIZE3. Cruza el control contra los registros recibidos4. Avisa los SKU que no viven en el PIMSAP_ARTICLE_FAILED5. Entrega el aviso para Gobierno de DatosSAP_ARTICLE_FAILED6. Revisa la lista «no vive» por variante7. Pide los SKU que no viven y su motivoGET /api/v2/sap-ingest/records?interface=&result=&key=&notAlive=8. Reprocesa los que ya pueden entrarPOST /api/v2/sap-ingest/records/reprocess9. Revisa el archivo y sus conteosGET /api/v2/sap-ingest/files?interface=&state=Gobierno de DatosBFF
Lista «no vive» y reenvío

4. Si algo sale mal

  • Un registro del 122 no se puede aplicar (grupo sin plantilla, EAN que ya usa otro SKU del negocio). MS-02 lo rechaza con su motivo. Si el error es pasajero, MS-07 reintenta hasta 10 veces; si no, queda fallido en la lista «no vive». Si era de una propuesta, MS-02 abre una tarea de Gobierno de Datos y la propuesta sigue en Creación de SKU.
  • Llegan los atributos antes que los productos del mismo momento. MS-07 los empareja por la marca de tiempo del nombre y espera al de productos hasta 30 minutos; nunca aplica atributos de un SKU que todavía no existe. Si no llega, el archivo queda incompleto en el monitor.
  • El mismo 122 llega dos veces. Cada registro tiene llave (archivo, SKU y marca de tiempo) y recibo: lo ya aplicado no se repite y el archivo repetido sólo queda registrado.
  • SAP creó un SKU y nunca mandó su 122. Aparece en la lista «no vive» con el motivo «SAP no lo mandó» al cruzar el control del día. Gobierno de Datos pide el reenvío a SAP; el PIM no inventa el artículo.
  • Producto no responde. El lote se reintenta con espera creciente sin perder el orden del archivo; los demás archivos esperan su turno y el atraso se ve en el monitor.

5. APIs

Las que construye esta épica (4)

GET /api/v2/sap-ingest/files?interface=&state= · Archivos recibidos de SAP
CampoValor
APIAPI-07-001 · MS-07 Ingesta de archivos
Para quéLista los archivos que llegaron de SAP (122, Conjunto Look, 141, 142, listas, jerarquía, proveedores y EAN) con su estado y cuántos registros se aplicaron, no traían cambios, se excluyeron por regla o fallaron. Es el monitor de Gobierno de Datos y de Gobierno de Producto.
En esta épicaMonitor de archivos de SAP con sus conteos
Quién la llamaBFF del portal
PermisoGobierno de Datos y Gobierno de Producto (lectura de integraciones)
CabecerasAuthorization, X-Request-Id
Parámetrosinterface = 122, state = COMPLETED_WITH_ERRORS, system = ECC, from = 2026-10-17T00:00:00Z, page = 1, size = 50
También la usanFT-ARQ-02, FT-INT-04, FT-PRD-02, FT-RAC-08

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "fileId": "sapf-20261018-122-0007",
        "interface": "122",
        "system": "ECC",
        "name": "GenericXMLproducts_20261018013000.xml",
        "pairedWith": "sapf-20261018-122-0008",
        "receivedAt": "2026-10-18T07:30:04Z",
        "finishedAt": "2026-10-18T07:30:41Z",
        "sha256": "9f2c4e7a1b0d55e3c8a6f1e2d4b7a9c0e5f3d2b1a8c7e6f5d4c3b2a1f0e9d8c7",
        "state": "COMPLETED_WITH_ERRORS",
        "records": {
          "total": 412,
          "applied": 405,
          "unchanged": 0,
          "excluded": 4,
          "failed": 3,
          "pending": 0
        },
        "copyRef": "sap-in/122/ECC/2026-10-18/GenericXMLproducts_20261018013000.xml"
      },
      {
        "fileId": "sapf-20261018-lov-0001",
        "interface": "LOV",
        "system": "ECC",
        "name": "LOV20261017210000.XML",
        "pairedWith": null,
        "receivedAt": "2026-10-18T05:00:12Z",
        "finishedAt": "2026-10-18T05:06:55Z",
        "sha256": "1c0a9e8d7f6b5a4c3e2d1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c",
        "state": "COMPLETED_WITH_ERRORS",
        "records": {
          "total": 18240,
          "applied": 312,
          "unchanged": 17925,
          "excluded": 0,
          "failed": 3,
          "pending": 0
        },
        "copyRef": "sap-in/LOV/ECC/2026-10-18/LOV20261017210000.XML"
      }
    ],
    "page": 1,
    "size": 50,
    "total": 2
  }
}

Errores

HTTPCódigoCuándo
400VALIDATION_ERRORUn filtro trae una interfaz o un estado que no existe
403AUTHORIZATION_ERRORQuien llama no tiene lectura de integraciones
POST /api/v2/sap-ingest/files/{id}/reprocess · Reprocesar lo fallido de un archivo
CampoValor
APIAPI-07-002 · MS-07 Ingesta de archivos
Para quéVuelve a entregar al módulo dueño sólo los registros fallidos de un archivo, por ejemplo después de corregir la plantilla de un grupo de artículos. Lo que ya se aplicó no se repite, porque cada registro tiene su recibo.
En esta épicaReprocesar lo fallido de un archivo
Quién la llamaBFF del portal
PermisoGobierno de Datos
CabecerasAuthorization, X-Request-Id, Idempotency-Key
Parámetrosid = sapf-20261018-122-0007
Escribe ensap_inbound_files
Publicacatalog.sap.inbound/SAP_ARTICLE_FAILED
También la usanFT-INT-04, FT-PRD-02

Request

{
  "scope": "FAILED",
  "reason": "Se asignó plantilla al grupo de artículos 1203 con producto 0045"
}

Response · 202

{
  "success": true,
  "data": {
    "jobId": "job-ri-5512",
    "status": "ACCEPTED",
    "records": 3,
    "links": {
      "file": "/api/v2/sap-ingest/files?fileId=sapf-20261018-122-0007",
      "records": "/api/v2/sap-ingest/records?jobId=job-ri-5512"
    }
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl archivo no existe
423LOCKEDEl archivo todavía se está procesando
409IDEMPOTENCY_MISMATCHSe repite la llave de idempotencia con otro alcance
GET /api/v2/sap-ingest/records?interface=&result=&key=&notAlive= · Registros de SAP y su resultado
CampoValor
APIAPI-07-003 · MS-07 Ingesta de archivos
Para quéBusca los registros de los archivos de SAP por SKU, interfaz o resultado, con el motivo de cada uno. Con notAlive=true da la lista «no vive»: SKU que SAP creó y no viven en el PIM, porque se excluyeron, fallaron o SAP nunca mandó su 122, y si se pueden reprocesar.
En esta épicaLa lista «no vive» y el resultado de cada registro
Quién la llamaBFF del portal
PermisoGobierno de Datos y Gobierno de Producto (lectura de integraciones)
CabecerasAuthorization, X-Request-Id
Parámetrosinterface = 122, notAlive = True, business = MKP, from = 2026-10-11T00:00:00Z, to = 2026-10-18T00:00:00Z, page = 1, size = 50
También la usanFT-INT-04

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "recordKey": "122:ECC:1000004812",
        "interface": "122",
        "fileId": "sapf-20261018-122-0007",
        "sku": "1000004812",
        "business": "MKP",
        "articleGroup": "1203",
        "result": "EXCLUDED",
        "reason": {
          "code": "EXCLUSION_RULE",
          "ruleId": "RUL-EXC-0031",
          "detail": "Grupo de artículos excluido para Marketplace"
        },
        "attempts": 1,
        "lastAttemptAt": "2026-10-18T07:30:22Z",
        "reprocessable": true
      },
      {
        "recordKey": "122:ECC:1000004813",
        "interface": "122",
        "fileId": "sapf-20261018-122-0007",
        "sku": "1000004813",
        "business": "MER",
        "articleGroup": "1203",
        "result": "FAILED",
        "reason": {
          "code": "NO_TEMPLATE_MAPPING",
          "detail": "El grupo de artículos 1203 con producto 0045 no tiene plantilla"
        },
        "attempts": 10,
        "lastAttemptAt": "2026-10-18T08:12:40Z",
        "reprocessable": true
      },
      {
        "recordKey": "CONTROL:ECC:1000004820",
        "interface": "CONTROL",
        "fileId": "sapf-20261018-ctl-0001",
        "sku": "1000004820",
        "business": "MER",
        "articleGroup": "0871",
        "result": "NOT_RECEIVED",
        "reason": {
          "code": "SAP_NOT_SENT",
          "detail": "Viene en el archivo de control del día y no llegó su 122"
        },
        "attempts": 0,
        "lastAttemptAt": null,
        "reprocessable": false
      }
    ],
    "page": 1,
    "size": 50,
    "total": 3
  }
}

Errores

HTTPCódigoCuándo
400VALIDATION_ERROREl rango de fechas pasa de 90 días o un filtro no existe
POST /api/v2/sap-ingest/records/reprocess · Reprocesar registros que no viven
CampoValor
APIAPI-07-004 · MS-07 Ingesta de archivos
Para quéVuelve a entregar al módulo dueño registros fallidos o excluidos por una regla que ya cambió, por ejemplo un grupo de Esfera que se reactivó. Lo que SAP nunca mandó no se puede reprocesar aquí: se le pide a SAP.
En esta épicaReprocesar los registros que no viven
Quién la llamaBFF del portal
PermisoGobierno de Datos
CabecerasAuthorization, X-Request-Id, Idempotency-Key
Escribe ensap_inbound_files
Publicacatalog.sap.inbound/SAP_ARTICLE_FAILED

Request

{
  "recordKeys": [
    "122:ECC:1000004812",
    "122:ECC:1000004813"
  ],
  "reason": "Se reactivó la multioferta de Esfera Boutique (regla RUL-EXC-0031)"
}

Response · 202

{
  "success": true,
  "data": {
    "jobId": "job-ri-5520",
    "status": "ACCEPTED",
    "accepted": 2,
    "rejected": [],
    "links": {
      "records": "/api/v2/sap-ingest/records?jobId=job-ri-5520"
    }
  }
}

Errores

HTTPCódigoCuándo
422BUSINESS_ERRORUn registro ya está aplicado o SAP nunca lo mandó; details trae la llave y el motivo de cada uno
409IDEMPOTENCY_MISMATCHSe repite la llave de idempotencia con otros registros

Las que usa y construye otra épica (6)

Su request y su response están en la página de la épica que la construye.

APIMétodo y rutaPara qué, aquíLa construye
API-02-049POST /internal/product/sap/122Entregar el 122 en lotes de hasta 100 registros, productos antes que atributosFT-PRD-02 · Creación de SKU con SAP
API-01-018POST /api/v2/rules/classifyPlantilla automática por grupo de artículos y producto, y la hoja que falteFT-CAT-04 · Clasificación SAP derivada
API-02-050POST /internal/product/sap/lookEntregar el Conjunto Look que crea SAP (E14)FT-INT-06 · Avisos de cambios a Entrada Única y consumidores
API-01-012GET /api/v2/reference-tables/{t}/entriesCargar al arrancar la tabla de exclusiones que MS-07 tiene en memoriaFT-REF-01 · Datos de referencia administrables
API-01-013POST /api/v2/reference-tables/{t}/entries/plansPreparar el cambio a la tabla de exclusionesFT-REF-01 · Datos de referencia administrables
API-01-004POST /api/v2/catalog-plans/{planId}/applyConfirmar el cambio a la tabla de exclusionesFT-PLT-01 · Fundamentos de gobierno de plantillas

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.sap.inbound/SAP_ARTICLE_FAILEDUn SKU de SAP no vive en el PIM (falló tras sus reintentos, lo excluyó una regla o SAP no mandó su 122) o llega un error 141 de SAPFT-RAC-06
catalog.sap.inbound/SAP_ARTICLE_CREATEDUn registro del 122 quedó aplicado o creó un producto: archivo, registro y SKU, para la bitácoraMS-05 (bitácora)
catalog.product.changed/SKU_ASSIGNEDMS-02 asigna el SKU que trajo el 122FT-ACT-02, FT-ACT-03, FT-ARQ-02, FT-INT-02, FT-INT-05, FT-PRD-02, FT-PRD-10
catalog.product.changed/STATUS_CHANGEDLa familia completa su SKU y pasa a En enriquecimientoFT-ACT-05, FT-ARQ-02, FT-CAT-05, FT-FLU-01, FT-IA-04, FT-PRD-02, FT-PRD-04, FT-PRD-06, FT-PRD-10, FT-RAC-03, FT-RAC-05, FT-RAC-06
catalog.product.changed/PRODUCT_CREATEDLlega un artículo nacido en SAP sin propuestaFT-ARQ-01
catalog.product.changed/TASK_CHANGEDSe cierra SKU en SAP o se abre Gobierno de DatosFT-ACT-05, FT-ACT-06, FT-ARQ-02, FT-CAT-06, FT-FLU-01, FT-IA-06, FT-PRD-02, FT-PRD-05, FT-PRD-06, FT-PRD-07, FT-PRD-08, FT-RAC-02, FT-RAC-03, FT-RAC-04, FT-RAC-05, FT-RAC-06
catalog.governance.changed/TAXONOMY_NODE_CHANGEDMS-01 crea la hoja de grupo con producto que faltabaFT-CAT-04, FT-IA-02, FT-PLT-05, FT-PLT-06
catalog.governance.changed/REFERENCE_TABLE_CHANGEDGobierno de Datos cambia la tabla de exclusionesFT-REF-01

Consume

EventoPara quéQuién lo publica
catalog.egress.files/OBJECT_FINALIZEMS-07 lee el 122, el E14 y el control diario que SAP deja en el almacénD-ARCHIVOS
catalog.governance.changed/REFERENCE_TABLE_CHANGEDMS-07 refresca en segundos su copia de la tabla de exclusionesesta misma épica
catalog.sap.inbound/SAP_ARTICLE_FAILEDMS-14 avisa a Gobierno de Datos los SKU que no viven; los reportes clasifican el error como detectado en SAPesta misma épica
catalog.sap.inbound/SAP_ARTICLE_CREATEDAuditoría guarda de qué archivo y registro de SAP salió cada SKUesta misma épica

7. Datos

Cada colección tiene un solo dueño, el único que escribe en ella.

ColecciónDueñoQué guardaEsta épica
sap_inbound_filesMS-07Cada archivo que llega de SAP y el avance de sus registros.escribe
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.escribe
identifier_registryMS-02Unicidad de SKU y de EAN por negocio.escribe
tasksMS-02Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento.escribe
taxonomy_nodesMS-01Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla.escribe
reference_tablesMS-01Las entradas de los diccionarios: tallas, colores, impuestos, excepciones y demás datos de referencia.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-INT-03·H1 · Que todo SKU creado en SAP llegue al PIM sin intervención, sin importar el medioP1pasos 1, 2, 3, 5, 7, 9, 10; flujo «Artículo o Conjunto Look creado directo en SAP»; API-02-049
FT-INT-03·H2 · Exclusiones que combinen grupo de artículos con negocio, flujo u origenP1pasos 4; flujo «Si Gobierno de Datos reactiva un grupo excluido»; API-01-013, API-07-004
FT-INT-03·H3 · Procesar el 122 con las reglas de hoyP1pasos 3, 5, 6, 7; API-02-049, API-01-018
FT-INT-03·H4 · Un indicador "no vive" por varianteP2flujo «Lista «no vive» y reenvío»; API-07-003, API-07-004
FT-INT-03·H5 · Saber si el producto de SAP lo gobierna P360 o STEPP3Fuera: Con ADR-12 todo lo que entra por el 122 lo gobierna el Nuevo PIM; el «owner» P360 o STEP sólo sobrevive en el aviso a Entrada Única (FT-INT-06) y GetProductSystemOwner no se construye (D-INT-03-6). Si STEP sigue vivo queda en DUD-11.

9. Decisiones de esta épica

Las tomó el TL como arquitecto; quedan como [Propuesta] hasta que el equipo de la épica las revise.

  • D-INT-03-1. MS-07 lee el 122 de ECC (E15) y de S4H (E13) con las reglas de hoy: empareja productos y atributos del mismo momento y los entrega en ese orden, guarda copia de cada archivo y entrega en lotes de hasta 100 a MS-02. Producto es quien asigna SKU y EAN, el estado por negocio y el ID LVP o SBB más SKU del nacido en SAP. Por qué: La misma lógica sirve para cualquier origen si vive en Producto (FT-PRD-02); MS-07 sólo lee, ordena, filtra y reintenta. La copia corrige que hoy sólo haya archivos desde el 24-sep. Se apoya en FT-PRD-02, RN-INT-03, DUD-23.
  • D-INT-03-2. Las exclusiones se deciden en el PIM y no en la variante de SAP: SAP manda todo el 122 y MS-07 aparta, con la tabla de exclusiones de MS-01 en memoria, lo que combina grupo de artículos con negocio, flujo u origen. Cada entrada lleva motivo, responsable y fecha de revisión, y un cambio se confirma con plan en MS-01 y llega a MS-07 en segundos por REFERENCE_TABLE_CHANGED. Por qué: La variante de SAP excluye sólo por grupo y deja fuera la multioferta de Esfera; en el PIM la regla tiene dueño, se ve y cambia en menos de los 5 minutos de hoy. Se alinea con FT-REF-01 y FT-PRD-02. Se apoya en RF-INT-02, DEC-70, PEN-69, FT-REF-01.
  • D-INT-03-3. Lo excluido también se registra: queda en el libro de MS-07 con la regla que lo apartó, para reprocesarlo cuando la regla cambie (API-07-004) sin pedir otro archivo a SAP. Por qué: Reactivar un grupo no debe depender de que SAP vuelva a mandar lo que ya mandó. Se apoya en RF-INT-03, DEC-80.
  • D-INT-03-4. «No vive» por variante es todo SKU que SAP mandó y no está aplicado en el PIM (excluido o fallido) y, cuando SAP entregue un archivo de control diario con los artículos creados o cambiados ese día, también lo que SAP creó y nunca mandó. Se calcula al cerrar cada archivo y cada noche contra el control. Por qué: Hasta 7 a 9 mil SKU por semana no llegan y nadie lo ve; sin el control de SAP, el PIM sólo puede ver lo que recibió. Se apoya en RF-INT-03, DEC-80, PEN-116, DUD-23.
  • D-INT-03-5. Capacidad: el 122 se lee al llegar, sin ventana de lote. Cada archivo es independiente y cada lote de 100 se reintenta hasta 10 veces con espera creciente antes de quedar fallido. Por qué: Un lote diario no alcanza para el volumen de hoy; el aviso del almacén quita la espera de 10 s y la ventana. Se apoya en DUD-25, PEN-116.
  • D-INT-03-6. Todo lo que entra por el 122 lo gobierna el Nuevo PIM. El dato «owner» P360 o STEP sólo sobrevive en el aviso a Entrada Única mientras exista (FT-INT-06), y la ruta GetProductSystemOwner no se construye (decisión 20 que adopta ADR-12). Por qué: Con un solo sistema ya no hay dos dueños posibles del producto que nace en SAP. Se apoya en ADR-12, DUD-11, FT-INT-06.
  • D-INT-03-7. Mientras P360 sea la fuente (hasta el corte de R3), el 122 lo sigue leyendo el middleware de P360. MS-07 se enciende por interfaz en el corte: P360 termina el archivo en curso y MS-07 empieza con el siguiente. Por qué: Dos lectores de la misma carpeta duplicarían o perderían registros. Se apoya en PD-11, FT-MIG-04.
  • D-INT-03-8. MS-07 avisa en catalog.sap.inbound sólo lo que nadie más puede avisar: SAP_ARTICLE_CREATED por cada registro aplicado, con su archivo y su registro, para la bitácora; y SAP_ARTICLE_FAILED por cada SKU que no vive y cada error 141, para Gobierno de Datos y la clasificación de errores. Los cambios del producto los sigue avisando Producto (SKU_ASSIGNED, STATUS_CHANGED). Por qué: La bitácora necesita el origen exacto en SAP y los errores que se repiten hay que vigilarlos; repetir los avisos de Producto los duplicaría. Se apoya en P-32, FT-ARQ-02.

Qué falta decidir

IDQué falta
DUD-23Que el equipo de SAP confirme el 122 sin broker y si puede mandar el archivo de control diario de artículos creados o cambiados.
DUD-11Confirmar si STEP sigue vivo detrás del broker.
PD-16Política de identificadores del nacido en SAP: LVP o SBB más SKU frente al prefijo de negocio.

También siguen abiertos: PEN-108, Revisar con SAP qué grupos de Esfera se reactivan al quitar la variante de exclusión; PEN-69, Documentar por qué se excluyó cada grupo hoy, para cargar la tabla con motivo y responsable; PEN-116, Ubicar el proceso por lotes de SAP que deja SKU sin mandar.

Fuentes

  1. [D] trazabilidad/features/FT-INT-03-entrada-skus-sap-exclusion-conciliacion.md: la ficha de la épica, con sus historias, reglas y bloqueos.
  2. [D] ADR-12 · Un solo sistema: backend compartido y una sola base (sección 3.4).
  3. [D] docs/arquitectura/por-epica/base/: piezas, colecciones, eventos y el hilo de punta a punta.
  4. [D] docs/arquitectura/omega-a-pim-headless/contratos-api.md: convenciones y endpoints de partida.
  5. [D] docs/arquitectura/maquina-de-estados-to-be/propuesta-maquina-de-estados.md §7: estados, tareas y canales.
  6. [I] Las decisiones de la sección 9 son del TL sobre esas fuentes.