SGA Conecta ao Moodle: o Guia Técnico da Integração

Integrar sistema acadêmico e AVA quebra sempre nos mesmos pontos. As quatro rotas técnicas, o passo a passo no Moodle 5.2 e o que checar antes de virar a chave.

por Cleverson Gouvêa

Quando um gestor de EAD pesquisa se o SGA conecta ao Moodle, a dúvida quase nunca é só técnica — é de risco. Ninguém quer descobrir na véspera da matrícula que a integração duplicou aluno, sumiu com nota ou travou o fechamento do Censo. Este guia mostra as quatro rotas reais entre um Sistema de Gestão Acadêmica e o Moodle, o passo a passo de cada uma, o custo verdadeiro e o ponto exato em que cada uma quebra.

TL;DR

  • Quatro rotas possíveis: Web Services REST, banco externo (enrol_database + auth_db), LTI 1.3 / LTI Advantage e arquivo com ETL agendado. Não competem — resolvem problemas diferentes.
  • O Moodle é certificado LTI Advantage Complete (LTI 1.3, Deep Linking 2.0, NRPS 2.0, AGS 2.0) nas versões 4.1 a 5.2, com registro no 1EdTech em 07/04/2026.
  • LTI 1.1 acabou: o 1EdTech parou de certificar versões legadas em 30/06/2021 e encerrou o suporte em 30/06/2022.
  • Armadilha mais cara: no enrol_database, se um registro some da tabela externa o Moodle desmatricula o aluno — e desmatrícula leva as notas junto.
  • Moodle 5.2 saiu em 20/04/2026; a próxima LTS, a 5.3, sai em 05/10/2026. Integração presa a versão fora de suporte é bomba-relógio.

O que a busca por SGA conecta realmente quer dizer

SGA é a sigla de Sistema de Gestão Acadêmica — o software onde mora a secretaria: matrícula, contrato, mensalidade, frequência, histórico, diploma. O Moodle é o AVA (Ambiente Virtual de Aprendizagem), onde mora a aula. São dois bancos de dados, com dois donos internos diferentes. É daí que nasce a pergunta.

Trabalho com Moodle desde 2008 e já administrei ambientes críticos de EAD para instituições de ensino. Na prática, quando alguém pergunta se o SGA conecta ao Moodle, está perguntando uma de três coisas. Vale separar, porque cada camada tem custo e risco próprios.

Nível 1 — identidade

O aluno cadastrado na secretaria entra no AVA com a mesma credencial? Aqui entram SSO (SAML 2.0, OAuth 2, LDAP/AD) ou criação de conta via API. É a camada mais barata e a que mais derruba chamado no suporte: elimina o "esqueci a senha do outro sistema".

Nível 2 — matrícula

O aluno matriculado na disciplina X na secretaria aparece no curso X do Moodle — e sai de lá quando tranca ou é transferido. É a camada que gera a maior parte dos incidentes, porque lida com estado que muda todo dia e regra que muda todo semestre.

Nível 3 — resultado

Nota, frequência, conclusão e certificado voltam do Moodle para a secretaria. É a mais cara, porque exige acordo semântico antes de qualquer código: o que a instituição chama de "aprovado" precisa ter definição única nos dois sistemas, incluindo arredondamento e recuperação.

A maioria dos projetos precisa dos níveis 1 e 2 no primeiro ciclo. Tentar os três de uma vez atrasa dois semestres. Já descrevi esse padrão ao analisar a gestão do ambiente virtual da UFBA, e ele se repete igual na rede privada.

As quatro rotas pelas quais o SGA conecta ao Moodle

Não existe "a" integração. O SGA conecta ao Moodle por quatro arquiteturas distintas, e escolher a errada custa caro depois. A tabela abaixo é o resumo que uso em kickoff:

Rota Quem inicia a chamada Latência típica Melhor para Risco principal
Web Services REST O SGA chama o Moodle Segundos Matrícula sob demanda, onboarding imediato Token vazado; falha silenciosa sem retry
Banco externo (enrol_database) O Moodle busca no SGA Ciclo do cron Volume alto e regra estável Registro ausente = desmatrícula com perda de nota
LTI 1.3 / LTI Advantage O SGA lança o usuário no Moodle Instantâneo Consumo de conteúdo sem replicar cadastro Erro de configuração de chave derruba tudo
Arquivo + ETL agendado Job intermediário Horas Legado sem API, migração inicial Divergência acumulada entre execuções

Web Services REST — o SGA conecta chamando o Moodle

É a rota mais usada e a que dá mais controle. O Moodle expõe centenas de funções externas (core_user_create_users, core_user_update_users, enrol_manual_enrol_users, core_course_get_courses, core_enrol_get_enrolled_users) através de um endpoint REST único: /webservice/rest/server.php, com os parâmetros wstoken, wsfunction e moodlewsrestformat=json.

