Como preparar sua instância do ServiceNow

Antes de instalar o conector Snowflake para ServiceNow, você deve configurar sua instância do ServiceNow.

Complete as seguintes etapas para configurar sua instância do ServiceNow:

  1. Certifique-se de que a instância do ServiceNow esteja disponível ao público. O conector não funciona com instâncias escondidas atrás de um VPN.

  2. Identifique as tabelas do ServiceNow que contêm os dados que você planeja ingerir no Snowflake.

  3. Identifique ou crie o usuário ServiceNow para o conector.

    Para se conectar à instância do ServiceNow, o conector deve se autenticar na instância como um usuário ServiceNow. Escolha um usuário ServiceNow que atenda aos seguintes requisitos:

    • O nome de usuário não pode conter dois pontos (:).

    • O usuário deve ter acesso de leitura a todos os registros das tabelas ServiceNow que você planeja ingerir. As listas de controle de acesso (ACLs) não devem esconder nenhum registro nestas tabelas deste usuário.

    • O usuário deve ter acesso de leitura a todas as linhas nas tabelas sys_db_object (com os campos name, super_class, sys_id), sys_glide_object (com os campos name, scalar_type, sys_id) e sys_dictionary (com os campos element, internal_type, name, sys_id) para ativar a detecção de esquema.

    • O usuário deve ter acesso de leitura a todas as linhas na tabela sys_table_rotation (com os campos name e sys_id), para que o conector possa usar a estratégia de ingestão adequada.

    • O usuário deve ter acesso ao campo sys_updated_on nas tabelas sys_db_object, sys_glide_object, sys_dictionary, sys_table_rotation e tabelas de diário. Caso contrário, as tabelas são carregadas usando um modo de truncamento e ingestão de carga menos econômico.

      Nota

      Configurando a conexão no Snowsight usando a autenticação OAuth para ServiceNow só é possível com usuário interativo. O usuário ServiceNow é interativo se a configuração Web service access only estiver desativada para o usuário.

      Você pode usar a autenticação OAuth com usuários não interativos somente se você configurar a conexão com comandos SQL. Nesse caso, você não pode fazer login no ServiceNow ou obter o token de atualização OAuth usando o Snowsight.

  4. Se você planeja ingerir e sincronizar uma tabela ServiceNow que tenha uma coluna sys_updated_on, configure um índice nessa coluna. Para obter mais informações sobre a criação dos índices, consulte a documentação Criar um índice de tabela na documentação ServiceNow.

    Depois de criar o índice através da interface do usuário, pode levar tempo para que o índice seja construído. O processo de indexação é executado como uma tarefa de fundo.

    Se sua instância tiver tabelas grandes, a Snowflake recomenda entrar em contato com o suporte ao cliente do ServiceNow para perguntar sobre a melhor abordagem de indexação de tabelas grandes.

  5. (Opcional) Se você planeja usar o método de autenticação OAuth, e você tiver a função somente leitura atribuída ao seu usuário ServiceNow, certifique-se de que a propriedade do sistema glide.security.snc_read_only_role.tables.exempt_create tenha a tabela oauth_credential em sua lista de valores.

    Crie ou edite a propriedade glide.security.snc_read_only_role.tables.exempt_create na tabela sys_properties. Para obter mais detalhes sobre como editar esta propriedade, consulte a Base de conhecimento do ServiceNow.

    Para saber como adicionar uma nova propriedade do sistema, consulte Adicionar uma propriedade do sistema na documentação do ServiceNow.

  6. (Opcional) Alguns procedimentos do conector que não são essenciais para a funcionalidade principal usam o ponto de extremidade do ServiceNow <instância_service_now>/<nome_da_tabela>.do?SCHEMA para recuperar esquemas de tabela. Este ponto de extremidade requer a função admin. Para obter mais informações sobre essa função, consulte Funções básicas do sistema na documentação do ServiceNow. Configurar o conector com um usuário sem essa função impedirá a execução de procedimentos baseados nesse ponto de extremidade. Os procedimentos afetados possuem notas apropriadas em relação a este requisito.

  7. (Opcional) Para permitir a propagação de registros excluídos, use a tabela sys_audit_delete ou uma tabela de diário personalizada como fonte de informações sobre registros excluídos.

    Nota

    Observe que o conector deve ter acesso a todos os registros da tabela de diário ou a instalação poderá falhar. Caso contrário, as exclusões de registros em outras tabelas poderão não estar corretas.

    Se as linhas da tabela de diário estiverem ocultas por ACLs, o comportamento do conector será imprevisível. Mesmo que a instalação seja bem-sucedida, algumas exclusões podem não ser sincronizadas corretamente em momentos posteriores do processo.

    • Para usar sys_audit_delete:

      1. Defina o no_audit_delete atributo de dicionário como false.

      2. Certifique-se de que o usuário do ServiceNow para o conector tenha acesso à tabela sys_audit_delete e aos campos documentkey, tablename, sys_id e sys_created_on nesta tabela.

    • Para usar uma tabela de diário personalizada:

      1. Crie uma tabela de diário com o nome snowflake_connector_journal e colunas de cadeia de caracteres com o nome documentkey e tablename.

      2. Certifique-se de que o usuário do ServiceNow para o conector tenha acesso à tabela snowflake_connector_journal e aos campos u_documentkey, u_tablename, sys_id, sys_created_on nesta tabela.

      3. Crie um script include chamado RecordChange com o seguinte código:

        var RecordChange = Class.create();
        
        RecordChange.prototype= {
          initialize :function() {},
          captureChange :function(tableName, docID) {
            var changeCapture = new GlideRecord('u_snowflake_connector_journal');
            changeCapture.initialize();
            changeCapture.setValue('u_documentkey', docID);
            changeCapture.setValue('u_tablename', tableName);
            changeCapture.insert();
          },
          type :'RecordChange'
        };
        
        Copy
      4. Defina uma regra comercial para capturar a eliminação do registro:

        (function executeRule(current, previous /*null when async*/) {
            new RecordChange().captureChange(current.getTableName(), current.getUniqueValue());
        })(current, previous);
        
        Copy
      5. Para cada tabela para a qual você deseja propagar registros excluídos, configure esta regra comercial para ser executada depois que um registro for excluído.

Nota

O conector só poderá sincronizar registros excluídos se eles forem auditados. As operações de exclusão que não chamam DBDelete.setWorkflow() não são ingeridas no Snowflake.

Consulte a documentação do produto ServiceNow para obter mais informações sobre o uso do DBDelete.setWorkflow().

Além disso, observe o seguinte sobre registros excluídos:

  • As exclusões de registros não são rastreadas para tabelas com o atributo de dicionário no_audit_delete=true.

  • As exclusões de registros de tabelas com o prefixo sys não são rastreadas por padrão.

  • O conector só poderá ingerir registros excluídos com a exclusão de registros em cascata se o campo de referência estiver em uma tabela auditada. Consulte a documentação do produto ServiceNow para obter mais informações sobre a exclusão de registros em cascata.

Após completar estes procedimentos, siga os passos em Instalação e configuração do conector com Snowsight ou Instalação e configuração do conector usando comandos SQL.