A release 12.1.2510 do Protheus (que vem acompanhada da LIB 20251006_P12, lancada em outubro de 2025) e a mais agressiva em breaking changes da decada. Nove mudancas estruturais quebram codigo legado de forma silenciosa: seu RPO compila, sobe, e estoura em runtime. Este artigo destrincha cada uma com codigo real (antes/depois), roteiro de migracao em 3 sprints e os links diretos pras paginas oficiais do TDN no final.
Aviso Esta release NAO e de simples update. Ela introduz exceptions em runtime para padroes que voce usa ha 15 anos. Migrar sem auditoria de codigo prejudica integracoes, jobs schedulers e rotinas .RPW. Leia ate o fim antes de aplicar em producao.
LIB 20251006_P12 vs Protheus 12.1.2510 — entendendo o versionamento
Antes de qualquer coisa, um detalhe que confunde ate consultor experiente: a TOTVS versiona o produto Protheus (12.1.2510) e a biblioteca de framework (LIB) separadamente. A release 12.1.2510 do Protheus e expedida com a LIB 20251006_P12. Os breaking changes deste artigo estao todos no release notes oficial dessa LIB (link no final).
Por que essa release importa mais que as anteriores
A TOTVS vinha empurrando boas praticas de seguranca em ADVPL ha anos. A maioria das consultorias ignorou. A 12.1.2510 e o ponto onde os warnings viraram errors. Tres motivos principais:
- Conformidade fiscal: Reforma Tributaria 2026-2033 exige rastreabilidade de cada calculo. Auditoria SX3 ativada por default e prerequisito.
- Cloud-first: TOTVS Cloud (T-Cloud) ja exige isolamento de contexto entre tenants. Manipular
cEmpAntdireto quebrava esse modelo. - Performance: locks distribuidos via License Server eram gargalo conhecido em ambientes com 200+ conexoes simultaneas. DBAccess assumiu o controle.
Mapa das 9 mudancas que afetam codigo
bloqueadas pra escrita] B --> D[2. Troca de contexto
via RpcSetEnv corretamente] B --> E[3. DBAccess assume
LockByName/GetSXENum] B --> F[4. CTREE removido
do APSDU] B --> G[5. Auditoria SX3
obrigatoria] B --> H[6. CFGX052 descontinuada
Central de Auditoria] B --> I[7. Fim das auditorias
via Politicas de Seguranca] B --> J[8. Politica minima
de senhas obrigatoria] B --> K[9. Atributo ignora
expiracao de senha] C & D --> X[Refatoracao
obrigatoria] E --> Y[Performance
+ disponibilidade] F --> Z[Migracao
SQLite no APSDU] G & H & I --> W[Conformidade
fiscal/LGPD] J & K --> V[Seguranca
de acesso] style X fill:#EF4444,color:#fff style Y fill:#10B981,color:#fff style W fill:#3B82F6,color:#fff style Z fill:#F59E0B,color:#fff style V fill:#7C3AED,color:#fff
1. cEmpAnt e __cUserId — atribuicao direta bloqueada
O hack classico de "renomear empresa em runtime" pra burlar permissoes morreu. O texto oficial do release notes e direto: "a atribuicao direta as variaveis globais cEmpAnt (grupo de empresa) e __cUserId (usuario) foi bloqueada por motivos de seguranca e integridade de dados. A leitura dessas variaveis continua permitida".
// ANTES - hack comum em customizacoes "espertas"
User Function HackEmp()
cEmpAnt := "99" // ERRO em 2510 - exception em runtime
__cUserId := "admin" // ERRO em 2510 - exception em runtime
Return
// DEPOIS - so leitura, atribuicao via framework oficial
User Function ContextoCorreto()
Local cEmp := cEmpAnt // OK - leitura
Local cUser := __cUserId // OK - leitura
// Pra mudar contexto, use API oficial:
RpcSetEnv("99", "01", cUser, "senha", "FAT")
Return
Como detectar no seu codigo:
# Lista todos os pontos que atribuem cEmpAnt ou __cUserId
grep -rn -E "(cEmpAnt|__cUserId)\s*:=" \
--include="*.prw" --include="*.tlpp" \
/caminho/dos/fontes
2. Troca de contexto correta — RpcSetEnv e PrepareEnvironment
Como a atribuicao direta a cEmpAnt foi bloqueada, qualquer rotina que dependia desse hack precisa migrar pra API oficial de troca de contexto:
| Cenario | O que fazer |
|---|---|
| Job .RPW agendado (SCHEDDEF) | RpcSetType(3) + RpcSetEnv() |
| WebService TOTVS chamado externamente | PrepareEnvironment() |
| Custom REST endpoint AdvPL | PrepareEnvironment() obrigatorio |
| Mudar contexto em meio a processo MVC | Refatorar — design errado, precisa de transacao isolada |
Pratica Em jobs schedulers (Function que roda via THREADID), prefira PrepareEnvironment() a RpcSetEnv. Ela faz handshake com License Server quando necessario, ou roda standalone com RpcSetType(3).
3. DBAccess assume controle de locks (LockByName / GetSXENum)
Texto oficial do release notes: "Ao utilizar as funcoes LockByName e GetSXENum, o controle de concorrencia era realizado pelo License Server. A partir de agora, este controle podera ser realizado pelo DBAccess, trazendo beneficios como: melhora na performance e disponibilidade".
Resultado pratico em ambientes com mais de 200 conexoes:
- Latencia de lock: tipicamente cai de dezenas para poucos ms (depende do banco)
- Disponibilidade: License Server fora nao mata operacao de gerar numero sequencial
- Pre-requisito: DBAccess da release 2510 (mismatch de versao quebra)
Atencao na infra O DBAccess tem que estar na mesma release do AppServer. Update do binario AppServer sem atualizar DBAccess gera comportamento erratico em GetSXENum — risco de numeros duplicados em SF1, SD1 e correlatos.
4. CTREE removido do APSDU — bem-vindo SQLite
O APSDU (utilitario de manipulacao de arquivos) usava CTREE como engine de persistencia local. A LIB 20251006_P12 removeu. Agora e SQLite, com nova extensao .SDB.
Texto oficial: "Iniciando o processo de descontinuidade do uso do drive CTREE no Protheus, a partir da LIB 20251006 nao havera mais o mecanismo de manipulacao de arquivos CTREE no APSDU, como alternativa de substituicao devera ser utilizado SQLite".
Impacto pratico: scripts custom que abriam DBF/CDX via APSDU pra fix de dados precisam ser refeitos. Migrar pra SQLite (extensao .SDB) ou usar acesso direto via DbUseArea com TopConnect.
5. Auditoria SX3 obrigatoria por padrao
Texto oficial: "Auditoria do SX3 sai ativada no padrao e nao sera permitido desligar. Com intuito de garantir a integridade dos dicionarios de dados, como primeiro passo, estamos ligando a auditoria do dicionario de campos – SX3 nao permitindo seu desligamento pelo usuario".
Conexao com a Reforma Tributaria: a Receita exige que toda mudanca em aliquota, regra de calculo ou estrutura de tributacao seja auditavel. SX3 sempre auditado prova compliance.
Importante A consulta da auditoria nao e feita via SQL direto numa tabela publica. O Embedded Audit Trail cria estruturas internas com gatilhos no banco (cujos nomes a TOTVS nao expoe). O caminho oficial e via os relatorios e a API documentados abaixo.
Onde consultar a trilha de auditoria pos-2510 (todos via menu Configurador > Ambiente > Embedded Audit Trail):
| Rotina | Para que serve |
|---|---|
CFGR750 | Relatorio de Auditoria de Dicionarios (SX1, SX2, SX3, SX6...) |
CFGR740 | Relatorio de Auditoria de Usuarios e Grupos |
CFGR710 | Relatorio de Auditoria de TODOS os dicionarios + tabelas marcadas para auditoria |
FWCFGAUDIT | Funcao AdvPL pra selecao manual de tabelas extras a serem auditadas |
Os tres relatorios geram saida estruturada com data/hora, usuario, tabela, campo, valor anterior, valor novo e tipo de operacao — sem voce precisar conhecer o schema fisico.
6. CFGX052 descontinuada — CFGA500 e os novos relatorios CFGR* tomam o lugar
A rotina CFGX052 (Log de Campos legado) foi descontinuada. A migracao se desdobra em quatro pecas distintas:
CFGA500— nova rotina de configuracao das regras de auditoria (substitui as auditorias que ficavam em "Politicas de Seguranca do Configurador")CFGR710/740/750— novos relatorios de consulta (item 5)- Central de Auditoria — painel agregador que reune os relatorios e configuracoes em uma tela unica
- Importacao de Auditoria — pra trazer o historico antigo do CFGX052 pro novo modelo
Texto oficial do release notes: "A partir da release 12.1.2510 a rotina Log de Campos (CFGX052) sera descontinuada e o acesso a ela sera restrito". E do CFGA500: "A partir da Release 12.1.2510, nao sera mais possivel a consulta pelo metodo atual, apenas pela API. Porem ainda sera possivel apenas a consulta historica dos dados da auditoria sem a API".
Cuidado com nomes Eu mesmo cai nessa: e tentador chamar o substituto de "CFGA060" ou de "Central de Auditoria" sem mais detalhes. O nome real depende do que voce quer fazer — configurar (CFGA500), consultar (CFGR710/740/750), ou navegar no painel (Central de Auditoria). Use o nome correto na issue/chamado, senao o time de suporte demora pra entender.
7. Fim das auditorias via Politicas de Seguranca do Configurador
Outro impacto direto na area de auditoria: "A partir do release 12.1.2510 o embedded audit trail sera a unica ferramenta de auditoria de dicionarios, usuarios, menus e tabelas de negocios".
Quem mantinha auditoria configurada via "Politicas de Seguranca do Configurador" precisa migrar pro Embedded Audit Trail. As opcoes antigas saem do menu, e o caminho oficial passa pela Central de Auditoria (item 6).
8. Politica minima de senhas — agora obrigatoria
Texto oficial: "implementamos regras minimas e obrigatorias para a criacao e atualizacao de senhas. Acreditamos que essa medida e crucial para garantir um ambiente mais seguro para todos os nossos usuarios".
Impacto direto: usuarios criados ou com senha alterada apos 2510 precisam atender a complexidade minima. Customizacoes que criam usuario via API (User Function que insere em SI0) precisam aplicar as mesmas regras — caso contrario, falha na primeira tentativa de login.
9. Atributo "ignora politica de expiracao" no cadastro de usuario
Complementando a mudanca anterior, foi adicionado um atributo no cadastro de usuario que permite "ignorar politica de expiracao de senhas". A propria TOTVS posiciona como temporario: "Estes e apenas um pequeno passo para algo maior que vem por ai. O uso deste novo atributo, que e temporario, evitara a troca constante da senha de usuarios especiais".
Util para contas de servico (RPA, integracoes, jobs externos) que nao podem ter senha rotacionada manualmente. Mas: a TOTVS recomenda explicitamente nao abusar — e oferece um Dashboard de Privilegios pra acompanhar quais contas tem o flag ativo.
Reforma Tributaria: o que vem na 12.1.2510
A 12.1.2510 inclui o core do CFGTRIB/FISA170 em modo "preview controlado". Voce pode importar regras de IBS/CBS, simular operacoes em homologacao, mas o switch oficial pra producao e em outubro/2026 (cronograma TOTVS).
Ver detalhes do cronograma completo: Cronograma Reforma Tributaria Protheus 2026.
Roteiro de migracao em 3 sprints
Sprint 1 — Auditoria (10-12 dias uteis)
Antes de tocar em qualquer release nova, voce precisa saber o que vai quebrar. Comandos:
# 1. Lista atribuicoes diretas a cEmpAnt e __cUserId (item 1 do artigo)
grep -rn -E "(cEmpAnt|__cUserId)\s*:=" \
--include="*.prw" --include="*.tlpp" --include="*.tch" \
/caminho/customizacoes > /tmp/breaking-changes.txt
# 2. Lista chamadas a CFGX052 (auditoria legada - item 6)
grep -rn "CFGX052" --include="*.prw" /caminho/customizacoes \
>> /tmp/breaking-changes.txt
# 3. Identifica codigos APSDU + CTREE (item 4)
grep -rn -E "DbUseArea.*\.dbf|CTREE" --include="*.prw" /caminho/customizacoes \
>> /tmp/breaking-changes.txt
# 4. Codigos que criam usuario direto na SI0 (item 8 - politica de senhas)
grep -rn -E "INSERT.*SI0|RecLock\(.SI0" --include="*.prw" /caminho/customizacoes \
>> /tmp/breaking-changes.txt
# 5. Total de pontos a refatorar
wc -l /tmp/breaking-changes.txt
Sprint 2 — Refatoracao (3 semanas)
- Cada atribuicao a cEmpAnt/__cUserId: troca por RpcSetEnv ou PrepareEnvironment
- APSDU + CTREE: migracao pra SQLite (script de conversao + nova extensao .SDB)
- CFGX052: substituir por consulta a Central de Auditoria (Embedded Audit Trail)
- Codigos que criam usuario via API: aplicar politica minima de senha
Sprint 3 — Validacao (3 semanas)
- Aplicar 2510 em DEV. Smoke test: emitir 1 NF-e por modulo
- Rodar suite TIR (testes automatizados) com cobertura minima 60%
- QA com cliente em ambiente espelhado (volume real de dados)
- Cutover producao em janela de fim de semana com rollback testado
Pegadinhas que vao quebrar producao
Pegadinha 1 Job .RPW agendado no SCHEDDEF que muda contexto via atribuicao direta a cEmpAnt vai parar de rodar silenciosamente. Logs ficam vazios, e a unica pista e o job aparecer em SCH010 com status "EM ESPERA" infinito.
Pegadinha 2 Endpoints REST custom em U_API* que faziam cEmpAnt := "99" direto vao retornar HTTP 500 com stack trace exposto. Risco de seguranca pos-2510 enquanto o codigo nao for migrado.
Pegadinha 3 Customizacoes que criam usuarios via SI0 (RPAs, integracoes RH, importadores) vao quebrar no primeiro login se a senha gerada nao atender a politica minima nova. Adapte o gerador de senha antes do cutover.
Quando NAO atualizar agora
Tres cenarios reais onde adiar 90-120 dias e a decisao certa:
- >500 user functions sem testes automatizados: voce nao tem como validar regressao em prazo razoavel. Construa cobertura TIR primeiro.
- Integracao critica com sistema externo legacy (>5 anos sem update): a integracao costuma usar contexto fixo e quebra. Migre o legado primeiro ou crie wrapper.
- Janela fiscal sensivel (final de ano, fechamento de mes): nao migre em outubro-dezembro. O risco/beneficio e desfavoravel.
Resumo executivo
| Fator | Veredito |
|---|---|
| Atualizar e obrigatorio? | Sim, ate Q3/2026 (Reforma Tributaria precisa) |
| Custo medio de migracao (300 customizacoes) | 200-400h consultor especialista |
| Quebra silenciosamente? | Sim — exceptions em runtime, nao em compile |
| Ganho de performance | Real (locks via DBAccess) |
| Risco de janela curta (<30 dias) | Alto. Faca em sprints planejados |
A 12.1.2510 e mais que upgrade — e limpeza de divida tecnica acumulada por anos. Quem encarar com auditoria e sprints estruturados sai com sistema mais rapido e em conformidade fiscal pra Reforma. Quem aplicar direto em producao vai ter sexta-feira ruim.
Fontes oficiais (TDN — TOTVS Developer Network)
Toda informacao deste artigo foi cruzada com a documentacao oficial. Confira voce mesmo:
- Release notes da LIB 20251006_P12 (lista oficial das breaking changes da 12.1.2510): tdn.totvs.com/pages/viewpage.action?pageId=908678050
- Descontinuidade do CTREE no APSDU (DFRM4-14489): tdn.totvs.com/display/framework/DFRM4-14489+DT+Descontinuidade+do+CTREE+no+APSDU
- Painel de Auditoria / Central de Auditoria (substituto do CFGX052): tdn.totvs.com/display/framework/Painel+de+Auditoria
- CFGA500 — Regras de Auditoria via Embedded Audit Trail (cadastro): tdn.totvs.com/display/framework/CFGA500+-+Regras+de+Auditoria+via+Embedded+Audit+Trail
- Configurar Embedded Audit Trail (passo a passo + relatorios CFGR710/740/750): tdn.totvs.com/display/framework/Configurar+Embedded+Audit+Trail
- Instalador Protheus Windows 12.1.2510: tdn.totvs.com/display/PROT/Instalador+Protheus+Windows+12.1.2510
- Instalador Protheus Linux 12.1.2510: tdn.totvs.com/display/PROT/Instalador+Protheus+Linux+12.1.2510
Nota tecnica O TDN e o Confluence interno da TOTVS. Algumas paginas exigem login (TOTVS ID / Identity Fluig). O Release Notes principal (primeiro link) e publico e contem o "Saiba Mais" de cada item — vale como leitura complementar antes de iniciar a migracao.
Sua empresa esta migrando pra 12.1.2510?
Nossa consultoria especializada faz auditoria de customizacoes ADVPL/TLPP, identifica breaking changes antes de afetar producao e executa o upgrade em fases controladas. Falamos a sua linguagem.
Solicitar diagnostico
Comentarios 0