A vantagem é o tempo de reação: o aluno paga a matrícula às 23h40 e três segundos depois já tem conta e curso liberado. A desvantagem é que você assume retry, idempotência e log. Se a chamada falhar e ninguém tratar, o aluno não existe no AVA — e você descobre quando ele reclama.

Banco de dados externo — o Moodle vai buscar sozinho

Os plugins enrol_database (matrícula) e auth_db (autenticação) fazem o Moodle ler uma tabela ou view do seu SGA e espelhar o que encontrar. Não há código para escrever: é configuração de mapeamento entre campo local e campo remoto (curso por idnumber ou shortname; usuário por idnumber, username, email ou id).

Nessa rota o SGA conecta de forma passiva: ele só expõe a tabela, e quem trabalha é o Moodle. A sincronização roda pela tarefa agendada Synchronise external database enrolments task, que vem desativada por padrão — primeira pegadinha, porque muita equipe configura tudo e conclui que "não funciona". A segunda está na própria documentação: se um registro sumir da tabela externa, o comportamento padrão é desmatricular, e desmatrícula apaga notas e dados de atividade. Uma view mal filtrada num domingo à noite destrói um semestre inteiro.

LTI 1.3 — o SGA conecta como plataforma, não como cadastro

Aqui a lógica se inverte: em vez de replicar aluno, o SGA (ou o Moodle) lança o usuário no outro sistema já autenticado, em tempo de clique. O Moodle está certificado como LTI Advantage Complete — LTI v1.3, Deep Linking 2.0, Names and Role Provisioning Services 2.0 e Assignment & Grade Services 2.0 — nas versões 4.1, 4.4, 4.5, 5.0, 5.1 e 5.2, conforme o registro público de certificações do 1EdTech.

O detalhe que decide o projeto: o 1EdTech deprecou formalmente LTI 1.0, 1.1, 1.1.1, 1.1.2, 1.2 e 2.0. Parou de certificar essas versões em 30 de junho de 2021 e encerrou o suporte em 30 de junho de 2022. Se um fornecedor te oferecer integração "via LTI" em 2026 sem dizer 1.3, pergunte a versão antes de assinar.

Arquivo e ETL agendado — o plano B honesto

CSV, planilha ou dump SQL processado por um job. Feio, mas é assim que um SGA conecta a um legado sem API — e é a rota certa para a carga inicial de migração. O erro é deixar o plano B virar arquitetura definitiva: dois anos depois ninguém sabe qual planilha é a fonte da verdade.

Como habilitar os Web Services no Moodle, passo a passo

Se a sua escolha foi a rota REST, o roteiro no Moodle 5.x é este — e a ordem importa:

  1. Ative o subsistema: Administração do site > Funcionalidades avançadas > Habilitar serviços web.
  2. Habilite o protocolo: Administração do site > Servidor > Serviços web > Gerenciar protocolos e ligue o REST.
  3. Crie um serviço externo customizado: em Serviços web > Serviços externos, use "Adicionar", marque Habilitado e, se for um integrador único, marque também Somente usuários autorizados.
  4. Adicione apenas as funções necessárias. Nada de serviço pronto com dezenas de funções: um token que só sabe matricular não consegue apagar curso.
  5. Crie um usuário de serviço dedicado (nunca o admin) com as capacidades webservice/rest:use e moodle/webservice:createtoken, mais as específicas de cada função, atribuídas por papel próprio.
  6. Gere o token em Gerenciar tokens, associando usuário e serviço.
  7. Restrinja o token: Restrição de IP com o IP de saída do seu SGA e Válido até preenchido. Copie o token na hora — a documentação do Moodle é explícita: a chave é de leitura única.

Os erros mais comuns nessa etapa (invalidtoken e exceção de controle de acesso) têm três causas triviais: restrição de IP que não bate com o IP real de saída, validade vencida ou capacidade faltando no papel do usuário de serviço.

LTI 1.3: quando o SGA conecta sem criar um único usuário

Existe um cenário em que a melhor integração é não integrar cadastro nenhum. Se a instituição usa um SGA robusto como sistema-mãe e o Moodle serve conteúdo de disciplina, o LTI Advantage cobre os três níveis sem replicar base: identidade vem no lançamento, papel vem pelo NRPS 2.0 e nota volta pelo AGS 2.0.

Isso elimina a classe inteira de bug de sincronismo — não há dois cadastros para divergir. O preço é perder relatório consolidado dentro do Moodle e depender da qualidade do consumidor LTI do outro lado. Uso essa rota com cliente que tem governança forte e não quer o AVA como fonte de verdade. Quando o Moodle é o coração da operação, como nos ambientes que analisei no post sobre o Moodle da UNIFESP, a rota REST rende mais.

Quando não conectar o SGA ao Moodle

