Bulk API (importación y exportación de datos)
Migraciones, cargas iniciales, archivos de interfaz mensuales — cuando el conteo de registros tiene comas de miles, la herramienta es la Bulk API estándar (y su versión más amigable, Data Loader). En los objetos de REDA Financials se comporta exactamente igual que REST, con una propiedad crucial intacta: cada trigger se ejecuta en cada fila, así que los documentos cargados en masa son documentos reales — numerados, validados, listos para contabilizarse.
El patrón de carga que funciona
Carga en orden de dependencia, como borradores
Primero los datos maestros (cuentas, productos, cuentas contables — normalmente por la interfaz o la configuración, no en masa), luego los encabezados de documento (Borrador), y después las líneas. Conserva tu referencia de origen en el campo Referencia para la trazabilidad y la idempotencia.
Contabiliza en un segundo pase
Una actualización masiva que cambia refin__Status__c a 'Posted' ejecuta el motor completo por registro. Como alternativa, contabiliza desde la interfaz con Contabilización masiva — la misma maquinaria, con una tabla de resultados visible para las personas. De cualquier forma, los fallos son por registro: los éxitos se mantienen y el archivo de errores indica la razón exacta de cada fallo.
Verifica como un contador, no como un ingeniero
Que coincida el conteo de filas es necesario, pero no suficiente: ejecuta la balanza de comprobación y concíliala con el sistema de origen. La guía de migración es la lista de verificación completa.
Notas de ajuste para objetos contables
- Contabilizar es el paso pesado — el motor de impuestos, las escrituras al libro mayor y las validaciones se ejecutan por documento. Usa tamaños de lote moderados en el pase de contabilización (empieza alrededor de 50 a 100 documentos por lote y observa) en lugar de llevarlo al máximo; el modo serial evita la contención de bloqueos sobre padres compartidos como entidades y secuencias.
- La numeración de documentos bajo carga es segura — las secuencias se asignan de forma atómica; las inserciones en paralelo no duplicarán números. Si en cambio estás preservando números heredados, escribe el Name (Nombre) de forma explícita y la unicidad se valida.
- Las exportaciones son triviales — una consulta Bulk sobre cualquier objeto
refin__; el libro mayor (refin__Accounting_Transaction__c) se exporta sin problemas para alimentar un almacén de datos.
Bulk API 2.0, en el cable
El ciclo de vida estándar del trabajo, apuntado a objetos refin__:
| Paso | Método y endpoint |
|---|---|
| Crear un trabajo de ingesta | POST /services/data/v65.0/jobs/ingest (el cuerpo indica el objeto, p. ej. refin__Purchase_Invoice__c, y la operación) |
| Subir el CSV | PUT /services/data/v65.0/jobs/ingest/{jobId}/batches |
| Iniciar el procesamiento | PATCH /services/data/v65.0/jobs/ingest/{jobId} con el estado UploadComplete |
| Consultar el estado | GET /services/data/v65.0/jobs/ingest/{jobId} |
| Recopilar resultados | GET …/{jobId}/successfulResults y …/{jobId}/failedResults |
| Exportar a escala | POST /services/data/v65.0/jobs/query con tu SOQL |
El pase de contabilización es el CSV más simple que enviarás en tu vida — Ids de registro y un solo campo:
Id,refin__Status__c
a0Y8d000002GhIjEAK,Posted
a0Y8d000002GhIkEAK,Posted
a0Y8d000002GhIlEAK,Posted
Cada fila que falla llega a failedResults con el mensaje de validación textual del paquete en la columna de error — la misma frase que leería un usuario, lista para tu hoja de conciliación.
La carga inicial de Meridian, en números
Cuando la entidad del Reino Unido de Meridian Properties Group salió en vivo, la puesta en marcha fueron tres trabajos Bulk ejecutados en secuencia un sábado: 1,830 encabezados de facturas de venta abiertas (Borrador), sus 2,614 líneas, y luego el pase de contabilización. El trabajo de contabilización devolvió 1,821 éxitos y 9 fallos — todos los fallos con el mismo mensaje sobre un período que no se había abierto para las facturas heredadas más antiguas. El equipo abrió el período, volvió a ejecutar un CSV de 9 filas, y concilió la balanza de comprobación con el sistema heredado antes del almuerzo del domingo. La lección que se quedaron: el archivo de errores es la lista de pendientes — pequeña, literal y finita.
Errores comunes que debes evitar
| Error | Por qué perjudica | Haz esto en su lugar |
|---|---|---|
| Cargar líneas antes de que terminen sus encabezados | Las líneas hacen referencia a encabezados que aún no existen — una pared de fallos de búsqueda | Secuencia los trabajos: primero los encabezados completos, luego las líneas, después el pase de contabilización |
| Maximizar el paralelismo en el pase de contabilización | Contabilizar es el paso pesado; los lotes en paralelo compiten por bloqueos sobre padres compartidos (entidades, secuencias, períodos) | Modo serial o concurrencia modesta para contabilizar; observa y luego escala |
| Esperar un "modo de carga de datos" que se salte la validación | No existe — los 52 triggers empaquetados se ejecutan en cada fila Bulk, sin bandera de omisión, de forma deliberada | Prepara datos que cumplan las reglas; las reglas son el producto |
| Cargar documentos históricos en períodos que ya cerraste | Cada fila falla el control de cierre | Secuencia la migración: carga y contabiliza el histórico primero, establece las fechas de cierre al final |
| Tratar la paridad en el conteo de filas como un éxito | Todas las filas entraron, pero los libros siguen mal — los importes, las monedas o los mapeos contables pueden estar sistemáticamente equivocados | Concilia la balanza de comprobación con el sistema de origen antes de darlo por terminado |
Qué sigue
- Saldos iniciales y migración de datos — la metodología.
- Contabilización masiva — la versión de interfaz del pase de contabilización.
- API REST — la contraparte registro por registro.
Preguntas frecuentes
El mismo motor por debajo: Data Loader para cargas ocasionales o manuales (la costumbre de tu socio de implementación), Bulk 2.0 para flujos programáticos. El comportamiento de los triggers y el patrón anterior son idénticos.
Están divididos de forma limpia, no dañados: los éxitos son documentos completos, los fallos simplemente no ocurrieron (atomicidad por registro). Corrige las causas del archivo de errores y vuelve a ejecutar solo esas filas — la idempotencia basada en la Referencia mantiene seguras las reejecuciones.
Sí — los objetos de aplicación se cargan como cualquier registro, con todas las validaciones de coincidencia aplicadas por fila. Cárgalos después de que ambos lados estén contabilizados, o mejor aún: deja que la aplicación automática haga la coincidencia una vez que los documentos ya estén cargados.
No hay un límite estricto publicado — el costo de contabilizar varía según las líneas por documento, la complejidad fiscal y las dimensiones. Empieza con moderación (50 a 100 documentos por lote, en serie), observa el tiempo del trabajo y cualquier error de bloqueo en una prueba en seco en un sandbox al volumen de producción, y escala a partir de la evidencia, no del optimismo.
Lo mismo que necesitaría una persona haciendo el trabajo: el conjunto de permisos empaquetado para los documentos que se cargan, además de un puesto de licencia de REDA — la validación de licencia se aplica a las escrituras Bulk igual que a cualquier otra. Nada más, nada menos.
¿Te resultó útil?