Seu Template de Dados de Gestão de Transportes
Seu Template de Dados de Gestão de Transportes
- Atributos recomendados para coletar
- Atividades-chave a monitorizar
- Orientação para Extração
Atributos de Gestão de Transporte
| Nome | Descrição | ||
|---|---|---|---|
| Nome da Atividade ActivityName | O nome de um evento ou marco específico ocorrido no processo de transporte de uma remessa. | ||
| Descrição Este atributo descreve uma etapa única no ciclo de vida do transporte, como 'Remessa Planejada', 'Mercadoria Coletada' ou 'Mercadoria Entregue'. Cada atividade representa um evento de negócio distinto que aproxima a remessa da sua conclusão. Analisar a sequência e a duração dessas atividades é o núcleo do Process Mining. Isso permite descobrir o fluxo real do processo, identificar gargalos entre as etapas e medir a adesão aos procedimentos operacionais padrão. Variações no fluxo de atividades podem destacar exceções, retrabalho ou desvios do caminho ideal. Por que é importante Define as etapas no mapa de processo, permitindo a visualização da jornada da remessa, gargalos e desvios. Onde obter Esta informação é derivada das tabelas de eventos de rastreamento ou logs de mudança de status no Oracle Transportation Management. O nome específico da atividade pode ser uma concatenação de códigos e descrições de eventos. Exemplos Remessa PlanejadaMercadoria ColetadaDesembaraço ConcluídoMercadorias entregues | |||
| Remessa ShipmentId | O identificador exclusivo de uma única remessa, que serve como o ID de caso principal para rastrear todas as atividades de transporte relacionadas. | ||
| Descrição O ID da Remessa identifica de forma única cada movimento de mercadorias de um expedidor para um destinatário. Este atributo é o pilar da análise do processo, agrupando todos os eventos relacionados, como planejamento, reserva, coleta, trânsito, entrega e faturamento em um único caso. No Process Mining, analisar eventos pelo ID da Remessa permite uma visão completa de ponta a ponta do ciclo de vida do transporte. Ele é usado para calcular métricas essenciais como o tempo total do ciclo, o desempenho de entrega no prazo e o custo por remessa, proporcionando uma compreensão abrangente da eficiência do processo e dos níveis de serviço ao cliente. Por que é importante Este é o Case ID essencial que conecta todas as etapas do processo, permitindo uma análise completa de toda a jornada de transporte para cada remessa individual. Onde obter Esta é uma chave primária no Oracle Transportation Management, normalmente encontrada em tabelas de gerenciamento de remessas ou pedidos. Consulte a documentação do OTM para nomes específicos de tabelas e campos. Exemplos SH-0012345SH-0012346SH-0012347 | |||
| Tempo do Evento EventTime | A data e hora exatas em que uma atividade ou evento de transporte específico ocorreu. | ||
| Descrição Este timestamp registra o momento exato em que uma atividade, como 'Transportadora Atribuída' ou 'Comprovante de Entrega Recebido', foi registrada no sistema. Os timestamps são fundamentais para o Process Mining, pois estabelecem a sequência cronológica dos eventos para cada remessa. A precisão desses timestamps é crítica para todas as análises baseadas em tempo. Eles são usados para calcular tempos de ciclo entre atividades, medir durações de processos, identificar atrasos e avaliar o desempenho em relação aos acordos de nível de serviço. Analisar o Horário do Evento ajuda a identificar onde o tempo está sendo perdido no processo. Por que é importante Este timestamp é essencial para ordenar os eventos cronologicamente e calcular todas as métricas de desempenho, como tempos de ciclo e atrasos. Onde obter Extraído dos campos de timestamp associados aos eventos nas tabelas de histórico de status ou rastreamento do OTM. Exemplos 2023-10-26T08:00:00Z2023-10-27T14:30:00Z2023-10-28T09:15:00Z | |||
| Custo da Remessa ShipmentCost | O custo total do frete ou o valor financeiro cobrado pelo transporte da remessa. | ||
| Descrição Este atributo representa o custo financeiro total associado a uma remessa, incluindo taxas da transportadora, sobretaxas de combustível e outras despesas acessórias. É uma medida fundamental do desempenho financeiro do processo de transporte. Analisar o Custo da Remessa permite o cálculo do KPI de Custo Médio por Remessa. Ele pode ser segmentado por transportadora, rota, modal ou tipo de remessa para identificar oportunidades de economia. Também é utilizado na Análise de Divergência de Faturas de Frete para comparar os custos planejados versus os realizados. Por que é importante Fornece os dados financeiros necessários para analisar os gastos com transporte, identificar oportunidades de economia e medir o impacto financeiro das ineficiências do processo. Onde obter Esta informação costuma ser encontrada nas seções financeiras ou de custos de uma remessa no OTM, geralmente preenchidas após a tarifação do frete e a liquidação. Exemplos 250.751200.00545,50 | |||
| Data de entrega solicitada RequestedDeliveryDate | A data e hora de entrega solicitadas pelo cliente ou acordadas como meta de nível de serviço (SLA). | ||
| Descrição Este atributo captura o timestamp de entrega planejado para uma remessa. Ele representa o compromisso feito com o cliente e serve como o principal parâmetro para medir o desempenho de pontualidade. No Process Mining, esta data é comparada com o timestamp da entrega real (da atividade 'Mercadoria Entregue') para determinar se uma remessa foi pontual ou atrasada. Esta é a base para o KPI de Taxa de Entrega no Prazo e é essencial para o dashboard de Visão Geral de Desempenho de Entrega. Analisar os desvios ajuda a identificar causas sistêmicas de atrasos e a melhorar a satisfação do cliente. Por que é importante Este é o principal parâmetro para medir o desempenho de entrega no prazo, um KPI crítico para a satisfação do cliente e excelência operacional. Onde obter Esta informação costuma ser armazenada no nível do pedido ou da remessa no OTM, geralmente em campos relacionados a datas de entrega ou agendamentos. Exemplos 2023-11-15T17:00:00Z2023-11-20T12:00:00Z2023-11-22T09:00:00Z | |||
| Modal de Transporte TransportationMode | O modal de transporte utilizado para a remessa, como rodoviário, ferroviário, marítimo ou aéreo. | ||
| Descrição Este atributo categoriza a remessa pelo modal de transporte. Os modais comuns incluem Carga Completa (FTL), Carga Fracionada (LTL), Marítimo, Aéreo e Ferroviário. Esta é uma característica fundamental de uma remessa que influencia o custo, o tempo de trânsito e a complexidade. Na análise, o Modal de Transporte é uma dimensão crítica para segmentação. Ele permite comparar o desempenho do processo e os custos entre diferentes modais. Por exemplo, pode ajudar a identificar quais modais são mais propensos a atrasos em trânsito ou têm custos mais altos por quilômetro, apoiando decisões estratégicas sobre redes logísticas. Por que é importante Permite segmentar a análise de performance e custo por modal de transporte, revelando insights específicos para logística rodoviária, aérea, marítima ou ferroviária. Onde obter Este é um atributo padrão no nível da remessa no OTM, geralmente encontrado em um campo dedicado a 'modal' ou 'tipo de transporte'. Exemplos Carga Lotação (FTL)Carga Fracionada (LTL)MARÍTIMOAÉREO | |||
| Motivo do Atraso DelayReason | Um código ou descrição que explica o motivo do atraso no progresso do embarque. | ||
| Descrição Quando uma remessa atrasa, este atributo indica o motivo, como 'Clima', 'Retenção na Alfândega', 'Congestionamento Portuário' ou 'Falha Mecânica'. Essas informações são extraídas de atualizações das transportadoras ou inserções manuais no OTM. Este atributo é essencial para a análise de causa raiz de entregas atrasadas. Ao categorizar e contabilizar os motivos de atraso, as empresas conseguem identificar os problemas mais frequentes em sua cadeia de suprimentos. Isso permite iniciativas de melhoria direcionadas, como a escolha de transportadoras mais confiáveis para certas rotas ou a otimização da documentação para agilizar a liberação alfandegária. Por que é importante Fornece insights críticos sobre as causas raiz de remessas atrasadas, permitindo ações direcionadas para mitigar problemas comuns e melhorar o desempenho de pontualidade. Onde obter Normalmente capturado nos detalhes de eventos de rastreamento no OTM. Pode estar associado a códigos específicos de exceção ou eventos de atraso. Exemplos ATRASO_POR_CLIMAINSPECAO_ADUANEIRACONGESTIONAMENTO_NO_PORTOTRÂNSITO | |||
| Nome da Transportadora CarrierName | O nome da transportadora ou provedor de serviço responsável pelo transporte da remessa. | ||
| Descrição Este atributo identifica o parceiro logístico designado para executar o transporte das mercadorias. Os exemplos incluem grandes transportadoras de frete, transportadoras locais ou linhas marítimas. Analisar o desempenho por transportadora é um dos principais objetivos do Process Mining em transportes. Este atributo permite segmentar remessas para comparar transportadoras em métricas como taxa de entrega no prazo, custo por remessa, tempo de trânsito e frequência de problemas como atrasos ou divergências de faturamento. Esses insights são vitais para a seleção de transportadoras, negociação de contratos e gestão de desempenho. Por que é importante Permite comparar a performance entre transportadoras, o que é vital para otimizar a seleção, negociação e redução de custos. Onde obter Encontrado nos detalhes do embarque no OTM, vinculado aos registros da transportadora ou prestador de serviço. Fica armazenado em tabelas relacionadas a remessas e provedores. Exemplos FedEx FreightUPS Supply Chain SolutionsMaersk LineKnight-Swift Transportation | |||
| Despachante Aduaneiro CustomsAgent | O despachante aduaneiro ou agente responsável por gerenciar o processo de liberação alfandegária da remessa. | ||
| Descrição Para embarques internacionais, este atributo identifica o despachante ou equipe interna responsável pela documentação alfandegária. O desempenho deste agente impacta diretamente o tempo total de trânsito. Analisar o Tempo de Ciclo de Desembaraço por Despachante ajuda a comparar a performance de cada um. É possível identificar quem é mais eficiente em cada país ou para cada tipo de mercadoria. Esse insight é valioso para selecionar os melhores parceiros e trabalhar com aqueles abaixo da média para melhorar seus processos. Por que é importante Permite medir o desempenho dos despachantes aduaneiros, ajudando a identificar os parceiros mais eficientes e reduzir atrasos alfandegários. Onde obter Esta informação pode ser armazenada como um provedor de serviço ou função de parceiro nos detalhes de remessa internacional no OTM. Exemplos Global Customs ServicesLivingston InternationalFlexport | |||
| Divergência na Fatura de Frete FreightBillDiscrepancy | Um indicador que informa se foi encontrada alguma divergência durante a auditoria da fatura de frete. | ||
| Descrição Este atributo booleano é definido como 'true' se a fatura de frete recebida da transportadora não coincidir com o custo esperado calculado no OTM. As divergências podem surgir de tarifas incorretas, cobranças acessórias ou outros erros de faturamento. Este atributo é a base para o KPI de Taxa de Divergência de Faturas de Frete. Analisar a frequência dessas flags por transportadora, rota ou tipo de remessa ajuda a identificar as causas raiz dos erros de faturamento. Isso apoia iniciativas para melhorar a precisão dos dados, otimizar o processo de auditoria e evitar pagamentos indevidos. Por que é importante Apoia diretamente a análise de divergências nas faturas de frete ao sinalizar erros de cobrança, ajudando a reduzir pagamentos indevidos e melhorar os controles financeiros. Onde obter Este é normalmente um status ou flag definido durante o processo de liquidação de frete e conciliação de faturas no OTM. Exemplos verdadeirofalse | |||
| Entrega no prazo IsOnTimeDelivery | Um indicador calculado que mostra se o embarque foi entregue na data solicitada ou antes dela. | ||
| Descrição Este atributo booleano é derivado da comparação entre o timestamp da atividade 'Mercadoria Entregue' e a 'Data de Entrega Solicitada'. É 'true' se a entrega foi pontual ou antecipada, e 'false' se houve atraso. Este atributo alimenta diretamente o KPI de Taxa de Entrega no Prazo e é um componente fundamental do dashboard de Visão Geral de Desempenho de Entrega. Ele simplifica a análise do desempenho de entrega ao fornecer um resultado binário claro para cada remessa, facilitando a filtragem, agregação e visualização de remessas pontuais versus atrasadas. Por que é importante Esta flag calculada simplifica a medição do KPI de Entrega no Prazo e permite a filtragem e análise fácil de remessas pontuais versus atrasadas. Onde obter Este atributo não está no sistema de origem. Ele é calculado durante a transformação de dados ao comparar o timestamp da atividade 'Mercadoria Entregue' com o atributo 'RequestedDeliveryDate'. Exemplos verdadeirofalse | |||
| Foi Redirecionado IsRerouted | Um indicador que sinaliza se a rota do embarque foi alterada após a reserva inicial. | ||
| Descrição Este atributo é uma flag booleana definida como 'true' se uma remessa passar por um evento significativo de alteração de rota após já ter sido planejada e reservada. Isso pode ocorrer por solicitação do cliente, interrupções inesperadas ou oportunidades de otimização. Este atributo sustenta diretamente o KPI de Taxa de Recaminhamento de Remessas e o dashboard de Insights de Roteamento e Agilização. Rastrear a frequência de alterações de rota ajuda a identificar problemas subjacentes no planejamento ou na execução. Ele destaca instabilidades operacionais e custos associados, permitindo que os gestores encontrem formas de minimizar mudanças dispendiosas e disruptivas. Por que é importante Ajuda a quantificar a frequência e o impacto de exceções operacionais, como redirecionamentos, destacando falhas no planejamento e execução. Onde obter Esta flag é derivada pela detecção de eventos específicos de alteração de rota no Event Log ou pela comparação da rota final com a rota planejada inicialmente. Exemplos verdadeirofalse | |||
| Nome do Utilizador UserName | O nome ou ID do usuário que executou ou é responsável por uma atividade específica. | ||
| Descrição Este atributo identifica o usuário individual ou agente do sistema que executou um evento específico, como 'Remessa Planejada' ou 'Transportadora Atribuída'. Esta informação garante a responsabilidade e traz visibilidade sobre o envolvimento de recursos no processo. No Process Mining, analisar atividades por usuário ajuda a entender a distribuição da carga de trabalho, identificar necessidades de treinamento e comparar o desempenho de diferentes usuários ou equipes. Também pode ser usado para distinguir entre atividades realizadas manualmente e aquelas executadas automaticamente pelo sistema. Por que é importante Garante a responsabilidade e permite a análise da carga de trabalho e do desempenho por usuário individual ou equipe. Onde obter Extraído dos campos de ID de usuário (ex: INSERT_USER) associados a mudanças de status ou eventos nas tabelas de histórico ou logs do OTM. Exemplos JSMITHPLANEJADOR_LOGISTICO_ASISTEMA_AUTO | |||
| País de Destino DestinationCountry | O país para o qual a remessa está programada para ser entregue. | ||
| Descrição Este atributo especifica o país de destino final da remessa, com base na localização do destinatário. Complementa o País de Origem para a análise geográfica do processo. Assim como na origem, analisar pelo País de Destino é vital para entender as diferenças de desempenho entre várias rotas comerciais. É particularmente importante para analisar tempos de liberação alfandegária, desempenho de entrega na última milha (last-mile) e a eficácia das transportadoras por região. Isso ajuda a adaptar as estratégias logísticas aos requisitos de diferentes mercados de destino. Por que é importante Crucial para analisar a performance em rotas comerciais específicas e entender desafios relacionados à alfândega, transportadoras e regulamentações nos mercados de destino. Onde obter Derivado dos detalhes de endereço do destino ou destinatário, armazenados nos dados mestres de localização do OTM. Exemplos CANFRAJPNBRA | |||
| País de Origem OriginCountry | O país onde a jornada da remessa começa. | ||
| Descrição Este atributo especifica o país de origem da remessa, baseado na localização do expedidor. É uma informação geográfica fundamental usada para análise logística. Analisar os processos pelo País de Origem ajuda a entender variações regionais de desempenho. Por exemplo, os tempos de liberação alfandegária, custos de transportadoras e durações de trânsito podem variar significativamente dependendo do país de origem. Esta segmentação é crucial para gerenciar a logística internacional e identificar gargalos específicos por região. Por que é importante Permite a análise geográfica do processo, ajudando a identificar gargalos, custos e variações de performance específicos de cada região. Onde obter Derivado dos detalhes de endereço da origem ou remetente, armazenados nos dados mestres de localização do OTM. Exemplos EUADEUCHNMEX | |||
| Sistema de Origem SourceSystem | Identifica o sistema de origem dos dados do evento, como por exemplo, o Oracle Transportation Management. | ||
| Descrição Este atributo especifica a aplicação de origem onde os dados foram gerados. Em um ambiente logístico complexo, os dados podem vir do OTM, de um sistema de gerenciamento de armazém (WMS), do sistema de uma transportadora via EDI ou outras plataformas integradas. Entender o sistema de origem é importante para a governança de dados, avaliação de qualidade e resolução de problemas. Ajuda a entender o contexto dos dados e pode explicar variações na granularidade ou na pontualidade das informações. Para fins de análise, pode ser usado para filtrar apenas eventos originados de um sistema específico e confiável. Por que é importante Oferece um contexto vital sobre a origem dos dados, importante para validação e análises em ambientes com múltiplos sistemas. Onde obter Geralmente um valor estático adicionado na extração para rotular a origem dos registros. Exemplos Oracle OTMOTM CloudSAP TM | |||
| Status da Remessa ShipmentStatus | O status atual geral da remessa em seu ciclo de vida, como 'Planejado', 'Em Trânsito' ou 'Entregue'. | ||
| Descrição Este atributo fornece um resumo de alto nível de onde a remessa se encontra no processo global. Diferente de uma atividade, que é um evento em um ponto no tempo, o status representa o estado do caso da remessa. Embora o Process Mining foque no fluxo de atividades, o status geral é útil para filtrar casos e fornecer contexto em dashboards. Por exemplo, uma análise pode focar apenas em remessas 'Concluídas' ou investigar por que muitas remessas estão paradas no status 'Em Trânsito' por um tempo fora do comum. Por que é importante Fornece um resumo de alto nível do progresso de uma remessa, o que é útil para filtrar e segmentar casos na análise. Onde obter Disponível no registro principal do embarque no OTM, representando seu estado atual no Workflow. Exemplos PLANEJADOBOOKEDEM_TRANSITOENTREGUE | |||
| Tempo de Ciclo de Ponta a Ponta EndToEndCycleTime | A duração total da remessa, desde a solicitação inicial de transporte até a entrega final das mercadorias. | ||
| Descrição Esta métrica calculada mede o tempo total decorrido para o caso de uma remessa. Geralmente é calculada como a diferença de tempo entre a atividade 'Solicitação de Transporte Recebida' e a 'Mercadoria Entregue'. Este atributo é a base para o KPI de Tempo Médio de Ciclo de Ponta a Ponta. Ele fornece uma medida holística da eficiência de todo o processo de transporte. Analisar esta duração ajuda a identificar remessas demoradas e fornece uma base de referência para medir o impacto de iniciativas de melhoria de processos. Por que é importante Oferece uma medida única e crítica da velocidade global do processo, ajudando a identificar remessas demoradas e a acompanhar melhorias ao longo do tempo. Onde obter Este atributo não está no sistema de origem. Ele é calculado no nível do caso durante a análise de Process Mining ou na transformação de dados. Exemplos 5 dias e 4 horas12 dias 8 horas 30 minutos2 dias e 1 hora | |||
| Tipo de Remessa ShipmentType | Uma classificação da remessa, como por nível de serviço, tipo de mercadoria ou unidade de negócio. | ||
| Descrição Este atributo fornece uma categorização de negócio para a remessa, como por exemplo 'Padrão', 'Urgente', 'Materiais Perigosos' ou 'Intercompany'. Esta classificação ajuda na aplicação de diferentes regras de negócio, prioridades ou visões analíticas. Usar o Tipo de Remessa como uma dimensão no Process Mining permite comparar processos para diferentes tipos de carga. Isso pode revelar se certos tipos são mais propensos a atrasos, possuem custos mais elevados ou seguem caminhos não padronizados. Esses insights ajudam a adaptar os processos para lidar melhor com as necessidades específicas de cada tipo de remessa. Por que é importante Permite segmentar a análise por contexto de negócio, ajudando a entender se diferentes tipos de remessas seguem processos distintos ou possuem níveis de performance variados. Onde obter Este é normalmente um campo ou atributo configurável no registro de remessa ou pedido no OTM. Exemplos PadrãoUrgente/AceleradaInternacionalDoméstico | |||
| Última Atualização de Dados LastDataUpdate | O timestamp que indica a última vez em que os dados deste evento foram atualizados ou extraídos do sistema de origem. | ||
| Descrição Este atributo registra quando os dados foram extraídos mais recentemente do Oracle Transportation Management. Ele reflete o quão atuais são os dados analisados, não o momento em que o evento de negócio ocorreu. Este timestamp é crucial para entender a tempestividade da análise de Process Mining. Ajuda os usuários a saberem se estão visualizando informações em tempo real ou uma captura de um ponto específico no tempo. É essencial para gerenciar os ciclos de atualização de dados e garantir que as decisões sejam baseadas em informações recentes. Por que é importante Indica a atualização dos dados, garantindo que os usuários saibam quão recente é a análise e quando será a próxima atualização. Onde obter Este é normalmente um timestamp gerado pelo sistema, adicionado durante a ingestão de dados ou no processo de ETL. Exemplos 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
Atividades de Gestão de Transporte
| Atividade | Descrição | ||
|---|---|---|---|
| Comprovante de Entrega Recebido | Representa o recebimento e o registro da confirmação formal de que a entrega foi concluída, como um documento assinado. Geralmente é registrado como um tipo de documento específico anexado à remessa. | ||
| Por que é importante O comprovante de entrega (POD) é fundamental para o faturamento e para a resolução de disputas. Rastrear o seu recebimento ajuda a garantir a conformidade do processo e acelera o ciclo de liquidação financeira. Onde obter Este pode ser um evento explícito ou inferido a partir da data de criação de um documento de POD vinculado à remessa. Verifique na tabela DOCUMENT documentos com o tipo de documento POD. Captura Use o timestamp de criação de um tipo de documento 'POD' associado à remessa. Tipo de evento explicit | |||
| Mercadoria Coletada | Esta atividade significa o início do transporte físico, quando a transportadora coletou as mercadorias na origem. Este evento é capturado quando a primeira parada da remessa é marcada como 'DEPARTED'. | ||
| Por que é importante Este é um marco crítico que sinaliza o início da fase de trânsito. É essencial para rastrear o desempenho de coleta da transportadora e os tempos de trânsito reais. Onde obter Inferido pela mudança de status da primeira parada na tabela SHIPMENT_STOP para 'DEPARTED', ou via evento de status de coleta. Captura Use o timestamp ACTUAL_DEPARTURE do primeiro registro na tabela SHIPMENT_STOP para a remessa. Tipo de evento inferred | |||
| Mercadorias entregues | Esta atividade representa a entrega bem-sucedida da remessa ao destinatário final. É capturada quando a última parada da remessa é marcada com um horário de chegada real. | ||
| Por que é importante Este é o marco principal para medir o desempenho de entrega no prazo e o tempo de ciclo de ponta a ponta. É a culminação do processo de execução do transporte. Onde obter Inferido pelo preenchimento do campo ACTUAL_ARRIVAL no registro da última parada na tabela SHIPMENT_STOP associada à remessa. Captura Use o timestamp ACTUAL_ARRIVAL do último registro na tabela SHIPMENT_STOP para a remessa. Tipo de evento inferred | |||
| Pagamento Processado | Esta é a atividade final, representando o processamento bem-sucedido do pagamento à transportadora pelos seus serviços. Este evento marca o fechamento financeiro da remessa. | ||
| Por que é importante Esta atividade encerra o ciclo de vida do transporte. É essencial para medir os tempos de processamento de pagamento das transportadoras e gerenciar o relacionamento com os parceiros de forma eficaz. Onde obter Inferido pela mudança de status no voucher ou fatura associada para 'PAID'. Esses dados estão nas tabelas VOUCHER ou BILL. Captura Identifique o timestamp quando o VOUCHER.VOUCHER_STATUS_ID muda para 'PAID'. Tipo de evento inferred | |||
| Remessa Planejada | Esta atividade representa o planejamento bem-sucedido de um ou mais order releases em uma remessa viável pelo motor de planejamento do OTM. É capturada quando o sistema altera o status de uma remessa para indicar que foi planejada, por exemplo, 'PLANNING_PLANNED FINAL'. | ||
| Por que é importante Este é um marco fundamental que separa a fase de demanda da fase de execução. Analisar o tempo que antecede esta atividade ajuda a identificar a eficiência do planejamento e gargalos no desempenho do motor de planejamento. Onde obter Inferido pelo histórico de status do objeto Shipment na tabela SHIPMENT, buscando o status de conclusão de planejamento. Captura Identifique o timestamp quando o SHIPMENT.SHIPMENT_STATUS_VALUE_GID muda para o status 'Planned'. Tipo de evento inferred | |||
| Solicitação de Transporte Recebida | Esta atividade marca a criação de uma necessidade de transporte no sistema, normalmente como um Order Release. Este evento é capturado quando um novo registro de Order Release é criado no Oracle Transportation Management, representando a demanda inicial para a remessa. | ||
| Por que é importante Como ponto de partida do processo, esta atividade é crucial para medir o tempo de ciclo total de ponta a ponta e entender os padrões de demanda. Ajuda a analisar o tempo entre a solicitação e o planejamento. Onde obter Este é um evento explícito capturado do timestamp de criação do registro de Order Release na tabela ORDER_RELEASE. Podem ser usados os campos INSERT_DATE ou campos específicos de data de criação. Captura Use o timestamp de criação do Order Release na tabela ORDER_RELEASE. Tipo de evento explicit | |||
| Agendamento de Coleta Realizado | Esta atividade indica que uma data e hora específicas para a coleta foram agendadas e registradas. Isso costuma ser capturado a partir de dados de agendamento no nível de parada da remessa. | ||
| Por que é importante O agendamento de horários é uma etapa fundamental de coordenação. Analisar isso ajuda a entender a eficiência do agendamento e seu impacto na pontualidade da coleta. Onde obter Inferido pelo preenchimento dos campos de data e hora de agendamento na primeira parada (local de coleta) da remessa na tabela SHIPMENT_STOP. Captura Use o timestamp de quando os campos de agendamento são preenchidos pela primeira vez para a parada de coleta. Tipo de evento inferred | |||
| Agendamento de Entrega Marcado | Esta atividade marca quando uma data e hora específicas para a entrega foram agendadas com o destinatário. Este evento é capturado a partir dos dados de agendamento na parada final da remessa. | ||
| Por que é importante Esta é uma etapa fundamental na coordenação da entrega final. Analisar o tempo entre a chegada e a entrega agendada pode revelar gargalos nas operações de última milha (last-mile). Onde obter Inferido pelo preenchimento dos campos de data e hora de agendamento na parada final (local de entrega) da remessa na tabela SHIPMENT_STOP. Captura Use o timestamp de quando os campos de agendamento são preenchidos pela primeira vez para a parada de entrega. Tipo de evento inferred | |||
| Desembaraço Concluído | Para embarques internacionais, esta atividade representa o momento em que a carga passa com sucesso pela alfândega. Geralmente é capturada via um evento de status específico. | ||
| Por que é importante O desembaraço aduaneiro é uma fonte comum de atrasos na logística internacional. Rastrear esta atividade ajuda a medir e otimizar os tempos de ciclo alfandegários. Onde obter Este evento costuma ser capturado via um evento de remessa 'Customs' (Alfandegário) inserido manualmente ou integrado. Procure por códigos de evento específicos na tabela SHIPMENT_STATUS relacionados à alfândega. Captura Identifique o timestamp do evento 'Desembaraço Concluído' na tabela SHIPMENT_STATUS. Tipo de evento explicit | |||
| Fatura de Frete Auditada | Esta atividade marca a conclusão do processo de auditoria da fatura de frete, onde a fatura da transportadora é confrontada e verificada com os detalhes da remessa. É registrada quando o status da conta da remessa muda para 'VOUCHER_AUDITED' ou estado similar. | ||
| Por que é importante A auditoria é vital para o controle financeiro e para identificar divergências de faturamento. Analisar esta atividade ajuda a agilizar o fluxo do processo e apoia o KPI de Taxa de Divergência na Fatura de Frete. Onde obter Inferido pela mudança de status no objeto Bill associado à remessa. Verifique a tabela BILL para atualizações de conclusão de auditoria. Captura Identifique o timestamp quando o BILL.BILL_STATUS_VALUE_GID muda para o status 'Audited'. Tipo de evento inferred | |||
| Remessa Cancelada | Representa o cancelamento de uma remessa após ter sido planejada, encerrando seu ciclo de vida prematuramente. Isso é capturado por uma mudança de status no objeto Shipment para o estado 'cancelado'. | ||
| Por que é importante Rastrear cancelamentos é importante para entender as exceções e falhas do processo. Ajuda a identificar os motivos do cancelamento, como mudanças na demanda ou erros de planejamento. Onde obter Inferido pelo histórico de status do objeto Shipment na tabela SHIPMENT, buscando status como 'PLANNING_CANCELED'. Captura Identifique o timestamp quando o SHIPMENT.SHIPMENT_STATUS_VALUE_GID muda para o status 'Cancelled'. Tipo de evento inferred | |||
| Remessa em Trânsito | Indica que as mercadorias foram coletadas e estão em movimento. Não é um evento pontual, mas o início desse estado capturado logo após a atividade 'Mercadoria Coletada'. | ||
| Por que é importante Esta atividade marca o início da fase de trânsito, que é crítica para monitorar o progresso da entrega e identificar atrasos no caminho. É fundamental para o dashboard de Pontos Críticos de Atraso em Trânsito. Onde obter Este é o mesmo evento que 'Mercadoria Coletada', mas costuma ser representado como uma atividade distinta nos modelos de processo para sinalizar o início de uma nova fase. É derivado da partida da primeira parada. Captura O mesmo que 'Mercadoria Coletada': use o timestamp ACTUAL_DEPARTURE da primeira SHIPMENT_STOP. Tipo de evento inferred | |||
| Remessa Reservada | Representa a confirmação formal de reserva com a transportadora após um processo de oferta (tender) bem-sucedido. Normalmente é capturado quando o status da remessa é atualizado para 'SECURE RESOURCES_BOOKED' ou equivalente. | ||
| Por que é importante Isso confirma o compromisso da transportadora e move oficialmente a remessa para a fase de execução. É uma etapa crítica para medir o KPI de Tempo de Ciclo de Planejamento de Remessa. Onde obter Inferido a partir de uma mudança de status no objeto Shipment na tabela SHIPMENT, rastreando quando ele passa para confirmado ou reservado. Captura Identifique o timestamp quando o SHIPMENT.SHIPMENT_STATUS_VALUE_GID muda para o status 'Booked'. Tipo de evento inferred | |||
| Transportadora Designada | Isso marca o ponto em que uma remessa foi ofertada e aceita com sucesso por uma transportadora específica. É capturado ao observar a mudança no status de oferta (tender) da remessa para 'TENDER_ACCEPTED' ou similar. | ||
| Por que é importante Rastrear isso ajuda a analisar a eficiência do processo de seleção de transportadora e oferta. Atrasos aqui podem impactar significativamente o cronograma geral antes mesmo da remessa ser movimentada. Onde obter Inferido pelo histórico de status na tabela SHIPMENT_TENDER, buscando o timestamp de aceitação pela transportadora. Captura Use o timestamp da mudança de status para 'TENDER_ACCEPTED' no histórico de ofertas da remessa. Tipo de evento inferred | |||
Guias de Extração
Etapas
- Acessar o BI Publisher: Faça login no seu Oracle Transportation Management (OTM). Vá em Business Process Automation, depois em Reporting e selecione Report Manager. Isso abrirá a interface do Oracle Business Intelligence Publisher.
- Criar um Data Model: No BI Publisher, clique no botão New e selecione Data Model. Isso abrirá o editor onde você definirá a fonte de dados para o relatório.
- Definir a Consulta SQL: No editor do modelo de dados, clique no ícone de mais no diagrama de Data Sets e selecione SQL Query. Nomeie o conjunto de dados como, por exemplo, 'OTM_Process_Mining_DS'. Selecione seu banco de dados OTM como Data Source. Copie a consulta SQL completa fornecida na seção 'query' deste documento e cole-a na caixa de texto.
- Adicionar Parâmetros: A consulta usa parâmetros para o período e o domínio (:P_START_DATE, :P_END_DATE, :P_DOMAIN_NAME). O BI Publisher os detectará automaticamente. Você pode configurar as propriedades, como definir o tipo de dado para 'Date' nos parâmetros de data.
- Salvar o Data Model: Clique no ícone de salvar. Escolha um local no catálogo do BI Publisher, dê um nome descritivo como 'OTM Shipment Process Extraction' e salve.
- Criar o Relatório: Volte ao catálogo, clique em New e selecione Report. No assistente de criação, selecione 'Use Data Model' e encontre o modelo que você acabou de salvar.
- Configurar o Layout do Relatório: O assistente guiará você na criação do layout. Um formato de 'Table' simples é suficiente. Arraste e solte todas as colunas do conjunto de dados para a tabela. Não faça agrupamentos ou agregações.
- Salvar o Relatório: Com o layout pronto, siga para o passo final e salve o relatório com um nome semelhante ao do modelo de dados.
- Executar o Relatório: Abra o relatório recém-criado. Você precisará inserir os valores dos parâmetros (Data de Início, Data de Fim, Nome do Domínio).
- Exportar os Dados: Após o relatório processar os dados, clique no menu Actions e selecione Export. Escolha o formato CSV para baixar o arquivo com o Event Log.
- Preparar para Upload: Abra o CSV baixado. Verifique se os cabeçalhos das colunas correspondem aos atributos exigidos:
ShipmentId,ActivityName,EventTimee os atributos recomendados. Garanta que a colunaEventTimeesteja em um formato de data/hora consistente. O arquivo agora está pronto para ser enviado ao ProcessMind.
Configuração
- Fonte de Dados: A consulta deve ser executada no esquema principal do banco de dados operacional do OTM, geralmente chamado GLOGOWNER.
- Parâmetros do Relatório:
P_START_DATE: Início do período do relatório. O formato deve ser 'AAAA-MM-DD'.P_END_DATE: Fim do período do relatório. O formato deve ser 'AAAA-MM-DD'.P_DOMAIN_NAME: O domínio específico do OTM para extração dos dados. Use '[Seu Nome de Domínio]'.
- Intervalo de Datas: Para análises iniciais, recomendamos extrair dados de 3 a 6 meses para equilibrar o volume com a performance. Para execuções em produção, considere extrações em lotes mensais ou trimestrais.
- Permissões: O usuário do OTM que executa o relatório precisa de funções específicas, como BI PUBLISHER DATA MODEL DEVELOPER e BI PUBLISHER REPORT DEVELOPER, para criar e modificar modelos e relatórios. Também é necessário acesso de apenas leitura às tabelas do banco de dados.
- Performance: A consulta faz o join de várias tabelas grandes. Em ambientes com alto volume de dados, é altamente recomendável executar este relatório fora do horário de pico para evitar impactos na performance do sistema. Mantenha o intervalo de datas o mais curto possível para garantir a agilidade do relatório.
a Consulta de Exemplo config
WITH SHIPMENTS_BASE AS (
SELECT
S.SHIPMENT_GID AS ShipmentId,
SP.SERVPROV_NAME AS CarrierName,
S.TOTAL_ACTUAL_COST AS ShipmentCost,
TM.TRANSPORT_MODE_NAME AS TransportationMode,
(
SELECT MAX(ORL.LATE_DELIVERY_DATE)
FROM SHIPMENT_S_SHIP_UNIT SSU
JOIN S_SHIP_UNIT SU ON SSU.S_SHIP_UNIT_GID = SU.S_SHIP_UNIT_GID
JOIN ORDER_RELEASE ORL ON SU.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
WHERE SSU.SHIPMENT_GID = S.SHIPMENT_GID
) AS RequestedDeliveryDate,
S.DOMAIN_NAME
FROM SHIPMENT S
LEFT JOIN SERVPROV SP ON S.SERVPROV_GID = SP.SERVPROV_GID
LEFT JOIN TRANSPORT_MODE TM ON S.TRANSPORT_MODE_GID = TM.TRANSPORT_MODE_GID
WHERE S.INSERT_DATE BETWEEN TO_DATE(:P_START_DATE, 'YYYY-MM-DD') AND TO_DATE(:P_END_DATE, 'YYYY-MM-DD') + 1
AND S.DOMAIN_NAME = :P_DOMAIN_NAME
)
-- 1. Transportation Request Received
SELECT
SB.ShipmentId,
'Transportation Request Received' AS ActivityName,
MIN(ORL.INSERT_DATE) AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_S_SHIP_UNIT SSU ON SB.ShipmentId = SSU.SHIPMENT_GID
JOIN S_SHIP_UNIT SU ON SSU.S_SHIP_UNIT_GID = SU.S_SHIP_UNIT_GID
JOIN ORDER_RELEASE ORL ON SU.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
WHERE SB.DOMAIN_NAME = ORL.DOMAIN_NAME
GROUP BY SB.ShipmentId, SB.CarrierName, SB.RequestedDeliveryDate, SB.ShipmentCost, SB.TransportationMode
UNION ALL
-- 2. Shipment Planned
SELECT
SB.ShipmentId,
'Shipment Planned' AS ActivityName,
SS.STATUS_CHANGE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STATUS SS ON SB.ShipmentId = SS.SHIPMENT_GID
WHERE SS.STATUS_CODE_GID = 'PLANNING_PLANNED FINAL'
UNION ALL
-- 3. Carrier Assigned
SELECT
SB.ShipmentId,
'Carrier Assigned' AS ActivityName,
ST.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_TENDER ST ON SB.ShipmentId = ST.SHIPMENT_GID
WHERE ST.TENDER_STATUS_GID = 'TENDER_ACCEPTED'
UNION ALL
-- 4. Shipment Booked
SELECT
SB.ShipmentId,
'Shipment Booked' AS ActivityName,
SS.STATUS_CHANGE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STATUS SS ON SB.ShipmentId = SS.SHIPMENT_GID
WHERE SS.STATUS_CODE_GID = 'SECURE RESOURCES_BOOKED'
UNION ALL
-- 5. Pickup Appointment Scheduled
SELECT
SB.ShipmentId,
'Pickup Appointment Scheduled' AS ActivityName,
SST.APPOINTMENT_START_TIME AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.APPOINTMENT_START_TIME IS NOT NULL
UNION ALL
-- 6. Goods Picked Up
SELECT
SB.ShipmentId,
'Goods Picked Up' AS ActivityName,
SST.ACTUAL_DEPARTURE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.ACTUAL_DEPARTURE_DATE IS NOT NULL
UNION ALL
-- 7. Shipment In Transit
SELECT
SB.ShipmentId,
'Shipment In Transit' AS ActivityName,
SST.ACTUAL_DEPARTURE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.ACTUAL_DEPARTURE_DATE IS NOT NULL
UNION ALL
-- 8. Customs Cleared
SELECT
SB.ShipmentId,
'Customs Cleared' AS ActivityName,
SE.EVENT_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
SE.EVENT_REMARK_TEXT AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_EVENT SE ON SB.ShipmentId = SE.SHIPMENT_GID
WHERE SE.EVENT_CODE = '[Your Customs Cleared Event Code]'
UNION ALL
-- 9. Delivery Appointment Scheduled
SELECT
SB.ShipmentId,
'Delivery Appointment Scheduled' AS ActivityName,
SST.APPOINTMENT_START_TIME AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = (SELECT MAX(SST2.STOP_NUM) FROM SHIPMENT_STOP SST2 WHERE SST2.SHIPMENT_GID = SB.ShipmentId)
AND SST.APPOINTMENT_START_TIME IS NOT NULL
UNION ALL
-- 10. Goods Delivered
SELECT
SB.ShipmentId,
'Goods Delivered' AS ActivityName,
SST.ACTUAL_ARRIVAL_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = (SELECT MAX(SST2.STOP_NUM) FROM SHIPMENT_STOP SST2 WHERE SST2.SHIPMENT_GID = SB.ShipmentId)
AND SST.ACTUAL_ARRIVAL_DATE IS NOT NULL
UNION ALL
-- 11. Proof of Delivery Received
SELECT
SB.ShipmentId,
'Proof of Delivery Received' AS ActivityName,
SE.EVENT_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
SE.EVENT_REMARK_TEXT AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_EVENT SE ON SB.ShipmentId = SE.SHIPMENT_GID
WHERE SE.EVENT_CODE = '[Your POD Received Event Code]'
UNION ALL
-- 12. Freight Bill Audited
SELECT
SB.ShipmentId,
'Freight Bill Audited' AS ActivityName,
B.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN BILL B ON SB.ShipmentId = B.SHIPMENT_GID
WHERE B.BILL_STATUS_GID = 'VOUCHER_AUDITED'
UNION ALL
-- 13. Payment Processed
SELECT
SB.ShipmentId,
'Payment Processed' AS ActivityName,
B.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN BILL B ON SB.ShipmentId = B.SHIPMENT_GID
WHERE B.BILL_STATUS_GID = '[Your Payment Processed Bill Status]'
UNION ALL
-- 14. Shipment Cancelled
SELECT
SB.ShipmentId,
'Shipment Cancelled' AS ActivityName,
S.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT S ON SB.ShipmentId = S.SHIPMENT_GID
WHERE S.SHIPMENT_STATUS_GID = 'SHIPMENT_CANCELLED' Etapas
- Estabelecer Conexão com o Banco: Obtenha credenciais de apenas leitura e os detalhes da conexão (host, porta, service ID) do banco de dados do Oracle OTM. Você precisará de acesso ao esquema
GLOGOWNER. - Configurar o Cliente SQL: Configure uma ferramenta de cliente SQL, como Oracle SQL Developer, DBeaver ou Toad, com as informações de conexão obtidas no passo anterior.
- Preparar a Consulta: Copie a consulta SQL completa fornecida neste documento para o editor de consultas do seu cliente SQL.
- Definir Parâmetros da Query: Localize os marcadores de posição nas cláusulas
WHEREda consulta. Substitua[START_DATE],[END_DATE]e[YOUR_DOMAIN_NAME]pelos valores corretos. Recomendamos um período de 3 a 6 meses e o domínio operacional que deseja analisar. - Executar a Query: Execute a consulta SQL modificada. Dependendo do período escolhido e do tamanho do sistema, isso pode levar alguns minutos.
- Revisar os Resultados: Assim que a consulta terminar, faça uma revisão rápida dos dados para garantir que as linhas foram retornadas e que colunas como
ShipmentId,ActivityNameeEventTimeestão preenchidas. - Exportar para CSV: Exporte o conjunto total de resultados para um arquivo CSV. Use as configurações padrão: delimitador de vírgula, aspas duplas para texto e codificação UTF-8.
- Validar Cabeçalhos das Colunas: Antes de subir o arquivo, verifique se os cabeçalhos no CSV correspondem exatamente aos nomes:
ShipmentId,ActivityName,EventTime,CarrierName,RequestedDeliveryDate,ShipmentCost,TransportationModeeDelayReason. - Upload para o ProcessMind: Seu arquivo CSV está pronto para ser carregado e analisado no ProcessMind.
Configuração
- Esquema do Banco de Dados: A consulta foi criada para rodar no esquema padrão do Oracle Transportation Management, normalmente chamado
GLOGOWNER. - Autorizações Necessárias: É preciso um usuário de banco de dados com acesso de leitura às tabelas referenciadas na consulta. Isso inclui
SHIPMENT,SHIPMENT_STOP,ORDER_RELEASE,SHIPMENT_STATUS,SERVPROV,SHIPMENT_COST,DOCUMENT,BILLeVOUCHER. - Filtragem de Domínio: É fundamental filtrar pelo
DOMAIN_NAMEem ambientes multi-tenant do OTM. A query possui o marcador[YOUR_DOMAIN_NAME]que deve ser configurado para extrair os dados da entidade de negócio correta. - Intervalo de Datas: Para gerenciar a performance e o volume de dados, você deve definir as datas de início e fim. Recomendamos filtrar por uma coluna indexada, como
SHIPMENT.INSERT_DATE. Um período de 3 a 6 meses é o ideal para uma análise inicial. - Personalização de Códigos de Status: A consulta utiliza códigos de status padrão (ex:
PLANNING_PLANNED FINAL,TENDER_ACCEPTED). Caso sua implementação do OTM utilize códigos personalizados, será necessário ajustar os valores nas cláusulasWHEREpara refletir as configurações do seu sistema.
a Consulta de Exemplo sql
WITH ShipmentBase AS (
SELECT s.SHIPMENT_GID, s.SERVPROV_GID, s.LATE_DELIVERY_DATE, s.TRANSPORT_MODE_GID, sc.TotalShipmentCost
FROM GLOGOWNER.SHIPMENT s
LEFT JOIN (
SELECT sc.SHIPMENT_GID, SUM(sc.COST) as TotalShipmentCost
FROM GLOGOWNER.SHIPMENT_COST sc
GROUP BY sc.SHIPMENT_GID
) sc ON s.SHIPMENT_GID = sc.SHIPMENT_GID
WHERE s.INSERT_DATE BETWEEN TO_DATE('[START_DATE]', 'YYYY-MM-DD') AND TO_DATE('[END_DATE]', 'YYYY-MM-DD')
AND s.DOMAIN_NAME = '[YOUR_DOMAIN_NAME]'
),
OrderReleaseInfo AS (
SELECT ssu.SHIPMENT_GID, MIN(orl.INSERT_DATE) as Earliest_OR_Date
FROM GLOGOWNER.S_SHIP_UNIT ssu
JOIN GLOGOWNER.S_SHIP_UNIT_LINE ssul ON ssu.S_SHIP_UNIT_GID = ssul.S_SHIP_UNIT_GID
JOIN GLOGOWNER.ORDER_RELEASE_LINE orl ON ssul.ORDER_RELEASE_LINE_GID = orl.ORDER_RELEASE_LINE_GID
GROUP BY ssu.SHIPMENT_GID
)
-- 1. Transportation Request Received
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Transportation Request Received' AS "ActivityName",
ori.Earliest_OR_Date AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN OrderReleaseInfo ori ON sb.SHIPMENT_GID = ori.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ori.Earliest_OR_Date IS NOT NULL
UNION ALL
-- 2. Shipment Planned
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Planned' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'PLANNING_PLANNED FINAL'
UNION ALL
-- 3. Carrier Assigned
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Carrier Assigned' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'TENDER_ACCEPTED'
UNION ALL
-- 4. Shipment Booked
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Booked' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'SECURE RESOURCES_BOOKED'
UNION ALL
-- 5. Pickup Appointment Scheduled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Pickup Appointment Scheduled' AS "ActivityName",
stp.APPT_START_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.APPT_START_TIME IS NOT NULL
UNION ALL
-- 6. Goods Picked Up
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Goods Picked Up' AS "ActivityName",
stp.ACTUAL_DEPARTURE_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.ACTUAL_DEPARTURE_TIME IS NOT NULL
UNION ALL
-- 7. Shipment In Transit
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment In Transit' AS "ActivityName",
stp.ACTUAL_DEPARTURE_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.ACTUAL_DEPARTURE_TIME IS NOT NULL
UNION ALL
-- 8. Customs Cleared
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Customs Cleared' AS "ActivityName",
se.EVENT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
se.REMARK_TEXT AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_EVENT se ON sb.SHIPMENT_GID = se.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE se.EVENT_CODE_GID = '[Your Customs Cleared Event Code]'
UNION ALL
-- 9. Delivery Appointment Scheduled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Delivery Appointment Scheduled' AS "ActivityName",
stp.APPT_START_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = (SELECT MAX(s2.STOP_NUM) FROM GLOGOWNER.SHIPMENT_STOP s2 WHERE s2.SHIPMENT_GID = stp.SHIPMENT_GID)
AND stp.APPT_START_TIME IS NOT NULL
UNION ALL
-- 10. Goods Delivered
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Goods Delivered' AS "ActivityName",
stp.ACTUAL_ARRIVAL_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = (SELECT MAX(s2.STOP_NUM) FROM GLOGOWNER.SHIPMENT_STOP s2 WHERE s2.SHIPMENT_GID = stp.SHIPMENT_GID)
AND stp.ACTUAL_ARRIVAL_TIME IS NOT NULL
UNION ALL
-- 11. Proof of Delivery Received
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Proof of Delivery Received' AS "ActivityName",
d.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.DOCUMENT d ON sb.SHIPMENT_GID = d.OBJECT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE d.OBJECT_TYPE_GID = 'SHIPMENT' AND d.DOCUMENT_TYPE_GID = 'POD'
UNION ALL
-- 12. Freight Bill Audited
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Freight Bill Audited' AS "ActivityName",
b.UPDATE_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.BILL b ON sb.SHIPMENT_GID = b.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE b.APPROVAL_STATUS_GID = 'VOUCHER_AUDITED'
UNION ALL
-- 13. Payment Processed
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Payment Processed' AS "ActivityName",
v.UPDATE_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.BILL b ON sb.SHIPMENT_GID = b.SHIPMENT_GID
JOIN GLOGOWNER.VOUCHER v ON b.BILL_GID = v.BILL_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE v.VOUCHER_STATUS_GID = 'VOUCHER_PAID' -- This status may vary based on configuration
UNION ALL
-- 14. Shipment Cancelled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Cancelled' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID LIKE '%CANCELLED%';