Integração não é sempre a resposta certa. Antes de decidir que o SGA conecta a partir de agora, avalie estes cinco cenários — em todos eles recomendo adiar:

  • Cadastro sujo. CPF duplicado, e-mail compartilhado entre irmãos, aluno com três matrículas ativas: a integração propaga a sujeira em escala. Limpe antes. Sempre.
  • Regra acadêmica em disputa. Se coordenação e secretaria discordam sobre quando um aluno está "ativo", não há código que decida por elas.
  • Moodle fora de suporte. Integrar um 3.x ou 4.0 é construir sobre andaime. Atualize primeiro.
  • Volume que não justifica. Cem matrículas por semestre feitas à mão custam menos que o projeto e sua manutenção anual.
  • Janela errada. Virar a chave na semana de matrícula é a decisão que mais vi dar errado.

O custo real que ninguém coloca na proposta

O orçamento costuma cobrir só o desenvolvimento. Falta o resto, que é onde o dinheiro some:

  • Mapeamento de dados. Levantar campo a campo e definir a chave de correlação (quase sempre CPF ou matrícula, nunca e-mail). É trabalho de gente, não de máquina.
  • Ambiente de homologação. Uma cópia do Moodle e uma do SGA com dados reais anonimizados. Testar em produção é manutenção de avião em voo.
  • Observabilidade. Log de cada chamada, alerta quando a fila para, painel de divergência. Sem isso, a integração falha em silêncio por semanas.
  • Manutenção por versão. O Moodle publica uma versão maior a cada seis meses, em abril e outubro. Toda atualização pede reteste.
  • Plantão de virada de semestre. Os dois picos do ano precisam de alguém acordado.

Essas linhas somam mais que o desenvolvimento no primeiro ano. Cortá-las não economiza: transfere o custo para o suporte e para a reputação da secretaria.

LGPD, Decreto 12.456/2025 e Censo: o que a integração precisa provar

Integração acadêmica move dado pessoal de estudante — inclusive de menor de idade. Sob a LGPD (Lei 13.709/2018), isso exige base legal definida, minimização (não trafegue campo que a outra ponta não usa), registro das operações de tratamento e trilha de auditoria.

Há também um vetor regulatório novo. O Decreto nº 12.456, de 19 de maio de 2025, publicado no DOU em 20/05/2025, revogou o Decreto 9.057/2017 e refez o marco da graduação a distância. Para cursos EAD, o art. 12 exige no mínimo 10% da carga horária em atividades presenciais e mais 10% em atividades presenciais ou síncronas mediadas. O art. 41 dá às credenciadas dois anos da publicação para atender integralmente ao decreto — maio de 2027.

A leitura prática é direta: comprovar carga horária síncrona e presencial deixou de ser relatório de fim de curso e virou dado que precisa existir, com data e origem, em sistema auditável. Registro de sessão síncrona no Moodle que não chega ao SGA vira passivo regulatório. E o mesmo dado alimenta o Censo do Inep, cujo cronograma sai por portaria anual — não se resolve na véspera com exportação manual.

Checklist de homologação antes de virar a chave

Use isto como critério de aceite. Se algum item não passar, não vire:

  1. Criar aluno no SGA gera conta no Moodle em menos de 60 segundos, sem duplicar quem já existe.
  2. Trancar matrícula suspende o acesso sem apagar notas nem envios.
  3. Reprocessar o mesmo lote duas vezes não gera efeito colateral (idempotência comprovada).
  4. Queda do SGA por 30 minutos não corrompe estado no Moodle — a fila retoma sozinha.
  5. Todo erro gera alerta em canal humano, não só linha de log.
  6. Existe rollback escrito, com dono e telefone.
  7. O token tem restrição de IP, validade e está fora do repositório de código.
  8. Relatório diário de divergência comparando as duas bases.

Como a Agathas Web resolve isso

O SGA da Agathas Web nasceu exatamente desse problema. Ele não é um conector genérico montado em ferramenta no-code: é um sistema de gestão acadêmica acoplado ao Moodle por plugin proprietário mais Web Services, falando direto com o banco — sem job em fila de terceiro e sem latência de integrador externo.

O que está incluso na implantação: mapeamento de dados campo a campo com a sua secretaria, importação da base legada (CSV, planilha, SQL ou API do sistema atual) com validação de CPF e deduplicação, criação das contas no Moodle, envio de credenciais por e-mail e WhatsApp Oficial, e treinamento das equipes acadêmica e administrativa. A partir daí, o SGA conecta a operação inteira: matrícula, financeiro com boleto e Pix, controle de inadimplência, emissão de certificado com validação por QR code, painel para pais e responsáveis, e relatórios de engajamento e evasão.

