Páginas filhas
  • DSERTSS3-2727 DT TRANSMITE Implementação do novo modelo de provisionamento

01. DADOS GERAIS

Produto:

TOTVS Transmite

Linha de Produto:

Linha Protheus

Segmento:

Backoffice

Módulo:TOTVS Transmite
Função:Não Há
País:Brasil
Ticket:Não Há
Requisito/Story/Issue (informe o requisito relacionado) :DSERTSS3-2727

02. SITUAÇÃO/REQUISITO

Implementação do novo serviço de provisionamento para o Transmite, utilizando o Message Broker do TotvsApps que está integrado ao CRM, Fluig e RAC.

03. SOLUÇÃO

  • A solução está integrada com o CRM da TOTVS, onde as vendas dos produtos geram a mensagem do tipo ApplyContract no Message Broker do TOTVS Apps, contendo informações do cliente.

Essa mensagem é recebida pelo painel de provisionamentos que por sua vez executa as seguintes etapas para provisionamento dos produtos:

•    Resolve o tenant no Fluig, em outras palavras, verifica se o cliente já possui um tenant ou cria caso necessário.
•    Associa os produtos ao tenant.
•    Caso algum produto possua integração com ERP, o fluxo irá enviar um e-mail solicitando a ação do usuário para seleção do ERP desejado no app My Account (todos os tenants provisionados pelo painel de provisionamentos terão esse app associado automaticamente).
•    Provisiona o tenant no RAC.
•    Envia o e-mail com as credenciais do Fluig para o usuário definido na mensagem ApplyContract enviada pelo CRM.
•    Envia para cada produto contido na mensagem ApplyContract, uma mensagem de provisionamento do tipo ProvisionApp para a exchange Provisioning.Contract.Output com o header appCode = <código do produto no Fluig> que deve ser recebida pelo serviço de provisionamento do app para execução das suas tarefas de provisionamento.

As mensagens com o appCode = “transmite” no header são enviadas para a fila ProvisionAppOutput através do Bind configurado na Exchange Provisioning.Contract.Output
Essas mensagens são consumidas pelo worker de provisionamento do Transmite (microserviços customer_provisioning), que registra o provisionamento na base de dados (Collection Provision) e envia uma resposta para o Message Broker com uma mensagem ProvisionAccepted.

Ao incluir o registro na base são definidos alguns status para o provisionamento no Fluig, Rac e Transmite:
•    FluigStatus = 1 (Finalizado)
•    RacStatus = 0 (Aguardando)
•    ProvisioningTransmitStatus = 0 (Aguardando)

Em seguida o worker solicta o provisionamento do RAC, enviando a mensagem RacProvisioning para a Exchange Provisioning.RAC.Input e fica aguardando o retorno.

Quando concluído o provisionamento no RAC, a aplicação recebe a mensagem RacProvisioningCompleted e atualiza o registro de provisionamento na base de dados com a resposta do RAC. Nesse momento também atualiza a flag RacStatus para (2 = finalizado).

Ao identificar registros com as flags FluigStatus e RacStatus finalizados na collection de provisionamento (Provision), o worker cadastra o cliente no Transmite (Collection Customers) e envia o e-mail de boas-vindas.

Por fim atualiza a flag ProvisioningTransmitStatus para 1 (Finalizado).

A cada interação com o Message Broker a aplicação envia mensagens para o Monitor de Provisionamento do TotvsApps, registrando os logs no painel de provisionamentos. 

03.1. Mensageria - Sequência de tarefas

SequênciaMensagem RecebidaExchangeFilaAçãoMensagem EnviadaExchange
1ProvisionAppProvisioning.Contract.OutputProvisionAppOutputRegitra provisionamento na base do TransmiteProvisionAcceptedProvisioning.Contract.Input
2N/AN/AN/APublica mensagem ProvisioningStarted no MonitorPrvisioningStartedProvisioning.Monitor.Input
3N/AN/AN/AEnvia mensagem solicitando o provisionamento no RACRacProvisioningProvisioning.RAC.Input
4RacProvsioningCompletedProvisioning.RAC.OutputRacProvisioningOutputAtualiza o registro de provisionamento na base com o retorno do RACN/AN/A
5N/AN/AN/APublica mensagem RacCompleted no MonitorRacCompletedProvisioning.Monitor.Input
6N/AN/AN/ACadastra o Customer na base do Transmite e envia e-mail de boas-vindasAppProvisioningCompletedProvisioning.Contract.Input
7N/AN/AN/APublica mensagem ProvisioningCompleted no MonitorProvisioningCompletedProvisioning.Monitor.Input

03.2. Fluxo Provisionamento

03.3. Simulador de Provisionamentos

O Message Broker do TotvsApps fornece uma API para simular o envio da mensagem do tipo ApplyContract que dá início ao provisionamento.  Segue abaixo o link por ambiente:

Para enviar a mensagem é necessário ter acesso ao RAC para gerar o token de autenticação. Segue abaixo um exemplo da requisição para gerar o token, que pode ser utilizada via Postman, por exemplo:

curl --location --request POST 'https://admin.rac.dev.totvs.io/totvs.rac/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'client_id=transmite-ro' \
--data-urlencode 'client_secret=*****' \
--data-urlencode 'scope=authorization_api' \
--data-urlencode 'username=username@totvs.com.br' \
--data-urlencode 'password=*******' \
--data-urlencode 'acr_values=tenant:totvs'

Ao acessar o simulador de provisionamentos (Swagger), localize a requisição POST para envio da mensagem e execute os passos abaixo:

    • Clique no link do cadeado e insira o Token gerado no RAC
    • Clique no botão "Try it out" e insira a mensagem (json) que será enviado pra o simulador.

Exemplo do Json (Payload) para simular o provisionamento:

Observação: A chave "appCode" do array "apps" deve conter o valor "transmite" para que possa ser endereçada para a fila do worker de provisionamento.

O objeto "data" do array "apps" é livre para enviar informações específicas do provisionamento de cada aplicação. Para que possam ser recebidas automaticamente no ambiente de produção, é necessário contactar a equipe do HL Cloud e acordar o envio das informações específicas do app.

{
    "exchange": "Provisioning.Contract.Input",
    "headers": {
        "element": "Provisioning.Simulator"
    },
    "message": {
        "type": "ApplyContract",
        "transactionId": "298e848c-9a39-47a3-a348-22fb5c61b982",
        "data": {
            "adminEmail": "adminEmail@dominio.com.br",
            "adminName": "Admin Name",
            "totvsCode": "T298e848c",
            "tenantName": "Test tenant (removeable) Transmite",
            "cnpj": "16391605000190",
            "phoneNumber": "11999999999",
            "contractId": "123",
            "contractReview": "1234",
            "apps": [
                {
                    "appCode": "transmite",
                    "data": {
                    }
                }
            ]
        }
    }
}

Após enviada a mensagem, utilize o Painel de Provisionamentos para acompanhar o andamento.

04. DEMAIS INFORMAÇÕES

Documentação Message Broker TotvsApps

Documentação Painel de Provisionamentos TotvsApps

Links Painel de Provisionamentos

     

05. ASSUNTOS RELACIONADOS

  • Não há