Seu template de dados de processamento da folha
Seu template de dados de processamento da folha
- Campos de dados otimizados para análise de folha de pagamento
- Rastreamento completo de atividades para mapeamento do ciclo de vida
- Guia detalhado de extração para Oracle HCM Cloud Payroll
Atributos de processamento da folha
| Nome | Descrição | ||
|---|---|---|---|
| Event Timestamp EventTimestamp | A data e hora exatas em que a atividade ocorreu. | ||
| Descrição Registra o momento exato em que uma atividade ocorreu. Isso é fundamental para calcular durações, lead times e identificar gargalos. Para etapas automáticas, é o tempo de execução do sistema. Para etapas manuais, como aprovações, é o registro de data e hora da ação do usuário no log de transações. Por que é importante Essencial para ordenar eventos cronologicamente e calcular todos os KPIs baseados em tempo. Onde obter Colunas CREATION_DATE ou ACTION_DATE em tabelas de transação relevantes, como PAY_ACTION_INFORMATION. Exemplos 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Nome da Atividade ActivityName | A etapa ou evento específico realizado no ciclo da folha. | ||
| Descrição Este atributo captura o nome do evento no processo da folha. Exemplos incluem 'Cartão de Ponto Enviado', 'Cálculo da Folha Iniciado' e 'Pagamento Executado'. É a dimensão principal para descoberta de processos e análise de variantes. No Oracle HCM Cloud, costuma ser derivado do Action Type ou Action Status nas tabelas de ação da folha. Por que é importante Isso define o 'quê' do processo, permitindo a reconstrução do mapa de processos. Onde obter Derivado do código ACTION_TYPE em PAY_PAYROLL_ACTIONS ou mudanças de status em trilhas de auditoria. Exemplos Cálculo da folha iniciadoCartão de ponto aprovadoTransferência Bancária GeradaExceção de Auditoria Sinalizada | |||
| Registro da folha PayrollRecord | Identificador ùnico que representa um colaborador em um período de pagamento específico. | ||
| Descrição O Registro da Folha atua como o identificador central (Case ID) para a análise de Process Mining. É uma chave ùnica que combina o Identificador de Atribuição do Colaborador e o Identificador do Período da Folha. Este atributo agrupa todas as atividades relacionadas ao pagamento de um ùnico funcionário em um ciclo específico, desde o envio do ponto até a transferância bancária e a entrega fiscal. Isso garante que a análise diferencie o pagamento do mesmo colaborador entre janeiro e fevereiro. Por que é importante Serve como o Case ID, vinculando todos os eventos distintos em uma única instância de processo para análise. Onde obter Construído a partir de PAY_ASSIGNMENT_ACTIONS ou uma combinação de Person Number e Payroll Period Name no Oracle HCM. Exemplos EMP1001-2023-M01EMP5992-2023-W42300000018273645BR-SP-A123-JAN23 | |||
| Sistema de Origem SourceSystem | O nome do sistema onde o evento se originou. | ||
| Descrição Identifica o software ou módulo que gerou o ponto de dado. O valor principal aqui é 'Oracle HCM Cloud Payroll'. Em cenários complexos, isso pode distinguir entre o motor principal da folha, o módulo de tempo e trabalho (T&L) ou uma interface bancária externa. Por que é importante Fornece contexto de linhagem, especialmente ao integrar dados de subsistemas de ponto ou bancários. Onde obter Codificado durante a extração ou derivado de IDs de interface. Exemplos Folha de Pagamento do Oracle HCM CloudOracle Time and LaborInterface Bancária Externa | |||
| Última Atualização de Dados LastDataUpdate | O timestamp de quando o registro foi modificado pela ùltima vez no banco de dados de origem. | ||
| Descrição Indica a atualização dos dados usados. Diferente do Event Timestamp, reflete quando a linha no banco foi alterada por um processo de ETL ou atualização de sistema. Usado para verificar a atualidade dos dados e depurar problemas de latência de extração. Por que é importante Garante que os analistas saibam se estão vendo dados em tempo real ou obsoletos. Onde obter Coluna LAST_UPDATE_DATE comum em quase todas as tabelas do Oracle HCM. Exemplos 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| Duração do processo em dias ProcessDurationDays | Tempo total desde a inicialização até o pagamento. | ||
| Descrição A duração calculada entre a primeira atividade e a atividade 'Pagamento Executado'. Usada para o dashboard de 'Tempo de Ciclo da Folha de Ponta a Ponta'. Esta métrica serve como um diagnóstico de alto nível sobre a agilidade da área de folha de pagamento. Por que é importante KPI de alto nível para eficiência do processo. Onde obter Calculado: Timestamp(Pagamento Executado) - Timestamp(Início). Exemplos 3.55.00.5 | |||
| É Correção Manual IsManualCorrection | Flag indicando se a atividade envolveu intervenção manual. | ||
| Descrição Uma flag booleana definida como verdadeira para atividades como 'Data Correction Performed' ou 'Payroll Record Corrected'. É usada para calcular os KPIs de 'Taxa de Correção Manual de Dados' e 'Taxa de Precisão da Folha de Primeira Passagem'. Por que é importante Diferencia o processamento direto (straight-through) do retrabalho manual. Onde obter Derivado do Nome da Atividade ou tipos específicos de ação indicando ajustes (ex: QuickPay, Ajuste de Saldo). Exemplos verdadeirofalse | |||
| Grupo de pagamento PayGroup | Agrupamento lógico de colaboradores para o processamento da folha. | ||
| Descrição Representa a definição específica da folha à qual o colaborador pertence (ex: 'Semanal Fábrica', 'Mensal Corporativo'). Este atributo é central para quase todos os dashboards, permitindo comparar o desempenho entre diferentes ciclos e frequâncias. Por que é importante O principal objeto de configuração que define o cronograma da folha. Onde obter Tabela PAY_ALL_PAYROLLS_F (Nome da Folha). Exemplos Quinzenal BrasilMensal BrasilSemanal Sindicato | |||
| Legislative Data Group LegislativeDataGroup | Divide os dados da folha por país ou ambiente regulatório. | ||
| Descrição No Oracle HCM Cloud, o Legislative Data Group (LDG) particiona a folha e dados relacionados, geralmente correspondendo a um país ou legislação. Este atributo é vital para filtrar a análise por país (ex: Folha Brasil vs. Folha EUA) e costuma ser mapeado para o atributo genérico de País. Por que é importante Regras de conformidade e fluxos de processo costumam variar muito conforme a jurisdição. Onde obter Tabela PAY_ALL_PAYROLLS_F vinculada às definições do Legislative Data Group. Exemplos Brasil Legislative Data GroupBrasil LDGFolha de Pagamento França | |||
| Nome do Departamento DepartmentName | A unidade organizacional onde o colaborador trabalha. | ||
| Descrição Identifica o departamento responsável pelo funcionário. É crucial para o Dashboard de 'Eficiência de Aprovação de Folha de Ponto'. Ao segmentar por departamento, os analistas identificam quais unidades de negócio atrasam sistematicamente na aprovação, prejudicando toda a execução da folha. Por que é importante Permite a análise de causa raiz de atrasos relacionados a aprovações da gerência. Onde obter Derivado do registro de atribuição do funcionário vigente no momento da execução da folha. Exemplos Vendas América do NorteEngenhariaRecursos HumanosLogstica | |||
| Nome do período da folha PayrollPeriodName | O nome específico do intervalo de tempo para a execução da folha. | ||
| Descrição Identifica o ciclo específico, como 'Mensal Janeiro 2024' ou 'Semanal Período 42'. Essencial para o 'Monitor de Conformidade de Prazos SLA'. Ajuda a agrupar casos individuais de funcionários em seus respectivos lotes de execução para relatórios agregados. Por que é importante Fundamental para análise em nível de lote e rastreamento de SLA. Onde obter Tabela PAY_TIME_PERIODS ou Nome do Período na Definição da Folha. Exemplos 2023 Mensal 102023 Semanal 42Execução de Bônus Dez 2023 | |||
| Prazo de processamento do SLA SlaProcessingDeadline | A data/hora limite em que o pagamento deve ser executado. | ||
| Descrição Armazena o prazo contratual ou legal para o desembolso da folha. Este atributo é comparado com o timestamp de 'Pagamento Executado'. É usado para calcular o KPI de 'Adesão ao Prazo de Processamento do SLA' e identificar grupos de pagamento em risco. Por que é importante O principal benchmark para o sucesso ou falha do processo em relação à pontualidade. Onde obter Geralmente um campo configurado (DFF) na Definição da Folha ou derivado da Data do Cheque menos X dias. Exemplos 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| Usuário de processamento ProcessingUser | O ID ou nome do usuário que realiza a atividade. | ||
| Descrição Captura a identidade do especialista de folha, gestor ou conta de sistema que disparou a atividade. Alimenta o Dashboard de 'Distribuição de Carga de Trabalho dos Especialistas'. Ajuda a identificar gargalos de recursos e necessidades de treinamento na equipe de folha. Por que é importante Permite análise de produtividade de recursos e balanceamento de carga de trabalho. Onde obter Colunas CREATED_BY ou LAST_UPDATED_BY nas tabelas de transação. Exemplos sysadminj.smithusuario_lote_folham.doe | |||
| Valor do Salário Bruto GrossPayAmount | O salário bruto total calculado para o período. | ||
| Descrição Representa o valor monetário do salário bruto calculado no ciclo. É usado na análise de 'Precisão do Cálculo de Impostos e Benefícios' e 'Integração de Incentivos'. Permite que os analistas correlacionem pagamentos de alto valor com o tempo de processamento ou taxas de erro. Por que é importante Fornece contexto financeiro para a análise de Process Mining. Onde obter Tabela PAY_RUN_RESULT_VALUES, agregada para o saldo do salário bruto. Exemplos 5000.002350.5010000,00 | |||
| Contagem de iterações de prévia PreviewIterationCount | Número de vezes que os resultados foram pré-visualizados antes da finalização. | ||
| Descrição Um contador que incrementa cada vez que uma atividade de 'Payroll Result Previewed' ocorre para o mesmo case. Esta é a medida direta para o Dashboard 'Rastreador de Iterações de Pré-visualização da Folha', indicando a quantidade de retrabalho ou hesitação antes da aprovação. Por que é importante Quantifica a eficiância da fase de validação. Onde obter Calculado durante a transformação dos dados contando ocorrências de atividades específicas por Case ID. Exemplos 1350 | |||
| Indicador de mudança retroativa RetroactiveChangeFlag | Indica se a execução da folha inclui pagamentos retroativos. | ||
| Descrição Um indicador booleano que é verdadeiro se elementos de 'Retropay' forem processados neste registro. Isso ajuda a explicar tempos de processamento mais longos ou exceções de auditoria no 'Comparativo de Variantes do Caminho do Processo'. Mudanças retroativas geralmente disparam recálculos complexos que abrangem períodos anteriores. Por que é importante Identifica casos complexos que naturalmente exigem mais tempo de processamento. Onde obter Presença de rubricas de 'Retropay' em PAY_ELEMENT_ENTRIES. Exemplos verdadeirofalse | |||
| Jurisdição fiscal TaxJurisdiction | O estado, província ou localidade específica para entrega fiscal. | ||
| Descrição Indica a autoridade fiscal primária relacionada (ex: 'SP' para São Paulo, 'RJ' para Rio de Janeiro). Alimenta o Dashboard de 'Duração do Processamento de Conformidade Fiscal'. Ajuda a identificar se regiões específicas possuem processos de cálculo e envio fiscal mais complexos ou lentos. Por que é importante Segmenta o desempenho por complexidade regulatória. Onde obter Derivado do cartão de impostos ou endereços de local de trabalho do funcionário. Exemplos CA-CalifórniaSP-São PauloRJ-Rio de JaneiroFederal-EUA | |||
| Status do SLA SlaStatus | Status categórico de adesão ao SLA (Cumprido/Perdido). | ||
| Descrição Derivado da comparação do timestamp de 'Pagamento Executado' com o 'Prazo de Processamento SLA'. Os valores podem incluir 'No Prazo', 'Em Risco' ou 'Violado'. Isso simplifica o relatório do 'Monitor de Conformidade de Prazo SLA' ao agrupar os cases em buckets de desempenho. Por que é importante Simplifica comparações temporais complexas em categorias práticas. Onde obter Lógica calculada comparando o Event Timestamp com o Prazo do SLA. Exemplos AtingidoVioladoPróximo ao limite | |||
| Tipo de colaborador EmployeeType | Categorização do colaborador (ex: Assalariado, Horista, Terceirizado). | ||
| Descrição Classifica o registro do funcionário. É vital para o Dashboard de 'Atraso na Publicação de Holerite Digital', pois diferentes tipos de funcionários podem ter regras ou urgências distintas. Ajuda a filtrar análises para comparar o desempenho entre diferentes segmentos da força de trabalho. Por que é importante Diferentes tipos de funcionários geralmente seguem variantes de processo distintas. Onde obter Categoria de atribuição ou termos de emprego em PER_ALL_ASSIGNMENTS_M. Exemplos Assalariado em Tempo IntegralHorista de meio períodoTerceirizadoExecutivo | |||
| Tipo de Exceção de Auditoria AuditExceptionType | A categoria de erro ou aviso sinalizada durante a auditoria. | ||
| Descrição Categoriza o problema específico encontrado durante a atividade 'Audit Exception Flagged' (ex: 'Salário Líquido Negativo', 'Falta de ID Fiscal'). Suporta o Dashboard de 'Análise de Exceções e Correções de Auditoria' ao identificar problemas comuns de qualidade de dados. Por que é importante Crítico para a análise de causa raiz de loops de retrabalho. Onde obter Colunas de Mensagem ou Código de Erro nos logs de processo ou relatórios de exceção da folha. Exemplos Salário líquido negativoCPF ausenteDados Bancários InválidosLimite de hora extra excedido | |||
Atividades de processamento da folha
| Atividade | Descrição | ||
|---|---|---|---|
| Adiantamentos calculados | A execução do processo de Adiantamentos, que distribui o salário líquido para os métodos de pagamento escolhidos. Isso valida se os valores podem de fato ser pagos. | ||
| Por que é importante A ponte entre o cálculo e o desembolso. Falhas aqui geralmente indicam dados bancários ausentes ou métodos de pagamento inválidos. Onde obter Consulte PAY_PAYROLL_ACTIONS onde ACTION_TYPE é P (Adiantamentos) e o status é Concluído. Captura Registrado quando a ação de adiantamentos é concluída Tipo de evento explicit | |||
| Cálculo da folha executado | A conclusão com sucesso do processo de Cálculo da Folha, incluindo os cálculos de bruto para líquido. Indica que ganhos, descontos e impostos foram computados. | ||
| Por que é importante Um marco importante indicando que os dados estão prontos para validação. Durações elevadas aqui podem indicar problemas de desempenho do sistema ou fast formulas complexas. Onde obter Consulte PAY_PAYROLL_REL_ACTIONS vinculando a PAY_PAYROLL_ACTIONS onde ACTION_TYPE é R ou Q e ACTION_STATUS muda para C (Concluído). Captura Registrado quando o status da ação de Execução da Folha é atualizado para Concluído Tipo de evento explicit | |||
| Cálculo da folha iniciado | O início do processo principal de execução da folha para uma definição e período específicos. Marca a transição da coleta de dados para o processamento. | ||
| Por que é importante Estabelece o início da janela de processamento intenso. Usado para calcular o tempo total de ciclo da execução técnica da folha. Onde obter Consulte a tabela PAY_PAYROLL_ACTIONS onde ACTION_TYPE é R (Execução) ou Q (QuickPay) e ACTION_STATUS está marcado como iniciado. Captura Registrado quando um registro é inserido em PAY_PAYROLL_ACTIONS Tipo de evento explicit | |||
| Pagamento Executado | A confirmação final de que o pagamento foi processado. No Oracle, isso se correlaciona com a conclusão do fluxo de pagamento ou conciliação no Cash Management. | ||
| Por que é importante O timestamp principal para conformidade com o SLA. Usado para determinar se os colaboradores foram pagos em dia. Onde obter Pode ser inferido a partir da Data de Vigência da ação de Transferência Bancária, ou explicitamente via logs de reconciliação do Cash Management (CE_STATEMENT_LINES). Captura Registrado via data de vigência da ação de pagamento ou evento de reconciliação Tipo de evento explicit | |||
| Transferência Bancária Gerada | A geração do arquivo EFT ou saída de pagamento similar. É a etapa técnica de criar o arquivo de instrução para o banco. | ||
| Por que é importante Mede o tempo de ciclo da geração do arquivo de pagamento. Atrasos aqui podem causar a perda de prazos bancários. Onde obter Consulte PAY_PAYROLL_ACTIONS onde ACTION_TYPE é M (Fita Magnética), E (EFT) ou C (Emissão de Cheque). Captura Registrado quando a ação de EFT/Cheque é concluída Tipo de evento explicit | |||
| Cartão de ponto aprovado | A confirmação de que os dados de tempo enviados foram revisados e autorizados por um gestor. Essa mudança de status dispara a transferância de dados para as rubricas da folha. | ||
| Por que é importante Crítico para medir o Lead Time de Aprovação do Gestor. Atrasos aqui são a causa principal de ajustes retroativos em períodos subsequentes. Onde obter Consulte a tabela HWM_TM_REC_GRP_DTLS ou a view HXT_TIMECARDS onde o status muda para APROVADO. Compare o timestamp de aprovação com o de envio. Captura Registrado quando o status muda para APROVADO no Time and Labor Tipo de evento explicit | |||
| Cartão de ponto enviado | O evento inicial onde um colaborador ou gestor envia dados de ponto para processamento. No Oracle HCM, isso ocorre quando o status do cartão de ponto muda para 'Enviado'. | ||
| Por que é importante Marca a entrada de dados brutos no pipeline da folha. Atrasos aqui geram um efeito cascata, reduzindo o tempo para os especialistas validarem os cálculos. Onde obter Consulte a tabela HWM_TM_REC_GRP_DTLS ou a view HXT_TIMECARDS onde o status muda para ENVIADO. Use o timestamp de envio. Captura Registrado quando o status muda para ENVIADO no Time and Labor Tipo de evento explicit | |||
| Custos Transferidos | A transferância dos resultados de custos da folha para o Livro Razão (GL). Representa o fechamento contábil do ciclo da folha. | ||
| Por que é importante Garante a conformidade financeira e a contabilização precisa dos custos de mão de obra. Atrasos impedem o fechamento contábil. Onde obter Consulte PAY_PAYROLL_ACTIONS onde ACTION_TYPE é T (Transferância para o GL) e o status é Concluído. Captura Registrado quando o processo de transferância para o GL é concluído Tipo de evento explicit | |||
| Dados de Incentivo Importados | A criação de rubricas para remuneração variável, como bônus ou comissões, via carga em lote ou importação HDL. Representa a integração de dados externos na folha. | ||
| Por que é importante Monitora a velocidade de integração da remuneração variável. Importações atrasadas costumam exigir execuções suplementares ou correções manuais. Onde obter Consulte PAY_BATCH_HEADERS para verificar a conclusão da importação ou rastreie a criação de PAY_ELEMENT_ENTRIES_F com uma referância de sistema de origem específica. Captura Registrado quando o processo de entrada de elementos em lote é concluído com sucesso Tipo de evento explicit | |||
| Entrega fiscal concluída | A geração de arquivos fiscais estatutários. Isso garante a conformidade regulatória para o período de pagamento. | ||
| Por que é importante Crítico para o KPI de Duração do Processamento de Conformidade Fiscal. Falhas aqui geram multas. Onde obter Consulte PAY_PAYROLL_ACTIONS para ações específicas de grupos de dados legislativos relacionadas a relatórios fiscais. Captura Registrado quando o fluxo específico de relatório fiscal é concluído Tipo de evento explicit | |||
| Exceção de Auditoria Sinalizada | O registro de uma mensagem de erro ou aviso durante a fase de cálculo ou validação da folha. Captura falhas específicas que exigem intervenção humana. | ||
| Por que é importante Essencial para identificar problemas de qualidade de dados. Um volume alto de exceções aumenta o esforço manual e o risco de quebra de SLA. Onde obter Consulte a tabela PAY_MESSAGE_LINES vinculada ao PAY_PAYROLL_REL_ACTION_ID específico. Esta tabela armazena erros e avisos gerados durante as execuções. Captura Registrado quando um registro é inserido em PAY_MESSAGE_LINES Tipo de evento explicit | |||
| Execução da folha aprovada | A aprovação formal do registro de folha no Dashboard. Geralmente ocorre após a revisão dos relatórios de validação e antes da geração dos arquivos bancários. | ||
| Por que é importante Representa a aprovação gerencial. O tempo entre o cálculo e a aprovação é a janela de verificação. Onde obter Consulte PAY_REQ_FLOW_INSTANCES para mudanças de status ou conclusão de tarefas específicas em um Padrão de Fluxo de Folha. Captura Registrado quando o status da Instância de Fluxo muda para Concluído/Aprovado Tipo de evento explicit | |||
| Holerite publicado | O momento em que o holerite fica visível para o colaborador no Autoatendimento. Isso ocorre após o arquivamento e, possivelmente, após um processo específico de 'Gerar Holerite'. | ||
| Por que é importante Afeta a satisfação dos funcionários. Longos intervalos entre o pagamento e a disponibilidade do holerite geram chamados no suporte. Onde obter Consulte a tabela de Documentos de Registro (HR_DOCUMENTS_OF_RECORD) ou a conclusão do processo de Geração de Holerite em PAY_PAYROLL_ACTIONS. Captura Registrado quando o processo de geração de PDF do holerite é concluído Tipo de evento explicit | |||
| QuickPay executado | A execução de um cálculo de folha individual (QuickPay), geralmente usado para verificar correções. Serve como base para a atividade de Prévia do Resultado da Folha. | ||
| Por que é importante QuickPays frequentes por pessoa indicam uma abordagem de tentativa e erro no processamento da folha, em vez de um Onde obter Consulte PAY_PAYROLL_ACTIONS onde ACTION_TYPE é Q (QuickPay). Conte as instâncias por período de folha por colaborador. Captura Registrado quando uma ação de QuickPay é gravada em PAY_PAYROLL_ACTIONS Tipo de evento explicit | |||
| Registro da folha corrigido | Atualizações manuais aplicadas a entradas de rubricas ou dados de atribuição após uma execução inicial da folha, mas antes da finalização. Esta atividade representa o retrabalho necessário para corrigir erros ou exceções. | ||
| Por que é importante Indica ineficiência de processo e problemas de qualidade de dados. Reduzir esta atividade é fundamental para melhorar a Taxa de Precisão da Folha de Primeira Passagem. Onde obter Inferido ao identificar atualizações em PAY_ELEMENT_ENTRIES_F onde a Data da Última Atualização está entre a data da Execução da Folha inicial e a data de Prepayments. Captura Comparar timestamps de atualização de lançamentos com os de execução da folha Tipo de evento inferred | |||
| Resultados de Arquivamento Gerados | A conclusão do processo de Arquivamento Periódico de Resultados da Folha. Este registro bloqueia os dados para relatórios e geração de holerites. | ||
| Por que é importante Um pré-requisito técnico para gerar holerites e relatórios estatutários. Ele confirma que os dados foram finalizados. Onde obter Consulte PAY_PAYROLL_ACTIONS onde ACTION_TYPE é X (Arquivar) e o status é Concluído. Captura Registrado quando a ação de arquivamento é concluída Tipo de evento explicit | |||
Guias de Extração
Etapas
Acesse o Data Exchange: Faça login no Oracle HCM Cloud com um usuário que possua a role 'Human Capital Management Integration Specialist'. Navegue até My Client Groups > Data Exchange > Extract Definitions.
Crie um Novo Extract: Clique no ícone '+' para criar uma nova extração. Nomeie como 'ProcessMind_Payroll_Extract'. Selecione 'Payroll' como o consumidor e 'HR Archive' como a categoria para garantir acesso aos dados históricos de ações de folha.
Defina Grupos de Dados: Crie um Root Data Group baseado na User Entity
PAY_PAYROLL_REL_UE(Payroll Relationship). Isso ancora a extração ao relacionamento de folha do funcionário. Crie child data groups paraPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEeHWM_MEASURE_DAY_V_UE(para ponto e mão de obra).Configure os Extract Records: Dentro dos grupos de dados, defina registros para achatar os dados hierárquicos. Você deve criar registros específicos para cada tipo de atividade (ex: um registro filtrando eventos de 'Cartão de Ponto', outro para 'Resultados da Execução').
Implemente Lógica SQL via FastFormula ou BIP: Devido à complexidade de transformar dados hierárquicos de folha em um log de eventos linear, a abordagem mais robusta é usar a 'Extract Delivery Option' para chamar um relatório do BI Publisher. Isso permite usar o SQL fornecido na seção 'Query' abaixo como o Data Model, o que é superior à filtragem nativa da interface para criar um log unificado.
Crie o Data Model no BI Publisher: Vá em Tools > Reports and Analytics > Browse Catalog. Crie um novo Data Model. Cole a consulta SQL fornecida abaixo. Defina parâmetros para
bind_start_dateebind_end_date.Vincule o Extract ao BIP: Na aba 'Delivery' da Extract Definition, crie uma opção de entrega. Selecione 'PDF' ou 'XML' como tipo de saída (o ProcessMind prefere CSV, mas você converterá a saída do BIP). Selecione o relatório do BI Publisher criado no passo anterior.
Defina Parâmetros: Na árvore de execução da extração, adicione parâmetros para Start Date e End Date para passar dinamicamente à consulta do BI Publisher.
Valide e envie: Valide a definição da extração para verificar erros. Clique em 'Submit Extract'. Insira os parâmetros (ex: os últimos 90 dias).
Monitore o Processo: Vá em 'View Extract Results'. Aguarde até que o status mude para 'Succeeded'.
Baixe a Saída: Baixe o arquivo XML/CSV gerado. Abra-o para verificar se a estrutura contém as colunas necessárias: PayrollRecord, ActivityName, EventTimestamp, etc.
Formate para o ProcessMind: Se a saída for XML, converta-a para um arquivo CSV plano, garantindo que os cabeçalhos correspondam aos requisitos de 'Atributos a incluir'. Faça o upload do arquivo resultante no ProcessMind.
Configuração
- Modo de Extração: Changes Only vs. Full Extract. Para a carga inicial, utilize Full Extract. Para atualizações diárias, configure 'Changes Only' com base na Data de Última Atualização.
- Legislative Data Group (LDG): É altamente recomendável filtrar por LDG se sua instância suportar múltiplos países, já que as definições de folha variam por legislação.
- Intervalo de Datas: Defina
bind_start_dateebind_end_datepara cobrir pelo menos 3 a 6 meses para que o Process Mining capture os tempos de ciclo completos. - Tamanho do Bloco (Chunk Size): Para folhas de alto volume (mais de 10 mil funcionários), defina o chunk size na Extract Definition como 2000 para evitar erros de timeout.
- Efetividade da Data (Effective Dating): As tabelas de folha são sensíveis à data. A lógica da consulta lida explicitamente com
effective_start_dateeeffective_end_datepara garantir a recuperação da versão histórica correta do registro. - Segurança: O usuário executor deve ter perfis de segurança de dados que permitam visualizar todas as folhas e departamentos destinados à análise.
a Consulta de Exemplo config
/* Oracle HCM Cloud Payroll Extraction for ProcessMind */
/* Aggregating 16 specific activities into a unified Event Log */
SELECT
/* Attributes */
rel.person_number || '-' || ppa.payroll_action_id AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
TO_CHAR(htr.creation_date, 'YYYY-MM-DD HH24:MI:SS') AS EventTimestamp,
'Oracle HCM Time and Labor' AS SourceSystem,
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS') AS LastDataUpdate,
pap.name AS PayrollPeriodName,
org.name AS DepartmentName,
NULL AS GrossPayAmount
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id /* Adjust mapping */
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'SUBMITTED'
AND htr.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Time Card Approved',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Time and Labor',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'APPROVED'
AND htr.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || pee.element_entry_id,
'Incentive Data Imported',
TO_CHAR(pee.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
NULL,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_element_types_f pet ON pee.element_type_id = pet.element_type_id
JOIN per_all_assignments_m asg ON pee.assignment_id = asg.assignment_id
JOIN per_all_people_f rel ON asg.person_id = rel.person_id
LEFT JOIN per_departments org ON asg.organization_id = org.organization_id
WHERE pet.classification_name IN ('Supplemental Earnings', 'Voluntary Deductions')
AND pee.creator_type IN ('H', 'F') /* HDL or Flat File */
AND pee.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Started',
TO_CHAR(ppa.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_actions ppa
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id /* Simplified Join */
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q') /* Run or QuickPay */
AND ppa.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(prrv.result_value) FROM pay_run_result_values prrv JOIN pay_run_results prr ON prrv.run_result_id = prr.run_result_id WHERE prr.payroll_rel_action_id = pra.payroll_rel_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q')
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Audit Exception Flagged',
TO_CHAR(pml.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pml.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_message_lines pml
JOIN pay_payroll_rel_actions pra ON pml.source_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pml.message_level IN ('F', 'E') /* Fatal or Error */
AND pml.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Record Corrected',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_payroll_rel_actions pra ON pee.creator_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pee.last_update_date > pee.creation_date
AND pee.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'QuickPay Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'Q'
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Prepayments Calculated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'P' /* Distribution */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Run Approved',
TO_CHAR(pfi.action_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pfi.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_flow_instances pfi
JOIN pay_payroll_actions ppa ON pfi.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pfi.status = 'COMPLETED'
AND pfi.instance_name LIKE '%Approval%'
AND pfi.action_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Archive Results Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'X' /* Archive */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Bank Transfer Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(ppp.value) FROM pay_pre_payments ppp WHERE ppp.payroll_action_id = ppa.payroll_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('M', 'E') /* Mag Tape or EFT */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payment Executed',
TO_CHAR(ppp.base_currency_value, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
ppp.value AS GrossPayAmount
FROM pay_pre_payments ppp
JOIN pay_payroll_actions ppa ON ppp.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('H', 'E', 'M') /* Check or EFT */
AND ppa.effective_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Pay Slip Published',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'G' /* Generate Payslip */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Costing Transferred',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'T' /* Transfer to GL */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Tax Filing Completed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.report_category IN ('Tax', 'Regulatory') /* Customize based on local requirements */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date Etapas
- Acesse o Oracle BI Publisher: No ambiente Oracle Cloud, vá em Tools > Reports and Analytics. Clique em Browse Catalog para abrir a interface do BI Publisher.
- Crie um Data Model: Clique em New (canto superior esquerdo) e selecione Data Model. Este é o contêiner para sua lógica de extração SQL.
- Crie um SQL Data Set: Na aba Diagram, clique no ícone New Data Set e selecione SQL Query.
- Configure a Fonte de Dados: Nomeie o conjunto de dados (ex:
ProcessMind_Payroll_Extract). Defina o Data Source comoApplicationDB_HCM(ou sua conexão específica de banco do HCM). Mantenha o tipo como Standard SQL. - Insira a Consulta: Copie o script SQL completo fornecido na seção Query abaixo e cole na caixa de texto. Garanta que não haja formatação markdown.
- Defina Parâmetros: A consulta usa as variáveis
:p_start_datee:p_end_date. Na aba Parameters do Data Model, crie esses dois parâmetros (tipo Date) para filtrar o período de extração (ex: baseado emppa.EFFECTIVE_DATE). - Valide a Estrutura de Dados: Clique em OK. Mude para a aba Data no editor do Data Model. Insira datas de exemplo (ex:
2023-01-01a2023-03-31) e clique em View. Verifique se a saída contém linhas comPayrollRecord,ActivityNameeEventTimestamp. - Salve o Data Model: Salve o modelo em uma pasta compartilhada (ex:
/Shared Folders/Custom/ProcessMining). - Crie um Relatório para Exportação: Clique em Create Report, selecione o Data Model salvo. Use o Report Wizard para criar um layout de tabela simples com todas as colunas. Desmarque 'Show Grand Totals'.
- Exporte para CSV: Visualize o relatório no Report Viewer. Vá no menu Actions (ícone de engrenagem) > Export > Data > CSV.
- Transforme: Abra o CSV. Garanta que os formatos de data estejam em ISO 8601 (
AAAA-MM-DD HH:MM:SS) se não forem automáticos. Nenhum ajuste adicional deve ser necessário se o SQL foi colado corretamente. - Upload: Importe o CSV resultante no ProcessMind, mapeando as colunas conforme definido nos Requisitos de Dados.
Configuração
- Data Source Connection: Deve usar o
ApplicationDB_HCMou a fonte de dados JNDI equivalente que tenha acesso de leitura aos esquemasPAY_ePER_. - Intervalo de Datas: O período de extração recomendado é de 3 a 6 meses para capturar ciclos completos de folha de pagamento. Use os parâmetros
:p_start_datee:p_end_datepara controlar esse carregamento dinâmico. - Legislative Data Group (LDG): Por padrão, a consulta extrai todos os LDGs. Se você opera em vários países, considere adicionar o filtro
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Seu_LDG_ID]para segmentar os dados. - Desempenho: A consulta acessa tabelas de alto volume (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS). Certifique-se de que o intervalo de datas não seja muito extenso (ex: >1 ano) para evitar erros de timeout no BI Publisher. - Segurança: O usuário que executa o relatório precisa de permissões de Data Access Set para as definições de folha de pagamento (Payroll) de destino.
a Consulta de Exemplo sql
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
peef.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME AS LegislativeDataGroup,
org.NAME AS DepartmentName,
peef.LAST_UPDATED_BY AS ProcessingUser,
NULL AS GrossPayAmount,
ptp.PERIOD_NAME AS PayrollPeriodName,
NULL AS SlaProcessingDeadline,
'N' AS IsManualCorrection,
pg.PAYROLL_NAME AS PayGroup,
NULL AS ProcessDurationDays
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE = 'H'
AND peef.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Time Card Approved' AS ActivityName,
peef.EFFECTIVE_START_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE = 'H'
AND peef.EFFECTIVE_START_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Incentive Data Imported' AS ActivityName,
peef.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE IN ('B', 'F')
AND peef.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
CASE
WHEN ppa.ACTION_TYPE = 'R' AND paa.ACTION_STATUS = 'C' THEN 'Payroll Calculation Executed'
WHEN ppa.ACTION_TYPE = 'R' THEN 'Payroll Calculation Started'
WHEN ppa.ACTION_TYPE = 'Q' THEN 'QuickPay Executed'
WHEN ppa.ACTION_TYPE IN ('P', 'U') THEN 'Prepayments Calculated'
WHEN ppa.ACTION_TYPE = 'X' THEN 'Archive Results Generated'
WHEN ppa.ACTION_TYPE = 'M' THEN 'Bank Transfer Generated'
WHEN ppa.ACTION_TYPE IN ('Z', 'E') THEN 'Payment Executed'
WHEN ppa.ACTION_TYPE = 'T' THEN 'Costing Transferred'
ELSE 'Payroll Process Action'
END AS ActivityName,
ppa.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
paa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
ptp.REGULAR_PAYMENT_DATE AS SlaProcessingDeadline,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE IN ('R', 'Q', 'P', 'U', 'X', 'M', 'Z', 'E', 'T')
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Audit Exception Flagged' AS ActivityName,
pml.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
pml.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
pml.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'Y',
pg.PAYROLL_NAME,
NULL
FROM PAY_MESSAGE_LINES pml
JOIN PAY_PAYROLL_ACTIONS ppa ON pml.PAYROLL_ACTION_ID = ppa.PAYROLL_ACTION_ID
LEFT JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE pml.MESSAGE_LEVEL IN ('E', 'W')
AND pml.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Payroll Record Corrected' AS ActivityName,
peef.LAST_UPDATE_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'Y',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.LAST_UPDATE_DATE > peef.CREATION_DATE
AND peef.LAST_UPDATE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Payroll Run Approved' AS ActivityName,
ppa.LAST_UPDATE_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'R'
AND paa.ACTION_STATUS = 'C'
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Pay Slip Published' AS ActivityName,
(ppa.CREATION_DATE + 1) AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'X'
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Tax Filing Completed' AS ActivityName,
ppa.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'Z'
AND ppa.CREATION_DATE BETWEEN :p_start_date AND :p_end_date