Ele é agnóstico de hospedagem — funciona com o seu Moodle onde ele estiver, nosso ou de outro fornecedor — e conversa com sistemas acadêmicos legados (TOTVS RM, SOPHIA, MV, Senior, Sponte) via API REST ou ETL agendado, para o caso de convivência entre plataformas durante a transição. Você mantém acesso direto ao banco e export completo a qualquer momento.

Como se contrata: assinatura por volume de alunos ativos, com setup dimensionado conforme o escopo de integração. O caminho normal é uma demonstração de 45 minutos com a sua realidade na tela — dela saem o desenho da rota (REST, banco externo ou LTI) e o cronograma. Planos e módulos estão na página do SGA.

Conclusão: o SGA conecta — a pergunta é com que garantia

A resposta curta para "o SGA conecta ao Moodle?" é sim, por quatro caminhos. A resposta útil é outra: conecta com qual latência, com qual comportamento em caso de falha e com qual prova de conformidade quando o auditor pedir. Escolher a rota é decisão de arquitetura, não de fornecedor — e se toma antes do contrato, não depois do primeiro incidente.

Se você já tem Moodle rodando e uma secretaria que opera em planilha entre um sistema e outro, o próximo passo é mapear em qual dos três níveis está a dor real. Leve esse diagnóstico para a demonstração do SGA e saia da conversa com a rota definida.

Fontes: Moodle Releases · Using web services · External database enrolment · Certificações Moodle no 1EdTech · Deprecação do LTI legado · Decreto 12.456/2025

Perguntas frequentes

O SGA conecta a qualquer versão do Moodle?

Tecnicamente, qualquer Moodle com Web Services habilitado aceita integração — mas isso não significa que seja seguro. O calendário oficial de releases mostra que o Moodle 5.1 saiu em 06/10/2025, o 5.2 em 20/04/2026 e a próxima LTS, a 5.3, está prevista para 05/10/2026, com suporte geral de doze meses e correções de segurança por dezoito. Integrar uma instalação já fora da janela de segurança significa construir automação sobre uma base que não receberá correção de vulnerabilidade. Na prática, se o seu ambiente está em 3.x ou 4.0, o certo é atualizar para uma linha suportada antes de começar o projeto de integração — e não depois.

Qual a diferença entre integrar por Web Services e por LTI 1.3?

São filosofias opostas. Nos Web Services, o SGA cria e mantém uma cópia do aluno dentro do Moodle: há dois cadastros, e você precisa mantê-los em acordo. No LTI 1.3 não há replicação — o usuário é lançado autenticado no momento do clique, o papel dele viaja pelo Names and Role Provisioning Services 2.0 e a nota volta pelo Assignment & Grade Services 2.0. O Moodle é certificado LTI Advantage Complete desde a versão 4.1. Regra prática: se o Moodle é a fonte de verdade da operação acadêmica, use Web Services; se ele é apenas um provedor de conteúdo dentro de um SGA-mãe, use LTI.

Por que o enrol_database desmatriculou meus alunos sozinho?

Porque é o comportamento documentado do plugin, não um bug. O plugin de matrícula por banco de dados externo espelha a tabela de origem: se um par usuário/curso deixa de aparecer na consulta, o Moodle entende que a matrícula acabou e remove o aluno — e a remoção apaga notas e dados de atividade por padrão. Basta uma view com filtro errado, uma coluna renomeada ou uma janela de manutenção no banco de origem para o efeito acontecer em massa. Antes de habilitar a tarefa agendada de sincronização, valide a consulta com dados reais em homologação e mantenha backup do gradebook.

Ainda posso usar LTI 1.1 na integração?

Não deveria. O 1EdTech deprecou formalmente todas as versões legadas de LTI — 1.0, 1.1, 1.1.1, 1.1.2, 1.2 e 2.0 — deixou de certificá-las em 30 de junho de 2021 e encerrou o suporte em 30 de junho de 2022. O motivo é de segurança: o LTI 1.3 migrou para OAuth 2.0 e OpenID Connect, com assinatura de mensagem, enquanto o 1.1 usava um segredo compartilhado no modelo antigo. O Moodle ainda aceita registrar ferramentas 1.1 por cartucho, e é isso que confunde comprador. Aceitar hoje uma integração nova em LTI 1.1 é assumir uma migração forçada em prazo curto.

Quanto tempo leva um projeto de integração entre SGA e Moodle?

Depende muito menos do código e muito mais da qualidade do cadastro. Em bases limpas, com chave de correlação definida e escopo restrito aos níveis de identidade e matrícula, o ciclo típico é de algumas semanas entre mapeamento, desenvolvimento, homologação com dados reais anonimizados e virada. O que estica prazo é sempre a mesma lista: CPF duplicado, aluno com múltiplas matrículas ativas, divergência sobre o que significa estar ativo e ausência de ambiente de homologação. Reserve também a janela de virada: fazer o corte em semana de matrícula é o erro operacional mais caro do projeto.