Tempo aproximado para leitura: 00:60:00
Dúvida
Como atualizar o Patch e-Forms NDD para clientes com servidores In Loco, seguindo o modelo de implementação do CNPJ alfanumérico?
1. Objetivo/Problema
Este documento tem como objetivo orientar usuários finais, analistas de suporte e equipes técnicas na implementação das fases 1 e 2 do projeto Alfanumérico, abrangendo as principais etapas de execução, parametrização da API de Certificados, equalização de dados legado e a resolução de inconsistências mapeadas durante o processo de homologação para usuários NDD In Loco.
Esta documentação está dividida em FASE 1 e FASE 2 para facilitar o entendimento de cada etapa.
Importante: Recomenda-se que o procedimento seja executado pelos responsáveis da TI , infraestrutura do ambiente local e analista de dados (DBA), com conhecimento sobre a síntese a adequações de arquivos do tipo JSON e manuseio da ferramenta Connector Settings NDD, com atenção especial ao ponto 3.3. Caso os alinhamentos não sejam executados exatamente conforme as orientações, poderá ocorrer falha nos processos de emissão e recebimento de documentos eletrônicos.
2. Ambiente
- Produto: Plataforma NDD e-Forms & NDD e-Connector
- Cenário de Aplicação: Ambientes Inloco NDD
- Escopo de Versões: Patch e-Forms 98190 ou versões superiores
- Recomendação mínima: Versão 98190 para a fase 1 e versão 99011 para a fase 2
Antes de iniciar qualquer procedimento citado abaixo, é obrigatório e de responsabilidade de cada usuário que realizem o backup do diretório NDDigital e inetpub, além dos bancos NDD_CONNECTOR, NDD_CERTIFICADOS e NDD_COLD.
Boas práticas na atualização:
✔ Backup completo
✔ Validar espaço em disco (mínimo 10Gb)
✔ Validar permissões (Usuário Administrador ou permissão)
✔ Não interromper execução de scripts ou execução das ferramentas
✔ Validar documentos fiscais – testes de emissão
✔ Validar integrações – retorno ERP
✔ Conferir portais e-monitor e e-coldweb
FASE 1
3. Resolução/Procedimento Operacional Fase 1
Passo 3.1: Ações Obrigatórias Pré-Atualização Fase 1
Antes de iniciar a extração ou execução de qualquer arquivo/instalador, realize impreterivelmente as seguintes validações de infraestrutura:
3.1.1: Backup: Execute o backup completo e estrutural do banco de dados operacional;
3.1.2: Espaço e permissões: Valide se há espaço em disco suficiente e certifique-se de que o usuário executor possui privilégios administrativos completos (Administrador Local) no servidor.
3.1.3: Componentes Core (Obrigatórios): Realize o download e a instalação prévia dos seguintes pacotes no servidor de aplicação:
Download dotnet-hosting-6.0.36-win
Download dotnet-sdk-6.0.428-win-x64
Para backup do diretório forms NDDigital e inetpub, seguir conforme abaixo:
Acesse o servidor onde o NDD está instalado e faça o backup da pasta NDDigital completa, criando uma cópia dela:
📂 Caminho: C:\Program Files\NDDigital
- Realize também o backup da pasta inetpub, ainda no servidor NDD, criando uma cópia dela:
📂 Caminho: C:\inetpub
Passo 3.2: Execução do Patch 98190 e Atualização do Banco de Dados
Após baixar os instaladores disponibilizados através do Release Notes da NDD, siga o passo a passo de execução abaixo:
Fase 1 - Download Patch NDD e-Forms 4850 versão 98190
Navegue até o arquivo do patch baixado, clique com o botão direito, acesse a aba Propriedades e selecione a opção Desbloquear antes de realizar a extração.
Execute o instalador com privilégios de administrador (As versões das imagens são ilustrativas e não alteram o processo de atualização):
Durante a evolução da barra de progresso, prompts de comando (CMD) serão disparados automaticamente pelo sistema para realizar a pausa e reinício automático dos serviços vinculados a NDD:
Os scripts de criação do banco de dados de Certificados são executados a partir da versão 98176 quanto nas versões posteriores. Abaixo, é apresentado um exemplo da mensagem exibida durante a execução do patch 98182, aplicado após a versão 98176. Nesse cenário, as mensagens de erro ocorrem porque algumas tabelas já haviam sido criadas anteriormente. Trata-se de um comportamento esperado, que não causa impacto no funcionamento da aplicação:
Prosseguindo com a atualização, a tela de conclusão será esta:
Observação: Após a conclusão de instalação dos patchs NDD, caso o acesso externo aos portais e-Monitor e e-Cold apresentem falhas, não concluindo o login, é necessário executar as correções com os ajustes seguindo a documentação abaixo, nas opções 1 ou 2 diante aos recursos e preferências do seu ambiente:
Varejo - Supermercados - Mensageria Eletrônica - Habilitar protocolo HTTPS para acesso externo e-Cold Web e e-Monitor NDD
Passo 3.3: Configuração da API de Certificados
Como Pré requisito, deve-se realizar a instalação do dotnet-hosting-10.0.8-win.zip clicando no hiperlink á esquerda. Caso contrário será apresentado o seguinte erro no instalador da ApiCertificados:
Realizar o download do instalador ApiCertificados clicando no hiperlink á esquerda. Sempre verificar em “propriedades” se os executáveis estão bloqueados e realizar o seu desbloqueio.
Executar o instalador como “Administrador”:
Prosseguir até chegar na tela abaixo e clicar em NDD APICertificados:
Serão apresentados os diretórios onde se encontram os arquivos da API Certificados. Não é necessário nenhum ajuste, basta seguir:
Apontar qual sistema de banco de dados utilizado. Para usuários Consinco utiliza-se “Oracle”, então selecione e clique em “Próximo”:
Serão solicitados os dados de conexão do NDD_CERTIFICADOS. Realizar o teste de conexão como validação da comunicação entre a ferramenta com o banco de dados. Após o retorno de validação, clica em "Próximo":
O processo de execução da ferramenta será de forma rápida, e após o sucesso ma conclusão irá aparecer a tela de finalização da ferramenta, clicar em “Fim”.
Validação da API através de testes no API Swagger
Antes, como precaução, reiniciar o serviço do IIS como um todo para atualizar as configurações aplicadas. Em seguida, na ferramenta do IISm realizar o teste de browser para acessar o API Swagger:
Será direcionado para uma página semelhante a esta abaixo:
Utilizar a primeira chamada de api como uma forma de teste das configurações:
Clicar em “Execute”:
Será apresentando a mensagem dos testes realizados e se foram executados com sucesso:
Na tela acima, se retornar os certificados consultados, a API está funcionando conforme esperado.
Passo 3.4: Equalização de Dados Legado (Ferramenta Alfanumérica)
Ferramenta Alpha Base Normalize
A ferramenta Alpha Base Normalize foi desenvolvida para viabilizar a equalização dos dados de documentos legados, ou seja, registros existentes antes da criação das novas colunas. Seu objetivo é preencher essas colunas com as informações correspondentes, com base nos dados equivalentes já disponíveis no ambiente.
O processo de equalização de dados é obrigatorio antes do inicio da execução da fase 2 da atualização.
Link de acesso ao download da ferramenta: Alpha Base Normalize.exe
Após extrair o zip, executar a ferramenta como "Administrador" através do .exe:
Clicar em “Próximo”:
Clicar em “Instalar”, será apresentado a barra de processamento de instalação da ferramenta:
Após a conclusão do processamento de instalação da ferramenta, clicar em “Fim”:
Ao concluir a instalação da ferramenta, será registrado um novo serviço dentro do painel “Serviços”:
Atenção! É muito importante que o serviço esteja “Em Execução”, pois este serviço fará a equalização da base do banco de dados em segundo plano.
A fase 1 só será concluída após a finalização do processo de equalização da base de dados, logo, recomendamos que validem a finalização deste processo através dos logs ou aguarde a confirmação de um analista TOTVS ou NDD para iniciar a fase 2.
Passo 3.5: Conclusão Fase 1
A implementação da Fase 1 do Alfanumérico representa uma etapa importante na evolução da plataforma, proporcionando maior compatibilidade com os novos formatos de identificação fiscal, melhor desempenho operacional e mais consistência no armazenamento das informações.
Embora a atualização seja executada de forma automatizada por meio dos patches disponibilizados, o êxito da implantação depende diretamente da correta execução das etapas de validação, da configuração adequada da API de Certificados e da equalização dos dados legados.
Durante os testes e implantações realizados, foram identificados pontos de atenção relacionados principalmente à configuração do arquivo appsettings.json, à necessidade de reinicialização do servidor após a instalação dos componentes .NET e à validação dos parâmetros utilizados na ferramenta de equalização. Esses cenários não representam falhas da solução, mas exigem atenção durante o processo de implantação.
Recomenda-se que toda atualização siga rigorosamente as etapas descritas neste manual, incluindo:
- Validação dos pré-requisitos;
- Aplicação do patch;
- Configuração da API de Certificados;
- Verificação do acesso ao Swagger e à porta 8120;
- Execução da ferramenta de equalização;
- Validação dos documentos processados;
- Conferência dos logs e monitoramentos do ambiente.
Antes da liberação do ambiente para uso, é fundamental garantir que todas as validações tenham sido concluídas com sucesso e que não existam registros pendentes ou inconsistências decorrentes da migração.
Seguindo as orientações apresentadas neste documento, a atualização poderá ser realizada com maior segurança, previsibilidade e confiabilidade, reduzindo riscos operacionais e assegurando a integridade dos dados processados pelo ambiente.
FASE 2
4. Resolução / Procedimento Operacional Fase 2
Passo 4.1: Ações Obrigatórias Pré-Atualização Fase 2
A Fase 2 adequa as funcionalidades de emissão e recepção do e-Forms ao suporte completo do CNPJ alfanumérico, em conformidade com a NT Conjunta CNPJ Alfanumérico. A adequação abrange NF-e, CT-e, CT-eOS e MDF-e, contemplando a aceitação e validação do novo formato nos módulos de entrada, a camada de mensageria, as telas de listagem e exibição, os filtros de pesquisa por CNPJ e os módulos de configuração que utilizam o CNPJ.
Atenção! É obrigatório a execução e finalização com sucesso da Fase 1.
As principais mudanças técnicas envolvidas são:
• Formato do CNPJ: 12 primeiras posições no padrão [A-Z0-9], seguidas de 2 posições numéricas para o Dígito Verificador. As letras I, O, U, Q e F não devem ser aceitas, conforme orientação técnica do ENCAT à Receita Federal (sujeito a confirmação)
• Cálculo do Dígito Verificador: mantém-se o Módulo 11, agora baseado no valor ASCII de cada caractere subtraído de 48 (numéricos preservam o valor; A=17, B=18, C=19 e assim por diante)
• Chave de Acesso: nova expressão regular de 44 posições [0-9]{6}[A-Z0-9]{12}[0-9]{26}, mantendo a estrutura UF + AAMM + CNPJ + modelo + série + número + tipo de emissão + código numérico + DV
• Código de Barras dos DANFE/DACTE: alternância dinâmica entre CODE-128C (sequências numéricas) e CODE-128A (sequências alfanuméricas)
• Schemas XML/XSD: atualizados para aceitar letras maiúsculas nas 12 primeiras posições
Para geração e validação de CNPJs alfanuméricos fictícios em testes, está disponível o Simulador do
CNPJ Alfanumérico da Receita Federal: https://servicos.receitafederal.gov.br/servico/cnpj-alfa/simular
Avisos críticos:
• Sem rollback. Após aplicar o patch 99011 não é possível retornar a patches da nomenclatura 98xxx. O retorno provoca falhas de funcionamento da aplicação, pois há alterações de banco. A decisão de aplicar é irreversível dentro da linha 98xxx
• Ordem obrigatória. O patch 99011 deve ser aplicado antes da execução dos scripts de banco e dos ajustes da API Cliente Certificado, ou seja a FASE 1 precisa estar concluída
• Documentos antigos. Informações com CNPJ Alfa geradas antes da implantação da fase de homologação/produção serão rejeitadas, ainda que passem na validação do schema
Passo 4.2: Execução do Patch 99011 e Atualização do Banco de Dados
Após baixar os instaladores disponibilizados através do Release Notes da NDD, siga o passo a passo de execução abaixo:
Fase 2 - Download Patch NDD e-Forms 4850 versão 99011
Navegue até o arquivo do patch baixado, clique com o botão direito, acesse a aba Propriedades e selecione a opção Desbloquear antes de realizar a extração.
As etapas de aplicação deste patch são as mesmas conforme as imagens citadas no tópico Passo 3.2: Execução do Patch 98190 e Atualização do Banco de Dados, tendo apenas a sua versão substituida a ser aplicada neste momento.
Os scripts de criação do banco de Certificados são executados tanto na versão 98176 quanto na 99011. Abaixo, é apresentado um exemplo de mensagem exibida ao executar o patch 99000 logo após o 98176. Nesse cenário, o erro ocorre porque determinadas tabelas já haviam sido criadas anteriormente, sem impacto no resultado da aplicação. Caso desejar, é possível validar quais scripts apresentaram erro, dentro do EventViewer.
Passo 4.3: Atualização da API Certificados
Nesta estapa devemos utilizar a ferramenta disponibilizada no link abaixo:
Ferramenta de migração do banco de certificados
O arquivo da ferramenta deve ser desbloqueado e extraido. Procuramos o seguinte arquivo para realizarmos a configuração, via app settings json.
Ajustes no appsettings.json
Abra o arquivo appsettings e ajuste conforme o ambiente. Defina TipoBanco como 1 para Oracle. Os campos de horário do agendador não devem conter zeros à esquerda.
Colocar sempre alguns minutos a mais na hora/minuto inicial pois precisa ser executado o .exe para iniciar a ferramenta. O horário/minuto final pode ser colocado uma hora bem avançada, pois finalizando antes a ferramenta encerrará automaticamente.
A connectionstring de banco deve ser informada, sendo a mesma que foi informada anteriormente na configuração da API de Certificado.
Imagem anterior da configuração da API de Certificado:
Exemplo do arquivo JSON da appsettings a ser editado:
{
"ConnectionStringBancoNDDCertificadoSql": null,
"ConnectionStringBancoNDDCertificadoOracle": "User
Id=NDD_CERTIFICADOS;Password=NDD_CERTIFICADOS;Data
Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_D
ATA=(SERVICE_NAME=xe)));",
"TipoBanco": 1,
"EnderecoRedis": "localhost:6379,connectTimeout=30000,abortConnect=False,connectRetry=5",
"HoraInicialExecucaoSchedulador": 10,
"MinutoInicialExecucaoSchedulador": 7,
"HoraFinalExecucaoSchedulador": 10,
"MinutoFinalExecucaoSchedulador": 8,
"QuantidadeLoteProcessadoPorCiclo": 1000
}
Onde:
User Id= usuário do banco NDD_CERTIFICADOS (no caso do print NDD_CERTIFICADOS);
Password= senha do usuário NDD_CERTIFICADOS;
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP) (atenção, pois o Data Source deve ter o
espaço entre as palavras Data e Source, como está escrito neste documento);
HOST = Servidor do banco de dados NDD_CERTIFICADOS;
(PORT= porta da conexão ( no caso do print : 1521);
(CONNECT_DATA=(SERVICE_NAME= nome do serviço (o que está configurado no net Manager);
Após os ajustes, execute o arquivo NDD.Atualizacao.Cnpj.Alfanumerico.NDDCertificado.Host, presente na pasta da ferramenta. O log de execução é gravado em:
C:\NDDTemp\Logs\FerramentaAtualizacaoAlfanumericoNDDCertificado
Após isso, teremos um CDM aberto, que deve ser mantido até o final da data configurado dentro do arquivo appsettings.
Passo 4.4: Recriação de Índices de Banco de Dados
Após a aplicação do patch e os procedimentos descritos acima, recrie os índices nas bases Connector e Cold. Na base Connector os índices contemplam as tabelas TBDFENSUFAILURE, TBDFERESULT, TBDOCNUMBERFAILURE, TBLOGDOCUMENT, TBNDDJOBFILIAL, TBPIX(caso necessário), TBREGISTERCONSULT e TBSTATISTICS. Na base Cold contemplam a tabela do cold por série, número e ID (NF-e, CT-e e MDFe).
Os scripts completos, com versões para SQL Server, Oracle e Cold, constam nos Anexos A.
Anexo A – Scripts de Recriação de Índices
Base Connector – Oracle (executar dentro do owner NDD_CONNECTOR)
--------------------------------------------------------------------------------
-- TBDFENSUFAILURE
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBTBDFENSUFAILURE_1
ON TBDFENSUFAILURE (NSU, CNPJBASE, CNPJORDEM, CNPJDV)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/--------------------------------------------------------------------------------
-- TBDFERESULT
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBDFERESULT_1
ON TBDFERESULT (NSU, CNPJBASE, CNPJORDEM, CNPJDV, REPROCESS)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IIX_TBDFERESULT_3
ON TBDFERESULT (NSU, REPROCESS)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/--------------------------------------------------------------------------------
-- TBDOCNUMBERFAILURE
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBDOCNUMBERFAILURE_1
ON TBDOCNUMBERFAILURE (CNPJBASE, CNPJORDEM, CNPJDV, SERIE, VERIFYDATE DESC)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBDOCNUMBERFAILURE_2
ON TBDOCNUMBERFAILURE (CNPJBASE, CNPJORDEM, CNPJDV, SERIE, DOCUMENTNUMBER, MODEL)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBDOCNUMBERFAILURE_3
ON TBDOCNUMBERFAILURE (STATUS, VERIFYDATE DESC)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/--------------------------------------------------------------------------------
-- TBLOGDOCUMENT
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBLOGDOCUMENT_2
ON TBLOGDOCUMENT (CNPJEMITBASE, CNPJEMITORDEM, CNPJEMITDV, MODEL, SERIE, DOCUMENTNUMBER, EMISSIONTYPE)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IIX_TBLOGDOCUMENT_3
ON TBLOGDOCUMENT (JOBID, CNPJEMITBASE, CNPJEMITORDEM, CNPJEMITDV, MODEL, SERIE, DOCUMENTNUMBER)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBLOGDOCUMENT_8
ON TBLOGDOCUMENT (SERIE, DOCUMENTNUMBER)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBLOGDOCUMENT_10
ON TBLOGDOCUMENT (JOBID, EMISSIONTYPE, MODEL, SERIE, DOCUMENTNUMBER, CNPJEMITBASE)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/--------------------------------------------------------------------------------
-- TBPIX
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBPIX_4
ON TBPIX (PROCESSSTATUS, STARTDATE)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBPIX_5
ON TBPIX (DOCUMENTNUMBER, CNPJBASE, CNPJORDEM, CNPJDV, EMISSIONTYPE, MODEL, SERIE)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBPIX_6
ON TBPIX (ACCESSKEY)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/--------------------------------------------------------------------------------
-- TBREGISTERCONSULT
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TBREGISTERCONSULT_1
ON TBREGISTERCONSULT (CNPJDESTBASE, CNPJDESTORDEM, CNPJDESTDV, CONSULTDATE DESC)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/--------------------------------------------------------------------------------
-- TBSTATISTICS
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX TBSTATISTICS_IDX1
ON TBSTATISTICS (DOCTYPE, MODEL, SERIE, DOCNUM, CNPJBASE, CNPJORDEM, CNPJDV, KIND, TPAMB)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX TBSTATISTICS_IDX3
ON TBSTATISTICS (DOCTYPE, TPAMB, STATISTICSDATE, EMISSIONDATE)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX TBSTATISTICS_IDX4
ON TBSTATISTICS (DOCTYPE, CNPJBASE, CNPJORDEM, CNPJDV, SERIE, DOCNUM, CUF, TPAMB)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX TBSTATISTICS_IDX5
ON TBSTATISTICS (CNPJBASE, CNPJORDEM, CNPJDV, SERIE, DOCNUM, DOCTYPE, TPAMB)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/
Anexo A – Scripts de Recriação de Índices
Base Cold – Oracle (substituir TABELA pelo nome da tabela do cold no seu ambiente. Expandir dentro do banco de dados a informação de tabelas para verificar qual o nome de cada tabela criada)
Executar dentro do owner NDD_COLD
--------------------------------------------------------------------------------
-- TABELA NF-e - IDE_SERIE + IDE_NNF + IDE_ID
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TABELA_SERIE_NNF_ID
ON TABELA (IDE_SERIE, IDE_NNF, IDE_ID)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/--------------------------------------------------------------------------------
-- TABELA CT-e - IDE_SERIE + IDE_NCT + IDE_ID
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TABELA_SERIE_NCT_ID
ON TABELA (IDE_SERIE, IDE_NCT, IDE_ID)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/--------------------------------------------------------------------------------
-- TABELA MDF-e - IDE_SERIE + IDE_NMDF + IDE_ID
--------------------------------------------------------------------------------
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX IX_TABELA_SERIE_NMDF_ID
ON TABELA (IDE_SERIE, IDE_NMDF, IDE_ID)';
EXCEPTION
WHEN OTHERS THEN IF SQLCODE != -955 THEN RAISE; END IF;
END;
/
Conclusão
A implementação do CNPJ Alfanumérico no e-Forms, conduzida em duas fases, representa uma etapa importante na evolução da plataforma.
A Fase 1 preparou a estrutura de armazenamento, com a criação das novas tabelas, colunas e a adequação do banco de certificados, além da equalização dos dados legado.
A Fase 2 habilitou o processamento efetivo do novo formato na emissão e na recepção dos documentos fiscais, com a recriação dos índices de banco e a equalização das colunas de série e número da TBPIX.
FAQ – Problemas Comuns na Implementação Alfanumérica
1. API não inicializava mesmo com .NET instalado corretamente
Cenário
Após a conclusão da aplicação do Patch 98176 e instalação dos componentes obrigatórios:
- dotnet-hosting-6.0.36-win
- dotnet-sdk-6.0.428-win-x64
a API não inicializava corretamente após a instalação.
Os seguintes sintomas foram observados:
- impossibilidade de acessar o Swagger;
- acesso indisponível na URL:
http://localhost:8120
- retorno de erros de inicialização da aplicação.
Solução Aplicada
Mesmo com todas as versões corretas instaladas, foi necessário realizar o reinício completo do servidor Windows.
Após o reboot:
- a API iniciou normalmente;
- o Swagger ficou acessível;
- a comunicação foi estabelecida com sucesso.
Recomendação
Sempre que:
- o patch for aplicado com sucesso;
- o .NET estiver corretamente instalado;
- a API não iniciar;
nessa situação, recomenda-se reiniciar o servidor antes de avançar para análises mais aprofundadas.
2. Problemas de Formatação no appsettings.json
Outro ponto identificado durante a implantação esteve relacionado ao preenchimento incorreto do arquivo abaixo:
C:\inetpub\wwwroot\eForms\Webs\ApiClientCertificado\appsettings.json
Sintomas
- API não inicia;
- Swagger indisponível;
- erro HTTP 500.30;
- falha de comunicação com o banco.
Causa
A estrutura JSON exige formatação rigorosa.
Pequenos erros podem impedir a inicialização da API, como:
- aspas incorretas;
- vírgulas ausentes;
- fechamento incorreto de chaves;
- erro na Connection String;
- erro de sintaxe JSON.
Solução
Após a correção da estrutura do arquivo:
- a API voltou a responder normalmente;
- a comunicação foi restabelecida.
Recomendação
Antes de investigar problemas de .NET ou IIS, valide cuidadosamente a estrutura completa do arquivo appsettings.json.
3. Mensagens de Erro Durante a Instalação do Patch 98182
Cenário
Ao instalar o Patch 98182 em um ambiente que já havia recebido previamente o Patch 98176, foram apresentadas mensagens de erro relacionadas à execução de scripts no banco de dados.
Causa
O ambiente já possuía parte das estruturas criadas anteriormente.
Dessa forma:
- tabelas;
- colunas;
- ajustes de banco;
já estavam presentes no ambiente.
Conclusão
Neste cenário, as mensagens não representavam falha da atualização.
Tratava-se apenas de tentativas de criação de estruturas que já existiam.
Recomendação
Ao analisar erros apresentados no Patch 98182, valide primeiro se a estrutura já havia sido criada por atualizações anteriores antes de tratar a situação como falha efetiva.
4. Validação das Informações da Ferramenta de Migração
Durante a execução da ferramenta de validação da migração alfanumérica, é fundamental conferir os parâmetros de conexão com o banco de dados.
Boas práticas
Utilizar as mesmas informações configuradas no Connector Settings:
- servidor;
- banco;
- usuário;
- senha;
- porta de comunicação.
Benefício
Isso reduz significativamente erros de autenticação e falhas de conexão durante a análise da migração.
Recomendação
Antes de iniciar a análise:
- Abrir o Connector Settings;
- Validar os dados de conexão;
- Replicar exatamente os mesmos parâmetros na ferramenta de validação.
Essa prática contribui para maior confiabilidade nos resultados obtidos durante a validação.
5. Resumo geral das Recomendações
✔ Validar instalação do .NET
✔ Reiniciar o servidor após a instalação do Patch
✔ Revisar cuidadosamente o appsettings.json
✔ Validar a sintaxe da Connection String
✔ Não tratar automaticamente erros do Patch como falhas críticas
✔ Utilizar os dados do Connector Settings na ferramenta de migração
✔ Executar a ferramenta de validação após toda atualização
✔ Confirmar acesso ao Swagger antes de liberar o ambiente
6. Validação das Informações da Ferramenta de Migração
Sempre que finalizar a instalação, precisamos validar 2 pontos:
C:\inetpub\wwwroot\eForms\Webs\ApiClientCertificado
Neste caminho, deve ter diversas DLLs, e também um webconfig, que aparece bem no final, um dos últimos arquivos da página. Caso estiver tudo, lá, ele fez a "instalação da API com sucesso". Então devemos validar dentro do IIS: A API de certificados vai ser disponibilizado como um novo Site, dentro da pasta SITES.
Com o nome de ApiClientCertificado, aparecendo aqui:
Como observado no print acima, não vemos o nome do site o qual citamos. O site não foi publicado, por isso ocorre o erro. Temos também a mensagem "não é possível acessar esse site" quando tentamos validar o acesso ao localhost, que também é um forte indício da falha acima, pois ele não consegue nem comunicar, e geralmente ele apresentaria erro de dotnet, caso esteja com a comunicação estabilecida mas ainda com falha.
Quando isso acontece, precisamos adicionar manualmente o site, dentro do IIS, o que pode ser feito, diretamente pelo CMD (O mesmo precisa ser aberto como administrador). Para fazer isso, podemos executar os scripts abaixo.
Criar o pool em "Sem Codigo Gerenciado" (obrigatorio p/ .NET 6) e sempre ativo: %windir%\system32\inetsrv\appcmd add apppool /name:"ApiClientCertificado" /managedRuntimeVersion:""
/startMode:"AlwaysRunning"
Criar o site na pasta publicada e abre a escuta na porta 8120 (a que faltava): %windir%\system32\inetsrv\appcmd add site /name:"ApiClientCertificado" /physicalPath:"C:\inetpub\wwwroot\eForms\Webs\ApiClientCertificado" /bindings:http/*:8120:
Vincular o site ao pool criado acima: %windir%\system32\inetsrv\appcmd set app "ApiClientCertificado/" /applicationPool:"ApiClientCertificado"
Iniciar o site, colocando a 8120 em escuta: %windir%\system32\inetsrv\appcmd start site /site.name:"ApiClientCertificado"
Reiniciar o IIS p/ carregar o modulo de hospedagem .NET: iisreset
Em caso de dúvidas ou qualquer dificuldade, recomendamos o acionamento a equipe de suporte TOTVS por meio dos nosso canais de atendimento.
4 Comentários