Migração de cliente Local para GoGlobal - Nuvem
Realizar backup das seguintes bases antes de iniciar
Base de dados do cliente, pode ser a de produção ou de homologação dependendo do que a Gestora solicitou.
Base Auth_Legacy_Integration
Arquivos do Storage
A base de dados Auth_Legacy_Integration e os Arquivos do Storage deverão ser disponibilizados a Korp.
Configurar licenciamento do cliente
Configurar aba Configurações de Infraestrutura
Endereço de entrada = https://mobile-cloud.korp.com.br
Configurar aba Unidade Organizacional
Adicionar ambiente de Produção e Homologação
Apontar para o database de Produção e Homologação do Cliente
Ligar a VM com o nome
SQLManager.Acessa o painel da Oracle Cloud.
Localizar a instância
SQLManagere garantir que está ligada.Verificar a coluna de Public IP pois essa VM está com IP externo não fixo.
ATENÇÃO Essa VM deve ser desligada logo após o procedimento ser finalizado. Não utilizar o Windows para desligar, fazer pelo console da Oracle.
Pegar backup da base do cliente
Exportar um backup (.bak) do database do cliente
Copiar o backup para o servidor
SQLManager.Se o backup for de produção: Copiar o backup para a pasta compartilhada
\\172.30.0.9\backup. Essa pasta é a/opt/sql-backup/do SQLServer-PRD.Se o backup for de homologação: Copiar o backup para a pasta compartilhada
\\172.30.0.8\backupdb. Essa pasta é a/opt/sql-backup/do SQL Server.Após criar os databases nos passos abaixo, apagar o .bak
Restaurar a base do cliente
Se o backup for de produção: Criar base PRD no servidor SQLServer-PRD, com as seguintes configurações
Recovery model - full
Compatiblity level - máxima
Se o backup for de homologação: Criar base HMLG no servidor SQLServer, com as seguintes configurações
Recovery model - simple
Compatiblity level - máxima
Adicionar o database na linha abaixo, e depois executar o script. O script deve ser rodado no servidor de produção e também de homologação, trocando o nome da base.
USE [master] IF OBJECT_ID('tempdb..#dbs') IS NOT NULL TRUNCATE TABLE #dbs else DECLARE @dbs TABLE (name VARCHAR(MAX)) -- colocar as bases aqui, exemplo: -- INSERT INTO @dbs VALUES ('CLIENTE_PRD') INSERT INTO @dbs VALUES ('') DECLARE @nomedb VARCHAR(MAX) DECLARE @comando VARCHAR(MAX) DECLARE @usuario VARCHAR(MAX) DECLARE @owner VARCHAR(MAX) IF OBJECT_ID('tempdb..#usuarios') IS NOT NULL TRUNCATE TABLE #usuarios else DECLARE @usuarios TABLE (usuario VARCHAR(MAX), owner VARCHAR(MAX)) INSERT INTO @usuarios VALUES ('Octopus', 'T'), ('KorpServices', 'T'), ('KorpReporting', 'F'), ('KorpScheduler', 'T') DECLARE cursor_databases CURSOR FOR SELECT [name] FROM @dbs OPEN cursor_databases FETCH NEXT FROM cursor_databases INTO @nomedb WHILE @@FETCH_STATUS = 0 BEGIN DECLARE cursor_usuarios CURSOR FOR SELECT [usuario], [owner] FROM @usuarios OPEN cursor_usuarios FETCH NEXT FROM cursor_usuarios INTO @usuario, @owner WHILE @@FETCH_STATUS = 0 BEGIN set @comando = ' use ['+@nomedb+'] DROP USER IF EXISTS ['+@usuario+'] CREATE USER ['+@usuario+'] FOR LOGIN ['+@usuario+'] ALTER USER ['+@usuario+'] WITH DEFAULT_SCHEMA=[dbo] IF '''+@owner+''' = ''T'' ALTER ROLE [db_owner] ADD MEMBER ['+@usuario+'] ELSE ALTER ROLE [db_datareader] ADD MEMBER ['+@usuario+'] ' exec (@comando) --print @comando FETCH NEXT FROM cursor_usuarios INTO @usuario, @owner END CLOSE cursor_usuarios DEALLOCATE cursor_usuarios FETCH NEXT FROM cursor_databases INTO @nomedb END CLOSE cursor_databases DEALLOCATE cursor_databases
Na base do cliente, configurar os seguintes parâmetros
SET NOCOUNT ON USE [CLIENTE_PRD] -- Configuração TenantId declare @tenantid varchar(max) declare @cnpj varchar(max) set @tenantid = '' -- PRECISA estar com pontuação set @cnpj = '00.000.000/0000-00' if (ISNULL(@tenantid, '') = '') or (ISNULL(@cnpj, '') = '') or (ISNULL(@cnpj, '') = '00.000.000/0000-00') begin RAISERROR('ATENÇÃO!!! Configurar as variáveis TenantId e Cnpj do Cliente', 16, 1) end else begin UPDATE EMPRESA SET IsDeleted = 0, TenantId = @tenantid, CreationTime = GETUTCDATE() UPDATE PARAMETROS set VALOR = 'F' where CHAVE = 'UseLegacyAuthMode' if ((select count(*) from EMPRESA) = 1) begin UPDATE EMPRESA SET CGC = @cnpj end else begin print 'ATENÇÃO!! Existe mais que uma empresa cadastrada e portanto não atualizaremos o CNPJ' end IF not exists(select valor from parametros where secao = 'REST' and chave = 'TenantId') begin insert into parametros (secao, chave, valor) values ('REST', 'TenantId', @tenantid) end else begin update parametros set valor = @tenantid where secao = 'REST' and chave = 'TenantId' end end -- Configuração autenticação IF not exists(select valor from parametros where secao = 'OCTOPUS' and chave = 'UseLegacyAuthMode') begin insert into parametros (secao, chave, valor) values ('OCTOPUS', 'UseLegacyAuthMode', 'F') end else begin update parametros set valor = 'F' where secao = 'OCTOPUS' and chave = 'UseLegacyAuthMode' end -- Configuração envio de e-mail declare @url_email varchar(max) declare @valor_parametro_atual varchar(max) set @url_email = 'https://api-erp.korp.com.br/' select @valor_parametro_atual = valor from parametros where secao = 'REST' and chave = 'Email' IF ISNULL(@valor_parametro_atual, '') = '' begin insert into parametros (secao, chave, valor) values ('REST', 'Email', @url_email) end else if (@valor_parametro_atual != @url_email) begin RAISERROR('O valor do parâmetro de email está diferente do esperado. Valor atual %s, valor esperado %s', 16, 1, @valor_parametro_atual, @url_email) --delete from parametros where secao = 'REST' and chave = 'Email' end -- Configuração TEF declare @caminho_tef_parametro_atual varchar(max) declare @caminho_tef varchar(max) set @caminho_tef = CONCAT('\\172.30.1.3\tef\', DB_NAME(), '\') select @caminho_tef_parametro_atual = valor from parametros where secao = 'Faturamento' and chave = 'DiretorioTrabalhoTef' IF ISNULL(@caminho_tef_parametro_atual, '') = '' begin insert into parametros (secao, chave, valor) values ('Faturamento', 'DiretorioTrabalhoTef', @caminho_tef) end else begin update parametros set valor = @caminho_tef where secao = 'Faturamento' and chave = 'DiretorioTrabalhoTef' end
Configurar LegacyMode
use [Viasoft_TenantManagement] declare @tenantid varchar(max) set @tenantid = '' if (ISNULL(@tenantid, '') = '') begin RAISERROR('ATENÇÃO!!! Configurar a variável TenantId do Cliente', 16, 1) end else begin update Tenant set LegacyModeEnabled = 1 where Id = @tenantid end
Adicionar base ao config.json dos Serviços Delphi
Acessar o servidor Services,
Adicionar os novos databases aos config.json da pasta C:\ProgramData\Korp\{VERSÃO}\Services\, adicionando-os na versão instalada em diante.
Se existir serviços em versões maiores que a base sendo criada, será necessário adicionar as bases em ambos os config.json.
Reiniciar todos os serviços Delphi das versões alteradas. !! SÓ PODE SER FEITO APÓS AS 22 HORAS !!
A partir do backup da base
Auth_Legacy_Integrationdo cliente, gerar script de inserção das tabelasapplication_userseuser_tenants. Esse script pode ser gerado pela opção Tasks -> Generate Scripts… do SSMS. Executar na baseAuth_Legacy_Integrationdo servidor 172.30.0.8.Configurar TenantId no script abaixo, e executar no servidor 172.30.0.8
USE [Auth_Legacy_Integration] GO DECLARE @TENANTID VARCHAR(MAX) SET @TENANTID = '' if (ISNULL(@tenantid, '') = '') begin RAISERROR('ATENÇÃO!!! Configurar a variável TenantId do Cliente', 16, 1) end else begin if not exists (select 1 from [dbo].[seed_histories] where [tenant_id] = @tenantid) begin INSERT INTO [dbo].[seed_histories] ([start_time] ,[end_time] ,[is_running] ,[forced_stopped] ,[error_during_seed] ,[problems] ,[serialized_errors] ,[tenant_id] ,[database_name]) VALUES (GETUTCDATE() ,GETUTCDATE() ,0 ,0 ,0 ,'' ,'' ,@tenantid ,NULL) end end GO
Adicionar Korp IAC
No repositório https://bitbucket.org/viasoftkorp/korp-iac/, navegar até a pasta /Oracle/Services/configs/. Depois de realizar as alterações abaixo, precisa subir um pull request
No arquivo LicenseServerSettings.json adicionar o seguinte JSON a propriedade TenantLegacyDatabaseMapping
{ "TenantId": "", "LicensedDatabases": [ "" ] }
No servidor 168.138.251.22 - (services no portainer), pegar o arquivo LicenseServerSettings.json e fazer o replace em /home/korp/configs/
Reiniciar o container viasoft.licenseserver-desktop em 168.138.251.22 - (services no portainer)
Ver nos logs se não há nenhum erro no console do serviço (dar um f5 na tela de containers do portainer pra ver se o container não parou logo depois)
Configurar connection strings
Acessar AWX e executar template ‘Nova Empresa Nuvem’
Validar que job foi executado com sucesso