Esta guia describe el modulo vigente de organizaciones en v3.0. El contenido fue contrastado contra la UI administrativa, las validaciones Wicket, ExcelUtils, la logica EJB de altas/cargas/sincronizacion y los procesos asincronos que actualizan organizaciones desde archivos o desde un servicio externo de sincronizacion.
/admin/election/organizations.manageOrganizationsManual. Todas las elecciones nuevas comienzan en modo manual y pueden cargar organizaciones y deudores por XLSX. Cualquier organización puede habilitar el modo automático si implementa el contrato HTTP descrito en esta guía; no se requiere MiLACNIC ni un servicio de LACNIC.ORGID. Listados, cargas masivas, sincronizaciones y borrados reconcilian organizaciones por ORGID normalizado a mayusculas.member y deudor tienen impacto real aguas abajo: el padron automatico solo toma organizaciones con member=true, deudor=false y datos de contacto completos.La tarjeta Agregar organizacion solo aparece cuando la eleccion se gestiona con manageOrganizationsManual=true y no hay procesamiento en curso.
1 y 11. Pais debe ser ISO-2 valido. Org ID, si se informa manualmente, debe comenzar con letra o numero y solo admite letras, numeros, ., - o _.doNominationToken si falta, deja member=true cuando no viene informado y persiste la organizacion con deudor=false por defecto.organizationsSet=true. Esa bandera se maneja aparte con el boton de completitud del wizard.ORGID, nombre, CNPJ, ASN, membershipContactId y membershipContactName; ademas pueden combinarse pais, votos, miembro, deudor e idioma de contacto.La zona de cargas manuales aparece solo con manageOrganizationsManual=true. Los tres archivos usan exclusivamente .xlsx y se procesa solo la primera hoja.
| Columna | Obligatoria | Regla efectiva |
|---|---|---|
ORGID | Si | Debe venir informado, ser unico dentro del archivo y respetar el patron del sistema. |
NAME | Si | No admite vacio. |
VOTES | Si | Debe ser entero entre 1 y 11. |
CATEGORY | Si | Debe ser una categoria vigente del sistema. |
COUNTRY | Si | Debe ser un codigo ISO de 2 letras. |
CNPJ | No | Se persiste como texto si viene informado. |
ASN | No | Se persiste como texto si viene informado. |
MEMBERSHIPCONTACTID | Si | No admite vacio. |
MEMBERSHIPCONTACTNAME | Si | No admite vacio. |
MEMBERSHIPCONTACTEMAIL | Si | Valida formato basico de email. |
MEMBERSHIPCONTACTLANGUAGE | Si | Solo acepta SP/ES, EN o PT. |
ORGID. No elimina las organizaciones que no esten en el Excel.ORGID no venga en el archivo.deudor. Solo las filas nuevas reciben token nuevo.ORGID.deudor=true para las organizaciones listadas. No limpia deudores previos.deudor=false en todas las organizaciones actualmente deudoras y luego vuelve a marcar como deudoras solo las listadas en el Excel.ORGID existan en la eleccion. Si falta alguno, la corrida completa se rechaza.ORGID.ORGID existan y que ninguna de las organizaciones listadas tenga nominaciones o apoyos.Cuando manageOrganizationsManual=false, la pantalla deja de mostrar alta manual y uploads. En su lugar muestra el estado de la ultima corrida automatica, el historial de sincronizaciones y los controles disponibles dentro de la ventana de calendario N_23_PERIODO_PADRON_MILACNIC_SYNC por compatibilidad historica.
N_23 y no hay otro proceso activo.syncRunId y mensaje. Al expandir una corrida se ven los cambios auditados.Para usar organizaciones y padron en modo automatico, la organización operadora debe exponer un servicio HTTP de consulta que entregue el snapshot vigente de sus organizaciones. El scheduler ya esta incluido en Elecciones: el backend externo no debe implementar otro cron ni invocar periodicamente a Elecciones.
GET sobre una URL absoluta http:// o, preferentemente, https://.MILACNIC_SYNC_ORGANIZATIONS_ENDPOINT_TEMPLATE. Puede contener {electionId}; Elecciones lo reemplaza por el identificador numerico de la eleccion antes de cada llamada.MILACNIC_SYNC_API_TOKEN, Elecciones envia el mismo secreto en Authorization: Bearer <token> y X-Auth-Token: <token>. El backend externo debe validar el token, usar HTTPS y no registrarlo en logs. El prefijo MILACNIC_SYNC_ se conserva únicamente por compatibilidad histórica.2xx, Content-Type: application/json y el conjunto completo vigente, no solamente cambios incrementales.orgId debe ser estable, unico y conservarse entre corridas. Una organizacion miembro que desaparece del snapshot se marca localmente como member=false.{
"organizations": [
{
"orgId": "ORG-001",
"name": "Organizacion de ejemplo",
"votes": 1,
"category": "isp-small-ipv4",
"country": "UY",
"cnpj": null,
"asn": "AS12345",
"membershipContactId": "CONTACT-001",
"membershipContactName": "Nombre Apellido",
"membershipContactEmail": "contacto@example.org",
"membershipContactLanguage": "SP",
"debtor": false
}
]
}
Tambien se aceptan un array en la raiz, {"data": [...]}, {"data":{"organizations": [...]}} o {"items": [...]}. Se recomienda usar los nombres canonicos del ejemplo. El parser admite aliases en snake_case, pero no deben usarse como contrato nuevo.
| Campo | Requerido | Uso |
|---|---|---|
orgId | Si | Identidad de reconciliacion. Debe ser unica dentro del snapshot. |
name | Si | Nombre visible de la organizacion. |
votes | Para padron automatico | Cantidad de votos que tendra el representante. |
membershipContactName | Para padron automatico | Nombre del votante generado para organizaciones elegibles. |
membershipContactEmail | Para padron automatico | Email del votante generado. |
membershipContactLanguage | Recomendado | SP/ES, EN o PT; si falta, el padron usa SP. |
debtor | Recomendado | Booleano que determina si la organizacion queda excluida del padron automatico. |
category, country, cnpj, asn, membershipContactId | No | Datos complementarios; country debe ser ISO-2 cuando se informe. |
2xx.MILACNIC_SYNC_ORGANIZATIONS_ENDPOINT_TEMPLATE, MILACNIC_SYNC_API_TOKEN y umbrales MILACNIC_SYNC_* acordes al volumen real del cliente.N_23_PERIODO_PADRON_MILACNIC_SYNC en la eleccion.manageOrganizationsManual=false; para generar tambien el padron, usar manageVotersManual=false.En operacion normal, Elecciones ejecuta el proceso combinado cada dos horas y solo procesa elecciones abiertas que esten dentro de la ventana N_23. Primero actualiza organizaciones desde el backend del cliente y despues recalcula el padron desde esas organizaciones locales.
N_23.MILACNIC_SYNC_ORGANIZATIONS_ENDPOINT_TEMPLATE y el token desde MILACNIC_SYNC_API_TOKEN. El prefijo se conserva por compatibilidad con la configuracion previa. Si el endpoint no esta configurado, la sincronizacion se omite y no se consulta ningun servicio remoto.member.ORGID duplicados o queda por debajo de esos umbrales, la corrida termina en error y no aplica cambios.member=true, deudor segun el payload y un doNominationToken nuevo.CNPJ, ASN y datos de contacto si el payload trae valores para esos campos. Si la fila reaparece en external sync y estaba con member=false, vuelve a member=true.member=false para las organizaciones que antes eran miembros y ya no aparecen en el payload.deudor=true en organizaciones existentes. En la implementacion actual solo limpia deudor cuando una organizacion ya marcada como deudora vuelve desde external sync con deudor=false.deudor para organizaciones ya existentes. Si external sync informa deudor=true, lo marca; si la organizacion no aparece o viene con deudor=false, queda como no deudora. No crea, no elimina y no modifica otros datos. Solo esta disponible en gestion automatica, dentro de N_23 y con organizaciones cargadas.organizationsSet=false. No esta disponible si ya existen nominaciones.member=true, deudor=false, ORGID, membershipContactName, membershipContactEmail y votes.member, deudor, votos o datos de contacto dentro de organizaciones impactan directamente en el siguiente recalculo del padron.organizationsSet=true y navega a Padron. La implementacion actual no valida que exista al menos una organizacion cargada ni que una sincronizacion automatica haya corrido.Despues de organizaciones, el wizard continua en padron.
ElectionsManagerApp, ElectionOrganizationsDashboard, ElectionOrganizationsForm, AddOrganizationPanel, OrganizationsListPanel, UploadOrganizationsDebtorsFilePanel, AutomaticOrganizationsSyncActionsPanel, OrganizationsAdvancedActionsPanel, OrganizationDeleteActionValidator, OrganizationBulkDeleteActionValidator, OrganizationExcelFileValidator, OrganizationValidationRules, ExcelUtils.processOrganizationsDebtorsExcel, ExcelUtils.processOrganizationsUpsertExcel, ExcelUtils.exportOrganizationsUpsertToExcel, ElectionsManagerEJBBean.addOrganization, upsertOrganizationsFromExcel, removeOrganizationsFromExcel, updateOrganizationsDebtors, validateOrganizationsDeleteCanBeApplied, validateOrganizationsUpsertOverwriteCanBeApplied, validateOrganizationsDebtorsCanBeApplied, executeMilacnicSyncForElection, syncOrganizationsForElectionFromMilacnic, executeMilacnicDebtorMirrorSyncForElection, syncOrganizationsDebtorMirrorForElectionFromMilacnic y ElectionsManagerApp.properties.xml.