# Sistema de Integracao ServiceNow <-> GLPI Middleware Node.js para integrar chamados entre ServiceNow e GLPI, usando PostgreSQL como banco intermediario e acesso ao banco do GLPI. ## Estado atual 1. Coleta de tickets SN por watermark. 2. Criacao/vinculo de tickets no GLPI. 3. Sincronizacao de comentarios e tasks em duas direcoes. 4. Preenchimento do campo "Ticket Externo" no SN com o ID GLPI. 5. Monitor GLPI para `status=5` (resolver SN) e `status=6` (encerrar definitivamente no SN). 6. Flags para desligar sincronizacao legada de status. ## Fluxo do ciclo Executado pelo `main()`: 1. `processErrorController` 2. `processTicketsController` 3. `processCommentsController` 4. `processGlpiClosureController` (quando `ENABLE_GLPI_CLOSE_CRON=true`) 5. `processStatusAndClosureController` apenas quando `ENABLE_STATUS_SYNC=true` ## Documentacao detalhada 1. Fluxo tecnico: [docs/fluxo.md](docs/fluxo.md) 2. Regras de negocio completas: [docs/regrasdenegocio.md](docs/regrasdenegocio.md) 3. Casos de uso: [docs/casosdeuso.md](docs/casosdeuso.md) 4. Plano e checklist de rollout: [docs/checklist.md](docs/checklist.md) ## Variaveis de ambiente importantes ### Feature flags 1. `ENABLE_STATUS_SYNC` - `true`: liga fluxo legado de status bidirecional - `false`: desliga fluxo legado de status 2. `ENABLE_GLPI_CLOSE_CRON` - `true`: liga monitor de fechamento definitivo GLPI=6 - `false`: desliga monitor de fechamento definitivo ### ServiceNow 1. `SERVICENOW_TABLE_INCIDENT_URL` 2. `SERVICENOW_TABLE_REQUEST_URL` 3. `SERVICENOW_TABLE_JOURNAL_URL` 4. `SERVICENOW_SC_ITEM_OPTION_URL` 5. `SERVICENOW_DEFAULT_USER` 6. `SERVICENOW_IGNORE_DEFAULT_USER_JOURNAL` 7. `SERVICENOW_EXTERNAL_TICKET_FIELD` (default: `u_external_ticket`) ### GLPI e banco intermediario 1. `GLPI_DB_*` 2. `SNGLPI_DB_*` 3. `GLPI_OOS_SOLUTION_TYPE_ID` ## Desenvolvimento 1. Instalar dependencias: ```bash npm install ``` 2. Criar env: ```bash copy .env.example .env.development ``` 3. Executar: ```bash npm run dev ``` ## Producao 1. PM2: ```bash pm2 start ecosystem.config.js --env production ``` ## Observacoes 1. O projeto ainda nao tem suite automatizada robusta. 2. O rollout recomendado e por fases com feature flags. 3. Nao remover schema legado antes de estabilizar o fluxo novo.