3458 lines
1.9 MiB
3458 lines
1.9 MiB
[
|
||
{
|
||
"title": "HUB Overview",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/HUB+Overview",
|
||
"content": "<ORGANIZATION> services provide services for clients using <ORGANIZATION> (Reltio or Nucleus 360) in following fields:As abstraction layer providing <ORGANIZATION> for <ORGANIZATION> data <URL>livering common processes that are hiding complexity of interaction with Reltio API.Enhancing Reltio functionality by data quality validating and through cleaning services.Extending data protection by limiting clients' <URL>lowing to publish <ORGANIZATION> data to multiple clients using event streaming and batch <URL><ORGANIZATION> consist of:Integration Gateway providing services for data handling in Reltio (storing and accessing entities directly).Publishing Hub being responsible for publishing <ORGANIZATION> profiles to <URL>e MDM HUB ecosystem is presented at the picture below. "
|
||
},
|
||
{
|
||
"title": "Modules",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Modules",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Direct Channel",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Direct+Channel",
|
||
"content": "DescriptionDirect channel exposes unified REST <ORGANIZATION> interface to update/search profiles in <ORGANIZATION> systems. The diagram below shows the logical architecture of the Direct Channel module. Logical architectureComponentsComponentSubcomponentDescriptionAPI GatewayKong <ORGANIZATION> components playing the role of proxAuthentication engineKong module providing client authentication servicesManager/<ORGANIZATION> microservice orchestrating <ORGANIZATION> callsData <ORGANIZATION> service validating data sent to <ORGANIZATION> client access to <ORGANIZATION> routing engineroute calls to <ORGANIZATION> calls in EFK service for tracing reasons. Reltio Adapterhandles communication with <ORGANIZATION> systemNucleus Adapterhandle communication with <PERSON> systemHUB StoreMongoDB database plays the role of persistence store for <ORGANIZATION> requests to regional <ORGANIZATION> servicesFlowsFlowDescriptionCreate/Update <ORGANIZATION> or Update <ORGANIZATION>/<ORGANIZATION> entitySearch <ORGANIZATION> entityGet EntityRead entityRead LOVRead LOVValidate HCPValidate HCP"
|
||
},
|
||
{
|
||
"title": "Streaming channel",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Streaming+channel",
|
||
"content": "DescriptionStreaming channel distributes <ORGANIZATION> profile updates through <PERSON> topics in near real-time to consumers. Reltio events generate on profile changes are sent via <ORGANIZATION> queue to <ORGANIZATION> HUB enriches events with profile data and dedupes them. During the process, callback service process data (for example: calculate ranks and <ORGANIZATION> names, clean unused topics) and updates profile in <ORGANIZATION> with the calculated values. Publisher distributes events to target client topics based on the configured routing <URL><PERSON> built-in <ORGANIZATION> provides <ORGANIZATION> access to up to date <ORGANIZATION> data in both the object and the relational model. Logical architectureComponentsComponentDescriptionReltio subscriberConsume events from ReltioCallback serviceTrigger callback actions on incoming events for example calculated rankingsDirect <ORGANIZATION> updates triggered by callbacksHUB StoreKeeps MDM data historyReconciliation serviceReconcile missing eventsPublisherEvaluates routing rules and publishes data do downstream consumersSnowflake <PERSON> data in the relation modelKafka <ORGANIZATION> data to <ORGANIZATION> from <ORGANIZATION> enricherEnrich events with full data retrieved from ReltioFlowsFlowDescriptionReltio events streamingDistribute <ORGANIZATION> data changes to downstream consumers in the streaming modeNucleus events streamingDistribute <PERSON> data changes to downstream consumers in the streaming modeSnowflake: Events publish flowDistribute Reltio MDM data changes to <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Java Batch Channel",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Java+Batch+Channel",
|
||
"content": "<ORGANIZATION> is the set of services responsible to load file extract delivered by the external source to Reltio. The heart of the module is file loader service aka inc-batch-channel that maps flat model to Reltio model and orchestrates the load through asynchronous interface manage by Manager. Batch flows are managed by Apache Airflow scheduler.Logical architectureComponentsApache Airflow - batch flows scheduler and <URL>le loader aka inc-batch-channel - maps files to <ORGANIZATION> model and orchestrate profiles loads Manager/Orchestrator - java microservice orchestrating <ORGANIZATION> calls <ORGANIZATION> batches - generic flow for loading source data from flat files into Reltio"
|
||
},
|
||
{
|
||
"title": "ETL Batch Channel",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/ETL+Batch+Channel",
|
||
"content": "DescriptionETL Batch channel exposes REST <ORGANIZATION> for <ORGANIZATION> components like <ORGANIZATION> and manages a loading process in an asynchronous way.With its own cache based on <ORGANIZATION>, it supports full loads providing a delta detection logic.Logical architectureComponentsBatch service - exposes REST <ORGANIZATION> for <ORGANIZATION> platforms to load batch data into <ORGANIZATION> and controls the loading <URL><ORGANIZATION> - a registry of batch loads and a cache to handle delta <URL>nager/Orchestrator - java microservice orchestrating <ORGANIZATION> calls into <ORGANIZATION> and providing validation and data protection services. FlowsETL batch flow - ageneric flow for loading source data with <ORGANIZATION> tools like <ORGANIZATION> into Reltio"
|
||
},
|
||
{
|
||
"title": "Environments",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Environments",
|
||
"content": "Reltio Export IPsEnvironmentIPsReltio Team commentEMEA NON-PRODEMEA PROD- ●●●●●●●●●●●●- ●●●●●●●●●●●●- ●●●●●●●●●●●●are available across all EMEA environmentsAPAC NON-PRODAPAC PROD- ●●●●●●●●●●●- ●●●●●●●●●●●●●●- ●●●●●●●●●●●●●are available across all <ORGANIZATION> environmentsGBLUS NON-PRODGBLUS PROD- ●●●●●●●●●●●●●- ●●●●●●●●●●●- ●●●●●●●●●●●●● for the dev/test and 361 tenants, the IPs can be used by any of the <URL><PERSON> PRODThe <ORGANIZATION> tenants use the same access points as the <LOCATION>"
|
||
},
|
||
{
|
||
"title": "<PERSON>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "ContactsTypeContactCommentSupported MDMHUB environmentsDLDL-ADL-ATP-GLOBAL_MDM_RELTIO@<URL>Supports Reltio instancesGBLUS - Reltio only"
|
||
},
|
||
{
|
||
"title": "AMER Non PROD Cluster",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/AMER+Non+PROD+Cluster",
|
||
"content": "Physical ArchitectureKubernetes clusternameIPConsole addressresource typeAWS regionFilesystemComponentsTypeatp-mdmhub-nprod-amer10.9.64.0/1810.9.0.0/18<URL>EKS over <ORGANIZATION> per node,6TBx2 replicated <ORGANIZATION>, <PERSON>, <PERSON>, <PERSON>, <PERSON> microservicesoutbound and inboundNon PROD - backend <ORGANIZATION> managerkubectl logs {{pod name}} --namespace kongamer-backendKafkamdm-kafka-kafka-0mdm-kafka-kafka-1mdm-kafka-kafka-2Kafkalogsamer-backendKafka <ORGANIZATION>-kafka-kafka-exporter-*Kafka <ORGANIZATION> logs {{pod name}} --namespace amer-backendamer-backendZookeeper mdm-kafka-zookeeper-0mdm-kafka-zookeeper-1mdm-kafka-zookeeper-2Zookeeperlogsamer-backendMongomongo-0Mongologsamer-backendKibanakibana-kb-*EFK - kibanakubectl logs {{pod name}} --namespace amer-backendamer-backendFluentDfluentd-*EFK - fluentdkubectl logs {{pod name}} --namespace amer-backendamer-backendElasticsearchelasticsearch-es-default-0elasticsearch-es-default-1EFK - elasticsearchkubectl logs {{pod name}} --namespace amer-backendamer-backendSQS ExporterTODOSQS Reltio exporterkubectl logs {{pod name}} --namespace amer-backendmonitoringCadvisormonitoring-cadvisor-*Docker <ORGANIZATION> logs {{pod name}} --namespace monitoringamer-backendMongo Connectormonstache-*EFK - mongo → elasticsearch exporterkubectl logs {{pod name}} --namespace amer-backendamer-backendMongo exportermongo-exporter-*mongo metrics exporter---amer-backendGit2Consulgit2consul-*GIT to Consul loaderkubectl logs {{pod name}} --namespace amer-backendamer-backendConsulconsul-consul-server-0consul-consul-server-1consul-consul-server-2Consulkubectl logs {{pod name}} --namespace amer-backendamer-backendSnowflake connectoramer-dev-mdm-connect-cluster-connect-*amer-qa-mdm-connect-cluster-connect-*amer-stage-mdm-connect-cluster-connect-*Snowflake Kafka Connectorkubectl logs {{pod name}} --namespace amer-backendmonitoringKafka Connect Exportermonitoring-jdbc-snowflake-exporter-amer-dev-*monitoring-jdbc-snowflake-exporter-amer-stage-*monitoring-jdbc-snowflake-exporter-amer-stage-*Kafka <NRP> metric exporterkubectl logs {{pod name}} --namespace monitoringamer-backendAkhqakhq-*Kafka UIlogsCertificates Wed Aug 31 21:57:19 CEST <DATE_TIME> until: <DATE_TIME> 22:07:17 CEST 2036ResourceCertificate LocationValid fromValid to Issued <PERSON>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, Consul, <PERSON>,<URL> <DATE_TIME> 14:13:53 GMTTue, <DATE_TIME> GMT<URL> 18 11:07:55 2022 GMTJan 18 11:07:55 2024 <URL>:9094Setup and check connections:Snowflake - managing service accounts - <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "AMER DEV Services",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/AMER+DEV+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762HUB UI<URL> MDM DataMartResource NameEndpointDB <ORGANIZATION> warehouse <ORGANIZATION> dashboardsResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> Overview<URL> dashboardsResource NameEndpointKibana<URL> (DEV prefixed dashboards)DocumentationResource <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> means part of name which <PERSON> - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableamer-devBatch Servicemdmhub-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsamer-devApi routermdmhub-mdm-api-router-*API gateway accross multiple tenatslogsamer-devSubscribermdmhub-reltio-subscriber-*SQS Reltio events subscriberlogsamer-devEnrichermdmhub-entity-enricher-*Reltio events enricherlogsamer-devCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsamer-devPublishermdmhub-event-publisher-*Events publisherlogsamer-devReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation <ORGANIZATION> (GBLUS)MDM SystemsReltioDEV - wn60kG248ziQSMWResource NameEndpointSQS queue name<URL> Gateway Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:<URL><ORGANIZATION><URL><ORGANIZATION><URL>MigrationThe <PERSON> is the first environment that was migrated from old ifrastructure (<ORGANIZATION> based) to a new one - Kubernetes based. The following table presents old endpoints and their substitutes in the new environment. Everyone who wants to connect with <PERSON> has to use new <URL>scriptionOld endpointNew endpointManager API<URL>:8443/dev-ext<URL>:8443/dev-ext<URL> Service API<URL>:8443/dev-batch-ext<URL>:8443/dev-batch-ext<URL> API<URL>:8443/v1<URL>:8443/v1<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/AMER+QA+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> <ORGANIZATION><US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762HUB UI<URL> MDM DataMartResource NameEndpointDB Url<URL> NameCOMM_AMER_MDM_DMART_QA_DBDefault warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_AMER_MDM_DMART_QA_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> Overview<URL> NameEndpointKibana<URL> (QA prefixed dashboards)DocumentationResource <ORGANIZATION> API documentation<URL> <PERSON><URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> means part of name which <PERSON> - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableamer-qaBatch Servicemdmhub-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsamer-qaApi routermdmhub-mdm-api-router-*API gateway accross multiple tenatslogsamer-qaSubscribermdmhub-reltio-subscriber-*SQS Reltio events subscriberlogsamer-qaEnrichermdmhub-entity-enricher-*Reltio events enricherlogsamer-qaCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsamer-qaPublishermdmhub-event-publisher-*Events publisherlogsamer-qaReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation <ORGANIZATION> (GBLUS)MDM SystemsReltioDEV - wn60kG248ziQSMWResource NameEndpointSQS queue name<URL> Gateway Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL> SASL SSLKibana<URL><ORGANIZATION><URL>"
|
||
},
|
||
{
|
||
"title": "AMER STAGE Services",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/AMER+STAGE+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762HUB UI<URL> MDM DataMartResource NameEndpointDB Url<URL> NameCOMM_AMER_MDM_DMART_STG_DBDefault warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_AMER_MDM_DMART_STG_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> Overview<URL> NameEndpointKibana<URL> (STAGE prefixed dashboards)DocumentationResource <ORGANIZATION> API documentation<URL> NameEndpointAirflow UI<URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> means part of name which <PERSON> - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableamer-stageBatch Servicemdmhub-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsamer-stageApi routermdmhub-mdm-api-router-*API gateway accross multiple tenatslogsamer-stageSubscribermdmhub-reltio-subscriber-*SQS Reltio events subscriberlogsamer-stageEnrichermdmhub-entity-enricher-*Reltio events enricherlogsamer-stageCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsamer-stagePublishermdmhub-event-publisher-*Events publisherlogsamer-stageReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation <ORGANIZATION> (GBLUS)MDM SystemsReltioDEV - wn60kG248ziQSMWResource NameEndpointSQS queue name<URL> <LOCATION> Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL> SASL SSLKibana<URL><ORGANIZATION><URL>"
|
||
},
|
||
{
|
||
"title": "GBLUS-DEV Services",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/GBLUS-DEV+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> <ORGANIZATION><US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762HUB UI<URL> MDM DataMartResource NameEndpointDB Url<URL>DB <ORGANIZATION> warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_DEV_MDM_DMART_DEVOPS_ROLEGrafana dashboardsResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> Overview<URL> NameEndpointKibana<URL> (DEV prefixed dashboards)DocumentationResource <ORGANIZATION> API documentation<URL> <PERSON><URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> means part of name which changing)DescriptionLogsPod portsgblus-stageManagermdmhub-mdm-manager-*Gateway APIlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availablegblus-stageBatch Servicemdmhub-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsgblus-stageApi routermdmhub-mdm-api-router-*API gateway accross multiple tenatslogsgblus-stageSubscribermdmhub-reltio-subscriber-*SQS Reltio events subscriberlogsgblus-stageEnrichermdmhub-entity-enricher-*Reltio events enricherlogsgblus-stageCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsgblus-stagePublishermdmhub-event-publisher-*Events publisherlogsgblus-stageReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation <ORGANIZATION> (GBLUS)MDM SystemsReltioDEV(gblus_dev) - sw8BkTZqjzGr7hnResource NameEndpointSQS queue name<URL> Gateway Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:<URL><ORGANIZATION><URL><ORGANIZATION><URL>MigrationThe following table presents old endpoints and their substitutes in the new environment. Everyone who wants to connect with gblus dev has to use new <URL>scriptionOld endpointNew endpointManager API<URL>:8443/dev-ext<URL> Service API<URL>:8443/dev-batch-ext<URL> API<URL>:8443/v1<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/GBLUS-QA+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762HUB <PERSON> NameEndpointDB <ORGANIZATION> warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_QA_MDM_DMART_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> Overview<URL> NameEndpointKibana<URL> (QA prefixed dashboards)DocumentationResource <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> means part of name which changing)DescriptionLogsPod portsgblus-stageManagermdmhub-mdm-manager-*Gateway APIlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availablegblus-stageBatch Servicemdmhub-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsgblus-stageApi routermdmhub-mdm-api-router-*API gateway accross multiple tenatslogsgblus-stageSubscribermdmhub-reltio-subscriber-*SQS Reltio events subscriberlogsgblus-stageEnrichermdmhub-entity-enricher-*Reltio events enricherlogsgblus-stageCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsgblus-stagePublishermdmhub-event-publisher-*Events publisherlogsgblus-stageReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation <ORGANIZATION> (GBLUS)MDM SystemsReltioQA(gblus_qa) - rEAXRHas2ovllvTSQS queue name<URL> Gateway Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL> SASL SSLKibana<URL><ORGANIZATION><URL>MigrationThe following table presents old endpoints and their substitutes in the new environment. Everyone who wants to connect with gblus qa has to use new <URL>scriptionOld endpointNew endpointManager API<URL>:8443/qa-ext<URL> Service API<URL>:8443/qa-batch-ext<URL> API<URL>:8443/v1<URL>"
|
||
},
|
||
{
|
||
"title": "GBLUS-STAGE Services",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/GBLUS-STAGE+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> <ORGANIZATION> UI<URL> MDM DataMartResource NameEndpointDB Url<URL> NameCOMM_GBL_MDM_DMART_STGDefault warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_STG_MDM_DMART_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> Overview<URL> NameEndpointKibana<URL> (STAGE prefixed dashboards)DocumentationResource <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> means part of name which changing)DescriptionLogsPod portsgblus-stageManagermdmhub-mdm-manager-*Gateway APIlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availablegblus-stageBatch Servicemdmhub-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsgblus-stageApi routermdmhub-mdm-api-router-*API gateway accross multiple tenatslogsgblus-stageSubscribermdmhub-reltio-subscriber-*SQS Reltio events subscriberlogsgblus-stageEnrichermdmhub-entity-enricher-*Reltio events enricherlogsgblus-stageCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsgblus-stagePublishermdmhub-event-publisher-*Events publisherlogsgblus-stageReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation <ORGANIZATION> (GBLUS)MDM SystemsReltioSTAGE(gblus_stage) - 48ElTIteZz05XwTSQS queue name<URL> Gateway Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL> SASL SSLKibana<URL><ORGANIZATION><URL>"
|
||
},
|
||
{
|
||
"title": "AMER PROD Cluster",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/AMER+PROD+Cluster",
|
||
"content": "Physical ArchitectureKubernetes clusternameIPConsole addressresource typeAWS regionFilesystemComponentsTypeatp-mdmhub-prod-amer10.9.64.0/1810.9.0.0/18<URL>EKS over <ORGANIZATION> per node,6TBx3 replicated <PERSON>, <PERSON>, <PERSON>, <PERSON>, <PERSON> microservicesoutbound and inboundPROD - backend <ORGANIZATION> managerkubectl logs {{pod name}} --namespace kongamer-backendKafkamdm-kafka-kafka-0mdm-kafka-kafka-1mdm-kafka-kafka-2Kafkalogsamer-backendKafka <ORGANIZATION>-kafka-kafka-exporter-*Kafka <ORGANIZATION> logs {{pod name}} --namespace amer-backendamer-backendZookeeper mdm-kafka-zookeeper-0mdm-kafka-zookeeper-1mdm-kafka-zookeeper-2Zookeeperlogsamer-backendMongomongo-0Mongologsamer-backendKibanakibana-kb-*EFK - kibanakubectl logs {{pod name}} --namespace amer-backendamer-backendFluentDfluentd-*EFK - fluentdkubectl logs {{pod name}} --namespace amer-backendamer-backendElasticsearchelasticsearch-es-default-0elasticsearch-es-default-1EFK - elasticsearchkubectl logs {{pod name}} --namespace amer-backendamer-backendSQS ExporterTODOSQS Reltio exporterkubectl logs {{pod name}} --namespace amer-backendmonitoringCadvisormonitoring-cadvisor-*Docker <ORGANIZATION> logs {{pod name}} --namespace monitoringamer-backendMongo Connectormonstache-*EFK - mongo → elasticsearch exporterkubectl logs {{pod name}} --namespace amer-backendamer-backendMongo exportermongo-exporter-*mongo metrics exporter---amer-backendGit2Consulgit2consul-*GIT to Consul loaderkubectl logs {{pod name}} --namespace amer-backendamer-backendConsulconsul-consul-server-0consul-consul-server-1consul-consul-server-2Consulkubectl logs {{pod name}} --namespace amer-backendamer-backendSnowflake connectoramer-prod-mdm-connect-cluster-connect-*amer-qa-mdm-connect-cluster-connect-*amer-stage-mdm-connect-cluster-connect-*Snowflake Kafka Connectorkubectl logs {{pod name}} --namespace amer-backendmonitoringKafka Connect Exportermonitoring-jdbc-snowflake-exporter-amer-prod-*monitoring-jdbc-snowflake-exporter-amer-stage-*monitoring-jdbc-snowflake-exporter-amer-stage-*Kafka <NRP> metric exporterkubectl logs {{pod name}} --namespace monitoringamer-backendAkhqakhq-*Kafka UIlogsCertificates Wed Aug 31 21:57:19 CEST <DATE_TIME> until: <DATE_TIME> 22:07:17 CEST 2036ResourceCertificate LocationValid fromValid to Issued <PERSON>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, Consul, <PERSON>,<URL> <DATE_TIME> 14:13:53 GMTTue, <DATE_TIME> 14:13:53 GMT<URL> 18 <DATE_TIME> 2022 GMTJan 18 11:07:55 2024 <URL>:9094Setup and check connections:Snowflake - managing service accounts - via <URL> - Get Support → Submit ticket → GBL-ATP-COMMERCIAL SNOWFLAKE DOMAIN ADMI"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/AMER+PROD+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> <ORGANIZATION> <PERSON> DataMartResource NameEndpointDB Url<URL> NameCOMM_AMER_MDM_DMART_PROD_DBDefault warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_AMER_MDM_DMART_PROD_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> Overview<URL> NameEndpointKibana<URL> (PROD prefixed dashboards)DocumentationResource <ORGANIZATION> API documentation<URL> NameEndpointAirflow UI<URL>ConsulResource NameEndpointConsul UI<URL> - KafkaResource NameEndpointAKHQ Kafka <ORGANIZATION> means part of name which <PERSON> - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableamer-prodBatch <PERSON>-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsamer-prodApi routermdmhub-mdm-api-router-*API gateway accross multiple tenatslogsamer-prodSubscribermdmhub-reltio-subscriber-*SQS Reltio events subscriberlogsamer-prodEnrichermdmhub-entity-enricher-*Reltio events enricherlogsamer-prodCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsamer-prodPublishermdmhub-event-publisher-*Events publisherlogsamer-prodReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation <ORGANIZATION> (GBLUS)MDM <ORGANIZATION> Ys7joaPjhr9DwBJResource NameEndpointSQS queue name<URL> Gateway Usersvc-pfe-mdmhub-prodRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:<URL>:9094 SASL SSLKibana<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/GBL+US+PROD+Services",
|
||
"content": "<ORGANIZATION> S3Gateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://gblmdmhubprodamrasp101478Snowflake MDM DataMartDB Url<URL>DB <ORGANIZATION> warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_PROD_MDM_DMART_DEVOPS_ROLEHUB Performance<URL> Topics Overview<URL> Overview<URL> (PROD prefixed dashboards)DocumentationManager <ORGANIZATION> API documentation<URL> UI<URL>ConsulConsul UI<URL> - KafkaAKHQ Kafka UI<URL> & LogsENV (namespace)ComponentPods (* means part of name which changing)DescriptionLogsPod portsgblus-prodManagermdmhub-mdm-manager-*Gateway APIlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availablegblus-prodBatch <PERSON>-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsgblus-prodSubscribermdmhub-reltio-subscriber-*SQS Reltio events subscriberlogsgblus-prodEnrichermdmhub-entity-enricher-*Reltio events enricherlogsgblus-prodCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsgblus-prodPublishermdmhub-event-publisher-*Events publisherlogsgblus-prodReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation serivcelogsgblus-prodOnekey DCRmdmhub-mdm-onekey-dcr-service-*Onekey <ORGANIZATION> (<ORGANIZATION> (GBLUS)ENGAGE (GBLUS)KOL_ONEVIEW (<ORGANIZATION> (GBLUS)GRACE (GBLUS)MDM SystemsReltioPROD- 9kL30u7lFoDHp6XSQS queue name<URL> Gateway Usersvc-pfe-mdmhub-prodRDM<URL> ResourcesMongomongodb://<URL>:<URL>:9094 SASL SSLKibana<URL>"
|
||
},
|
||
{
|
||
"title": "AMER SANDBOX Cluster",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/AMER+SANDBOX+Cluster",
|
||
"content": "Physical Architecture<schema>Kubernetes clusternameIPConsole addressresource typeAWS regionFilesystemComponentsTypeatp-mdmhub-sbx-amer●●●●●●●●●●●●●●●●●●●●●●● <URL>EKS over <ORGANIZATION> per nodeKong, <PERSON>, <PERSON>, <PERSON>, <PERSON> microservicesoutbound and inboundSANDBOX - backend <ORGANIZATION> managerkubectl logs {{pod name}} --namespace kongamer-backendKafkamdm-kafka-kafka-0mdm-kafka-kafka-1mdm-kafka-kafka-2Kafkalogsamer-backendKafka <ORGANIZATION>-kafka-kafka-exporter-*Kafka <ORGANIZATION> logs {{pod name}} --namespace amer-backendamer-backendZookeepermdm-kafka-zookeeper-0mdm-kafka-zookeeper-1mdm-kafka-zookeeper-2Zookeeperlogsamer-backendMongomongo-0Mongologsamer-backendKibanakibana-kb-*EFK - kibanakubectl logs {{pod name}} --namespace amer-backendamer-backendFluentDfluentd-*EFK - fluentdkubectl logs {{pod name}} --namespace amer-backendamer-backendElasticsearchelasticsearch-es-default-0elasticsearch-es-default-1elasticsearch-es-default-2EFK - elasticsearchkubectl logs {{pod name}} --namespace amer-backendmonitoringCadvisormonitoring-cadvisor-*Docker <ORGANIZATION> logs {{pod name}} --namespace monitoringamer-backendMongo Connectormonstache-*EFK - mongo → elasticsearch exporterkubectl logs {{pod name}} --namespace amer-backendamer-backendMongo exportermongo-exporter-*mongo metrics exporter---amer-backendGit2Consulgit2consul-*GIT to Consul loaderkubectl logs {{pod name}} --namespace amer-backendamer-backendConsulconsul-consul-server-0consul-consul-server-1consul-consul-server-2Consulkubectl logs {{pod name}} --namespace amer-backendamer-backendSnowflake connectoramer-devsbx-mdm-connect-cluster-connect-*Snowflake Kafka Connectorkubectl logs {{pod name}} --namespace amer-backendamer-backendAkhqakhq-*Kafka UIlogsCertificates Wed Aug 31 21:57:19 CEST <DATE_TIME> until: <DATE_TIME> 22:07:17 CEST 2036ResourceCertificate LocationValid fromValid to Issued <PERSON>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, Consul, <PERSON>,<URL> 15:16:<US_DRIVER_LICENSE>-02-21 15:16:04<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/AMER+DEVSBX+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <ORGANIZATION> UI<URL> dashboardsResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> Overview<URL> dashboardsResource NameEndpointKibana<URL> (<ORGANIZATION> prefixed dashboards)DocumentationResource <ORGANIZATION> API documentation<URL> NameEndpointAirflow UI<URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> means part of name which <PERSON> - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableamer-devsbxBatch Servicemdmhub-batch-service-*Batch service, <ORGANIZATION> batch loaderlogsamer-devsbxApi routermdmhub-mdm-api-router-*API gateway accross multiple tenatslogsamer-devsbxEnrichermdmhub-entity-enricher-*Reltio events enricherlogsamer-devsbxCallbackmdmhub-callback-service-*Events processor, callback, and pre-callback servicelogsamer-devsbxPublishermdmhub-event-publisher-*Events publisherlogsamer-devsbxReconciliationmdmhub-mdm-reconciliation-service-*Reconciliation serivcelogsInternal ResourcesResource NameEndpointMongomongodb://<URL>:<URL>:9094 SASL SSLKibana<URL><ORGANIZATION><URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/APAC",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/APAC+Non+PROD+Cluster",
|
||
"content": "Physical ArchitectureKubernetes clusternameIPConsole addressresource typeAWS regionFilesystemComponentsTypeatp-mdmhub-nprod-apac●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●<URL>EKS over <ORGANIZATION> per node,6TBx2 replicated <ORGANIZATION>, <PERSON>, <PERSON>, <PERSON>, MDMHUB microservicesinbound/outboundComponents & LogsDEV - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsapac-devManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableapac-<PERSON>batch-service-*Batch <NRP>-devAPI routermdmhub-mdm-api-router-*API Routerlogsapac-devReltio Subscribermdmhub-reltio-subscriber-*Reltio <ORGANIZATION>-entity-enricher-*Entity Enricherlogsapac-devCallback Servicemdmhub-callback-service-*Callback Servicelogsapac-devEvent Publishermdmhub-event-publisher-*Event Publisherlogsapac-devReconciliation Servicemdmhub-mdm-reconciliation-service-*Reconciliation <PERSON>-devCallback delay servicemdmhub-callback-delay-service-*Callback delay servicelogsQA - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsapac-qaManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableapac-qaBatch Servicemdmhub-batch-service-*Batch <NRP>-qaAPI routermdmhub-mdm-api-router-*API Routerlogsapac-qaReltio Subscribermdmhub-reltio-subscriber-*Reltio Subscriberlogsapac-qaEntity Enrichermdmhub-entity-enricher-*Entity Enricherlogsapac-qaCallback Servicemdmhub-callback-service-*Callback Servicelogsapac-qaEvent Publishermdmhub-event-publisher-*Event Publisherlogsapac-qaReconciliation Servicemdmhub-mdm-reconciliation-service-*Reconciliation <PERSON>-qaCallback delay servicemdmhub-callback-delay-service-*Callback delay servicelogsSTAGE - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsapac-stageManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableapac-stageBatch Servicemdmhub-batch-service-*Batch <NRP>-stageAPI routermdmhub-mdm-api-router-*API Routerlogsapac-stageReltio <PERSON>-reltio-subscriber-*Reltio Subscriberlogsapac-stageEntity Enrichermdmhub-entity-enricher-*Entity <PERSON>-stageCallback Servicemdmhub-callback-service-*Callback Servicelogsapac-stageEvent Publishermdmhub-event-publisher-*Event Publisherlogsapac-stageReconciliation <PERSON>-stageCallback delay servicemdmhub-callback-delay-service-*Callback delay servicelogsNon PROD - backend NamespaceComponentPodDescriptionLogskongKongmdmhub-kong-kong-*API managerkubectl logs {{pod name}} --namespace kongapac-backendKafkamdm-kafka-kafka-0mdm-kafka-kafka-1mdm-kafka-kafka-2Kafkalogsapac-backendKafka <ORGANIZATION>-kafka-kafka-exporter-*Kafka <ORGANIZATION> logs {{pod name}} --namespace apac-backendapac-backendZookeeper mdm-kafka-zookeeper-0mdm-kafka-zookeeper-1mdm-kafka-zookeeper-2Zookeeperlogsapac-backendMongomongo-0Mongologsapac-backendKibanakibana-kb-*EFK - kibanakubectl logs {{pod name}} --namespace apac-backendapac-backendFluentDfluentd-*EFK - fluentdkubectl logs {{pod name}} --namespace apac-backendapac-backendElasticsearchelasticsearch-es-default-0elasticsearch-es-default-1EFK - elasticsearchkubectl logs {{pod name}} --namespace apac-backendapac-backendSQS ExporterTODOSQS Reltio exporterkubectl logs {{pod name}} --namespace <ORGANIZATION>-backendmonitoringcAdvisormonitoring-cadvisor-*Docker <ORGANIZATION> logs {{pod name}} --namespace monitoringapac-backendMongo Connectormonstache-*EFK - mongo → elasticsearch exporterkubectl logs {{pod name}} --namespace apac-backendapac-backendMongo exportermongo-exporter-*mongo metrics exporter---<ORGANIZATION>-backendGit2Consulgit2consul-*GIT to Consul loaderkubectl logs {{pod name}} --namespace apac-backendapac-backendConsulconsul-consul-server-0consul-consul-server-1consul-consul-server-2Consulkubectl logs {{pod name}} --namespace apac-backendapac-backendSnowflake connectorapac-dev-mdm-connect-cluster-connect-*apac-qa-mdm-connect-cluster-connect-*apac-stage-mdm-connect-cluster-connect-*Snowflake Kafka Connectorkubectl logs {{pod name}} --namespace apac-backendmonitoringKafka Connect Exportermonitoring-jdbc-snowflake-exporter-apac-dev-*monitoring-jdbc-snowflake-exporter-apac-stage-*monitoring-jdbc-snowflake-exporter-apac-stage-*Kafka <NRP> metric exporterkubectl logs {{pod name}} --namespace monitoringapac-backendAKHQakhq-*Kafka UIlogsCertificates ResourceCertificate LocationValid fromValid to Issued <PERSON>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, Consul, <PERSON>,<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/APAC+DEV+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> <ORGANIZATION> <US_DRIVER_LICENSE>://globalmdmnprodaspasp202202171347HUB UI<URL> MDM DataMartResource NameEndpointDB Url<URL>DB NameCOMM_APAC_MDM_DMART_DEV_DBDefault warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_APAC_MDM_DMART_DEV_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Overview<URL> State<URL> Monitoring<URL> Monitoring<URL> NameEndpointKibana<URL> (DEV prefixed dashboards)DocumentationResource NameEndpointManager <ORGANIZATION> API documentation<URL> NameEndpointAirflow UI<URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> (<ORGANIZATION>, <ORGANIZATION>, <PERSON> - 2NBAwv1z2AvlkgSResource NameEndpointSQS queue name<URL> <ORGANIZATION> NameEndpointMongomongodb://<URL>:<URL>:9094 SASL SSLKibana<URL>Elasticsearch<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/APAC+QA+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://globalmdmnprodaspasp202202171347HUB UI<URL> MDM DataMartResource NameEndpointDB Url<URL>DB <ORGANIZATION> warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_APAC_MDM_DMART_QA_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Overview<URL> State<URL> Monitoring<URL> Monitoring<URL> NameEndpointKibana<URL> (QA prefixed dashboards)DocumentationResource <ORGANIZATION> <PERSON><URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> (<ORGANIZATION>, <ORGANIZATION>, <PERSON> NameEndpointSQS queue name<URL> Gateway Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:<URL>:9094 SASL SSLKibana<URL>Elasticsearch<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/APAC+STAGE+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://globalmdmnprodaspasp202202171347HUB UI<URL> MDM DataMartResource NameEndpointDB Url<URL>DB NameCOMM_APAC_MDM_DMART_STG_DBDefault warehouse <NRP> role nameCOMM_APAC_MDM_DMART_STG_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> <PERSON> Monitoring<URL> Monitoring<URL> NameEndpointKibana<URL> (STAGE prefixed dashboards)DocumentationResource <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> (<ORGANIZATION>, <ORGANIZATION>, <PERSON> STAGE - Y4StMNK3b0AGDf6Resource NameEndpointSQS queue <ORGANIZATION><URL>:<URL>:9094 SASL SSLKibana<URL>Elasticsearch<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/APAC+PROD+Cluster",
|
||
"content": "Physical ArchitectureKubernetes clusternameIPConsole addressresource typeAWS regionFilesystemComponentsTypeatp-mdmhub-prod-apac●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●<URL>EKS over <ORGANIZATION> per node,6TBx2 replicated <ORGANIZATION>, <PERSON>, <PERSON>, <PERSON>, MDMHUB microservicesinbound/outboundComponents & LogsPROD - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsapac-prodManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableapac-prodBatch <PERSON>-batch-service-*Batch <NRP>-prodAPI routermdmhub-mdm-api-router-*API Routerlogsapac-prodReltio <PERSON>-reltio-subscriber-*Reltio Subscriberlogsapac-prodEntity Enrichermdmhub-entity-enricher-*Entity <PERSON>-prodCallback Servicemdmhub-callback-service-*Callback <PERSON>-prodEvent Publishermdmhub-event-publisher-*Event Publisherlogsapac-prodReconciliation Servicemdmhub-mdm-reconciliation-service-*Reconciliation <PERSON>-prodCallback delay servicemdmhub-callback-delay-service-*Callback delay servicelogsNon PROD - backend NamespaceComponentPodDescriptionLogskongKongmdmhub-kong-kong-*API managerkubectl logs {{pod name}} --namespace kongapac-backendKafkamdm-kafka-kafka-0mdm-kafka-kafka-1mdm-kafka-kafka-2Kafkalogsapac-backendKafka <ORGANIZATION>-kafka-kafka-exporter-*Kafka <ORGANIZATION> logs {{pod name}} --namespace apac-backendapac-backendZookeeper mdm-kafka-zookeeper-0mdm-kafka-zookeeper-1mdm-kafka-zookeeper-2Zookeeperlogsapac-backendMongomongo-0Mongologsapac-backendKibanakibana-kb-*EFK - kibanakubectl logs {{pod name}} --namespace apac-backendapac-backendFluentDfluentd-*EFK - fluentdkubectl logs {{pod name}} --namespace apac-backendapac-backendElasticsearchelasticsearch-es-default-0elasticsearch-es-default-1EFK - elasticsearchkubectl logs {{pod name}} --namespace apac-backendapac-backendSQS ExporterTODOSQS Reltio exporterkubectl logs {{pod name}} --namespace <ORGANIZATION>-backendmonitoringcAdvisormonitoring-cadvisor-*Docker <ORGANIZATION> logs {{pod name}} --namespace monitoringapac-backendMongo Connectormonstache-*EFK - mongo → elasticsearch exporterkubectl logs {{pod name}} --namespace apac-backendapac-backendMongo exportermongo-exporter-*mongo metrics exporter---<ORGANIZATION>-backendGit2Consulgit2consul-*GIT to Consul loaderkubectl logs {{pod name}} --namespace apac-backendapac-backendConsulconsul-consul-server-0consul-consul-server-1consul-consul-server-2Consulkubectl logs {{pod name}} --namespace apac-backendapac-backendSnowflake connectorapac-prod-mdm-connect-cluster-connect-*Snowflake Kafka Connectorkubectl logs {{pod name}} --namespace apac-backendmonitoringKafka Connect Exportermonitoring-jdbc-snowflake-exporter-apac-prod-*Kafka <NRP> exporterkubectl logs {{pod name}} --namespace monitoringapac-backendAKHQakhq-*Kafka UIlogsCertificates ResourceCertificate LocationValid fromValid to Issued <PERSON>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, Consul, <PERSON>,<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/APAC+PROD+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://globalmdmprodaspasp202202171415HUB UI<URL> MDM DataMartResource NameEndpointDB <URL>DB <ORGANIZATION> warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_APAC_MDM_DMART_PROD_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Overview<URL> State<URL> Monitoring<URL> Monitoring<URL> NameEndpointKibana<URL> (DEV prefixed dashboards)DocumentationResource <ORGANIZATION> API <PERSON><URL>ConsulResource NameEndpointConsul UI<URL>AKHQ - KafkaResource NameEndpointAKHQ <PERSON> UI<URL><ORGANIZATION> (<ORGANIZATION>, <ORGANIZATION>, <PERSON> - 2NBAwv1z2AvlkgSResource NameEndpointSQS queue name<URL> Gateway Usersvc-pfe-mdmhub-prodRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:<URL>:9094 SASL SSLKibana<URL>Elasticsearch<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/EMEA",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> proxy",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/EMEA+External+proxy",
|
||
"content": "The page describes the <LOCATION> external proxy servers. deployed in a DLP (Double Lollipop) <ORGANIZATION> account, used by clients outside of the COMPANY network, to access <ORGANIZATION>.<LOCATION> proxy instancesEnvironmentConsole <NRP> accessresource typeAWS regionAWS Account IDComponentsNon PROD<URL> use the role:<ORGANIZATION> (EUW1Z2DL115)ssh ec2-user@<URL>EC2eu-west-1432817204314KongPRODi-091aa7f1fe1ede714 (EUW1Z2DL113)ssh ec2-user@<URL>i-05c4532bf7b8d7511 (EUW1Z2DL114)ssh <EMAIL_ADDRESS> External Hub EndpointsEnvironmentServiceEndpointInbound security group configurationNon PRODAPI<URL> - due to the limit of 60 rules per <ORGANIZATION>, add new ones to:<URL>:<URL>:<URL>:9095ClientsEnvironmentClientsNon PRODFind all details in the Security GroupMDMHub-kafka-and-api-proxy-external-nprod-sgPRODFind all details in the Security GroupMDMHub-kafka-and-api-proxy-external-prod-sgAnsible configurationResourceAddressInstall <LOCATION> proxy<URL> cadvisor<URL> PROD inventory<URL> inventory<URL> SOPsHow to access <ORGANIZATION> to restart the EC2 instanceHow to login to hosts with <ORGANIZATION> downtime <LOCATION> restart/upgrade"
|
||
},
|
||
{
|
||
"title": "EMEA Non PROD Cluster",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/EMEA+Non+PROD+Cluster",
|
||
"content": "Physical ArchitectureKubernetes clusternameIPConsole addressresource typeAWS regionFilesystemComponentsTypeatp-mdmhub-nprod-emea10.90.96.0/2310.90.98.0/23<URL> over EC2eu-west-1~100GBper node,7.3Ti <US_DRIVER_LICENSE> replicated Portworx volumesKong, <PERSON>, <PERSON>, <PERSON>, MDMHUB microservicesinbound/outboundComponents & LogsDEV - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsemea-devManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableemea-devBatch Servicemdmhub-batch-service-*Batch <LOCATION>-devAPI routermdmhub-mdm-api-router-*API Routerlogsemea-devReltio Subscribermdmhub-reltio-subscriber-*Reltio <ORGANIZATION>-entity-enricher-*Entity <ORGANIZATION>service-*Callback Servicelogsemea-devEvent Publishermdmhub-event-publisher-*Event Publisherlogsemea-devReconciliation Servicemdmhub-mdm-reconciliation-service-*Reconciliation ServicelogsQA - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsemea-qaManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableemea-qaBatch Servicemdmhub-batch-service-*Batch <LOCATION>-qaAPI routermdmhub-mdm-api-router-*API Routerlogsemea-qaReltio <PERSON>-reltio-subscriber-*Reltio Subscriberlogsemea-qaEntity Enrichermdmhub-entity-enricher-*Entity Enricherlogsemea-qaCallback Servicemdmhub-callback-service-*Callback Servicelogsemea-qaEvent Publishermdmhub-event-publisher-*Event Publisherlogsemea-qaReconciliation Servicemdmhub-mdm-reconciliation-service-*Reconciliation ServicelogsSTAGE - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsemea-stageManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableemea-stageBatch Servicemdmhub-batch-service-*Batch <LOCATION>-stageAPI routermdmhub-mdm-api-router-*API Routerlogsemea-stageReltio <PERSON>-reltio-subscriber-*Reltio Subscriberlogsemea-stageEntity Enrichermdmhub-entity-enricher-*Entity Enricherlogsemea-stageCallback Servicemdmhub-callback-service-*Callback Servicelogsemea-stageEvent Publishermdmhub-event-publisher-*Event <LOCATION>-stageReconciliation <PERSON> (namespace)ComponentPodDescriptionLogsPod portsgbl-devManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availablegbl-devBatch Servicemdmhub-batch-service-*Batch Servicelogsgbl-devReltio Subscribermdmhub-reltio-subscriber-*Reltio <ORGANIZATION>-entity-enricher-*Entity Enricherlogsgbl-devCallback Servicemdmhub-callback-service-*Callback Servicelogsgbl-devEvent Publishermdmhub-event-publisher-*Event Publisherlogsgbl-devReconciliation Servicemdmhub-mdm-reconciliation-service-*Reconciliation <PERSON>-devDCR Servicemdmhub-mdm-dcr-service-*DCR <ORGANIZATION> Channel mdmhub-mdm-map-channel-*MAP <LOCATION>-devPforceRX <NRP>-pforcerx-channel-*PforceRX ChannellogsGBL QA - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsgbl-qaManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availablegbl-qaBatch Servicemdmhub-batch-service-*Batch <PERSON>-qaReltio <PERSON>-reltio-subscriber-*Reltio <NRP>-qaEntity Enrichermdmhub-entity-enricher-*Entity Enricherlogsgbl-qaCallback Servicemdmhub-callback-service-*Callback Servicelogsgbl-qaEvent Publishermdmhub-event-publisher-*Event Publisherlogsgbl-qaReconciliation Servicemdmhub-mdm-reconciliation-service-*Reconciliation Servicelogsgbl-qaDCR Servicemdmhub-mdm-dcr-service-*DCR <PERSON> Channel mdmhub-mdm-map-channel-*MAP Channellogsgbl-qaPforceRX <NRP>-pforcerx-channel-*PforceRX ChannellogsGBL STAGE - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsgbl-stageManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availablegbl-stageBatch Servicemdmhub-batch-service-*Batch <ORGANIZATION>-stageReltio <PERSON>-reltio-subscriber-*Reltio <NRP>-stageEntity Enrichermdmhub-entity-enricher-*Entity Enricherlogsgbl-stageCallback Servicemdmhub-callback-service-*Callback Servicelogsgbl-stageEvent Publishermdmhub-event-publisher-*Event Publisherlogsgbl-stageReconciliation <PERSON> Servicelogsgbl-stageDCR Servicemdmhub-mdm-dcr-service-*DCR <ORGANIZATION> Channel mdmhub-mdm-map-channel-*MAP Channellogsgbl-stagePforceRX <NRP>-pforcerx-channel-*PforceRX ChannellogsNon PROD - backend NamespaceComponentPodDescriptionLogskongKongmdmhub-kong-kong-*API managerkubectl logs {{pod name}} --namespace kongemea-backendKafkamdm-kafka-kafka-0mdm-kafka-kafka-1mdm-kafka-kafka-2Kafkalogsemea-backendKafka <ORGANIZATION>-kafka-kafka-exporter-*Kafka <ORGANIZATION> logs {{pod name}} --namespace emea-backendemea-backendZookeeper mdm-kafka-zookeeper-0mdm-kafka-zookeeper-1mdm-kafka-zookeeper-2Zookeeperlogsemea-backendMongomongo-0Mongologsemea-backendKibanakibana-kb-*EFK - kibanakubectl logs {{pod name}} --namespace emea-backendemea-backendFluentDfluentd-*EFK - fluentdkubectl logs {{pod name}} --namespace emea-backendemea-backendElasticsearchelasticsearch-es-default-0elasticsearch-es-default-1EFK - elasticsearchkubectl logs {{pod name}} --namespace emea-backendemea-backendSQS ExporterTODOSQS Reltio exporterkubectl logs {{pod name}} --namespace emea-backendmonitoringcAdvisormonitoring-cadvisor-*Docker <ORGANIZATION> logs {{pod name}} --namespace monitoringemea-backendMongo Connectormonstache-*EFK - mongo → elasticsearch exporterkubectl logs {{pod name}} --namespace emea-backendemea-backendMongo exportermongo-exporter-*mongo metrics exporter---emea-backendGit2Consulgit2consul-*GIT to Consul loaderkubectl logs {{pod name}} --namespace emea-backendemea-backendConsulconsul-consul-server-0consul-consul-server-1consul-consul-server-2Consulkubectl logs {{pod name}} --namespace emea-backendemea-backendSnowflake connectoremea-dev-mdm-connect-cluster-connect-*emea-qa-mdm-connect-cluster-connect-*emea-stage-mdm-connect-cluster-connect-*Snowflake Kafka Connectorkubectl logs {{pod name}} --namespace emea-backendmonitoringKafka Connect Exportermonitoring-jdbc-snowflake-exporter-emea-dev-*monitoring-jdbc-snowflake-exporter-emea-stage-*monitoring-jdbc-snowflake-exporter-emea-stage-*Kafka <NRP> metric exporterkubectl logs {{pod name}} --namespace monitoringemea-backendAKHQakhq-*Kafka UIlogsCertificates ResourceCertificate LocationValid fromValid to Issued <PERSON>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, Consul, <PERSON>,<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/EMEA+DEV+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhub/emea/<PERSON> MDM DataMartResource NameEndpointDB Url<URL>DB NameCOMM_EMEA_MDM_DMART_DEV_DBDefault warehouse <NRP> role nameCOMM_EMEA_MDM_DMART_DEVOPS_DEV_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Overview<URL> State<URL> Monitoring<URL> Monitoring<URL> NameEndpointKibana<URL> (DEV prefixed dashboards)DocumentationResource <ORGANIZATION> API documentation<URL> Service 2 <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL> NameEndpointConsul UI<URL> - KafkaResource NameEndpointAKHQ Kafka UI<URL> - COMPANY (GBLUS)MDM SystemsReltioDEV - wn60kG248ziQSMWResource NameEndpointSQS queue <ORGANIZATION> Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:27017Kafka<URL><NRP>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/EMEA+QA+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhub/emea/qaHUB UI<URL> MDM DataMeResource NameEndpointDB Url<URL>DB <ORGANIZATION> warehouse nameCOMM_MDM_DMART_WHDevOps role <ORGANIZATION> dashboardsResource NameEndpointHUB Performance<URL> <ORGANIZATION> dashboardsResource NameEndpointKibana<URL> (QA prefixed dashboards)DocumentationResource <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL> NameEndpointConsul UI<URL> - KafkaResource NameEndpointAKHQ Kafka UI<URL> - COMPANY (GBLUS)MDM SystemsReltioQA - vke5zyYwTifyeJSResource NameEndpointSQS queue name<URL> Gateway Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:27017Kafka<URL><NRP>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/EMEA+STAGE+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhub/emea/stageHUB UI<URL> MDM DataMartResource NameEndpointDB Url<URL>DB NameCOMM_EMEA_MDM_DMART_STG_DBDefault warehouse <NRP> role nameCOMM_EMEA_MDM_DMART_STG_DEVOPS_ROLEResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> monitoring<URL> Overview<URL> NameEndpointKibana<URL> (STAGE prefixed dashboards)DocumentationResource <ORGANIZATION> API documentation<URL> NameEndpointAirflow UI<URL> NameEndpointConsul <ORGANIZATION> NameEndpointAKHQ Kafka UI<URL> - COMPANY (GBLUS)MDM SystemsReltioSTAGE - Dzueqzlld107BVWResource NameEndpointSQS queue name<URL> Gateway Usersvc-pfe-mdmhubRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:27017Kafka<URL><NRP>"
|
||
},
|
||
{
|
||
"title": "GBL DEV Services",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/GBL+DEV+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <ORGANIZATION> <US_DRIVER_LICENSE>://pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhub (eu-west-1)HUB UI<URL> MDM DataMartResource NameEndpointDB Url<URL>DB <LOCATION> warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_DEV_MDM_DMART_DEVOPS_ROLEMonitoringResource NameEndpointHUB Performance<URL> Topics Overview<URL> Monitoring<URL> State<URL> Overview<URL> NameEndpointKibana<URL> (DEV prefixed dashboards)DocumentationResource NameEndpointManager <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL> NameEndpointConsul UI<URL> - KafkaResource NameEndpointAKHQ Kafka UI<URL> SystemsReltio GBL DEV - FLy4mo0XAh0YEbNResource NameEndpointSQS queue name<URL> Gateway UserIntegration_Gateway_UserRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:27017Kafka<URL><NRP>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/GBL+QA+Services",
|
||
"content": "<ORGANIZATION> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhub (eu-west-1)HUB UI<URL> MDM DataMartDB Url<URL>DB NameCOMM_EU_MDM_DMART_QA_DBDefault warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_QA_MDM_DMART_DEVOPS_ROLEMonitoringHUB Performance<URL> Topics Overview<URL> Monitoring<URL> State<URL> Overview<URL>(QA prefixed dashboards)DocumentationManager <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL> NameEndpointConsul UI<URL> - KafkaResource NameEndpointAKHQ Kafka UI<URL> SystemsReltio GBL MAPP - AwFwKWinxbarC0ZSQS queue name<URL> Gateway UserIntegration_Gateway_UserRDM<URL> ResourcesMongomongodb://<URL>:<URL><NRP> SSLKibana<URL>"
|
||
},
|
||
{
|
||
"title": "GBL STAGE Services",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/GBL+STAGE+Services",
|
||
"content": "<ORGANIZATION> S3Gateway API OAuth2 External - DEV<URL> Federate<URL> API KEY auth - DEV<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhub (eu-west-1)HUB <PERSON> DataMartDB Url<URL><ORGANIZATION> warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_STG_MDM_DMART_DEVOPS_ROLEMonitoringHUB <ORGANIZATION> Overview<URL>(STAGE prefixed dashboards)DocumentationManager <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL> NameEndpointConsul UI<URL> - KafkaResource NameEndpointAKHQ Kafka UI<URL> SystemsReltio GBL STAGE - FW4YTaNQTJEcN2gSQS queue name<URL> Gateway UserIntegration_Gateway_UserRDM<URL> ResourcesMongomongodb://<URL>:27017Kafka<URL><NRP>"
|
||
},
|
||
{
|
||
"title": "EMEA PROD Cluster",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/EMEA+PROD+Cluster",
|
||
"content": "Physical ArchitectureKubernetes clusternameIPConsole addressresource typeAWS regionFilesystemComponentsTypeatp-mdmhub-nprod-emea10.90.96.0/2310.90.98.0/23<URL> over EC2eu-west-1~100GBper node,7.3Ti <US_DRIVER_LICENSE> replicated Portworx volumesKong, <PERSON>, <PERSON>, <PERSON>, MDMHUB microservicesinbound/outboundComponents & LogsPROD - microservicesENV (namespace)ComponentPodDescriptionLogsPod portsemea-prodManagermdmhub-mdm-manager-*Managerlogs8081 - application API,8000 - if remote debugging is enabled you are able to use this to debug app in environment,9000 - Prometheus exporter,8888 - spring boot actuator,8080 - serves swagger <ORGANIZATION> definition - if availableemea-prodBatch <PERSON>-batch-service-*Batch <LOCATION>-prodAPI routermdmhub-mdm-api-router-*API Routerlogsemea-prodReltio <PERSON>-reltio-subscriber-*Reltio Subscriberlogsemea-prodEntity Enrichermdmhub-entity-enricher-*Entity <ORGANIZATION>service-*Callback Servicelogsemea-prodEvent Publishermdmhub-event-publisher-*Event <LOCATION>-prodReconciliation Servicemdmhub-mdm-reconciliation-service-*Reconciliation <ORGANIZATION> - backend NamespaceComponentPodDescriptionLogskongKongmdmhub-kong-kong-*API managerkubectl logs {{pod name}} --namespace kongemea-backendKafkamdm-kafka-kafka-0mdm-kafka-kafka-1mdm-kafka-kafka-2Kafkalogsemea-backendKafka <ORGANIZATION>-kafka-kafka-exporter-*Kafka <ORGANIZATION> logs {{pod name}} --namespace emea-backendemea-backendZookeeper mdm-kafka-zookeeper-0mdm-kafka-zookeeper-1mdm-kafka-zookeeper-2Zookeeperlogsemea-backendMongomongo-0mongo-1mongo-2Mongologsemea-backendKibanakibana-kb-*EFK - kibanakubectl logs {{pod name}} --namespace emea-backendemea-backendFluentDfluentd-*EFK - fluentdkubectl logs {{pod name}} --namespace emea-backendemea-backendElasticsearchelasticsearch-es-default-0elasticsearch-es-default-1elasticsearch-es-default-2EFK - elasticsearchkubectl logs {{pod name}} --namespace emea-backendemea-backendSQS ExporterTODOSQS Reltio exporterkubectl logs {{pod name}} --namespace emea-backendmonitoringcAdvisormonitoring-cadvisor-*Docker <ORGANIZATION> logs {{pod name}} --namespace monitoringemea-backendMongo Connectormonstache-*EFK - mongo → elasticsearch exporterkubectl logs {{pod name}} --namespace emea-backendemea-backendMongo exportermongo-exporter-*mongo metrics exporter---emea-backendGit2Consulgit2consul-*GIT to Consul loaderkubectl logs {{pod name}} --namespace emea-backendemea-backendConsulconsul-consul-server-0consul-consul-server-1consul-consul-server-2Consulkubectl logs {{pod name}} --namespace emea-backendemea-backendSnowflake connectoremea-prod-mdm-connect-cluster-connect-*Snowflake Kafka Connectorkubectl logs {{pod name}} --namespace emea-backendmonitoringKafka Connect Exportermonitoring-jdbc-snowflake-exporter-emea-prod-*Kafka Connect metric exporterkubectl logs {{pod name}} --namespace monitoringemea-backendAKHQakhq-*Kafka UIlogsCertificates ResourceCertificate LocationValid fromValid to Issued <PERSON>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, Consul, <PERSON>,<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/EMEA+PROD+Services",
|
||
"content": "<ORGANIZATION> NameEndpointGateway API OAuth2 External - PROD<URL> Federate<URL> API KEY auth - PROD<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://pfe-atp-eu-<US_DRIVER_LICENSE>-prod-mdmhub/emea/prodHUB UI<URL> MDM DataMartResource NameEndpointDB <ORGANIZATION> NameCOMM_EMEA_MDM_DMART_PROD_DBDefault warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_EMEA_MDM_DMART_PROD_DEVOPS_ROLEMonitoringResource NameEndpointHUB <ORGANIZATION> Overview<URL> Statistics<URL> monitoring<URL> Overview<URL> <PERSON> (PROD prefixed dashboards)DocumentationResource <ORGANIZATION> documentation<URL> NameEndpointAirflow UI<URL> NameEndpointConsul UI<URL> - KafkaResource <PERSON> (GBLUS)MDM SystemsReltioPROD_EMEA - Xy67R0nDA10RUV6Resource NameEndpointSQS queue <LOCATION> API<URL> - UIReltio Gateway Usersvc-pfe-mdmhub-prodRDM<URL> ResourcesResource NameEndpointMongo<URL>:27017Kafka<URL>:9094/,<URL>:9094/,<URL>:9094/Kibana<URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/GBL+PROD+Services",
|
||
"content": "<ORGANIZATION> Federate<URL> API KEY auth - PROD<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://pfe-baiaes-eu-<US_DRIVER_LICENSE>-project/<PERSON> DataMartDB Url<URL> NameCOMM_EU_MDM_DMART_PROD_DBDefault warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_GBL_MDM_DMART_PROD_DEVOPS_ROLEMonitoringHUB Performance<URL> Topics Overview<URL> Statistics<URL> monitoring<URL> Overview<URL> (PROD prefixed dashboards)DocumentationManager API documentation<URL> UI<URL> UI<URL> - KafkaAKHQ Kafka UI<URL> - COMPANY (GBLUS)MDM SystemsReltioPROD_EMEA - FW2ZTF8K3JpdfFlSQS queue name<URL> - API<URL> - UIReltio Gateway Userpfe_mdm_apiRDM<URL> ResourcesMongo<URL>:27017Kafka<URL>:9094/,<URL>:9094/,<URL>:9094/Kibana<URL>"
|
||
},
|
||
{
|
||
"title": "US Trade (FLEX)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "US Non PROD Cluster",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/US+Non+PROD+Cluster",
|
||
"content": "Physical ArchitectureHostsIDIPHostnameDocker <ORGANIZATION> TypeSpecificationAWS RegionFilesystemDEV●●●●●●●●●●●●●<URL>mdmihnprEC2r4.2xlargeus-east750 GB - /app15 GB - /var/lib/dockerComponents & LogsENVHostComponentDocker nameDescriptionLogsOpen PortsDEVDEVManagerdevmdmsrv_mdm-manager_1Gateway <ORGANIZATION>/app/mdmgw/dev-mdm-srv/manager/log8849, 9104DEVDEVBatch <ORGANIZATION> file processor, <ORGANIZATION> poller/app/mdmgw/dev-mdm-srv/batch_channel/log9121DEVDEVPublisherdevmdmhubsrv_event-publisher_1Event publisher/app/mdmhub/dev-mdm-srv/event_publisher/log9106DEVDEVSubscriberdevmdmhubsrv_reltio-subscriber_1SQS Reltio event subscriber/app/mdmhub/dev-mdm-srv/reltio_subscriber/log9105DEVDEVConsoledevmdmsrv_console_1Hawtio console9999ENVHostComponentDocker nameDescriptionLogsOpen PortsTESTDEVManagertestmdmsrv_mdm-manager_1Gateway <ORGANIZATION>/app/mdmgw/test-mdm-srv/manager/log8850, 9108TESTDEVBatch Channeltestmdmsrv_batch-channel_1Batch file processor, <ORGANIZATION> poller/app/mdmgw/test-mdm-srv/batch_channel/log9111TESTDEVPublishertestmdmhubsrv_event-publisher_1Event publisher/app/mdmhub/test-mdm-srv/event_publisher/log9110TESTDEVSubscribertestmdmhubsrv_reltio-subscriber_1SQS Reltio event subscriber/app/mdmhub/test-mdm-srv/reltio_subscriber/log9109Back-End HostComponentDocker nameDescriptionLogsOpen PortsDEVFluentDfluentdEFK - FluentD/app/efk/fluentd/log24225DEVKibanakibanaEFK - Kibanadocker logs <ORGANIZATION>/app/efk/elasticsearch/logs9200DEVPrometheusprometheusPrometheus Federation slave serverdocker logs prometheus9119DEVMongomongo_mongo_1Mongodocker logs mongo_mongo_127017DEVMongo Exportermongo_exporterMongo → Prometheus exporter/app/mongo_exporter/logs9120DEVMonstache Connectormonstache-connectorMongo → Elasticsearch exporter8095DEVKafkakafka_kafka_1Kafkadocker logs kafka_kafka_19093, <DATE_TIME>, 9101DEVKafka Exporterkafka_kafka_exporter_1Kafka → <PERSON> exporterdocker logs <PERSON>-exporter-devSQS → <PERSON> exporterdocker logs <ORGANIZATION>-exporter-dev9122DEVCadvisorcadvisorDocker → <PERSON> exporterdocker logs cadvisor9103DEVKongkong_kong_1API Manager/app/mdmgw/<LOCATION>/kong_logs8000, <DATE_TIME>, 32774DEVKong - DBkong_kong-database_1Kong Cassandra databasedocker logs kong_kong-database_19042DEVZookeeperkafka_zookeeper_1Zookeeperdocker logs kafka_zookeeper_12181DEVNode Exporter(non-docker) node_exporterPrometheus node exportersystemctl status node_exporter9100CertificatesResourceCertificate <PERSON> fromValid to <PERSON> = <URL>O = <NRP> - Server Truststore<URL> = Default Company LtdST = Some-StateC = AUKafka - Server KeyStore<URL> CN = KafkaFlexOU = UnknownO = UnknownL = UnknownST = UnknownC = UnknownElasticsearch<URL> groupsResource NameTypeDescriptionSupportuserComputer <ORGANIZATION>: mdmihnprName: SRVGBL-Pf6687993Uid: 27634358Gid: <US_BANK_NUMBER> <mdmihub>userUnix Role GroupRole: ADMIN_ROLEportsSecurity groupSG Name: <ORGANIZATION><URL>Submit ticket to <ORGANIZATION> FULL SUPPORTInternal ClientsNameGateway User NameAuthenticationPing Federate UserRolesCountriesSourcesTopicFLEX US userflex_nprodExternal OAuth2Flex-MDM_client- "CREATE_HCP"- "CREATE_HCO"- "UPDATE_HCP"- "UPDATE_HCO"- "GET_ENTITIES"- "SCAN_ENTITIES"ALL- "FLEXProposal"- "FLEX"- "FLEXIDL"- "Calculate"- "SAP"dev-out-full-flex-alltest-out-full-flex-alltest2-out-full-flex-alltest3-out-full-flex-allInternal HUB usermdm_test_userExternal OAuth2Flex-MDM_client- "CREATE_HCP"- "CREATE_HCO"- "UPDATE_HCP"- "UPDATE_HCO"- "GET_ENTITIES"- "DELETE_CROSSWALK"- "GET_RELATION"- "SCAN_ENTITIES"- "SCAN_RELATIONS"- "LOOKUPS"- "ENTITY_ATTRIBUTES_UPDATE"ALL- "FLEXProposal"- "FLEX"- "FLEXIDL"- "Calculate"- "AddrCalc"- "SAP"- "HIN"- "DEAIntegration Batch Update userintegration_batch_userKey AuthN/A- "GET_ENTITIES"- "ENTITY_ATTRIBUTES_UPDATE"- "GENERATE_ID"- "CREATE_HCO"- "<ORGANIZATION> "FLEXProposal"- "FLEX"- "FLEXIDL"- "Calculate"- "AddrCalc"dev-internal-integration-testsFLEX Batch Channel userflex_batch_devKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "FLEX"- "FLEXIDL"dev-internal-hco-create-flexflex_batch_testKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "FLEX"- "FLEXIDL"test-internal-hco-create-flexflex_batch_test2Key AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "FLEX"- "FLEXIDL"test2-internal-hco-create-flexflex_batch_test3Key AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "FLEX"- "FLEXIDL"test3-internal-hco-create-flexSAP Batch Channel usersap_batch_devKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "SAP"dev-internal-hco-create-sapsap_batch_testKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "SAP"test-internal-hco-create-sapsap_batch_test2Key AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "SAP"test2-internal-hco-create-sapsap_batch_test3Key AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "SAP"test3-internal-hco-create-sapHIN Batch Channel userhin_batch_devKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "HIN"dev-internal-hco-create-hinhin_batch_testKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "HIN"test-internal-hco-create-hinhin_batch_test2Key AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "HIN"test2-internal-hco-create-hinhin_batch_test3Key AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "HIN"test3-internal-hco-create-hinDEA Batch Channel userdea_batch_devKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "DEA"dev-internal-hco-create-deadea_batch_testKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "DEA"test-internal-hco-create-deadea_batch_test2Key AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "DEA"test2-internal-hco-create-deadea_batch_test3Key AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "DEA"test3-internal-hco-create-dea340B Batch Channel user340b_batch_devKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "340B"dev-internal-hco-create-340b340b_batch_testKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "340B"test-internal-hco-create-340b"
|
||
},
|
||
{
|
||
"title": "<LOCATION> DEV Services",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/US+DEV+Services",
|
||
"content": "<ORGANIZATION> - DEV<URL>:8443/dev-extPing Federate<URL> API KEY auth - DEV<URL>:8443/<URL>:9094MDM HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://mdmnprodamrasp22124/MonitoringResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> monitoring<URL> Overview<URL> <PERSON> (DEV prefixed <PERSON> <LOCATION> DEV - keHVup25rN7ij3YResource NameEndpointSQS queue name<URL> Gateway UserIntegration_Gateway_US_UserRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:<URL>:<URL>:2181Kibana<URL>:5601/app/<ORGANIZATION>/hawtio/#/login"
|
||
},
|
||
{
|
||
"title": "<LOCATION> TEST (QA) Services",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/US+TEST+%28QA%29+Services",
|
||
"content": "<ORGANIZATION> API OAuth2 External - TEST2<URL>:8443/test2-extGateway API OAuth2 External - TEST3<URL>:8443/test3-extGateway API KEY auth - TEST<URL>:8443/testGateway API KEY auth - TEST2<URL>:8443/test2Gateway API KEY auth - TEST3<URL>:8443/test3Ping Federate<URL> HUB <US_DRIVER_LICENSE> <US_DRIVER_LICENSE>://mdmnprodamrasp22124/LogsResource NameEndpointKibana<URL>:5601/app/kibana (TEST prefixed <PERSON> US TEST - cnL0Gq086PrguOdResource NameEndpointSQS queue name<URL> Reltio<URL> Gateway UserIntegration_Gateway_US_UserRDM<URL> Reltio US TEST2 - JKabsuFZzNb4K6kResource NameEndpointSQS queue name<URL> <LOCATION> UserIntegration_Gateway_US_UserRDM<URL> Reltio US TEST3 - Yy7KqOqppDVzJpkResource NameEndpointSQS queue <ORGANIZATION> UserIntegration_Gateway_US_UserRDM<URL> <ORGANIZATION>/app/<ORGANIZATION>/hawtio/#/login"
|
||
},
|
||
{
|
||
"title": "US PROD Cluster",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/US+PROD+Cluster",
|
||
"content": "Physical ArchitectureHostsIDIPHostnameDocker <ORGANIZATION> TypeSpecificationAWS RegionFilesystemPROD1●●●●●●●●●●●●●●<URL>mdmihpr EC2r4.xlarge us-east-1e500 <LOCATION> - /app15 GB - /var/lib/<PERSON>●●●●●●●●●●●●●●<URL>mdmihprEC2r4.xlarge us-east-1e500 <LOCATION> - /app15 GB - /var/lib/dockerPROD3●●●●●●●●●●●●<URL>mdmihprEC2r4.xlarge us-east-1e500 <LOCATION> - /app15 GB - /var/lib/dockerComponents <ORGANIZATION> nameDescriptionLogsOpen PortsPROD1, <PERSON>, PROD3Managermdmgw_mdm-manager_1Gateway <ORGANIZATION>/app/mdmgw/manager/log9104, 8851PROD1Batch Channelmdmgw_batch-channel_1Batch file processor, <ORGANIZATION> poller/app/mdmgw/batch_channel/log9107PROD1, <PERSON>, PROD3Publishermdmhub_event-publisher_1Event publisher/app/mdmhub/event_publisher/log9106PROD1, <PERSON>, PROD3Subscribermdmhub_reltio-subscriber_1SQS Reltio event subscriber/app/mdmhub/reltio_subscriber/<ORGANIZATION>, <PERSON>, PROD3ElasticsearchelasticsearchEFK - Elasticsearch/app/efk/elasticsearch/<LOCATION>, <PERSON>, PROD3FluentDfluentdEFK - FluentD/app/efk/fluentd/logPROD3KibanakibanaEFK - Kibanadocker logs <LOCATION> slave serverdocker logs prometheus9109PROD1, <PERSON>, PROD3Mongomongo_mongo_1Mongodocker logs mongo_mongo_127017PROD3Monstache Connectormonstache-connectorMongo → <ORGANIZATION> exporterPROD1, <PERSON>, <ORGANIZATION> logs <ORGANIZATION>, 9094PROD1, <PERSON>, PROD3Kafka Exporterkafka_kafka_exporter_1Kafka → <PERSON> exporterdocker logs <LOCATION>, <PERSON>, PROD3CadvisorcadvisorDocker → <PERSON> exporterdocker logs cadvisor9103PROD3SQS <PERSON>-exporterSQS → <PERSON> exporterdocker logs <ORGANIZATION>, <PERSON>, PROD3Kongkong_kong_1API Manager/app/mdmgw/<LOCATION>/kong_logs8000, <DATE_TIME>, <DATE_TIME>, <PERSON>, PROD3Kong - DBkong_kong-database_1Kong Cassandra databasedocker logs <ORGANIZATION>, <DATE_TIME>, <PERSON>, PROD3Zookeeperkafka_zookeeper_1Zookeeperdocker logs kafka_zookeeper_12181, 2888, 3888PROD1, <PERSON>, PROD3Node Exporter(non-docker) node_exporterPrometheus node exportersystemctl status node_exporter9100CertificatesResourceCertificate <PERSON> fromValid to <PERSON> = <URL>O = <ORGANIZATION> Truststore<URL> Root CA G2Kafka - Server TruststorePROD1 - <URL> - <URL> - <URL> = <URL>O = COMPANYElasticsearchesnode1 - <URL> - <URL> - <URL> groupsResource NameTypeDescriptionSupportELBLoad BalancerReference LB Name: PFE-CLB-JIRA-HARMONY-PROD-001CLB name: <ORGANIZATION>-PROD-001DNS name: <URL>userComputer RoleComputer Role: UNIX-UNIVERSAL-AWSCBSDEV-MDMIHPR-COMPUTERS-U Login: mdmihprName: SRVGBL-mdmihprUID: 25084803GID: <US_BANK_NUMBER> <mdmihub>userUnix Role GroupUnix-mdmihubProd-URole: <ORGANIZATION>: <ORGANIZATION><URL>Submit ticket to <ORGANIZATION> FULL SUPPORTS3S3 Bucketmdmprodamrasp42095 (us-east-1)Username: <ORGANIZATION> login: <URL> ClientsNameGateway User NameAuthenticationPing Federate UserRolesCountriesSourcesTopicInternal <ORGANIZATION> "CREATE_HCP"- "CREATE_HCO"- "UPDATE_HCP"- "UPDATE_HCO"- "GET_ENTITIES"- "DELETE_CROSSWALK"- "GET_RELATION"- "SCAN_ENTITIES"- "SCAN_RELATIONS"- "LOOKUPS"- "ENTITY_ATTRIBUTES_UPDATE"ALL- "FLEXProposal"- "FLEX"- "FLEXIDL"- "Calculate"- "AddrCalc"prod-internal-reltio-eventsInternal <PERSON> usermdm_test_userExternal OAuth2MDM_client- "CREATE_HCP"- "CREATE_HCO"- "UPDATE_HCP"- "UPDATE_HCO"- "GET_ENTITIES"- "DELETE_CROSSWALK"- "GET_RELATION"- "SCAN_ENTITIES"- "SCAN_RELATIONS"- "LOOKUPS"- "ENTITY_ATTRIBUTES_UPDATE"ALL- "FLEXProposal"- "FLEX"- "FLEXIDL"- "Calculate"- "AddrCalc"- "SAP"- "HIN"- "DEA"Integration Batch Update userintegration_batch_userKey AuthN/A- "GET_ENTITIES"- "ENTITY_ATTRIBUTES_UPDATE"- "GENERATE_ID"- "CREATE_HCO"- "<ORGANIZATION> "FLEXProposal"- "FLEX"- "FLEXIDL"- "Calculate"- "AddrCalc"FLEX <LOCATION> userflex_prodExternal OAuth2Flex-MDM_client- "CREATE_HCP"- "CREATE_HCO"- "UPDATE_HCP"- "UPDATE_HCO"- "GET_ENTITIES"- "SCAN_ENTITIES"ALL- "FLEXProposal"- "FLEX"- "FLEXIDL"- "Calculate"prod-out-full-flex-allFLEX Batch Channel userflex_batchKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "FLEX"- "FLEXIDL"prod-internal-hco-create-flexSAP Batch Channel usersap_batchKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "SAP"prod-internal-hco-create-sapHIN Batch Channel userhin_batchKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "HIN"prod-internal-hco-create-hinDEA Batch Channel userdea_batchKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "DEA"prod-internal-hco-create-dea340B Batch Channel user340b_batchKey AuthN/A- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"ALL- "340B"prod-internal-hco-create-340b"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/US+PROD+Services",
|
||
"content": "<ORGANIZATION> - PROD<URL> API OAuth2 - PROD<URL> API KEY auth - PROD<URL> <ORGANIZATION> <US_DRIVER_LICENSE>://mdmprodamrasp42095/- FLEX: PROD/inbound/FLEX- SAP: PROD/inbound/SAP- HIN: PROD/inbound/HIN- <ORGANIZATION>: PROD/inbound/DEA- 340B: PROD/inbound/340BMonitoringResource NameEndpointHUB Performance<URL> Topics Overview<URL> Statistics<URL> monitoring<URL> Overview<URL> NameEndpointKibana<URL>:5601/app/kibanaMDM SystemsReltio US PROD - <ORGANIZATION> NameEndpointSQS queue name<URL> Reltio Gateway UserIntegration_Gateway_US_UserRDM<URL> ResourcesResource NameEndpointMongomongodb://<URL>:27017,<URL>:27017,<URL>:<URL>:<URL>:<URL>:<URL>:<URL>:<URL>:2181Kibana<URL>:5601/app/kibanaElasticsearch<URL>:9200<URL>:9200<URL>:9200Hawtio<URL>:9999/hawtio/#/login<URL>:9999/hawtio/#/login<URL>:9999/hawtio/#/login"
|
||
},
|
||
{
|
||
"title": "Components",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Apache Airflow",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Apache+Airflow",
|
||
"content": "<ORGANIZATION> is platform created by Apache and designed to schedule workflows called <URL>rflow docs:<URL> are using airflow on kubernetes with helm of official airflow helm chart: <URL> this architecture airflow consists of 3 main components:Scheduler - scheduling, monitoring and executing tasksWebserver - Airflow UIDatabase(PostgreSQL)InterfacesUI e.g. <URL> <ORGANIZATION> /api/<US_DRIVER_LICENSE>/docs: <URL> are configure in mdm-hub-cluster-env repository in <ORGANIZATION>/inventory/${environment}/group_vars/gw-airflow-services/${dag_name}.yaml filesUsed flows are described in dags list"
|
||
},
|
||
{
|
||
"title": "API Gateway",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/API+Gateway",
|
||
"content": "DescriptionKong (API Gateway) is the component used as the gateway for all <ORGANIZATION> requests in the MDM HUB. This component exposes only one URL to the external clients, which means that all internal docker containers are secured and it is not possible to access them. This allows to track whole network traffic access in one place. <LOCATION> is the router that redirects requests to specific services using configured routes. <LOCATION> contains multiple additional plugins, these plugins are connected with the specific services and add additional security (<ORGANIZATION>, <ORGANIZATION>, Oauth2-External) or user management. <LOCATION> authorized users are allowed to execute specific operations in the <URL>nology:<LOCATION> is a predefined component installed using a <ORGANIZATION> container. <LOCATION> uses the Lua language and <ORGANIZATION> engine. (docker image: kong:1.1.1-centos)Kong stores the whole configuration in the Cassandra Database ( docker image: cassandra:3)Kong uses a customized plugin for the <ORGANIZATION> token verification - OAuth 2.0 ExternalCode link: <LOCATION>: <LOCATION> Admin API DOCOauth2 External plugin: <LOCATION>/mdm-external-oauth-pluginFlowsKong is responsible for the security, user management, and access layer to HUB: <ORGANIZATION> patternDescriptionAdmin APIREST APIGET http://localhost:8001/Internal and secured PORT available only in the docker container used by <LOCATION> to manage existing services, routes, plugins, consumers, certificatesExternal APIREST APIGET https://localhost:8443/External and secured PORT exposed to the <ORGANIZATION> and accessed by clients. Dependent componentsComponentInterfaceFlowDescriptionCassandra - kong_kong-database_1TCP internal docker communicationN/Akong configuration databaseHUB <LOCATION> internal docker communicationN/AThe route to all HUB microservices, required to expose <ORGANIZATION> to external clients ConfigurationKong configuration is divided into 5 sections:1 <ORGANIZATION> valueDescription- snowflake_api_user: create_or_update: False vars: username: snowflake_api_user plugins: - name: key-auth parameters: key: "{{ secret_kong_<URL>owflake_api_<URL>y_<URL>y }}"<ORGANIZATION> for the user with key-auth authentication - used only for the technical services <URL>l External OAuth2 users are configured in the <URL>utes Sections2 CertificatesConfig ParameterDefault valueDescription- gbl_mdm_hub_us_nprod: create_or_update: False vars: cert: "{{ lookup('file', '{{playbook_dir}}/ssl_certs/{{ env_name }}/certs/<URL>m') }}" key: "{{ lookup('file', '{{playbook_dir}}/ssl_certs/{{ env_name }}/certs/<URL>y') }}" snis: - <URL> - <URL> - "<IP_ADDRESS>"N/A Configuration of the SSL Certificate in the Kong.3 ServicesConfig ParameterDefault valueDescriptionkong_services: - create_or_update: False vars: name: "{{ kong_env }}-manager-service" url: "http://{{ kong_env }}mdmsrv_mdm-manager_1:8081" connect_timeout: <US_DRIVER_LICENSE> write_timeout: <US_DRIVER_LICENSE> read_timeout: 120000N/AKong Service - this is a main part of the configuration, this connects internally <LOCATION> with <ORGANIZATION> container. <LOCATION> allows configuring multiple services with multiple routes and plugins.4 <ORGANIZATION> valueDescription- create_or_update: False vars: name: "{{ kong_env }}-manager-ext-int-api-oauth-route" service: "{{ kong_env }}-manager-service" paths: [ "/{{ kong_env }}-ext" ] methods: [ "GET", "POST", "PATCH", "DELETE" ]N/AExposes the route to the service. Clients using <ORGANIZATION> have to add the path to the <ORGANIZATION> invocation to access specified services. "-ext" suffix defines the <ORGANIZATION> that used the External OAuth 2.0 plugin connected to the PingFederate. Configures the methods that the user is allowed to invoke. 5 PluginsConfig ParameterDefault valueDescription- create_or_update: False vars: name: key-auth route: "{{ kong_env }}-manager-int-api-route" config: hide_credentials: trueN/AThe type of plugin "key-auth" used for the internal or technical users that authenticate using a security key- create_or_update: False vars: name: mdm-external-oauth route: "{{ kong_env }}-manager-ext-int-api-oauth-route" config: introspection_url: <URL> authorization_value: "{{ <URL>cret_oauth2_authorization_value }}" hide_credentials: true users_map: - "e2a6de9c38be44f4a3c1b53f50218cf7:engage"N/AThe type of plugin "mdm-external-oauth" is a customized plugin used for all External Clients that are using tokens generated in the <URL>e configuration contains introspection_url - Ping API for token <URL>e most important part of this configuration is the users_map The Key is the PingFedeate User, the <ORGANIZATION> is the HUB user configured in the services."
|
||
},
|
||
{
|
||
"title": "API Router",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/API+Router",
|
||
"content": "DescriptionThe api router component is responsible for routing requests to regional <ORGANIZATION> services. Application exposes REST <ORGANIZATION> to call <ORGANIZATION> services from different regions simultaneously. The component provides centralized authorization and authentication service and transaction log feature. <ORGANIZATION> router uses http4k library which is a lightweight HTTP toolkit written in <PERSON> that enables the serving and consuming of HTTP services in a functional and consistent <URL><PERSON>,spring bootCode link: api routerRequest flowComponentDescriptionAuthentication serviceauthenticates user by x-consumer-username headerRequest enricherdetects request sources, countries and roleAuthorization serviceauthorizes user permissions to role, countries and sourcesService callercalls <ORGANIZATION> services, tries 3 times in case of an exception,requests are routed to the appropriate <ORGANIZATION> based on the countries parameter, if the requests contains countries from multiple regions, different regional services are called, if the request contains no countries, default user or application country is setService response transformer and filtertransforms and/or filters service responses (e.g. data anonymization) depending on the defined request and/or response filtration parameters (e.g. header, http method, path)Response composercomposes responses from services, if multiple services responded, the response is concatenatedRequest enrichmentParameterMethodsourcescountriesrolecreate hcorequest body crosswalk attribute, only one allowedrequest body Country attribute, only one allowedCREATE HCOupdate hcorequest body crosswalk attribute, only one allowedrequest body Country attribute, only one allowedUPDATE_HCObatch create hcorequest body crosswalk attributes, required at least onerequest body Country attribute, only one allowedCREATE_HCObatch update hcorequest body crosswalk attributes, required at least onerequest body Country attribute, only one allowedUPDATE_HCOcreate hcprequest body crosswalk attribute, only one allowedrequest body Country attribute, only one allowedCREATE_HCPupdate hcprequest body crosswalk attribute, only one allowedrequest body Country attribute, only one allowedUPDATE_HCPbatch create hcprequest body crosswalk attributes, required at least onerequest body Country attribute, only one allowedCREATE_HCPbatch update hcprequest body crosswalk attributes, required at least onerequest body Country attribute, only one allowedUPDATE_HCPcreate mcorequest body crosswalk attribute, only one allowedrequest body Country attribute, only one allowedCREATE_MCOupdate mcorequest body crosswalk attribute, only one allowedrequest body Country attribute, only one allowedUPDATE_MCObatch create mcorequest body crosswalk attributes, required at least onerequest body Country attribute, only one allowedCREATE_MCObatch update mcorequest body crosswalk attributes, required at least onerequest body Country attribute, only one allowedUPDATE_MCOcreate entityrequest body crosswalk attribute, only one allowedrequest body Country attribute, only one allowedCREATE_ENTITYupdate entityrequest body crosswalk attribute, only one allowedrequest body Country attribute, only one <ORGANIZATION> entities by urissources not allowedrequest param Country attribute, 0 or more allowedGET_ENTITIESget entity by urisources not allowedrequest param Country attribute, 0 or more allowedGET_ENTITIESdelete entity by crosswalktype query param, required at least onerequest param Country attribute, 0 or more <ORGANIZATION> entity matchessources not allowedrequest param Country attribute, 0 or more <ORGANIZATION> relationrequest body crosswalk attributes, required at least onerequest param Country attribute, 0 or more <NRP> create relationrequest body crosswalk attributes, required at least onerequest param Country attribute, 0 or more allowedCREATE_RELATIONget relation by urisources not allowedrequest param Country attribute, 0 or more allowedGET_RELATIONdelete relation by crosswalktype query param, required at least onerequest param Country attribute, 0 or more <ORGANIZATION> lookupssources not allowedrequest param Country attribute, 0 or more allowedLOOKUPSConfigurationConfig parameterDescriptiondefaultCountrydefault application instance countryusersusers configuration listed belowzoneszones configuration listed belowresponseTransformresponse transformation definitions explained belowUser configurationConfig parameterDescriptionnameuser namedescriptionuser descriptionrolesallowed user rolescountriesallowed user countriessourcesallowed user sourcesdefaultCountryuser default countryZone configurationConfig parameterDescriptionurlmdm service urluserNamemdm service user namelogMessagesflag indicates that mdm service messages should be loggedtimeoutMsmdm service request timeoutResponse transformation configurationConfig parameterDescriptionfiltersrequest and response filter configuationmapresponse body <ORGANIZATION> transformation definitionsFilters configurationConfig parameterDescriptionrequestrequest filter configuationresponseresponse filter <ORGANIZATION> methodpathAPI REST call pathheaderslist of <ORGANIZATION> headers with name and value parametersResponse filter configurationConfig parameterDescriptionbodyresponse body JSTL transformation definitionExample configuration of response transformationAPI router configurationresponseTransform: - filters: request: method: GET path: /entities.* headers: - name: X-Consumer-Username value: mdm_test_user response: body: <URL>ntent: | contains(true,[for (.crosswalks) .type == "configuration/sources/HUB_CALLBACK"]) map: - <URL>ntent: | .crosswalks - <URL>ntent: | ."
|
||
},
|
||
{
|
||
"title": "Batch Service",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Batch+Service",
|
||
"content": "DescriptionThe batch-service component is responsible for managing the batch loads to <ORGANIZATION>. It exposes <ORGANIZATION> that clients use to create a new instance of a batch and upload data. The component is responsible for managing the batch instances and stages, processing the data, gathering acknowledge responses from the Manager component. Batch service stores data in two collections batchInstance - stores all instances of batches and statistics gathered during load and batchEntityProcessStatus - stores metadata information about all objects that were loaded through all batches. These two collections are required to manage and process the data, check the checksum deduplication process, mark entities as processed after <ORGANIZATION>, and soft-delete entities in case of full files load. The component uses the Asynchronous operations using <PERSON> topics as the stages for each part of the load. Technology: java 8, <DATE_TIME> boot, mongodb, kafka-streams, apache camel, <PERSON>, shedlock-<DATE_TIME>, spring-schedulerCode link: batch-serviceFlowsETL BatchesBatch Controller: creating and updating batch instanceBulk Service: loading bulk dataProcessing <LOCATION> JOBSoftDeleting <ORGANIZATION> interfacesBatch Controller - manage batch instancesInterface <ORGANIZATION> patternDescriptionCreate a new instance for the specific batchREST <ORGANIZATION> /batchController/{batchName}/instancesCreates a new instance of the specific batch. Returns the object of Batch with a generated ID that has to be used in the all below requests. Based on the ID client is able to check the status or load data using this instance. It is not possible to start new batch instance once the previous one is not completed. Get batch instance detailsREST <ORGANIZATION> /batchController/{batchName}/instances/{batchInstanceId}Returns current details about the specific batch instance. Returns object with all stages, statuses, and statistics. Initialize the stage or complete the stage and save statistics in the cache. REST <ORGANIZATION> /batchController/{batchName}/instances/{batchInstanceId}/stages/{stageName}Creates or updates the specific stage in the batch. Using this operation clients are able to do two things.1. initialize and start the stage before loading the data. In that case, the Body request should be empty.2. update and complete the stage after loading the data. In that case, the Body should contain the stage name and <URL>ients have permission to update only "<PERSON>" stages. The next stages are managed by the internal batch-service <URL>itialize multiple stages or complete the stages and save statistics in the cache. REST <ORGANIZATION> /batchController/{batchName}/instances/{batchInstanceId}/stagesThis operation is similar to the single-stage management operation. This operation allows manage of multiple stages in one <URL>move the specific batch instance from the <URL> <ORGANIZATION> /batchController/{batchName}/instances/{batchInstanceId}Additional service operation used to delete the batch instances from cache. The permission for this operation is not exposed to external clients, this operation is used only by the HUB support team. Clear cache ( clear objects from batchEntityProcessStatus collection that stores metada of objects and is used in deduplication logic)REST <ORGANIZATION> /batchController/{batchName}/_clearCacheheaders: objectType: ENTITY/RELATION entityType: e.g. configuration/entityTypes/HCPAdditional service operation used to clear cache for the specific batch. The user can provide additional parameters to the <ORGANIZATION> to specify what type of objects should be removed from the cache. Operation is used by the clients after executing smoke tests on PROD and during testing on DEV environments. It allows clearing the cache after load to avoid data deduplication during load. Bulk Service - load data using previously created batch instancesInterface <ORGANIZATION> patternDescriptionLoad multiple entities using create operationREST <ORGANIZATION> /bulkService/{batchName}/instances/{batchInstanceId}/stages/{stageName}/entitiesThe operation should be used once the user created a new batch instance and initialized the "Loading" stage. At that moment client is able to load entities to the <ORGANIZATION> system. The operation accepts the bulk of entities and loads the data to <PERSON> topic. Using POST operation the standard creates operation is used.Load multiple entities using the partial override operationREST APIPATCH /bulkService/{batchName}/instances/{batchInstanceId}/stages/{stageName}/entitiesThis operation is similar to the above. The PATCH operation force to use partialOverride operation. Load multiple relations using create operationREST <ORGANIZATION> /bulkService/{batchName}/instances/{batchInstanceId}/stages/{stageName}/relationsThe operation is similar to the above. Using POST operation the standard creates operation is used. Using /relations suffix in the <ORGANIZATION> clients is able to create relations objects in MDM.Load multiple Tags using PATCH operation - append operationREST APIPATCH /bulkService/{batchName}/instances/{batchInstanceId}/stages/{stageName}/tagsThe operation should be used once the user created a new batch instance and initialized the "Loading" stage. At that moment client is able to load tags to the <ORGANIZATION> system. The operation accepts the bulk of entities and loads the data to <PERSON> topic. Using PATCH operation the standard append operation is used so all tags in the input array are added to specified profile in MDM.Load multiple Tags using delete operation - removal operationREST <ORGANIZATION> /bulkService/{batchName}/instances/{batchInstanceId}/stages/{stageName}/tagsThis operation is similar to the above. The DELETE operation removes selected <ORGANIZATION> from the <ORGANIZATION> system.Load multiple merge requests using <ORGANIZATION> operation, this will result in a merge between two <URL> <ORGANIZATION> /bulkService/{batchName}/instances/{batchInstanceId}/stages/{stageName}/entities/_mergeThe operation should be used once the user created a new batch instance and initialized the "Loading" stage. At that moment client is able to load merge requests to the <ORGANIZATION> system - this will result in merging operation between two entities specified in the request. The operation accepts the bulk of merging requests and loads the data to <PERSON>'s topic. Load multiple unmerge requests using <ORGANIZATION> operation, this will result in a unmerge between two <URL> <ORGANIZATION> /bulkService/{batchName}/instances/{batchInstanceId}/stages/{stageName}/entities/_unmergeThe operation should be used once the user created a new batch instance and initialized the "Loading" stage. At that moment client is able to load unmerge requests to the <ORGANIZATION> system - this will result in unmerging operation between two entities specified in the request. The operation accepts the bulk of unmerging requests and loads the data to <PERSON>'s topic. Dependent componentsComponentInterfaceFlowDescriptionManagerAsyncMDMManagementServiceRouteEntitiesCreateProcess bulk objects with entities and creates the HCP/HCO/<ORGANIZATION> in <ORGANIZATION>. Returns asynchronous ACK responseEntitiesUpdateProcess entities and creates using partialOverride property the <ORGANIZATION> in <ORGANIZATION>. Returns asynchronous <ORGANIZATION> responseRelationsCreateProcess bulk objects with entities and creates the HCP/HCO/<ORGANIZATION> in <ORGANIZATION>. Returns asynchronous <ORGANIZATION> StoreMongo connectionN/AStore cache data in mongo collectionConfigurationBatch Workflows configuration, main config for all <ORGANIZATION> and <ORGANIZATION>: - batchName: "ONEKEY" batchDescription: "<ORGANIZATION> and <ORGANIZATION> entities and relations loading" stages: - stageName: "HCOLoading"The main part of the batches configuration. Each batch has to contain:batchName - the name of the specific batch, used in the API <URL>tchDescription - additional description for the specificstages - the list of dependent stages arranged in the execution <URL>is configuration presents the workflow for the specific batch, Administrator can setup these stages in the order that is required for the batch and Client requirements. The main assumptions:The "Loading" Stage is the first one <URL>e "Sending" Stage is dependent on the "Loading" stageThe "Processing" Stage is dependent on the "Sending" <URL>ere is the possibility to add 2 additional optional stages:"EntitiesUnseenDeletion" - used only once the full file is loaded and the soft-delete process is required"HCODeletesProcessing" - process soft-deleted objects to check if all ACKs were received. Available jobs:SendingJobProcessingJobDeletingJobDeletingRelationJobIt is possible to set up different stage names but the assumption is to reuse the existing names to keep <URL>e JOB is dependent on each other in two ways:softDependentStages - allows starting next stage immediately after the dependent one is started. Used in the Sending stages to immediately send data to the <URL>pendentStages - hard dependent stages, this blocks the starting of the stage until the previous one is ended. - stageName: "HCOSending"softDependentStages: ["HCOLoading"]processingJobName: "SendingJob"Example configuration of Sending stage dependent from the <PERSON> stage. In this stage, data is taken from the stage <PERSON> and published to the Manager component for further processing- stageName: "HCOProcessing"dependentStages: ["<PERSON>: "ProcessingJob"Example configuration of the <ORGANIZATION> stage. This stage starts once the Sending JOB is completed. It uses the batchEntityProcessStatus collection to check if all <ORGANIZATION> responses were received from <ORGANIZATION>. - stageName: "RelationLoading"- stageName: "RelationSending" dependentStages: [ "HCOProcessing"] softDependentStages: ["RelationLoading"] processingJobName: "SendingJob"- stageName: "RelationProcessing" dependentStages: [ "RelationSending" ] processingJobName: "ProcessingJob"The full example configuration for the <ORGANIZATION> loading, sending, and processing stages.- stageName: "EntitiesUnseenDeletion" dependentStages: ["RelationProcessing"] processingJobName: "DeletingJob"- stageName: "HCODeletesProcessing" dependentStages: ["EntitiesUnseenDeletion"] processingJobName: "ProcessingJob"Configuration for entities. The example configuration that is used in the full files. It is triggered at the end of the <ORGANIZATION> and checks the data that should be removed. - stageName: "RelationsUnseenDeletion" dependentStages: ["HCODeletesProcessing"] processingJobName: "DeletingRelationJob"- stageName: "RelationDeletesProcessing" dependentStages: ["RelationsUnseenDeletion"] processingJobName: "ProcessingJob"Configuration for relations. The example configuration that is used in the full files. It is triggered at the end of the <ORGANIZATION> and checks the data that should be removed. Loading stage configuration for <ORGANIZATION> load through <ORGANIZATION> requestConfig ParameterDescriptionbulkConfiguration: destinations: "<ORGANIZATION>": <NRP>: bulkLimit: 25 destination: topic: "{{ env_local_name }}-internal-batch-onekey-hcp"The configuration contains the following:destinations - list of batches and kafka topics on which data should be loaded from REST <ORGANIZATION> to <PERSON>.<ORGANIZATION>" - batch nameHCPLoading - specific configuration for loading stagebulkLimit - limit of entities/relations in one <ORGANIZATION> <URL>ic - target topic nameSending stage configuration for <ORGANIZATION> to <ORGANIZATION> (Reltio)Config <ORGANIZATION> valueDescriptionsendingJob: numberOfRetriesOnError: 3Number of retries once an exception occurs during <PERSON> events publishing pauseBetweenRetriesSecs: <DATE_TIME> to wait between the next retry idleTimeWhenProcessingEndsSec: <DATE_TIME> once to wait for new events and complete the Sending JOB threadPoolSize:2Number of threads used to <PERSON> Producer "<ORGANIZATION>": HCPSending: source: topic: "{{ env_local_name }}-internal-batch-onekey-hcp" bulkSending: false bulkPacketSize: 10 reltioRequestTopic: "{{ env_local_name }}-internal-async-all-onekey" reltioReponseTopic: "{{ env_local_name }}-internal-async-all-onekey-ack"The specific configuration for Sending Stage"ONEKEY" - batch nameHCPSending - specific configuration for sending <ORGANIZATION> source topic name from which data is consumedbulkSending - by default false (bundling is implemented and managed in Manager client, currently there is no need to bundle the events on client-side)bulkPacketSize - optionally once bulkSending is true, batch-service is able to bundle the requests. reltioRequestTopic- processing requests in managerreltioReponseTopic - processing ACK in batch-serviceProcessing stage config for checking processing entities status in <ORGANIZATION> (Reltio) - check ACK collectorConfig ParameterDefault <URL>useBetweenQueriesSecs:60Interval in which Cache is cached if all <ORGANIZATION> were received.Entities/Relations UnseenDeletion Job config for Reltio Request Topic and <PERSON> for entities soft <URL>nfig ParameterDefault valueDescriptiondeletingJob: "Symphony": "EntitiesUnseenDeletion":The specific configuration for Deleting Stage"Symphony" - batch nameEntitiesUnseenDelettion- specific configuration for soft-delete stagemaxDeletesLimit: 100The limit is a safety switch in case if we get a corrupted file (empty or partial).It prevents from deleting all profiles Reltio in such cases.queryBatchSize: 10The number of entities/relations downloaded from Cache in one callreltioRequestTopic: "{{ env_local_name }}-internal-async-all-symphony"target topic - processing requests in managerreltioResponseTopic: "{{ env_local_name }}-internal-async-all-symphony-ack"ack topics - processing ACK in batch-serviceUsersConfig ParameterDescription- name: "mdmetl_nprod" description: "<ORGANIZATION> Informatica IICS User - BATCH loader" defaultClient: "ReltioAll" roles: - "CREATE_HCP" - "CREATE_HCO" - "CREATE_MCO" - "CREATE_BATCH" - "GET_BATCH" - "MANAGE_STAGE" - "CLEAR_CACHE_BATCH" countries: - <LOCATION> sources: - "SHS"... batches: "Symphony": - "HCPLoading"The example <ORGANIZATION> user configuration. The configuration is divided into the following sections:roles - available roles to create specific objects and manage batch instancescountries - list of countries that user is allowed to loadsources - list of sources that user is allowed to loadbatches - list of batch names with corresponding stages. In general external users are able to create/edit <PERSON> stages <URL><ORGANIZATION>: "mongodb://mdm_batch_service:{{ <URL>m_batch_<URL>ssword }}@{{ mongo.springURL }}/{{ mongo.dbName }}"Full Mongo DB URLmongo.dbName: "{{ mongo.dbName }}"Mongo database <URL>rvers: "{{ <URL>rvers }}"<PERSON> <URL>Id: "batch_service_<PERSON> }}"<ORGANIZATION> component group <URL>slMechanism: "{{ <URL>slMechanism }}"SASL <URL>curityProtocol: "{{ <URL>curityProtocol }}"Security Protocolkafka.sslTruststoreLocation: /opt/<PERSON>batch-service/config/kafka_truststore.jksSSL trustore file locationkafka.sslTruststorePassword: "{{ kafka.sslTruststorePassword }}"SSL trustore file <URL>ername: batch_serviceKafka <URL>ssword: "{{ hub_broker_<URL>tch_service }}"<PERSON> dedicated user <ORGANIZATION>:SSL algorightAdvanced <PERSON> configuration (do not edit if not required)Config Parameterspring: kafka: properties: sasl: mechanism: ${<URL>slMechanism} security: protocol: ${<URL>curityProtocol} <URL>gorithm: consumer: properties: <URL>: <US_DRIVER_LICENSE> bootstrap-servers: - ${<URL>rvers} groupId: ${<URL>Id} auto-offset-reset: earliest max-poll-records: 50 fetch-max-wait: 1s fetch-min-size: <US_DRIVER_LICENSE> enable-auto-commit: false ssl: trustStoreLocation: file:${kafka.sslTruststoreLocation} trustStorePassword: ${kafka.sslTruststorePassword} producer: bootstrap-servers: - ${<URL>rvers} groupId: ${<URL>Id} auto-offset-reset: earliest ssl: trustStoreLocation: file:${kafka.sslTruststoreLocation} trustStorePassword: ${kafka.sslTruststorePassword} streams: bootstrap-servers: - ${<URL>rvers} applicationId: ${<URL>Id}_ack # for <PERSON> GroupID have to different that <PERSON> consumer clientId: batch_service_ID stateDir: /tmp # num-stream-threads: 1 - default 1 ssl: trustStoreLocation: file:${kafka.sslTruststoreLocation} trustStorePassword: ${kafka.sslTruststorePassword}Additional config (do not edit if not required)Config Parameterserver.port: <URL>utdown.enabled=false:<URL>clude: prometheus, health, <URL>low-bean-definition-overriding: <URL>in-run-controller: <PERSON>: component: metrics: metric-registry=prometheusMeterRegistry:server: use-forward-headers: true forward-headers-strategy: FRAMEWORKspringdoc: swagger-ui: disable-swagger-default-url: TruerestService: #service port - do not change if it run in docker container port: 8082schedulerTreadCount: 5"
|
||
},
|
||
{
|
||
"title": "Callback Delay Service",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Callback+Delay+Service",
|
||
"content": "DescriptionThe application consists of two streams - precallback and postcallback. When the precallback stream detects the need to change the ranking for a given relationship, it generates an event to the post callback stream. The post callback stream collects events in the time window for a given key and processes the last one. This allows you to avoid updating the rankings multiple times when loading relations using <URL>sponsible for following transformations:<ORGANIZATION> relation rakingApplies transformations to the <PERSON> input stream producing the <PERSON> output <URL>nology: <LOCATION>, <DATE_TIME> boot, MongoDB, <PERSON> link: callback-delay-service FlowsOtherHCOtoHCOAffiliations RankingsExposed interfacesPreCallbackDelay <LOCATION> -(rankings)Interface NameTypeEndpoint patternDescriptioncallback inputKAFKA${env}-internal-reltio-full-delay-eventsEvents processed by the precallback serviceoutput - callbacksKAFKA${env}-internal-reltio-proc-eventsResult events processed by the precallback delay serviceoutput - processing KAFKA${env}-internal-async-all-bulk-callbacksUpdateAttribute requests sent to Manager component for asynchronous processingDependent componentsComponentInterfaceFlowDescriptionManagerAsyncMDMManagementServiceRouteRelationshipAttributesUpdateUpdate relationship attributes in asynchronous modeHub StoreMongo connectionN/AGet mongodb stored relation data when <PERSON> cache is <URL>nfigurationMain ConfigurationDefault <URL>Id${env}-precallback-delay-serviceThe application ID. Each stream processing application must have a unique ID. The same ID must be given to all instances of the application. It is recommended to use only alphanumeric characters, (dot), - (hyphen), and _ (underscore). Examples: "hello_world", "hello_world-<US_DRIVER_LICENSE>.0.0"<URL>reads10Number of threads used in the <PERSON> <URL>ructuredLogAndContinueExceptionHandlerDeserialization exception <URL>3600000Number of milliseconds to wait <PERSON> time before next poll of <URL>ze2097152Events message sizeCallbackWithDelay Stream -(rankings)Config ParameterDefault valueDescriptionpreCallbackDelay.eventInputTopic${env}-internal-reltio-full-delay-eventsinput topicpreCallbackDelay.eventDelayTopic${env}-internal-reltio-full-callback-delay-eventsdelay stream input topic, when the precallback stream detects the need to modify ranks for a given relationship group, it produces an event for this topic. Events for a given key are aggregated in a time windowpreCallbackDelay.eventOutputTopic${env}-internal-reltio-proc-eventsoutput topic for <URL>ernalAsyncBulkCallbacksTopic${env}-internal-async-all-bulk-callbacksoutput topic for <URL>oreName${env}-relation-data-storeRelation data cache store namepreCallbackDelay.rankCallback.featureActivationtrueParameter used to enable/disable the Rank <URL>llbackSourceHUB_CALLBACKCrosswalk used to update <ORGANIZATION> with Rank <URL>with-delay-raw-relation-checksum-dedupe-storetopic name that store rawRelation MD5 checksum - used in rank callback <URL>tentionPeriod1hstore retention periodpreCallbackDelay.rankCallback.rawRelationChecksumDedupeStore.windowSize10mstore window <URL>attribute-changes-checksum-dedupe-storetopic name that store attribute changes MD5 checksum - used in rank callback <URL>tentionPeriod1hstore retention <URL>tributeChangesChecksumDedupeStore.windowSize10mstore window <ORGANIZATION> to be activatedpreCallbackDelay.rankTransform.featureActivationtrueParaemter defines in the <ORGANIZATION> feature should be <URL>tiveRankSorterOtherHCOtoHCOAffiliationsDelayRankSorterRank sorter <URL>filiationN/AThe source order defined for the specific Ranking. Details about the algorithm in: OtherHCOtoHCOAffiliations RankSorterdeduplicationPost callback stream ddeduplication configdeduplication.pingInterval1mPost callback stream ping invervaldeduplication.duration1hPost callback stream window <URL>acePeriod0sPost callback stream deduplication grace <URL>teLimit122869944Post callback stream deduplication byte <URL>ppressNamecallback-rank-delay-suppressPost callback stream deduplication suppress <URL>callback-rank-delay-suppressPost callback stream deduplication <URL>oreNamecallback-rank-delay-suppress-deduplication-storePost callback stream deduplication store nameRank sort order config:The component allows you to set different sorting (ranking) configurations depending on the country of the relationship. Relations for selected countries are sorted based on the rankExecutionOrder configuration - in the order of the items on the list. The following sorters are available:ATTRIBUTE - sort relationships based on the values (or lookup codes) of defined attributesACTIVE - sort relationships based on their status (ACTIVE, NON-ACTIVE)SOURCE - sort relations based on the order of sourcesLUD - sort relations based on their update time - ascending or descending orderSample rankSortOrder confiugration:rankSortOrder: affiliation: config: - countries: - AU - <ORGANIZATION>rankExecutionOrder: - type: ACTIVE - type: ATTRIBUTE attributeName: <ORGANIZATION>lookupCode: true order: REL.HIE: 1 <URL>I: 2 REL.FPA: 3 <URL>G: 4 REL.BUY: 5 <URL>N: 6 <URL>R: 7 REL.MBR: 8 <URL>M: 9 <URL>SS: 10 REL.WPC: 11 REL.WPIC: 12 <URL>U: 13 - type: SOURCE order: Reltio: 1 ONEKEY: 2 <ORGANIZATION>: 3 SAP: 4 PFORCERX: 5 PFORCERX_ODS: 5 KOL_OneView: 6 ONEMED: 6 ENGAGE: 7 MAPP: 8 GRV: 9 GCP: 10 <ORGANIZATION>: 11 PCMS: 12 PTRS: 13 - type: LUD"
|
||
},
|
||
{
|
||
"title": "Callback Service",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "DescriptionResponsible for following transformations:<ORGANIZATION> names calculationDangling affiliationsCrosswalk cleanerPotential match queue cleanerPrecallback stream - (rankings)Applies transformations to the <PERSON> input stream producing the <PERSON> output <URL>nology: java 8, spring boot, MongoDB, <PERSON> link: callback-service FlowsCallbacksHCONames Callback for IQVIA modelDanglingAffiliations CallbackCrosswalkCleaner CallbackNotMatch CallbackPreCallbacks (Rankings/COMPANYGlobalCustomerId/Canada Micro-Bricks/HCPType)Exposed <ORGANIZATION> -(rankings)Interface NameTypeEndpoint patternDescriptioncallback inputKAFKA${env}-internal-reltio-full-eventsEvents enriched by the <ORGANIZATION> component. Full JSON dataoutput - callbacksKAFKA${env}-internal-reltio-proc-eventsEvents that are already processed by the precallback services (contains updated Ranks and Reltio callback is also processed)output - processing KAFKA${env}-internal-async-all-bulk-callbacksUpdateAttribute requests sent to Manager component for asynchronous processingHCO NamesInterface NameTypeEndpoint patternDescriptioncallback inputKAFKA${env}-internal-callback-hconame-inevents being sent by the event publisher component. Event types being considered: HCO_CREATED, HCO_CHANGED, RELATIONSHIP_CREATED, RELATIONSHIP_CHANGEDcallback outputKAFKA${env}-internal-hconames-rel-createRelation Create requests sent to Manager component for asynchronous processingDanging <ORGANIZATION> NameTypeEndpoint patternDescriptioncallback inputKAFKA${env}-internal-callback-orphanClean-inevents being sent by the event publisher component. Event types being considered: 'HCP_REMOVED', 'HCO_REMOVED', 'MCO_REMOVED', 'HCP_INACTIVATED', 'HCO_INACTIVATED', 'MCO_INACTIVATED'callback outputKAFKA${env}-internal-async-all-orphanCleanRelation Update (soft-delete) requests sent to Manager component for asynchronous processingCrosswalk CleanerInterface NameTypeEndpoint patternDescriptioncallback inputKAFKA${env}-internal-callback-cleaner-inevents being sent by the event publisher component. Event types being considered: 'HCO_CHANGED', 'HCP_CHANGED', 'MCO_CHANGED', 'RELATIONSHIP_CHANGED'callback outputKAFKA${env}-internal-async-all-cleaner-callbacksDelete Crosswalk or Soft-Delete requests sent to Manager component for asynchronous processingNotMatch callback (clean potential match <ORGANIZATION> patternDescriptioncallback inputKAFKA${env}-internal-callback-potentialMatchCleaner-inevents being sent by the event publisher component. Event types being considered: 'RELATIONSHIP_CHANGED', 'RELATIONSHIP_CREATED'callback outputKAFKA${env}-internal-async-all-notmatch-callbacksNotMatch requests sent to Manager component for asynchronous processingDependent componentsComponentInterfaceFlowDescriptionManagerMDMIntegrationServiceGetEntitiesByUrisRetrieve multiple entities by providing the list of entities URISAsyncMDMManagementServiceRouteRelationshipUpdateUpdate relationship object in asynchronous modeEntitiesUpdateUpdate entity object in asynchronous mode - set soft-deleteCrosswalkDeleteRemove Crosswalk from entity/relation in asynchronous modeNotMatchSet Not a Match between two entitiesHub StoreMongo connectionN/AStore cache data in mongo collectionConfigurationMain <ORGANIZATION> <URL>Id${env}-entity-enricherThe application ID. Each stream processing application must have a unique ID. The same ID must be given to all instances of the application. It is recommended to use only alphanumeric characters, (dot), - (hyphen), and _ (underscore). Examples: "hello_world", "hello_world-<US_DRIVER_LICENSE>.0.0"<URL>reads10Number of threads used in the <PERSON> <URL>ructuredLogAndContinueExceptionHandlerDeserialization exception <URL>3600000Number of milliseconds to wait <PERSON> time before next poll of <URL>ze2097152Events message sizegateway.apiKey${gateway.apiKey}API key used in the communication to <ORGANIZATION> used to turn on/off logging the payloadgateway.url${gateway.url}Manager <URL>erName${<URL>erName}Manager user nameHCO <ORGANIZATION> valueDescriptioncallback.hconames.eventInputTopic${env}-internal-callback-hconame-ininput topiccallback.hconames.HCPCalculateStageTopic${env}-internal-callback-hconame-hcp4calcinternal <URL>AsyncHCONames${env}-internal-hconames-rel-createoutput <URL>duplicationWindowDuration10The size of the windows in <URL>duplicationWindowGracePeriod10sThe grace period to admit out-of-order events to a <ORGANIZATION>-name-dedupe-storededuplication topic <URL>ceptedEntityEventTypesHCO_CREATED, HCO_CHANGEDaccepted events types for entity <URL>ceptedRelationEventTypesRELATIONSHIP_CREATED, RELATIONSHIP_CHANGEDaccepted events types for relationship <URL>ceptedCountriesAI,<ORGANIZATION>,AR,AW,BS,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,BR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,DO,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,HN,<ORGANIZATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<LOCATION>,PY,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION> of countries aceppted in further processing <URL>pactedHcpTraverseRelationTypesconfiguration/relationTypes/Activity, configuration/relationTypes/Managed, configuration/relationTypes/<URL>Iaccepted relationship types to travers for impacted <ORGANIZATION> <URL>inHCOTraverseRelationTypesconfiguration/relationTypes/Activity, configuration/relationTypes/Managed, configuration/relationTypes/<URL>Iaccepted relationship types to travers for impacted main <ORGANIZATION> <URL>faultHOSPthe Type code name for <ORGANIZATION> <URL>inHCOStructurTypeCodese.g.: AD:- "WFR.TSR.JUR"- "<URL>N"- "<URL>A"Cotains the map where the:KEY is the country Values are the <ORGANIZATION> for the corresponding country, <URL>duplicationeither <URL>duplication or callback.hconames.windowSessionDeduplication must be <URL>duplication.durationduration size of time <URL>acePeriodgrace period related to time <URL>teLimitbyte limit of <URL>ppressNamename <URL>name of the <ORGANIZATION> step in <URL>orageNamewhen switching from <ORGANIZATION> storageName must be differentname of Materialized Session <URL>duplication.pingIntervalinterval in which ping messages are being generatedcallback.hconames.windowSessionDeduplicationeither <URL>duplication or callback.hconames.windowSessionDeduplication must be setcallback.hconames.windowSessionDeduplication.durationduration size of session <URL>teLimitbyte limit of <URL>ppressNamename <URL>name of the <ORGANIZATION> step in <URL>orageNamewhen switching from <ORGANIZATION> storageName must be differentname of Materialized Session Storecallback.hconames.windowSessionDeduplication.pingIntervalinterval in which ping messages are being generatedPfe HCO NamesConfig ParameterDefault <URL>eHconames.eventInputTopic${env}-internal-callback-hconame-ininput <URL>eHconames.HCPCalculateStageTopic${env}-internal-callback-hconame-hcp4calcinternal <URL>AsyncHCONames${env}-internal-hconames-rel-createoutput <URL>eHconames.timeWindoweither <URL>eHconames.timeWindow or <URL>ssionWindow must be <URL>eHconames.timeWindow.durationduration size of time <URL>acePeriodgrace period related to time <URL>teLimitbyte limit of <URL>ppressNamename <URL>name of the <ORGANIZATION> step in <LOCATION> switching from <URL>eHconames.timeWindow to <URL>ssionWindow storageName must be differentname of Materialized Session <URL>eHconames.timeWindow.pingIntervalinterval in which ping messages are being <URL>ssionWindoweither <URL>eHconames.timeWindow or <URL>ssionWindow must be <URL>ssionWindow.durationduration size of session <NRP> limit of <URL>ppressNamename <URL>name of the <ORGANIZATION> step in <URL>orageNamewhen switching from <URL>duplication to <URL>eHconames.windowSessionDeduplication storageName must be differentname of Materialized Session <URL>ssionWindow.pingIntervalinterval in which ping messages are being generatedDanging AffiliationsConfig ParameterDefault valueDescriptioncallback.danglingAffiliations.eventInputTopic${env}-internal-callback-orphanClean-ininput <URL>ceptedEntityEventTypesHCP_REMOVED, HCO_REMOVED, MCO_REMOVED, HCP_INACTIVATED, HCO_INACTIVATED, MCO_INACTIVATEDaccepted entity eventscallback.danglingAffiliations.eventOutputTopic${env}-internal-async-all-orphanCleanoutput <URL>bAsyncOperationrel-updatekafka record headercallback.danglingAffiliations.exceptCrosswalkTypesconfiguration/sources/Reltiocrosswalk types to excludeCrosswalk <PERSON> <URL>osswalkCleaner.eventInputTopic${env}-internal-callback-cleaner-ininput <URL>ceptedEntityEventTypesMCO_CHANGED, HCP_CHANGED, HCO_CHANGEDaccepted entity <URL>ceptedRelationEventTypesRELATIONSHIP_CHANGEDaccepted relation <URL>waysconfiguration/sources/HUB_CallbackHub callback crosswalk <URL>osswalkCleaner.hardDeleteCrosswalkTypes.exceptconfiguration/sources/ReltioCleanserReltio cleanser crosswalk <URL>waysconfiguration/sources/HUB_CallbackHub callback crosswalk <URL>osswalkCleaner.hardDeleteCrosswalkRelationTypes.exceptconfiguration/sources/ReltioCleanserReltio cleanser crosswalk <URL>waysconfiguration/sources/HUB_USAGETAGCrosswalks list to <URL>ftDeleteCrosswalkTypes.whenOneKeyNotExistsconfiguration/sources/IQVIA_PRDP, configuration/sources/IQVIA_RAWDEACrosswalk list to soft-delete when <ORGANIZATION> crosswalk does not <URL>ftDeleteCrosswalkTypes.exceptconfiguration/sources/HUB_CALLBACK, configuration/sources/<ORGANIZATION> to <URL>bAsyncOperationcrosswalk-deletekafka record <URL>bAsyncOperationcrosswalk-relation-deletekafka record <URL>bAsyncOperationhcp-updatekafka record <URL>bAsyncOperationhco-updatekafka record <URL>Keyconfiguration/sources/<ORGANIZATION> crosswalk <URL>osswalkCleaner.eventOutputTopic${env}-internal-async-all-cleaner-callbacksoutput <URL>ferbackLookupCodesHCPIT.RBI, HCOIT.RBIOneKey referback crosswalk lookup <URL>KeyLookupCodesHCPIT.OK, HCOIT.OKOneKey crosswalk lookup codesNotMatch callback (clean potential match queue)Config ParameterDefault valueDescriptioncallback.potentialMatchLinkCleaner.eventInputTopic${env}-internal-callback-potentialMatchCleaner-ininput <URL>ceptedRelationEventTypes- RELATIONSHIP_CREATED- RELATIONSHIP_CHANGEDaccepted relation <URL>ceptedRelationObjectTypes- "configuration/relationTypes/FlextoHCOSAffiliations"- "configuration/relationTypes/FlextoDDDAffiliations"- "configuration/relationTypes/SAPtoHCOSAffiliations"accepted relationship <URL>tchTypesInCache- "AUTO_LINK"- "POTENTIAL_LINK"PotentialMatch cache object <URL>bAsyncOperationentities-not-match-setkafka record headercallback.potentialMatchLinkCleaner.eventOutputTopic${env}-internal-async-all-notmatch-callbacksoutput topicPreCallback Stream -(rankings)Config ParameterDefault valueDescriptionpreCallback.eventInputTopic${env}-internal-reltio-full-eventsinput topicpreCallback.eventOutputTopic${env}-internal-reltio-proc-eventsoutput topic for <URL>ernalAsyncBulkCallbacksTopic${env}-internal-async-all-bulk-callbacksoutput topic for <URL>seURLN/AManager URL defined per <URL>mIntegrationService.apiKeyN/AManager secret API KEY defined per <URL>mIntegrationService.logMessagesfalseParameter used to turn on/off logging the <URL>ipEventTypesENTITY_MATCHES_CHANGED, ENTITY_AUTO_LINK_FOUND, ENTITY_POTENTIAL_LINK_FOUND, DCR_CREATED, DCR_CHANGED, DCR_REMOVEDEvents skipped in the <URL>intainDuration10mCache duration time (for callbacks MD5 checksum)<URL>erval5mCache deletion intervalpreCallback.rankCallback.featureActivationtrueParameter used to enable/disable the <ORGANIZATION> <URL>llbackSourceHUB_CallbackCrosswalk used to update <ORGANIZATION> with Rank <URL>untriesAG, <ORGANIZATION>, AN, AR, AW, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, BR, BS, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, DO, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <PERSON>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, HN, ID, IN, IT, <ORGANIZATION>, <LOCATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, MY, <LOCATION>, <LOCATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, PF, PH, PK, PM, <ORGANIZATION>, PY, RE, RU, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, TR, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, EMPTYList of countries for wich process activates the <ORGANIZATION> (different between <ORGANIZATION> and GBLUS)preCallback.rankCallback.rawEntityChecksumDedupeStoreNameraw-entity-checksum-dedupe-storetopic name that store rawEntity MD5 checksum - used in rank callback <URL>tributeChangesChecksumDedupeStoreNameattribute-changes-checksum-dedupe-storetopic name that store attribute changes MD5 checksum - used in rank callback <URL>rwardMainEventsDuringPartialUpdatefalseThe parameter used to define if we want to forward partial events. By default it is false so only events that are fully calculated are sent furtherpreCallback.rankCallback.ignoreAndRemoveDuplicatesfalseThe parameter used in the <ORGANIZATION> may contain duplicities in the group. It is set to False because now <ORGANIZATION> is removing duplicated <URL>tiveCleanerCallbacksSpecialityCleanerCallback, <ORGANIZATION>, EmailCleanerCallback, PhoneCleanerCallbackList of cleaner callbacks to be <URL>tiveCallbacksSpecialityCallback, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, PhoneCallbackList of <ORGANIZATION> to be activatedpreCallback.rankTransform.featureActivationtrueParaemter defines in the <ORGANIZATION> feature should be <URL>tiveRankSorterSpecialtyRankSorter, AffiliationRankSorter, AddressRankSorter, IdentifierRankSorter, EmailRankSorter, <URL>filiationN/AThe source order defined for the specific Ranking. Details about the algorithm in: Affiliation <URL>oneN/AThe source order defined for the specific Ranking. Details about the algorithm in: <ORGANIZATION>/AThe source order defined for the specific Ranking. Details about the algorithm in: <PERSON>/AThe source order defined for the specific Ranking. Details about the algorithm in: Specialty <URL>entifierN/AThe source order defined for the specific Ranking. Details about the algorithm in: Identifier <URL>ltioN/AThe source order defined for the specific Ranking. Details about the algorithm in: Address <URL>ltioN/AThe source order defined for the specific Ranking. Details about the algorithm in: Addresses RankSorter"
|
||
},
|
||
{
|
||
"title": "China Selective Router",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/China+Selective+Router",
|
||
"content": "DescriptionThe <LOCATION>-selective-router component is responsible for enriching events and transformig from COMPANY model to <NRP> model. Component is using <ORGANIZATION> operation using kafka topics. To transform COMPANY object it needs to be consumed from input topic and based on configuration it is enriched, <ORGANIZATION> entity is connected with mainHco and as a last step event model is transformed to <NRP> model, after all operations event is sending to output <URL>nology: java 11, spring boot, kafka-streams, kafkaCode link: <LOCATION>-selective-routerFlowsTransformation flowExposed interfacesInterface NameTypeEndpoint patternDescriptionEvent transformer topologyKAFKAtopic: {env}-{topic_postfix}Transform event from COMPANY model to <NRP> model, and send to ouptut topicDependent componentsComponentInterfaceFlowDescriptionData modelHCPModelConverterN/AConverter to transform Entity to COMPANY model or to <NRP> modelConfigurationConfig ParameterDescriptioneventTransformer: - country: "CN" eventInputTopic: "${env}-internal-full-hcp-merge-cn" eventOutputTopic: "${env}-out-full-hcp-merge-cn" enricher: <URL><PERSON><URL>inaRefEntityProcessor hcoConnector: processor: <URL><PERSON><URL>inaHcoConnectorProcessor transformer: <URL>m.event_<URL>PANYToIqviaEventTransformer refEntity: - type: <ORGANIZATION>attribute: ContactAffiliations relationLookupAttribute: <URL>lationshipDescription relationLookupCode: CON - type: MainHCO attribute: ContactAffiliations relationLookupAttribute: <URL>lationshipDescription relationLookupCode: <URL>IThe main part of <LOCATION>-selective-router configuration, contains list of event transformaton configurationcountry - specify country, value of this parameter have to be in event country section otherwise event will be skippedeventInputTopic - input topiceventOutputTopic - output topicenricher - specify class to enrich event, based on refEntity configuration this class is resposible for collecting related <ORGANIZATION> and mainHco <URL>cessor - specify class to connect <ORGANIZATION> with main <ORGANIZATION>, in this class is made a call to reltio for all connections by <ORGANIZATION>. Based on received data is created additional attribute 'OtherHcoToHco' contains mainHco entity collected by enricher.hcoConnector.enabled - enable or disable hcoConnectorhcoConnector.hcoAttrName - specify additional attibute name to place connected mainHcohcoConnector.outRelations - specify the list of out relation to filter while calling reltio for <ORGANIZATION> connectionsrefEntity - contains list of attributes containing information about <ORGANIZATION> or MainHCO entity (<ORGANIZATION> - type of entity: <ORGANIZATION> or <URL>tribute - base attribute to search for <URL>lationLookupAttribute - attribute to search for lookupCode to decide what entity we are looking <URL>lationLookupCode - code specify entity type"
|
||
},
|
||
{
|
||
"title": "Component Template",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Component+Template",
|
||
"content": "Description<short description of the componet>Technology:Code link:Flows<List of realized flow with links to Flow section>Exposed interfacesInterface NameTypeEndpoint patternDescriptionREST API|KAFKADependent componentsComponentInterfaceFlowDescription<component name with link><Interface name><flow name with link>for whatConfigurationConfig <ORGANIZATION> valueDescription"
|
||
},
|
||
{
|
||
"title": "DCR Service",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/DCR+Service",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>,
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/DCR+Service+2",
|
||
"content": "DescriptionResponsible for the <ORGANIZATION> processing. Client (PforceRx) sends the DCRs through REST <ORGANIZATION>, DCRs are routed to the target system (OneKey/Veeva Opendata/Reltio). Client (Pforcerx) retrieves the status of the <ORGANIZATION> using status <ORGANIZATION>. Service also contains <PERSON>-streams functionality to process the <ORGANIZATION> updates asynchronously and update the DCRRegistry <URL> are accessible with REST <URL>lies transformations to the <PERSON> input stream producing the <PERSON> output <URL>nology: java 8, spring boot, MongoDB, <PERSON> link: dcr-service-2 FlowsPforceRx <ORGANIZATION> flowsCreate <ORGANIZATION> state changeGet <ORGANIZATION> statusOneKey: create <ORGANIZATION> method (submitVR) - directOneKey: generate DCR Change Events (traceVR)OneKey: process <ORGANIZATION> Change EventsVeeva: create <ORGANIZATION> method (storeVR)Veeva: generate DCR Change Events (traceVR)Veeva: process DCR Change EventsReltio: create <ORGANIZATION> method - directReltio: process DCR Change EventsExposed interfacesREST <ORGANIZATION> patternDescriptionCreate DCRsREST <ORGANIZATION> /dcrCreate DCRsGET DCRs statusREST APIGET /dcr/statusGET DCRs statusOneKey StreamInterface NameTypeEndpoint patternDescriptioncallback inputKAFKA{env}-internal-onekey-dcr-change-events-inEvents generated by the <ORGANIZATION> component after OneKey DataSteward Action. Flow responsible for events generation is <ORGANIZATION>: generate DCR Change Events (traceVR)output - callbacksMongomongoDCR Registry updated Veeva OpenData StreamInterface NameTypeEndpoint patternDescriptioncallback inputKAFKA{env}-internal-veeva-dcr-change-events-inEvents generated by the <LOCATION> component after Veeva DataSteward Action. Flow responsible for events generation is <PERSON>: generate DCR Change Events (traceVR)output - callbacksMongomongoDCR Registry updated Reltio StreamInterface NameTypeEndpoint patternDescriptioncallback inputKAFKA{env}-internal-reltio-dcr-change-events-inEvents generated by <ORGANIZATION> after <ORGANIZATION>. Published by the event-publisher component selector: "(<URL>conciliationTarget==null) <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>ubtype in ['DCR_CREATED', 'DCR_CHANGED', 'DCR_REMOVED']" output - callbacksMongomongoDCR Registry updated <PERSON> routingCreate DCRroute the requests to <ORGANIZATION> componentManagerMDMIntegrationServiceGetEntitiesByUrisRetrieve multiple entities by providing the list of entities URISGetEntityByIdget entity by the idGetEntityByCrosswalkget entity by the <ORGANIZATION> change requests in ReltioOK <ORGANIZATION> in <ORGANIZATION> in <ORGANIZATION> the moment only Veeva realized this interface, however in the future <ORGANIZATION> will be exposed via this interface as well Hub StoreMongo connectionN/AStore cache data in mongo collectionTransaction LoggerTransactionServiceTransactionsSaves each <ORGANIZATION> status change in transactionsConfigurationConfig <ORGANIZATION> <URL>Id${env}_dcr2The application ID. Each stream processing application must have a unique ID. The same ID must be given to all instances of the application. It is recommended to use only alphanumeric characters, (dot), - (hyphen), and _ (underscore). Examples: "hello_world", "hello_world-<US_DRIVER_LICENSE>.0.0"<URL>reads10Number of threads used in the <PERSON> <URL>ructuredLogAndContinueExceptionHandlerDeserialization exception <URL>stomTrustStoreSslEngineFactorySSL <URL>mon.ping.PingPartitionerPing partitioner required in <PERSON> application with PING <URL>3600000Number of milliseconds to wait <PERSON> time before next poll of <URL>cords10Number of records downloaded in one poll from <URL>ze2097152Events message sizedataStewardResponseConfig: reltioResponseStreamConfig: enable: true eventInputTopic: - ${env}-internal-reltio-dcr-change-events-in sendTo3PartyDecisionTable: - target: <LOCATION> decisionProperties: sourceName: "VEEVA_CROSSWALK" - target: <LOCATION> decisionProperties: countries: ["ID","PK","MY","TH"] - target: OneKey sendTo3PartyTopics: <PERSON>: - ${env}-internal-sendtothirdparty-ds-requests-in <ORGANIZATION>: - ${env}-internal-onekeyvr-ds-requests-in VeevaResponseStreamConfig: enable: true eventInputTopic: - ${env}-internal-veeva-dcr-change-events-in onekeyResponseStreamConfig: enable: true eventInputTopic: - ${env}-internal-onekey-dcr-change-events-in maxRetryCounter: 20 deduplication: duration: 2m gracePeriod: 0s byteLimit: <UK_NHS> suppressName: dcr2-onekey-response-stream-suppress name: dcr2-onekey-response-stream-with-delay storeName: dcr2-onekey-response-window-deduplication-store pingInterval: 1m- ${env}-internal-reltio-dcr-change-events-in- ${env}-internal-onekey-dcr-change-events-in- ${env}-internal-veeva-dcr-change-events-in- ${env}-internal-sendtothirdparty-ds-requests-in- ${env}-internal-onekeyvr-ds-requests-inConfiguration related to the event processing from <ORGANIZATION>, <ORGANIZATION> or <ORGANIZATION> is related to <ORGANIZATION> and allows to configure the aggregation window for events (processing <DATE_TIME>) - 24hMaxRetryCounter should be set to a high number - 1000000targetDecisionTable: - target: Reltio decisionProperties: userName: "mdm_dcr2_test_reltio_user" - target: OneKey decisionProperties: userName: "mdm_dcr2_test_onekey_user" - target: <LOCATION> decisionProperties: sourceName: "VEEVA_CROSSWALK" - target: <LOCATION> decisionProperties: countries: ["ID","PK","MY","TH"] - target: Reltio decisionProperties: country: GBLIST OF the following combination of attributesEach attribute in the configuration is optional. The decision table is making the validation based on the input request and the main object- the main object is <ORGANIZATION>, if the <ORGANIZATION> is empty then the decision table is checking <ORGANIZATION>. The result of the decision table is the <ORGANIZATION>, the routing to the Reltio MDM system, <ORGANIZATION> or <LOCATION> service. userName the user name that executes the requestsourceNamethe source name of the Main objectcountrythe county defined in the requestoperationTypethe operation type for the <ORGANIZATION> object{ insert, update, delete }affectedAttributesthe list of attributes that the user is changingaffectedObjects{ <ORGANIZATION>, <ORGANIZATION>, HCP_HCO}RESULT → TargetType {Reltio, <ORGANIZATION>, Veeva}PreCloseConfig: acceptCountries: - "IN" - "SA" rejectCountries: - "PL" - "GB"DCRs with countries which belong to acceptCountries attribute are automatically accepted (PRE_APPROVED) or rejected (PRE_REJECTED) when belong to rejectCountires. acceptCountriesList of values, example: [ IN, <LOCATION>, <LOCATION> , ...]rejectCountriesList of values, example: [ IN, <LOCATION>, PL ]transactionLogger: simpleDCRLog: enable: true kafkaEfk: enable: trueTransaction ServiceThe configuration that enables/disables the transaction loggeroneKeyClient: url: http://devmdmsrv_onekey-dcr-service_1:8092 userName: <ORGANIZATION> configuration that allows connecting to <ORGANIZATION> serviceVeevaClient: url: <ORGANIZATION> username: user apiKey: ""Veeva Integration Service The configuration that allows connecting to <LOCATION> dcr servicemanager: url: <URL>:8443/${env}/gw userName:dcr_service_2_user logMessages: true timeoutMs: 120000MDM <ORGANIZATION> configuration that allows connecting to <ORGANIZATION> Indexes"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> service connect guide",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/DCR+service+connect+guide",
|
||
"content": "IntroductionThis guide provides comprehensive instructions on integrating new client applications with the <ORGANIZATION> (Data Change Request) service in the MDM HUB system. It is intended for technical engineers, client architects, solution designers, and MDM/Mulesoft teams.Table of ContentsOverviewThe <ORGANIZATION> service processes Data Change Requests (DCRs) sent by clients through a REST API. These DCRs are routed to target systems such as <ORGANIZATION>, <PERSON>, or Reltio. The service also includes <PERSON>-streams functionality to process <ORGANIZATION> updates asynchronously and update the DCRRegistry <URL>cess to <ORGANIZATION> should be confirmed in advance with the <LOCATION> MDM HUB → <PERSON> StartedPrerequisitesAPI credentials (username and <PERSON> configurations (<ORGANIZATION>, <ORGANIZATION>, updated whitelists to allow you access <ORGANIZATION> InstructionsCreate MDM HUB User: Follow the SOP to add a direct <ORGANIZATION> user to the HUB. <PERSON> the steps outlined in → Add Direct API User to <PERSON>: Use <ORGANIZATION> to acquire an access tokenAPI <ORGANIZATION> DCR: <ORGANIZATION> /dcrGet <ORGANIZATION> Status: GET /dcr/statusGet Multiple DCR Statuses: GET /dcr/_statusGet Entity Details: GET /{objectUri}MethodsGET: Retrieve informationPOST: Create new DCRsAuthentication and <ORGANIZATION> step is to acquire access token. If you are connecting first time to <ORGANIZATION> you should create MDM HUB user Once you have the <ORGANIZATION> username and password, you can acquire the access token.<ORGANIZATION><URL> \\ // Use devfederate for <ORGANIZATION>, stgfederate for STAGE, prodfederate for <ORGANIZATION>--header 'Content-Type: application/x-www-form-urlencoded' \\\n--header 'Authorization: Basic Base64-encoded(username:password)'\n\nResponse:\n{\n "access_token": "12341SPRtjWQzaq6kgK7hXkMVcTzX", \n "token_type": "Bearer",\n "expires_in": 1799 // The token expires after the time - "expires_in" field. Once the token expires, it must be refreshed.\n}\nBelow you can see, how <PERSON> should be configured to obtain access_tokenUsing Access TokenInclude the access token in the Authorization header for all <ORGANIZATION> <URL><PERSON> Ensure DNS resolution for <ORGANIZATION>: Configure VPN access if requiredWhitelists: Add necessary IP addresses to the whitelistCreating DCRsThis method is used to create new <ORGANIZATION> objects in the MDM HUB system. Below is an example request to create a new HCP object in the <ORGANIZATION> <URL>re examples and the entire data model can be found at:<ORGANIZATION> service swaggerExample <ORGANIZATION> new HCP\ncurl --location '{api_url}/dcr' \\ // e.g., <URL> 'Content-Type: application/json' \\\n--header 'Authorization: Bearer ${access_token_value}' \\ // e.g., <LOCATION>--data-raw '[\n {\n "country": "${dcr_country}", // e.g., CA\n "createdBy": "${created_by}", // e.g., Test user\n "extDCRComment": "${external_system_comment}", // e.g., This is test <ORGANIZATION> to create new HCP\n "extDCRRequestId": "${external_system_request_id}", // e.g., CA-VR-<US_BANK_NUMBER>\n "dcrType": "${dcr_type}", // e.g., PforceRxDCR\n "entities": [\n {\n "@type": "hcp",\n "action": "insert",\n "updateCrosswalk": {\n "type": "${source_system_name}", // e.g., <ORGANIZATION> \n "value": "${source_system_value}" // e.g., <ORGANIZATION> \n },\n "values": {\n "birthDate": "<DATE_TIME>",\n "birthYear": "2017",\n "firstName": "Maurice",\n "lastName": "Brekke",\n "title": "HCPTIT.1118",\n "middleName": "Karen",\n "subTypeCode": "HCPST.A",\n "addresses": [\n {\n "action": "insert",\n "values": {\n "sourceAddressId": {\n "source": "${source_system_name}", // e.g., PFORCERX\n "id": "${address_source_system_value}" // e.g., <ORGANIZATION>-CA-VR-<US_BANK_NUMBER> <ORGANIZATION> },\n "addressLine1": "<PERSON> Terrace",\n "addressLine2": "Waynetown",\n "addressLine3": "Designer Books gold parsing",\n "addressType": "<PERSON>"buildingName": "Handmade Cotton Shirt",\n "city": "Singapore",\n "country": "SG",\n "zip": "ZIP 5"\n }\n }\n ] \n }\n }\n ]\n }\n]'\nRequest placeholders:parameter namedescriptionexampleapi_urlAPI router URL<URL> token value0001WvxKA16VWwlufC2dslSILdbEdcr_countryMain entity countryCAcreated_byCreated by userTest userexternal_system_commentComment that will be populate to next processing stepsThis is test DCRexternal_system_request_idID for tracking <ORGANIZATION> processingCA-VR-00255752dcr_typeProvided by <ORGANIZATION> team when user with <ORGANIZATION> permission will be createdPforceRxDCRsource_system_nameSource system name. User used to invoke request has to have access to this sourcePFORCERXsource_system_valueID of this object in source systemHCO-CA-VR-00255752address_source_system_valueID of address in source systemADR-CA-VR-00255752Handling <ORGANIZATION> success response\n[\n {\n "requestStatus": "${request_status}", // e.g., REQUEST_ACCEPTED\n "extDCRRequestId": "${external_system_request_id}, // e.g., CA-VR-<US_BANK_NUMBER>\n "dcrRequestId": "${mdm_hub_dcr_request_id}", // e.g., 4a480255a4e942e18c6816fa0c89a0d2\n "targetSystem": "${target_system_name}", // e.g., Reltio\n "country": "${dcr_request_country}", // e.g., CA\n "<ORGANIZATION>": {\n "status": "CREATED",\n "updateDate": "<DATE_TIME> "dcrid": "${reltio_dcr_status_entity_uri}" // e.g., entities/0HjtwJO\n }\n }\n]\nResponse placeholders:parameterdescriptionexampleexternal_system_request_idDCR request id in source systemCA-VR-00255752mdm_hub_dcr_request_idDCR request id in <LOCATION> system4a480255a4e942e18c6816fa0c89a0d2target_system_nameDCR target system name, one of values: <ORGANIZATION>, <ORGANIZATION>, VeevaReltiodcr_request_countryDCR request countryCArequest_statusDCR request status, one of values: REQUEST_ACCEPTED, REQUEST_FAILED, REQUEST_REJECTEDREQUEST_ACCEPTEDreltio_dcr_status_entity_uriURI of <ORGANIZATION> status entity in <ORGANIZATION> systementities/0HjtwJORejected Response\n[\n {\n "requestStatus": "REQUEST_REJECTED",\n "errorMessage": "DuplicateRequestException -> Request [97aa3b3f-35dc-404c-9d4a-edfaf9e7121211c] has already been processed",\n "errorCode": "DUPLICATE_REQUEST",\n "extDCRRequestId": "97aa3b3f-35dc-404c-9d4a-edfaf9e7121211c"\n }\n]\nFailed Response\n[\n {\n "requestStatus": "REQUEST_FAILED",\n "errorMessage": "Target lookup code not found for attribute: HCPTitle, country: <ORGANIZATION>, source value: HCPTIT.<US_DRIVER_LICENSE>.",\n "errorCode": "VALIDATION_ERROR",\n "extDCRRequestId": "97aa3b3f-35dc-404c-9d4a-edfaf9e712121121c"\n }\n]\nIn case of incorrect user configuration in the system, the <ORGANIZATION> will return errors as follows. In these cases, please contact the MDM HUB <URL>tting <ORGANIZATION> statusProcessing of <ORGANIZATION> will take some time. <ORGANIZATION> status can be track via get <ORGANIZATION> status <ORGANIZATION> calls. <ORGANIZATION> processing ends when it reaches the final status: ACCEPTED or REJECTED. When the <ORGANIZATION> gets the ACCEPTED status, the following fields will appear in its status: "objectUri" and "COMPANYCustomerId". These can be used to find created/modified entities in the <ORGANIZATION> system. Full documentation can be found at → Get <ORGANIZATION> status.Example RequestBelow is an example query for the selected external_system_request_id\ncurl --location '{api_url}/dcr/_status/${external_system_request_id}' \\ // e.g., <ORGANIZATION>--header 'Authorization: Bearer ${access_token_value}' // e.g., 0001WvxKA16VWwlufC2dslSILdbE \nHandling ResponsesSuccess Response\n{\n "requestStatus": "REQUEST_ACCEPTED",\n "extDCRRequestId": "8600ca9a-<US_DRIVER_LICENSE>-45d0-97f6-152f01d70158",\n "dcrRequestId": "a2848f2a573344248f78bff8dc54871a",\n "targetSystem": "Reltio",\n "country": "AU",\n "<ORGANIZATION>": {\n "status": "ACCEPTED",\n "objectUri": "entities/0Hhskyx", // \n "COMPANYCustomerId": "03-<US_PASSPORT>", // usually <ORGANIZATION>. <ORGANIZATION> only when creating or updating <ORGANIZATION> without references to <ORGANIZATION> in <ORGANIZATION> request\n "updateDate": "<DATE_TIME> "changeRequestUri": "changeRequests/0N38Jq0",\n "dcrid": "entities/0EUulla"\n }\n}\nRejected Response\n{\n "requestStatus": "REQUEST_REJECTED",\n "errorMessage": "Received DCR_CHANGED event, updatedBy: <ORGANIZATION>, on <DATE_TIME>. Updating <ORGANIZATION> status to: REJECTED",\n "extDCRRequestId": "<US_DRIVER_LICENSE>-937e-434d-948c-6a282a736c4f",\n "dcrRequestId": "0b4125648b6c4d9cb785856841f7d65d",\n "targetSystem": "Veeva",\n "country": "HK",\n "<ORGANIZATION>": {\n "status": "REJECTED",\n "updateDate": "<DATE_TIME> "comment": "This <ORGANIZATION> was REJECTED by the VEEVA Data Steward with the following comment: [A-20022] Veeva Data Steward: Your request has been rejected..",\n "changeRequestUri": "changeRequests/0IojkYP",\n "dcrid": "entities/0qmBUXU"\n }\n}\nGetting multiple <ORGANIZATION> statusesMultiple statuses can be selected at once using the <ORGANIZATION> status filtering <ORGANIZATION> status\ncurl --location '{api_url}/dcr/_status?updateFrom=2021-10-17T20%3A31%3A31.424Z&updateTo=2023-10-17T20%3A31%3A31.424Z&limit=5&offset=3' \\\n--header 'Authorization: Bearer ${access_token_value}' // e.g., 0001WvxKA16VWwlufC2dslSILdbE \nExample ResponseSuccess Response\n[\n {\n "requestStatus": "REQUEST_ACCEPTED",\n "extDCRRequestId": "8d3eb4f7-7a08-4813-9a90-73caa7537eba",\n "dcrRequestId": "360d152d58d7457ab6a0610b718b6b8b",\n "targetSystem": "OneKey",\n "country": "AU",\n "<ORGANIZATION>": {\n "status": "ACCEPTED",\n "objectUri": "entities/05jHpR1",\n "COMPANYCustomerId": "03-<US_PASSPORT>",\n "updateDate": "<DATE_TIME> "comment": "<ORGANIZATION> response comment: <ORGANIZATION> accepted response - HCP EID assigned\\nONEKEY <ORGANIZATION> ID: WUSM03999911",\n "changeRequestUri": "8b32b8544ede4c72b7adfa861b1dc53f",\n "dcrid": "entities/04TxaQB"\n }\n },\n {\n "requestStatus": "REQUEST_ACCEPTED",\n "extDCRRequestId": "b66be6bd-655a-47f8-b78b-684e80166096",\n "dcrRequestId": "becafcb2cd004c1d89ecfc670de1de70",\n "targetSystem": "Reltio",\n "country": "AU",\n "<ORGANIZATION>": {\n "status": "ACCEPTED",\n "objectUri": "entities/06SVUCq",\n "COMPANYCustomerId": "03-<US_PASSPORT>",\n "updateDate": "<DATE_TIME> "comment": "<DATE_TIME> [<ORGANIZATION>-mdmhub]<PHONE_NUMBER>] -",\n "changeRequestUri": "changeRequests/06sXnXH",\n "dcrid": "entities/08LAHeQ"\n }\n }\n]\nGet entityThis method is used to prepare a <ORGANIZATION> request for modifying entities and to validate the created/modified entities in the <ORGANIZATION> process. Use the "objectUri" field available after accepting the <ORGANIZATION> to query MDM system.Example <ORGANIZATION> entity request\ncurl --location '{api_url}/${objectUri}' \\ // e.g., <URL> entities/05jHpR1\n --header 'Authorization: Bearer ${access_token_value}' // e.g., 0001WvxKA16VWwlufC2dslSILdbE \nExample ResponseSuccess ResponseGet entity response\n{\n "type": "configuration/entityTypes/HCP",\n "uri": "entities/06SVUCq",\n "createdBy": "<ORGANIZATION>mdmhub",\n "createdTime": <PHONE_NUMBER>,\n "updatedBy": "Re-cleansing of null in tenant 2NBAwv1z2AvlkgS background task. (started by <EMAIL_ADDRESS>)",\n "updatedTime": <US_BANK_NUMBER>,\n "attributes": {\n "COMPANYGlobalCustomerID": [\n {\n "uri": "entities/06SVUCq/attributes/COMPANYGlobalCustomerID/LoT0xC2",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/COMPANYGlobalCustomerID",\n "value": "03-<US_PASSPORT>",\n "ov": true\n }\n ],\n "TypeCode": [\n {\n "uri": "entities/06SVUCq/attributes/TypeCode/LoT0XcU",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/TypeCode",\n "value": "<URL>RS",\n "ov": true\n }\n ],\n "Addresses": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv",\n "value": {\n "AddressType": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/AddressType/dZqkWUB",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressType",\n "value": "TYS.P",\n "ov": true\n }\n ],\n "COMPANYAddressID": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/COMPANYAddressID/dZqkakR",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/COMPANYAddressID",\n "value": "<PHONE_NUMBER>",\n "ov": true\n }\n ],\n "AddressLine1": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/AddressLine1/dZqkf0h",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine1",\n "value": "addressLine1",\n "ov": true\n }\n ],\n "AddressLine2": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/AddressLine2/dZqkjGx",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine2",\n "value": "addressLine2",\n "ov": true\n }\n ],\n "AddressLine3": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/AddressLine3/dZqknXD",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine3",\n "value": "<PERSON>"ov": true\n }\n ],\n "City": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/City/dZqkrnT",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/City",\n "value": "city",\n "ov": true\n }\n ],\n "Country": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/Country/dZqkw3j",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Country",\n "value": "GB",\n "ov": true\n }\n ],\n "Zip5": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/Zip5/dZql0Jz",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip5",\n "value": "zip5",\n "ov": true\n }\n ],\n "Source": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/Source/dZql4aF",\n "value": {\n "SourceName": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/Source/dZql4aF/SourceName/dZql8qV",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceName",\n "value": "PforceRx",\n "ov": true\n }\n ],\n "SourceAddressID": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/Source/dZql4aF/SourceAddressID/dZqlD6l",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceAddressID",\n "value": "string",\n "ov": true\n }\n ]\n },\n "ov": true,\n "label": "PforceRx"\n }\n ],\n "<ORGANIZATION>": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/<ORGANIZATION>/dZrp4Jz",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/VerificationStatus",\n "value": "Unverified",\n "ov": true\n }\n ],\n "VerificationStatusDetails": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/VerificationStatusDetails/hLXLd9W",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/VerificationStatusDetails",\n "value": "Address Verification Status is unverified - unable to verify. the output fields will contain the input data.\\nPost-Processed Verification Match Level is 0 - none.\\nPre-Processed Verification Match Level is 0 - none.\\nParsing Status isidentified and parsed - All input data has been able to be identified and placed into <ORGANIZATION> is 0 - none.\\nContext Identification Match Level is 5 - delivery point (postbox or <ORGANIZATION> is PostalCodePrimary identified by context - postalcodeprimary identified by context.\\nThe accuracy matchscore, which gives the similarity between the input data and closest reference data match is 100%.",\n "ov": true\n }\n ],\n "AVC": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/AVC/hLXLhPm",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AVC",\n "value": "<US_DRIVER_LICENSE>-<US_DRIVER_LICENSE>-<US_DRIVER_LICENSE>-100",\n "ov": true\n }\n ],\n "AddressRank": [\n {\n "uri": "entities/06SVUCq/attributes/Addresses/dZqkSDv/AddressRank/gjq5qMj",\n "type": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressRank",\n "value": "1",\n "ov": true\n }\n ]\n },\n "ov": true,\n "label": "TYS.P - addressLine1, addressLine2, city, <ORGANIZATION>, GB"\n }\n ]\n },\n "crosswalks": [\n {\n "type": "configuration/sources/ReltioCleanser",\n "value": "06SVUCq",\n "uri": "entities/06SVUCq/crosswalks/dZrp03j",\n "reltioLoadDate": <PHONE_NUMBER>,\n "createDate": <PHONE_NUMBER>,\n "updateDate": <PHONE_NUMBER>,\n "attributes": [\n "<NRP>/attributes/Addresses/dZqkSDv",\n "<NRP>/attributes/Addresses/dZqkSDv/AVC/hLXLhPm",\n "<NRP>/attributes/Addresses/dZqkSDv/VerificationStatus/dZrp4Jz",\n "<NRP>/attributes/Addresses/dZqkSDv/VerificationStatusDetails/hLXLd9W"\n ]\n },<ORGANIZATION>{\n "type": "configuration/sources/Reltio",\n "value": "06SVUCq",\n "uri": "entities/06SVUCq/crosswalks/dZqkNxf",\n "reltioLoadDate": <PHONE_NUMBER>,\n "createDate": <PHONE_NUMBER>,\n "updateDate": <PHONE_NUMBER>,\n "attributes": [\n "<NRP>/attributes/Addresses/dZqkSDv/Country/dZqkw3j",\n "<NRP>/attributes/Addresses/dZqkSDv/Source/dZql4aF/SourceName/dZql8qV",\n "<NRP>/attributes/Addresses/dZqkSDv/Zip5/dZql0Jz",\n "<NRP>/attributes/Addresses/dZqkSDv/AddressLine1/dZqkf0h",\n "<NRP>/attributes/Addresses/dZqkSDv/Source/dZql4aF/SourceAddressID/dZqlD6l",\n "<NRP>/attributes/Addresses/dZqkSDv/COMPANYAddressID/dZqkakR",\n "<NRP>/attributes/Addresses/dZqkSDv/Source/dZql4aF",\n "<NRP>/attributes/Addresses/dZqkSDv/AddressLine2/dZqkjGx",\n "<NRP>/attributes/Addresses/dZqkSDv/City/dZqkrnT",\n "<NRP>/attributes/Addresses/dZqkSDv/AddressLine3/dZqknXD",\n "<NRP>/attributes/Addresses/dZqkSDv",\n "<NRP>/attributes/Addresses/dZqkSDv/AddressType/dZqkWUB"\n ],\n "singleAttributeUpdateDates": {\n "<NRP>/attributes/Addresses/dZqkSDv/Country/dZqkw3j": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/Source/dZql4aF/SourceName/dZql8qV": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/Zip5/dZql0Jz": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/AddressLine1/dZqkf0h": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/Source/dZql4aF/SourceAddressID/dZqlD6l": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/COMPANYAddressID/dZqkakR": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/Source/dZql4aF": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/AddressLine2/dZqkjGx": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/City/dZqkrnT": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/AddressLine3/dZqknXD": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/AddressType/dZqkWUB": "<DATE_TIME> }\n },<ORGANIZATION>{\n "type": "configuration/sources/HUB_CALLBACK",\n "value": "06SVUCq",\n "uri": "entities/06SVUCq/crosswalks/LoT0kPG",\n "reltioLoadDate": <PHONE_NUMBER>,\n "createDate": <PHONE_NUMBER>,\n "updateDate": <PHONE_NUMBER>,\n "attributes": [\n "<NRP>/attributes/TypeCode/LoT0XcU",\n "<NRP>/attributes/COMPANYGlobalCustomerID/LoT0xC2",\n "<NRP>/attributes/Addresses/dZqkSDv/AddressRank/gjq5qMj",\n "<NRP>/attributes/Addresses/dZqkSDv"\n ],\n "singleAttributeUpdateDates": {\n "<NRP>/attributes/TypeCode/LoT0XcU": "<DATE_TIME> "<NRP>/attributes/COMPANYGlobalCustomerID/LoT0xC2": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv/AddressRank/gjq5qMj": "<DATE_TIME> "<NRP>/attributes/Addresses/dZqkSDv": "<DATE_TIME> }\n }\n ]\n}\nRejected <ORGANIZATION> not found response\n{\n "code": "<DATE_TIME>"message": "Entity not found"\n}\nTroubleshooting GuideAll documentation with a detailed description of flows can be found at → PforceRx DCR flowsCommon Issues and SolutionsDuplicate Request:Error Message: "DuplicateRequestException -> Request [ID] has already been processed."Solution: Ensure that the extDCRRequestId is unique for each request. This ID is used to track <ORGANIZATION> processing and prevent duplicate submissions. Generate a new unique ID for every new <ORGANIZATION> <URL>lidation Error:Error Message: "Target lookup code not found for attribute: [Attribute], country: [Country], source value: [Value]."Solution: This error indicates that the provided attribute values or lookup codes are incorrect or not recognized by the <URL>rify Attribute Values: Double-check the attribute values in your request against the expected values and formats documented in the <ORGANIZATION> specification (Swagger documentation).Correct Lookup Codes: Ensure that you are using the correct lookup codes for attributes that require them (e.g., country codes, title codes). Example: If you receive "Target lookup code not found for attribute: HCPTitle, country: <ORGANIZATION>, source value: HCPTIT.<US_DRIVER_LICENSE>.", verify that 'HCPTIT.<US_DRIVER_LICENSE>' is a valid <ORGANIZATION> Title code for <LOCATION> ('SG').Network Errors:Issue: Unable to connect to <ORGANIZATION> endpoint. Common errors include "Connection refused," "Timeout," "<ORGANIZATION> resolution failure."Solutions:Verify Network Connectivity: Use the ping command (e.g., ping <URL>) to check if the <ORGANIZATION> endpoint is reachable. Use traceroute to diagnose network path <URL>eck VPN Connection: If VPN access is required, ensure that your VPN connection is active and correctly <URL>rewall Settings: Confirm that your firewall rules are not blocking outbound traffic on the necessary ports (typically 443 for <ORGANIZATION>) to the <ORGANIZATION> endpoint. Contact your network administrator to verify firewall settings if needed.DNS Resolution: Ensure that your <ORGANIZATION> server is correctly resolving <ORGANIZATION> endpoint hostname to an <ORGANIZATION> <URL>thentication Errors:Issue: <ORGANIZATION> requests are rejected due to authentication failures. Common errors include "Invalid credentials," "<PERSON> expired," "Unauthorized."Solutions:Verify API Credentials: Double-check that you are using the correct username and password for <ORGANIZATION> <URL>cess Token Validity: If using Bearer Token authentication, ensure that your access token is valid and not expired. Access tokens typically have a limited lifespan (e.g., 30 minutes).Token Refresh: Implement token refresh logic in your client application to automatically obtain a new access token when the current one <URL>thorization Header: Verify that you are including the access token correctly in the Authorization header of your <ORGANIZATION> requests, using the "Bearer " scheme (e.g., Authorization: Bearer <your_access_token>).Service Unavailable Errors:Issue: Intermittent <ORGANIZATION> connectivity issues or request failures with "503 Service Unavailable" or "500 Internal Server Error" <URL>:Check Service Status: Check if there is a known outage or maintenance activity for the MDM HUB service. A service status page may be available (check with <ORGANIZATION> Requests: Implement retry logic in your client application to handle transient service interruptions. Use exponential backoff to avoid overwhelming the <ORGANIZATION> service during <URL> Support: If the issue persists, contact the MDM HUB support team to report the service unavailability and get further assistance.Missing Configuration for <ORGANIZATION> Message: "RuntimeException -> User [User] dcrServiceConfig is missing."Missing dcr service cofiguration\n[\n {\n "requestStatus": "REQUEST_FAILED",\n "errorMessage": "RuntimeException -> User test_user dcrServiceConfig is missing",\n "extDCRRequestId": "97aa3b3f-35dc-404c-9d4a-edfaf9e7b11c"\n }\n]\nSolution: Contact the MDM HUB team to ensure the user configuration is correctly set <URL>rmission Denied to create <ORGANIZATION>:Error Message: "User is not permitted to perform: [Action]"Missing role\n{\n "code": "403",\n "message": "User is not permitted to perform: CREATE_DCR"\n}\nSolution: Ensure the user has the necessary permissions to perform the <URL>rify User Permissions: Contact the MDM HUB team or your <ORGANIZATION> administrator to verify that your user account has the necessary roles and permissions to perform the requested action (e.g., CREATE_DCR, GET_DCR_STATUS) and access the specified <ORGANIZATION> type (e.g., PforceRxDCR).DCR Type Access: Ensure that your user configuration includes access to the specific <ORGANIZATION> type you are trying to <URL>lidation Error:Error Message: "ValidationException -> User [User] doesn't have access to PforceRXDCR dcrType."Invalid <ORGANIZATION> configuration\n[\n {\n "requestStatus": "REQUEST_REJECTED",\n "errorMessage": "ValidationException -> User test_user doesn't have access to PforceRXDCR dcrType",\n "errorCode": "VALIDATION_ERROR",\n "extDCRRequestId": "97aa3b3f-35dc-404c-9d4a-edfaf9e71212112121c"\n }\n]\nDescription: This error occurs when the user does not have the necessary permissions to access a specific <ORGANIZATION> type (PforceRXDCR) in the MDM HUB system.Possible Causes:The user has not been granted the required permissions for the specified <ORGANIZATION> typeThe user configuration is incomplete or incorrectSolution:Verify User Permissions: Ensure that the user has been granted the necessary permissions to access the PforceRXDCR <ORGANIZATION> type. This can be done by checking the user roles and permissions in the MDM HUB system"
|
||
},
|
||
{
|
||
"title": "Entity <PERSON>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Entity+Enricher",
|
||
"content": "DescriptionAccepts simple events on the input. Performs the following calls to Reltio:getEntitiesByUrisgetRelationgetChangeRequestfindEntityCountryProduces the events enriched with the targetEntity / targetRelation field retrieved from <URL>nology: java 8, <DATE_TIME> boot, mongodb, <PERSON>-streamsCode link: entity-enricher Exposed interfacesInterface NameTypeEndpoint patternDescriptionentity enricher inputKAFKA${env}-internal-reltio-eventsevents being sent by the event publisher component. Event types being considered: HCP_*, <ORGANIZATION>_*, ENTITY_MATCHES_CHANGEDentity enricher outputKAFKA${env}-internal-reltio-full-eventsDependent componentsComponentInterfaceFlowDescriptionManagerMDMIntegrationServicegetEntitiesByUrisgetRelationgetChangeRequestfindEntityCountryConfigurationConfig ParameterDefault valueDescriptionbundle.enabletrueenable / disable <URL>putTopics${env}-internal-reltio-eventsinput <URL>readPoolSize10number of thread pool sizebundle.pollDuration10spoll intervalbundle.outputTopic${env}-internal-reltio-full-eventsoutput <URL>Id${env}-entity-enricherThe application ID. Each stream processing application must have a unique ID. The same ID must be given to all instances of the application. It is recommended to use only alphanumeric characters, . (dot), - (hyphen), and _ (underscore). Examples: "hello_world", "hello_world-<US_DRIVER_LICENSE>.0.0"<URL>teway.apiKey${gateway.apiKey}<URL>teway.url${gateway.url}<URL>erName${<URL>erName}"
|
||
},
|
||
{
|
||
"title": "HUB APP",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/HUB+APP",
|
||
"content": "DescriptionHUB <ORGANIZATION> is a front-end application that presents basic information about the MDM HUB cluster. This component allows you to manage <PERSON> and Airflow Dags or view quality service <URL>e app allows users to log in with their COMPANY <URL>nology: AngularCode link: mdm-hub-appFlowsUser flowsAdmin flowsAccess:Add new role and add users to the <ORGANIZATION> componentsComponentInterfaceDescriptionMDM ManagerREST APIUsed to fetch quality service configuration and for testing entitiesMDM AdminREST APIUsed to manage kafka, airflow dags and reconciliation serviceConfigurationComponent is configured via environment variablesEnvironment variableDefault valueDescriptionBACKEND_URIN/<ORGANIZATION> Manager URIADMIN_URIN/<ORGANIZATION> URIINGRESS_PREFIXN/AApplication context path"
|
||
},
|
||
{
|
||
"title": "Hub Store",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "Hub store is a mongo cache where are stored: EntityHistory, EntityMatchesHistory, <URL><PERSON> valueDescriptionmongo:host: ***:27017,***:27017,***:27017dbName: reltio_${env}user: ***url: mongodb://${<URL>er}:${<URL>ssword}@${<URL>}/${mongo.dbName}Mong DB connection configuration"
|
||
},
|
||
{
|
||
"title": "Inc batch channel",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Inc+batch+channel",
|
||
"content": "<ORGANIZATION> for <ORGANIZATION> data loads of data to Reltio. It takes plain data files(eg. txt, csv) and, based on defined mappings, converts it into json objects, which are then sent to <URL>de link: inc-batch-channelFlowsIncremantal batch Dependent componentsComponentInterface nameDescriptionManagerKafkaEvents constructed by inc-batch-channel are transferred to the kafka topic, from where they are read by mdm-manager and sent to Reltio. When the event is processed by the <ORGANIZATION> manager send <ORGANIZATION> message on the appropriate topic:Example input topic: gbl-prod-internal-async-all-sapExample ACK topic: gbl-prod-internal-async-all-sap-ackBatch ServiceBatch ControllerUsed to store <ORGANIZATION> loads state and statistics. All information are placed in mongodbMongoDb collectionsGenBatchDags - stores <ORGANIZATION> stages stateGenBatchAttributeHisotry - stores state of objects loaded by inc-batch-channelgenBatchLastBatchIds - last batch id for every batchgenBatchProcessorStartTime - start time of all batch stagesgenBatchTagMappings -ConfigurationConnectionsmongoConnectionProps.dbUrlFull Mongo DB <URL>ngo.dbNameMongo database <URL>rversKafka Hostname <ORGANIZATION> component group <URL>slMechanismSASL <URL>curityProtocolSecurity Protocolkafka.sslTruststoreLocationSSL trustore file locationkafka.sslTruststorePasswordSSL trustore file <URL>ernameKafka <URL>sswordKafka dedicated user <ORGANIZATION>:SSL algorightBatches configuration:batches.${batch_name}Batch configurationbatches.${batch_name}.inputFolderDirectory with input filesbatches.${batch_name}.outputFolderDirectory with output filesbatches.${batch_name}.columnsDefinitionFileFile defining mappingbatches.${batch_name}.requestTopicManager topic with events that are going to be sent to Reltiobatches.${batch_name}.ackTopicAck topicbatches.${batch_name}.parserTypeParser type. Defines separator and encoding formatbatches.${batch_name}.preProcessingDefine preprocessin of input filesbatches.${batch_name}.stages.${stage_name}.stageOrderStage prioritybatches.${batch_name}.stages.${stage_name}.processorTypeProcessor type:SIMPLE - change is applied only in mongoENTITY_SENDER - change is sent to Reltiobatches.${batch_name}.stages.${stage_name}.outputFileNameOutput file namebatches.${batch_name}.stages.${stage_name}.disabledIf stage is disabledbatches.${batch_name}.stages.${stage_name}.definitionsDefine which definition is used to map input filebatches.${batch_name}.stages.${stage_name}.deltaDetectionEnabledIf previous and current state of objects are comparedbatches.${batch_name}.stages.${stage_name}.initDeletedLoadEnabledbatches.${batch_name}.stages.${stage_name}.fullAttributesMergebatches.${batch_name}.stages.${stage_name}.postDeleteProcessorEnabledbatches.${batch_name}.stages.${stage_name}.senderHeadersDefines http headers"
|
||
},
|
||
{
|
||
"title": "<PERSON>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Kafka+Connect",
|
||
"content": "DescriptionKafka Connect is a tool for scalably and reliably streaming data between Apache Kafka® and other data systems. It makes it simple to quickly define connectors that move large data sets in and out of <PERSON>. <PERSON> can ingest entire databases or collect metrics from all your application servers into <PERSON> topics, making the data available for stream processing with low latency.FlowsSnowflake: Base tables refreshSnowflake: Events publish flowSnowflake: History InactiveSnowflake: LOV data publish <DATE_TIME>: <LOCATION> data publish flowConfigurationKafka Connect - properties <URL><env><URL>ic<env>-internal-kafka-connect-snowflake-offset <URL>ic<env>-internal-kafka-connect-snowflake-config <URL>ic<env><URL><LOCATION> <URL>tocolSASL_PLAINTEXT <URL><env><URL>tocolSASL_<URL>chanismSCRAM-SHA-512connectors - SnowflakeSinkConnector - properties <URL>p<env>-out-full-snowflake-all:HUB_KAFKA_DATAtopics<env><URL><sf_instance_name><URL><db_name><URL><user_name><URL>ssphrase<secret><URL>y<secret>There is an one exception connected with FLEX environment. The S3SinkConnector is used here - properties <URL>gion<region><URL>tries10 <URL><s3_bucket><URL>pression.typenone topics.dir<s3_topic_dit>topics<env><URL>ze1000000timezoneUTClocale<locale> <URL>patibilityNONE <URL><secret><URL>y<secret><URL>rtitioner.<PERSON><URL>rmatYYYY-MM-ddtimestamp.extractorWallclock"
|
||
},
|
||
{
|
||
"title": "Manager",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Manager",
|
||
"content": "DescriptionManager is the main component taking part in client interactions with MDM <URL> orchestrates <ORGANIZATION> calls with the following services:<ORGANIZATION> adapters translating client input into <ORGANIZATION> callsProcess logic - mapping simple calls into multiple MDM callsQuality engine - validating data flowing into MDMsTransaction engine - logging requests for tracing purposesAutorisation engine - controlling user privileges Cache engine - reduce <ORGANIZATION> calls by reading data directly from Hub storeManager services are accessible with REST <ORGANIZATION>. Some services are exposed as asynchronous operations through <PERSON> for performance <URL>nology: <LOCATION>, <DATE_TIME>, Apache CamelCode link: mdm-managerFlowsGet entitySearch entitiesValidate <ORGANIZATION>/Update <ORGANIZATION> readCreate relationsMerge <ORGANIZATION> interfacesInterface NameTypeEndpoint patternDescriptionGet entityREST <ORGANIZATION> /entities/{entityId}Get detailed entity informationGet multiple entitiesREST <ORGANIZATION> /entities/_byUrisReturn multiple entities with provided urisGet entity countryREST APIGET /entities/{entityId}/_countryReturn country for an entity with the provided <ORGANIZATION>/entities/{entitiyId/_mergePOST/entities/{entitiyId/_unmerge_byUrisMerge entity A with entity B using Reltio uris as IDs.Unmerge entity B from entity A using <ORGANIZATION> uris as <URL><ORGANIZATION> ComplexREST <ORGANIZATION>/entities/_unmergeMerge entity A with entity B using request body (JSON) with ids.Unmerge entity B from entity A using request body (JSON) with <URL>eate/Update entityREST <ORGANIZATION> /hcpPATCH /hcpPOST /hcoPATCH /hcoCreate/partially update entityCreate/Update multiple entitiesREST <ORGANIZATION> /batch/hcpPATCH /batch/hcpPOST /batch/hcoPATCH /batch/hcoBatch create <ORGANIZATION> entitiesGet entity by <ORGANIZATION>/crosswalkGet entity by crosswalkDelete entity by crosswalkREST APIDELETE /entities/crosswalkDelete entityt by crosswalkCreate/Update relationREST <ORGANIZATION> /relations/_dbscanPATCH /relations/Create/update relationGet relationREST APIGET /relations/{relationId}Get relation by reltio URIGet relation by crosswalkREST APIGET /relations/crosswalkGet relation by crosswalkDelete relation by crosswalkREST APIDELETE /relations/crosswalkDelete relation by crosswalkBatch create relationREST <ORGANIZATION> /batch/relationBatch create relationCreate/replace/update <ORGANIZATION> profileREST APIPOST /mcoPATCH /mcoCreate, replace or partially update <ORGANIZATION> profileCreate/replace/update batch <ORGANIZATION> profileREST <ORGANIZATION> /batch/mcoPATCH /batch/mcoCreate, replace or partially update <ORGANIZATION> profilesUpdate Usage FlagsREST APIPOST /updateUsageFlagsCreate, Update, Remove UsageType UsageFlags of "Addresses' Address field of <ORGANIZATION> and <ORGANIZATION> entitiesSearch for change requestsREST <ORGANIZATION> /changeRequests/_byEntityCrosswalkSearch for change requests by entity crosswalkGet change request by uriREST <ORGANIZATION> /changeRequests/{uri}Get change request by <ORGANIZATION> change requestREST <ORGANIZATION> /changeRequestCreate change request - internalGet change requestREST <ORGANIZATION> /changeRequestGet change request - internalDependent componentsComponentInterfaceDescriptionReltio <ORGANIZATION> interfaceUsed to communicate with <ORGANIZATION> interfaceUsed to communicate with <ORGANIZATION> interfaceProvide user authorizationMDM <ORGANIZATION> interfaceProvides routingConfigurationThe configuration is a composition of dependent components configurations and parameters specifived <URL>nfig ParameterDefault valueDescriptionmongo.urlMongo urlmongo.dbNameMongo database namemongoConnectionProps.dbUrlMongo database urlmongoConnectionProps.dbNameMongo database <URL>erMongo <URL>sswordMongo user passwordmongoConnectionProps.entityCollectionNameEntity collection namemongoConnectionProps.lovCollectionNameLov collection name"
|
||
},
|
||
{
|
||
"title": "Authorization Engine",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Authorization+Engine",
|
||
"content": "DescriptionAuthorization Engine is responsible for authorizing users executing <ORGANIZATION> operations. All <ORGANIZATION> operations are secured and can be executed only by users that have specific roles. The engine checks if a user has a role allowed access to <ORGANIZATION> operation.<ORGANIZATION> is engaged in all flows exposed by Manager <URL> interfacesInterface NameTypeJava class:methodDescriptionAuthorization ServiceJavaAuthorizationService:processCheck user permission to run a specific operation. If the user has granted a role to run this operation method will allow to call it. In other case authorization exception will throwDependent componentsAll of the below operations are exposed by Manager component and details about was described here. Description column of below table has role names which have to be assigned to user permitted to use described <URL>ponentInterfaceDescriptionManagerGET /entities/*GET_ENTITIESGET /relations/*GET_RELATIONGET /changeRequests/*GET_CHANGE_REQUESTSDELETE /entities/crosswalkDELETE /relations/crosswalkDELETE_CROSSWALKPOST /hcpPOST /batch/hcpCREATE_HCPPATCH /hcpPATCH /batch/hcpUPDATE_HCPPOST /hcoPOST /batch/hcoCREATE_HCOPATCH /hcoPATCH /batch/hcoUPDATE_HCOPOST /mcoPOST /batch/mcoCREATE_MCOPATCH /mcoPATCH /batch/mcoUPDATE_MCOPOST /relationsCREATE_RELATIONPATCH /relationsUPDATE_RELATIONPOST /changeRequestCREATE_CHANGE_REQUESTPOST /updateUsageFlagsUSAGE_FLAG_UPDATEPOST /entities/{entityId}/_mergeMERGE_ENTITIESPOST /entities/{entityId}/_unmergeUNMERGE_ENTITIESGET /lookupLOOKUPSConfigurationConfiguration parameterDescriptionusers[].nameUser nameusers[].descriptionDescription of userusers[].defaultClientDefault <PERSON> client that is used in the case when the user doesn't specify countryusers[].rolesList of roles assigned to userusers[].countriesList of countries whose data can be managed by userusers[].sourcesList of sources (crosswalk types) whose can be used during manage data by the user"
|
||
},
|
||
{
|
||
"title": "MDM Routing Engine",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/MDM+Routing+Engine",
|
||
"content": "DescriptionMDM Routing Engine is responsible for making a decision on which MDM system has to be used to process client requests. The call is made based on a decision table that maps MDM system with a <URL> the case of multiple <ORGANIZATION> systems for the same market, the decision table contains a user dimension allowing to select MDM system by user name.<ORGANIZATION> is engaged in all flows supported by Manager <URL> interfacesInterface NameTypeJava class:<ORGANIZATION>:<NRP> default <PERSON>:getDefaultMDMClient(username)Get default <ORGANIZATION> client specified for the userJavaMDMClientFactory:<PERSON> client that supports the specified countryJavaMDMClientFactory:getMDMClient(country, user);Get <PERSON> client that supported specified country and userDependent componentsComponentInterfaceDescriptionReltio AdapterJavaProvides integrations with <ORGANIZATION> AdapterJavaProvides integration with <LOCATION> parameterDescriptionusers[].namename of userusers[].defaultClientdefault mdm client for userclientsDecisionTable.{selector name}.countries[]List of countriesclientsDecisionTable.{selector name}.clients[]Map where the key is username and value is <ORGANIZATION> client name that will be used to process data comes from defined countries.Special key "default" defines the default <ORGANIZATION> client which will be used in the case when there is no specific client for <URL>mFactoryConfig.{mdm client <ORGANIZATION> of <ORGANIZATION> client. Only two values are supported: "reltio" or "nucleus".mdmFactoryConfig.{mdm client name}.configMDM client configuration. It is based on adapter type: Reltio or <LOCATION>"
|
||
},
|
||
{
|
||
"title": "Nucleus Adapter",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Nucleus+Adapter",
|
||
"content": "DescriptionNucleus-adapter is a component of <ORGANIZATION> that is used to communicate with <LOCATION>. It provides 4 types of operations:get entity,get entities,create/update entity,get relationNucleus 360 is an old COMPANY <ORGANIZATION> platform comparing to Reltio. It's used to store and manage data about <ORGANIZATION>) and healthcare organizations(hco).It uses batch processing so the results of the operation are applied for the golden record after a certain period of <URL>cleus accepts requests with an XML formatted body and also sends responses in the same <URL>nology: java 8, nucleusCode link: nucleus-adapterFlowsCreate/update entityGet entityGet entitiesGet relationsExposed interfacesInterface NameTypeJava class:methodDescriptionget entityJavaNucleusMDMClient:getEntityProvides a mechanism to obtain information about the specified entity. Entity can be obtained by entity id, e.g. xyzf325Two Nucleuses methods are used to obtain detailed information about the <URL>rst is Look up method, thanks to which we can obtain basic information about entity(xml format) by its <URL>xt, we provide that information for the second <LOCATION> method, Get Profile Details that sends a response with all available information (xml format).Finally, we gather all received information about the entity, convert it to Relto model(json format) and transfer it to a <URL>t entitiesJavaNucleusMDMClient:getEntitiesProvide a mechanism to obtain basic information about a group of entities. This entity group is determined based on the defined filters(e.g. first name, last name, professional type code).For this purpose only <LOCATION> look up method is used. This way we receive only basic information about entities but it is performance-optimized and does not create unnecessary load on the <URL>eate/update entityJavaNucleusMDMClient:creteEntityUsing the Nucleus Add Update web service method nucleus-adapter provides a mechanism to create or update data present in the database according to the business rules(createEntity method).Nucleus-adapter accepts <ORGANIZATION> formatted requests body, maps it to xml format, and then sends it to <ORGANIZATION> relationsJavaNucleusMDMClient:getRelationTo get relations nucleus-adapter uses the <ORGANIZATION> affiliation <URL>cleus produces XML formatted response and nucleus-adapter transforms it to <ORGANIZATION> componentsComponentInterfaceDescriptionNucleushttps://{{ nuleus host }}/CustomerManage_COMPANY_EU_Prod/<URL>c?singleWsdlNucleus endpoint for Creating/updating hcp and hcohttps://{{ nuleus host }}/Nuc360ProfileDetails5.0/<ORGANIZATION> endpoint for getting details about entityhttps://{{ nuleus host }}/Nuc360QuickSearch5.0/LookupNucleus endpoint for getting basic information about entityhttps://{{ nuleus host }}/Nuc360DbSearch5.0/api/affiliationNucleus endpoint for getting relations informationConfigurationConfig <ORGANIZATION> <URL>seURLnullBase url of <LOCATION> endpoint for creating/updating <URL>fileDetailsUrlnullNucleus endpoint for getting detailed information about <URL>ditionalOptions.quickSearchUrlnullNucleus endpoint for getting basic information about <URL>filiationUrlnullNucleus endpoint for getting information about entities <URL>faultIdTypenullDefault <ORGANIZATION> for entities search(used if another not provided)"
|
||
},
|
||
{
|
||
"title": "Quality Engine and Rules",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Quality+Engine+and+Rules",
|
||
"content": "<ORGANIZATION> engine is used to verify data quality in entity attributes. It is used for <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> entities.Quality engine is responsible for preprocessing Entity when a specific precondition is met. This engine is started in the following cases:Rest operation (<ORGANIZATION>) on /hco endpoint on <ORGANIZATION> operation (<ORGANIZATION>) on /hcp endpoint on <ORGANIZATION> operation (<ORGANIZATION>) on /mco endpoint on <ORGANIZATION> has two two components quality-engine and quality-engine-integrationTechnology:fasterxmlCode link:quality-engine - <URL> - <URL> rules - <URL> requirements (provided by <ORGANIZATION> → 20-Design → Hub → Global-MDM_DQ_*FlowsValidation by quality rules is done before sending entities to reltio. Quality rules should be enabled in configuration.Data quality checking is started in <URL>rvice.QualityService. Whole rule flow for entity have one context (<URL>leContext)RuleRule have following configurationname - name of the rule - it is requiredpreconditions - preconditions that should be met to run the rulecheck - check that should be triggered if preconditions are metaction - action that should be triggered if check is evaluated to truePreconditionsStructure:Example:preconditions: - type: source values: - CENTRISPossible types:not - it evaluates to true if all preconditions that are underneath evaluate to falsematch - it evaluate to true if given attribute value matches any of listed patterns to trueanyMatch - it evaluate to true if given array attribute value matches any of listed patterns to trueexistsInContext - it checks if given fieldName with specified value exists in contextcontext - check if entity context values contains only allowed once source - check if entity has source of given typeChecksStructure:Example:check: type: match attribute: FirstName values: - '[^0-9@#$%^&*~!"<>?/|\\_]+'Possible types:ageCheck - check if age specified in date or <DATE_TIME> attribute is older than specified number of yearsmandatoryGroup - check if at least one from specified list of attributes existsmandatory - check if specified attribute existsmandatoryAll - check if all specified attributes existsmandatoryArray - check if specified nested attribute existsnot - check if opposite of the check is truegroupMatch - check of group of attributes matches specified valuesmatch - check if attribute value matches specified given valueempty - empty checkActionsStructure:Example:action: type: add attributes: - DataQuality[].DQDescription value: "{source}_005_02"Possible types:clean - cleans attribute value - replaces pattern with given stringreject - rejects entityremove - remove attributeset - sets attribut valuemodify - modify attribute valueadd - adds attribute valuechineseNameToEnglish - converts <NRP> value to englishaddressDigest - calculate address digestaddressCrosswalkValue - sets digest valueconvertCase - convert case lower, upper, capitalizeremoveEmptyAttributes - removes empty attributesprefixByCountry - adds country prefix to attribute valuemakeSourceAddressInfo - adds attribute with source address infopadding - pads attribute value with specified characterassignId - assings id setContextValue - set value that will be stored in contextDependent componentsComponentInterfaceFlowDescriptionmanagerQualityServiceValidationRuns quality engine validationConfigurationConfig <ORGANIZATION> valueDescriptionvalidationOntrueIt turns on or off validation - it needs to specified in <LOCATION> turns on or off validation for updateshcpQualityRulesConfigslist of files with quality rules for hcpIt contains a list of files with quality rules for hcphcoQualityRulesConfigslist of files with quality rules for hcoIt contains a list of files with quality rules for hcohcpAffiliatedHCOsQualityRulesConfigslist of files with quality rules for affilitated hcpIt contains a list of files with quality rules for affilitated HCOmcoQualityRulesConfigslist of files with quality rules for mcoIt contains a list of files with quality rules for <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Reltio Adapter",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Reltio+Adapter",
|
||
"content": "DescriptionReltio-adapter is a component of <ORGANIZATION> of mdm-manager) that is used to communicate with Reltio. Technology: Java,Code link: reltio-adapterFlowsCreate/update entityGet entityGet entitiesMerge entityUnmerge entityCreate relationGet relationsCreate DCRGet <NRP> DCRReject DCRDelete DCRExposed interfacesInterface NameTypeEndpoint patternDescriptionGet entityJavaReltioMDMClient:getEntityGet detailed entity information by entity URIGet entitiesJavaReltioMDMClient:getEntitiesGet basic information about a group of entities based on applied filtersCreate/Update entityJavaReltioMDMClient:createEntityCreate/partially update entity(HCO, <ORGANIZATION>, MCO)Create/Update multiple entitiesJavaReltioMDMClient:createEntitiesBatch create <ORGANIZATION><ORGANIZATION> entitiesDelete entityJavaReltioMDMClient:deleteEntityDeletes entity by its URIFind entityJavaReltioMDMClient:findEntityFinds entity. The search mechanism is flexible and chooses the proper method:If URI applied in entityPattern then use the getEntity method.If URI not specified and finds crosswalks then uses getEntityByCrosswalk methodOtherwise, it uses the find matches methodMerge entitiesJavaReltioMDMClient:mergeEntitiesMerge two entities basing on reltio merging <URL>so accepts explicit winner as explicitWinnerEntityUri.Unmerge entitiesJavaReltioMDMClient:unmergeEntitiesUnmerge entitiesUnmerge Entity TreeJavaReltioMDMClient:treeUnmergeEntitiesUnmerge entities recursively(details in reltio treeunmerge <NRP> entitiesJavaReltioMDMClient:scanEntitiesIterate entities of a specific type in a particular <URL>lete crosswalkJavaReltioMDMClient:deleteCrosswalkDeletes crosswalk from an objectFind matchesJavaReltioMDMClient:findMatchesReturns potential matches based on rules in entity type configurationGet entity connectionsJavaReltioMDMClient:getMultipleEntityConnectionsGet connected <NRP> entity by a crosswalkJavaReltioMDMClient:getEntityByCrosswalkGet entity by the crosswalkDelete relation by a crosswalkJavaReltioMDMClient:deleteRelationDelete relation by relation URIGet relationJavaReltioMDMClient:getRelationGet relation by relation <ORGANIZATION>/Update relationJavaReltioMDMClient:createRelationCreate/update relationScan relationsJavaReltioMDMClient:scanRelationsIterate entities of a specific type in a particular <URL>t relation by a crosswalkJavaReltioMDMClient:getRelationByCrosswalkGet relation by the crosswalkBatch create relationJavaReltioMDMClient:<NRP> create relationSearch for change requestsJavaReltioMDMClient:searchSearch for change requests by entity crosswalkGet change request by URIJavaReltioMDMClient:getChangeRequestGet change request by <ORGANIZATION> change requestJavaReltioMDMClient:createChangeRequestCreate change request - internalDelete change requestJavaReltioMDMClient:deleteChangeRequestDelete change requestApply change requestJavaReltioMDMClient:applyChangeRequestApply data change requestReject change requestJavaReltioMDMClient:rejectChangeRequestReject data change requestAdd/update external inforJavaReltioMDMClient:createOrUpdateExternalInfoAdd external info to specified DCRDependenciesComponentInterfaceDescriptionReltioGET {TenantURL}/entities/{Entity ID}Get detailed information about the entity<URL> {TenantURL}/entitiesGet basic( or chosen ) information about entity based on applied filters<URL> {TenantURL}/entities/_byCrosswalk/{crosswalkValue}?type={sourceType}Get entity by crosswalk<URL> {TenantURL}/{entity object URI}Delete entity<URL> {TenantURL}/entitiesCreate/update single or a bunch of entities<URL> {TenantURL}/entities/_dbscan<URL> {TenantURL}/entities/{winner}/_sameAs?uri=entities/{looser}Merge entities basing on looser and winner ID<URL> {TenantURL}/<origin id>/_unmerge?contributorURI=<spawn URI>Unmerge entities<URL> {TenantURL}/<origin id>/_treeUnmerge?contributorURI=<spawn URI>Tree unmerge entities<URL> {TenantURL}/relations/Get relation by relation URI<URL> {TenantURL}/relationsCreate relation<URL> {TenantURL}/relations/_dbscan<URL> GET {TenantURL}/changeRequests Get change request<URL> {TenantURL}/changeRequests/{id}Returns a data change request by <URL> {TenantURL}/changeRequests Create data change request<URL> {TenantURL}/changeRequests/{id} Delete data change request<URL> {TenantURL}/changeRequests/_byUris/_applyThis <ORGANIZATION> applies (commits) all changes inside a data change request to real entities and <URL> {TenantURL}/changeRequests/_byUris/_rejectReject data change request<URL> {TenantURL}/entities/_matches Returns potential matches based on rules in entity type <URL> {<ORGANIZATION> connected entities<URL> /{crosswalk URI}Delete crosswalk<URL> {TenantURL}/changeRequests/0000OVV/_externalInfoAdd/update external info to <PERSON> <URL>thURLnullReltio authentication <URL>seURLnullReltio base URLmdmConfig.rdmUrlnullReltio RDM <URL>ernamenullReltio <URL>sswordnullReltio passwordmdmConfig.apiKeynullReltio apiKeymdmConfig.apiSecretnullReltio <URL>isecondsToExpiretranslateCache.objectsLimit"
|
||
},
|
||
{
|
||
"title": "Map Channel",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Map+Channel",
|
||
"content": "<ORGANIZATION> integrates <ORGANIZATION> and <LOCATION> systems data. External systems use the <ORGANIZATION> queue or REST <ORGANIZATION> to load data. The data is then copied to the internal queue. This allows to redo the processing at a later time. The identifier and market contained in the data are used to retrieve complete data via REST requests. The data is then sent to the Manager component to storage in the <ORGANIZATION> system. Application provides features for filtering events by country, status or permissions. This component uses different mappers to process data for the COMPANY or <ORGANIZATION> data <URL>nology: <LOCATION>, <DATE_TIME>, Apache CamelCode link: <ORGANIZATION> events processingExposed interfacesInterface nameTypeEndpoint patternDescriptioncreate contactREST <ORGANIZATION> /gcpcreate <ORGANIZATION> profile based on <ORGANIZATION> contact dataupdate contactREST APIPUT /gcp/{gcpId}update <ORGANIZATION> profile based on <ORGANIZATION> contact datacreate userREST <ORGANIZATION> /grvcreate <ORGANIZATION> profile based on <LOCATION> user dataupdate userREST <ORGANIZATION> /grv/{grvId}update <ORGANIZATION> profile based on <LOCATION> user dataDependent componentsComponentInterfaceDescriptionManagerREST APIcreate HCP, create <ORGANIZATION>, update <ORGANIZATION>, update HCOConfigurationThe configuration is a composition of dependent components configurations and parameters specifived below.<PERSON> processing configConfig paramDefault valueDescriptionkafkaProducerPropkafka producer propertieskafkaConsumerPropkafka consumer propertiesprocessing.endpointskafka internal topics configurationprocessing.endpoints.[endpoint-type].topickafka entpoint-type topic <ORGANIZATION>-type].activeOnStartupshould endpoint start on application startupprocessing.endpoints.[endpoint-type].consumerCountkafka endpoint consumer countprocessing.endpoints.[endpoint-type].breakOnFirstErrorshould kafka rebalance on errorprocessing.endpoints.[endpoint-type].autoCommitEnableshould kafka cuto commit enableDEG configConfig paramDefault valueDescriptionDEG.urllDEG gateway URLDEG.oAuth2ServiceDEG authorization service <URL>tocolDEG protocolDEG.portDEG <URL>efixDEG <ORGANIZATION> prefixTransaction log configConfig paramDefault valueDescriptiontransactionLogger.kafkaEfk.enableshould kafka efk transaction logger <URL>ickafka efk topic nametransactionLogger.kafkaEfk.logContentOnlyOnFailedLog request body only on failed <URL>mpleLog.enableshould simple console transaction logger enableFilter configConfig paramDefault <URL>Vlist of allowed <LOCATION> <URL>Vlist of allowed GCP countriesdeactivatedStatuses.[Source].[Country]list of <ORGANIZATION> attribute values for which <ORGANIZATION> will be deleted for given country and sourcedeactivateGCPContactWhenInactivelst of countries for which <ORGANIZATION> will be deleted when contact is inactivedeactivatedWhenNoPermissionslst of countries for which <ORGANIZATION> will be deleted when contact permissions are missingdeleteOption.[Source].noneHCP will be sent to <ORGANIZATION> when deleted date is presentdeleteOption.[Source].hardcall delete crosswalk action when deleted date is presentdeleteOption.[Source].softcall update <ORGANIZATION> when delete date is presentMapper configConfig paramDefault valueDescriptiongcpMappername of <ORGANIZATION> mapper implenentationgrvMappername of <LOCATION> mapper implenentationMappingsIQVIA <NRP> mapping"
|
||
},
|
||
{
|
||
"title": "MDM Admin",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/MDM+Admin",
|
||
"content": "DescriptionMDM Admin exposes an <ORGANIZATION> of tools automating repetitive and/or difficult Operating Procedures and Tasks. It also aggregates APIs of various Hub components that should not be exposed to the world, while providing an authorization layer. Permissions to each Admin operation can be granted to client's <ORGANIZATION> user.FlowsKafka OffsetResend EventsPartial ListReconciliationExposed interfacesREST APISwagger: <URL> componentsComponentInterfaceFlowDescriptionReconciliation ServiceReconciliation Service APIEntities <ORGANIZATION> uses internal <ORGANIZATION> to trigger reconciliations. Passes the same inputs and returns the same <URL>lations ReconciliationPartials ReconciliationPrecallback ServicePrecallback Service APIPartials ListAdmin fetches a list of partials directly from <ORGANIZATION> and returns it to the user or uses it to reconcile all entities stuck in partial <URL>rtials ReconciliationAirflowAirflow APIEvents ResendAdmin allows triggering an Airflow DAG with request parameters/body and checking its <URL> Resend ComplexKafkaKafka Client/Admin APIKafka <ORGANIZATION> allows modifying topic/group <URL>nfigurationConfig ParameterDefault valueDescriptionairflow-config: url: <URL> user: admin password: ${<URL>ssword} dag: reconciliation_system_amer_dev-Dependent Airflow configuration including external URL, <ORGANIZATION> name and credentials. Entities Reload operation will trigger a DAG of configured name in the configured <ORGANIZATION> <URL>:services: reconciliationService: <PERSON>-service-svc:8081 precallbackService: mdmhub-precallback-service-svc:8081URLs of dependent services. Default values lead to internal <ORGANIZATION> services."
|
||
},
|
||
{
|
||
"title": "MDM Integration Tests",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/MDM+Integration+Tests",
|
||
"content": "DescriptionThe module contains Integration Tests. All Integration Tests are divided into different categories based on environment on which are <URL>nology:JUnitSpring TestCitrusGradle tasksThe table shows which environment uses which gradle task.EnvironmentGradle taskConfiguration propertiesALLcommonIntegrationTests-GBLUSintegrationTestsForCOMPANYModelRegionUS<URL> <PERSON> script with configuration: <URL> tasks - IT categoriesThe table shows which test categories are included in gradle <URL><PERSON> taskTest categorycommonIntegrationTestsCommonIntegrationTestintegrationTestsForCOMPANYModelRegionUSIntegrationTestForCOMPANYModelIntegrationTestForCOMPANYModelRegionUSintegrationTestsForCOMPANYModelChinaIntegrationTestForCOMPANYModelIntegrationTestForCOMPANYModelChinaintegrationTestsForCOMPANYModelIntegrationTestForCOMPANYModel●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●integrationTestsForCOMPANYModelRegionAMERIntegrationTestForCOMPANYModel●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●IntegrationTestForCOMPANYModelRegionAMERintegrationTestsForCOMPANYModelRegionAPACIntegrationTestForCOMPANYModel●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●integrationTestsForCOMPANYModelRegionEMEAIntegrationTestForCOMPANYModel●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●IntegrationTestForCOMPANYModelRegionEMEAintegrationTestsForIqviaModelIntegrationTestForIqiviaModelTests are configured in <URL>adle file: <URL> use cases included in categoriesTest categoryTest use casesCommonIntegrationTestCommon Integration TestIntegrationTestForIqiviaModelIntegration Test For Iqvia ModelIntegrationTestForCOMPANYModelIntegration Test For COMPANY ModelIntegrationTestForCOMPANYModelRegionUSIntegration Test For COMPANY Model Region USIntegrationTestForCOMPANYModelChinaIntegration Test For COMPANY Model ChinaIntegrationTestForCOMPANYModelRegionAMERIntegration Test For COMPANY Model Region AMER●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●Integration Test For COMPANY Model DCR2ServiceIntegrationTestsForCOMPANYModelRegionEMEAIntegration Test For COMPANY Model Region EMEA"
|
||
},
|
||
{
|
||
"title": "Nucleus Subscriber",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Nucleus+Subscriber",
|
||
"content": "DescriptionNucleus subscriber collects events from <ORGANIZATION> modifies it and then transfer to the right <PERSON>.Data changes are stored as archive files on <ORGANIZATION> from where they are then pulled byt the nucleus <URL>e next step is to modify the event from the <ORGANIZATION> format to one accepted by <ORGANIZATION>. The modified data is then transfered to the appropriate <PERSON>.Data pulls from <ORGANIZATION> are performed periodically so the changes made are visible after some <URL>rt of: Streaming channgelTechnology: <ORGANIZATION>, <DATE_TIME>, Apache CamelCode link: nucleus-subscriberFlowsEntity change events processing (Nucleus) Exposed interfacesInterface NameTypeEndpoint patternDescriptionKafka topic KAFKA{env}-internal-nucleus-eventsEnents pulled from <ORGANIZATION> are then transformed and published to kafka topicDependenciesComponentInterfaceFlowDescriptionAWS S3Entity change events processing (Nucleus)Stores events regarding data modification in reltioEntity enricherNucleus Subscriber downstream component. Collects events from <PERSON> and produces events enriched with the targetEntityConfigurationConfig <ORGANIZATION> subscriber portnucleus_<URL>rvers10.192.71.136:9094Kafka servernucleus_subscriber.lockingPolicy.zookeeperServernullZookeeper servernucleus_<URL>NamenullZookeeper group namenucleus_<URL>xSize100000nucleus_<URL>duplicationCache.expirationTimeSeconds3600nucleus_<URL>IdhubKafka group Idnucleus_<URL>ernamenullKafka usernamenucleus_<URL>sswordnullKafka user passwordnucleus_<URL>icdev-internal-integration-testsnucleus_<URL>icdev-internal-reltio-dictionaries-eventsnucleus_<URL>icdev-internal-integration-testsnucleus_<URL>ngoConnectionProp.dbUrlnullMongoDB urlnucleus_<URL>ngoConnectionProp.dbNamenullMongoDB database namenucleus_<URL>ernullMongoDB usernucleus_<URL>sswordnullMongoDB user passwordnucleus_<URL>echConnectionOnStartupnullCheck connection on startup( yes/no )nucleus_subscriber.poller.typefileSource typenucleus_subscriber.poller.enableOnStartupyesEnable on startup( yes/no )nucleus_<URL>leMasknullInput files masknucleus_subscriber.poller.bucketNamecandf-mesosName of <ORGANIZATION> bucketnucleus_<URL>cessingTimeoutMs3000000Timeout in milisecondsnucleus_<URL>putFolderC:/PROJECTS/COMPANY/GIT/mdm-publishing-hub/nucleus-subscriber/src/test/resources/dataInput directorynucleus_subscriber.poller.outputFoldernullOutput directorynucleus_<URL>ynullPoller keynucleus_<URL>cretnullPoller secretnucleus_<URL>gionEU_WEST_1Poller regionnucleus_<URL>loweSubDirsnullAllowed sub directories( e.g. by country code - AU, CA )nucleus_<URL>leFormat.hcp.*Professional.expInput fiile format for hcpnucleus_<URL>leFormat.hco.*Organization.expInput fiile format for hconucleus_<URL>leFormat.dictionary.*Code_Header.expInput fiile format for dictionarynucleus_<URL>leFormat.dictionaryItem.*Code_Item.expInput fiile format for dictionary Itemnucleus_<URL>leFormat.dictionaryItemDesc.*Code_Item_Description.expInput fiile format fornucleus_<URL>leFormat.dictionaryItemExternal.*Code_Item_External.expInput fiile format fornucleus_<URL>stomerMerge.*customer_merge.expInput fiile format for customer mergenucleus_<URL>leFormat.specialty.*Specialty.expInput fiile format for specialitynucleus_<URL>dress.*Address.expInput fiile format foraddressnucleus_<URL>.*Degree.expInput fiile format for degreenucleus_<URL>entifier.*Identifier.expInput fiile format foridentifiernucleus_<URL>munication.*Communication.expInput fiile format forcommunicationnucleus_<URL>leFormat.optout.*Optout.expInput fiile format for optoutnucleus_<URL>filiation.*Affiliation.expInput fiile format for affiliationnucleus_<URL>filiationRole.*AffiliationRole.expInput fiile format for affiliation role."
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/OK+DCR+Service",
|
||
"content": "DescriptionValidation of information regarding healthcare institutions and professionals based on ONE KEY webservices databaseTechnology: java 8, <DATE_TIME> boot, mongodb, <PERSON>-streamsCode link: mdm-onekey-dcr-service FlowsData Steward ResponseSubmit Validation RequestTrace Validation RequestExposed interfacesInterface NameTypeEndpoint patternDescriptioninternal onekeyvr inputKAFKA${env}-internal-onekeyvr-inevents being sent by the event publisher component. Event types being considered: HCP_*, <ORGANIZATION>_*, ENTITY_MATCHES_CHANGEDinternal onekeyvr change requests inputKAFKA${env}-internal-onekeyvr-change-requests-inDependent componentsComponentInterfaceFlowDescriptionManagerGetEntitygetEntitygetting the entity from RELTIOMDMIntegrationServicegetMatchesgetting matches from RELTIOtranslateLookupstranslating lookup codescreateEntityDCR entity created in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entitycreateResponsepatchEntityupdating the entity in RELTIOBoth <ORGANIZATION> service and the Manager service are called with the retry <URL><PERSON> <URL>KeyIntegrationService.url${oneKeyClient.url}<URL>erName${<URL>erName}<URL>ssword${<URL>ssword}<URL>nnectionPoint${<URL>nnectionPoint}<URL>KeyIntegrationService.logMessages${oneKeyClient.logMessages}<URL>xAttemts22Limit to the number of attempts -> Exponential Back <URL>itialIntervalMs1000Initial interval -> Exponential Back <URL>ltiplier2.0Multiplier -> Exponential Back <URL>xIntervalMs3600000Max interval -> Exponential Back <URL>tewayIntegrationService.url${gateway.url}<URL>erName${<URL>erName}<URL>tewayIntegrationService.apiKey${gateway.apiKey}<URL>tewayIntegrationService.logMessages${gateway.logMessages}<URL>tewayIntegrationService.timeoutMs${gateway.timeoutMs}<URL>xAttemts22Limit to the number of attempts -> Exponential Back <URL>itialIntervalMs1000Initial interval -> Exponential Back <URL>ltiplier2.0Multiplier -> Exponential Back <URL>xIntervalMs3600000Max interval -> Exponential Back <URL>bmitVR.eventInputTopic${env}-internal-onekeyvr-inSubmit Validation input <URL>ipEventTypeSuffix_REMOVED_INACTIVATED_LOST_MERGESubmit Validation event type string endings to <URL>oreNamewindow-deduplication-storeInternal kafka topic that stores events to <URL>bmitVR.window.duration4hThe size of the windows in <URL><no value>Internal kafka topic that stores events being grouped <URL>acePeriod0The grace period to admit out-of-order events to a <URL>teLimit107374182Maximum number of bytes the size-constrained suppression buffer will <URL>ppressNamedcr-suppressThe specified name for the suppression node in the <URL>on0 0 * ? * * # every <URL>stanceNamemdm-onekey-dcr-serviceCan be any string, and the value has no meaning to the scheduler itself - but rather serves as a mechanism for client code to distinguish schedulers when multiple instances are used within the same program. If you are using the clustering features, you must use the same name for every instance in the cluster that is ‘logically’ the same <URL>ipUpdateChecktrueWhether or not to skip running a quick web request to determine if there is an updated version of <ORGANIZATION> available for download. If the check runs, and an update is found, it will be reported as available in <ORGANIZATION>’s logs. You can also disable the update check with the system property “<URL>ipUpdateCheck=true” (which you can set in your system environment or as a -D on the java command line). It is recommended that you disable the update check for production <URL>nameInstanceIdGeneratorOnly used if <URL>stanceId is set to “AUTO”. Defaults to “<URL>mpleInstanceIdGenerator”, which generates an instance id based upon host name and time stamp. Other <ORGANIZATION> implementations include <PERSON> (which gets the instance id from the system property “<URL>stanceId”, and HostnameInstanceIdGenerator which uses the local host name (<URL>tLocalHost().getHostName()). You can also implement the InstanceIdGenerator interface your <URL>ngoUri${mongo.url}<URL>bStore.dbName${mongo.dbName}<URL>llectionPrefix <URL>stanceIdAUTOCan be any string, but must be unique for all schedulers working as if they are the same ‘logical’ Scheduler within a cluster. You may use the value “<ORGANIZATION>” as the instanceId if you wish the Id to be generated for you. Or the value “SYS_PROP” if you want the value to come from the system property “<URL>stanceId”<URL>readCount1"
|
||
},
|
||
{
|
||
"title": "Publisher",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Publisher",
|
||
"content": "<ORGANIZATION> is member of <ORGANIZATION> channel. It distributes events to target client topics based on configured routing <URL>in tasks:Filtering events beased on their contentRouting events based publisher configurationEnriching nucleus eventsUpdating mongoTechnology: <LOCATION>, <ORGANIZATION>, <ORGANIZATION>: event-publisherFlowsReltio events streamingNucleus Events StreamingCallbacksEvent filtering and routing rulesLOV update process (Nucleus)Data Steward ResponseSubmit Validation RequestSnowflake: Events publish flowExposed interfacesInterface NameTypeEndpoint patternDescriptionKafka - input topics for entities dataKAFKA${env_name}-internal-reltio-proc-events${env_name}-internal-nucleus-eventsStores events about entities, relations and change requests changes.<PERSON> - input topics for dicrtionaries dataKAFKA${env_name}-internal-reltio-dictionaries-events${env_name}-internal-nucleus-dictionaries-eventsStores events about lookup (LOV) changes.<PERSON> - output topicsKAFKA${env_name}-out-**(All topics that get events from publisher)Output topics for Publisher.Event after filtration process is then transferred on the appropriate topic based on routing rules defined in the configurationResend eventsRESTPOST /resendLastEventAllow triggering reconstruction event. Events are created based on the current state fetch for MongoDB and then forwarded according to defined routing <URL><PERSON>'s collectionsMongo collectionentityHistoryCollection stored last known state of entities dataMongo collectionentityRelationsCollection stored last known state of relations dataMongo collectionLookupValuesCollection stored last known state of lookups (LOVs) dataDependenciesComponentInterfaceFlowDescriptionCallback ServiceKAFKAEntity change events processing (Reltio)Creates input for PublisherResponsible for following transformations:<ORGANIZATION> names calculationDangling affiliationsCrosswalk cleanerPrecallback streamMongoDBEntity change events processing (Reltio)Entity change events processing (Nucleus)Stores the last known state of objects such as: entities, relations. Used as cache data to reduce Reltio load. Is updated after every entity change eventKafka <ORGANIZATION> connectorKAFKASnowflake: Events publish flowReceives events from the publisher and loads it to Snowflake databaseClients of the <ORGANIZATION> that receive events from <ORGANIZATION>, <LOCATION>, etcConfigurationConfig <ORGANIZATION> valueDescriptionevent_<URL>ersnullPublisher users dictionary used to authenticate user in <ORGANIZATION> <URL>er parameters:name,description,roles(list) - currently there is only one role which can be assign to user:RESEND_EVENT - user with this role is granted to use resend last event operationevent_<URL>tiveCountries- AD- BL- FR- GF- GP- <ORGANIZATION> MF- MQ- MU- NC- PF- PM- RE- WF- YT- CNList of active countriesevent_<URL>erval60mInterval of lookups (LOVs) from Reltioevent_<URL>tchSize1000Poller batch sizeevent_publisher.lookupValuesPoller.enableOnStartupyesEnable on startup( yes/no )event_publisher.lookupValuesPoller.dbCollectionNameLookupValuesMongo's collection name stored fetched lookup dataevent_<URL>comingEventsincomingEvents: reltio: topic: dev-internal-reltio-entity-and-relation-events enableOnStartup: no startupOrder: 10 properties: autoOffsetReset: latest consumersCount: 20 maxPollRecords: 50 pollTimeoutMs: 30000Configuration of the incoming topic with events regarding entities, relations etc.event_publisher.eventRouter.dictionaryEventsdictionaryEvents: reltio: topic: dev-internal-reltio-dictionaries-events enableOnStartup: true startupOrder: 30 properties: autoOffsetReset: earliest consumersCount: 10 maxPollRecords: 5 pollTimeoutMs: 30000Configuration of incoming topic with events regarding dictionary changes.event_publisher.eventRouter.historyCollectionNameentityHistoryName of collection stored entities stateevent_<URL>lationCollectionNameentityRelationsName of collection stored relations stateevent_<URL>utingRules.[]nullList of routing rules. Routing rule definition has following parametersid - unique identifier of rule,selector - conditional expression written in groovy which filters incoming events,destination - topic name."
|
||
},
|
||
{
|
||
"title": "Raw data service",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Raw+data+service",
|
||
"content": "<ORGANIZATION> data service is the component used to process source data. Allows you to remove expired data in real time. Provides a REST interface for restoring source data on the <URL>nology:<PERSON>,<PERSON>,spring bootCode link: Raw data serviceFlows Raw data flowsExposed interfacesBatch Controller - manage batch instancesInterface nameTypeEndpoint patternDescriptionRestore entitiesREST <ORGANIZATION> /restore/entitiesRestore entities for selected parameters: entity types, sources, countries, date from1. Create consumer for entities topic and given offset - date from2. Poll and filter <ORGANIZATION>. Produce data to bundle input topicRestore relationsREST <ORGANIZATION> /restore/relationsRestore entities for selected parameters: sources, countries, relation types and date from1. Create consumer for relations topic and given offset - date from2. Poll and filter <ORGANIZATION>. Produce data to bundle input topicRestore entitiesREST <ORGANIZATION> /restore/entities/countCount entities for selected parameters: entity types, sources, countries, date fromRestore entitiesREST <ORGANIZATION> /restore/relations/countCount relations for selected parameters: sources, countries, relation types and date fromConfigurationConfig <URL>Idkafka group idkafkaOtherother kafka consumer/producer propertiesentityTopictopic used to store entity datarelationTopictopic used to store relation <URL>tchKeyStoreNamestate store name used to store entities patch <URL>lationStoreNamestate store name used to store relations patch keysstreamConfig.enabledis raw data stream processor enabledstreamConfig.kafkaOtherraw data processor stream kafka other propertiesrestoreConfig.enabledis restore <ORGANIZATION> <PERSON> topic consumer poll <URL>nsumer.kafkaOtherother kafka consumer <URL>ducer.outputrestore data producer output topic - manager bundle input <ORGANIZATION> producer properties"
|
||
},
|
||
{
|
||
"title": "Reconciliation Service",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Reconciliation+Service",
|
||
"content": "Reconciliation service is used to consume reconciliation event from reltio and decide is entity or relation should be refreshed in mongo cache. after reconsiliation this service also produce metrics from reconciliation, it counts changes and produce event with all metatdta and statistics about reconciliated entity/relationFlowsReconciliation+HUB-ClientReconciliation metricsConfigurationConfig ParameterDefault valueDescriptionreconciliation: eventInputTopic: eventOutputTopic:reconciliation: eventInputTopic: ${env}-internal-reltio-reconciliation-events eventOutputTopic: ${env}-internal-reltio-eventsConsumes event from eventInputTopic, decide about reconiliation and produce event to eventOutputTopicreconciliation: eventMetricsInputTopic: eventMetricsOutputTopic:metricRules: - name: operationRegexp: pathRegexp: valueRegexp: reconciliation: eventInputTopic: ${env}-internal-reltio-reconciliation-events eventOutputTopic: ${env}-internal-reltio-events eventMetricsInputTopic: ${env}-internal-reltio-reconciliation-metrics-event eventMetricsOutputTopic: ${env}-internal-reconciliation-metrics-efk-transactionsmetricRules: - name: reconciliation.object.missed operationRegexp: "remove" pathRegexp: "" valueRegexp: ".*" - name: <URL>ded operationRegexp: "add" pathRegexp: "" valueRegexp: ".*" - name: <URL>ror operationRegexp: "add" pathRegexp: "^.*/lookupCode$" valueRegexp: ".*" - name: <URL>anged operationRegexp: "replace" pathRegexp: "^.*/lookupCode$" valueRegexp: ".*" - name: <URL>anged operationRegexp: "add|replace|remove" pathRegexp: "^/attributes/.+$" valueRegexp: ".*" - name: <URL>ason operationRegexp: ".*" pathRegexp: ".*" valueRegexp: ".*"Consume event from eventMetricsInputTopic, then calculate diff betwent current and previous event, based on diff produce statisctis and metrics. After all produce event with all information to eventMetricsOutputTopic"
|
||
},
|
||
{
|
||
"title": "Reltio Subscriber",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Reltio+Subscriber",
|
||
"content": "<ORGANIZATION> subscriber is part of Reltio events streaming flow. It consumes Reltio events from <ORGANIZATION>, filters, maps, and transfers to the Kafka <URL>rt of: <PERSON> channelTechnology: <ORGANIZATION>, <DATE_TIME>, Apache CamelCode link: reltio-subscriberFlowsEntity change events processing (Reltio)Exposed interfacesInterface NameTypeEndpoint patternDescriptionKafka topic KAFKA${env}-internal-reltio-eventsEnents pulled from <ORGANIZATION> are then transformed and published to <PERSON> - queueEntity change events processing (Reltio)It stores events about entities modification in reltioEntity enricherReltio Subscriber downstream component. Collects events from <PERSON> and produces events enriched with the target entityConfigurationConfig ParameterDefault valueDescriptionreltio_<URL>ltio.queuempe-01_FLy4mo0XAh0YEbNReltio queue namereltio_<URL>ltio.queueOwner930358522410Reltio queue owner numberreltio_<URL>ncurrentConsumers1Max number of concurrent consumersreltio_<URL>ssagesPerPoll10Messages per pollreltio_<URL>icdev-internal-reltio-eventsPublisher kafka topicreltio_<URL>lisher.enableOnStartupyesEnable on startupreltio_<URL>lterSelfMergesnoFilter self merges( yes/no )reltio_<URL>icdev-internal-reltio-relations-eventsRelationship publisher <PERSON> topicreltio_<URL>icnullDCR publisher <PERSON> topicreltio_<URL>rvers10.192.71.136:9094Kafka serversreltio_<URL>IdhubKafka group Idreltio_<URL>slMechanismPLAINKafka sasl mechanismreltio_<URL>curityProtocolSASL_SSLKafka security protocolreltio_subscriber.kafka.sslTruststoreLocationsrc/test/resources/<URL>uststore.jksKafka truststore locationreltio_subscriber.kafka.sslTuststorePasswordkafka123Kafka truststore passwordreltio_<URL>ernamenullKafka usernamereltio_<URL>sswordnullKafka user passwordreltio_<URL>pressionCodecnullKafka compression codecreltio_subscriber.poller.types3Source typereltio_subscriber.poller.enableOnStartupnoEnable on startup( yes/no )reltio_<URL>leMask.*Input files maskreltio_subscriber.poller.bucketNamecandf-mesosName of <ORGANIZATION> bucketreltio_<URL>cessingTimeoutMs7200000Timeout in milisecondsreltio_<URL>putFoldernullInput directoryreltio_subscriber.poller.outputFoldernullOutput directoryreltio_<URL>ynullPoller keyreltio_<URL>cretnullPoller secretreltio_<URL>gionEU_WEST_1Poller regionreltio_<URL>lowedEventTypes- ENTITY_CREATED- ENTITY_REMOVED- ENTITY_CHANGED- ENTITY_LOST_MERGE- ENTITIES_MERGED- ENTITIES_SPLITTED- RELATIONSHIP_CREATED- RELATIONSHIP_CHANGED- RELATIONSHIP_REMOVED- RELATIONSHIP_MERGED- RELATION_LOST_MERGE- CHANGE_REQUEST_CHANGED- CHANGE_REQUEST_CREATED- CHANGE_REQUEST_REMOVED- ENTITIES_MATCHES_CHANGEDEvent types that are processed when received.Other event types are being rejectedreltio_<URL>ansactionLogger.kafkaEfk.enablenullTransaction logger enabled( true/false)reltio_<URL>ansactionLogger.kafkaEfk.logContentOnlyOnFailednullLog content only on failed( true/false)reltio_<URL>IdnullKafka consumer group Idreltio_<URL>OffsetResetnullKafka transaction logger topicreltio_<URL>nsumerCountnullreltio_<URL>ssionTimeoutMsnullSession timeoutreltio_<URL>xPollRecordsnullreltio_<URL>eakOnFirstErrornullreltio_<URL>nsumerRequestTimeoutMsnullreltio_<URL>mpleLog.enablenull"
|
||
},
|
||
{
|
||
"title": "Clients",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Clients",
|
||
"content": "The section describes clients (systems) that publish or subscribe data to <ORGANIZATION> vis <ORGANIZATION>\n \n \n \n \n\n \n \n \n \n\n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \nAggregated Contact ListCOMPANY MDM TeamNameContactAndrew J. <URL><PERSON> Tirumalasowjanya.tirumala@<URL>John <URL><PERSON><URL><ORGANIZATION>-INF_Support_PforceOL@<URL>Solanki, <PERSON> (<LOCATION> - Mumbai) <<EMAIL_ADDRESS>>;Yagnamurthy, Maanasa (<LOCATION> - Hyderabad) <<EMAIL_ADDRESS>>;ChinaMing Ming <<EMAIL_ADDRESS><LOCATION>, Dawei <<EMAIL_ADDRESS>><URL>a@<URL><PERSON><URL>lfand@<URL>Dinesh.<ORGANIZATION>-Commercial_APAC@<URL>GRACEDL-AIS-Mule-Integration-Support@<EMAIL_ADDRESS>;<URL>hvaryu@<URL>dala@<EMAIL_ADDRESS>;<URL>alapati@<URL>MedicDL-F&BO-MEDIC@<URL>GBL USClientContactsCDWNarayanan, <LOCATION> <<EMAIL_ADDRESS>>Raman, <PERSON><EMAIL_ADDRESS>>ETLNayan, <PERSON><EMAIL_ADDRESS>><ORGANIZATION>, <ORGANIZATION><EMAIL_ADDRESS>><PERSON>, <ORGANIZATION><EMAIL_ADDRESS>>Brahma, <PERSON> <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><ORGANIZATION> contactsDube, <PERSON> R <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <PERSON> <<EMAIL_ADDRESS>>Business TeamMax, <PERSON> <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>>GIS(file transfer)Mandala, Venkata <<EMAIL_ADDRESS>><PERSON>, <PERSON> <<EMAIL_ADDRESS>>"
|
||
},
|
||
{
|
||
"title": "KOL",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/KOL",
|
||
"content": "\nData pushing\n Figure 22. KOL authentication with Identity ManagerKOL system push data to <ORGANIZATION> using REST <ORGANIZATION>. To authenticate, <ORGANIZATION> uses external Oauth2 authorization service named <ORGANIZATION> Manager to fetch access token. Then system sends the REST request to integration service endpoint which validates access token using <ORGANIZATION> Manager API.\n\nKOL manage data for several countries. Many of these is loaded to default MDM system (Reltio), supported by integration service but for <LOCATION>, <ORGANIZATION>, <ORGANIZATION> and CA countries data is sent to Nucleus 360. Decision, where the data should be loaded, is made by <ORGANIZATION> logic. Based on Country attribute value, <ORGANIZATION> manager selects the right <ORGANIZATION>. It is important to set the <ORGANIZATION> attribute value correctly during data updating. Same rule applies to the country query parameter during data fetching. Thanks to this, <ORGANIZATION> manager is able to process the right data in the right MDM system. In case of updating data with the <ORGANIZATION> attribute set incorrectly, the REST request will be rejected. When data is being fetched without country attribute query parameter set, the default <ORGANIZATION>) will be used to resolve the data.\n\nEvent processing\nKOL application receives events in one standard way – kafka topic. Events from Reltio MDM system are published to this topic directly after <ORGANIZATION> has processed changes, sent event to <ORGANIZATION> and processed them by Event Publisher. It means that the <ORGANIZATION> processes change and send events in real time. Client, who listens for events, does not have to wait for receiving them too long.\n Figure 23. Difference between processing events in <LOCATION> and <LOCATION> 360The situation changes when the entity changes are processed by Nucleus 360. This <ORGANIZATION> publishes changes once in a while, so the events will be delivered to kafka topic with longer delay."
|
||
},
|
||
{
|
||
"title": "<LOCATION> DWH",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Japan+DWH",
|
||
"content": "ContactsJapan DWH Feed Support DL: <EMAIL_ADDRESS> - it is valid until 15/04/2023DL-ATP-SERVICEOPS-JPN-DATALAKE@<URL> - it will be valid since <DATE_TIME> FlowsJapan DWH has only one batch process which consume the incremental file export from data warehouse, process this and loads data to <ORGANIZATION>. This process is based on incremental batch engine and run on <ORGANIZATION> <URL>put filesThe input files are delivered by GIS to <ORGANIZATION> <URL>TPRODS3 service accountdidn't createdsvc_gbi-cc_mdm_japan_rw_s3S3 Access key IDdidn't <PERSON>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectS3 <PERSON>/UAT/inbound/<LOCATION>/mdm/inbound/<LOCATION>/Input data file mask JPDWH_[0-9]+.zipJPDWH_[0-9]+.zipCompressionZipZipFormatFlat files, <ORGANIZATION> dedicated format Flat files, <ORGANIZATION> dedicated format ExampleJPDWH_20200421202224.zipJPDWH_20200421202224.zipSchedulenoneAt <DATE_TIME> on every day-of-week from <DATE_TIME> (0 8 * * 1-5). The input file is not delivered in <LOCATION>'s holidays (<URL>)Airflow jobinc_batch_jp_stageinc_batch_jp_prodData mapping The detailed filed mappings are presented in the <URL>pping rules:Inactive HCPs, HCOs are not loaded in <ORGANIZATION>. They are filtered out using delete flags present in source files. Profiles being inactivated in <ORGANIZATION> source are soft-deleted from Reltio. Affiliations between hospitals and departments are not delivered by the source directly. They are derived from <ORGANIZATION> file (doctor – institution association) having department <ORGANIZATION> referring to a dictionary on affiliations. Each hospital in Reltio has dedicated departments objects although departments are global dictionary in <LOCATION> DWH. HCP addresses are copied from affiliated HCOs. <NRP> workplaces refer to departments. Departments point to Main HCOs using MainHCO relations. HCP affiliations pointing to inactive HCOs are skipped during the load, but <ORGANIZATION> profiles are load. Department names and hospital names are added to address attributes (<PERSON>, MainHcoName) associated with HCPs to allow searching by its <URL>nfigurationFlow configuration is stored in <ORGANIZATION> configuration repository. For each environment where the flow should be enabled the configuration file inc_batch_jp.yml has to be created in the location related to configured environment: inventory/[env name]/group_vars/gw-airflow-services/ and the batch name "inc_batch_jp" has to be added to "airflow_components" list which is defined in file inventory/[env name]/group_vars/gw-airflow-services/all.yml. Below table prresents the location of inc_batch_jp.yml file for <ORGANIZATION> and PROD env:UATPRODinc_batch_jp.yml<URL> configuration changes is done by executing the deploy <ORGANIZATION>'s components <URL>PsThere is no particular SOP procedure for this flow. All common SOPs was described in the "Airflow:" chapter."
|
||
},
|
||
{
|
||
"title": "Nucleus",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Nucleus",
|
||
"content": "ContactsDelivering of data used by <ORGANIZATION>'s processes is maintained by <ORGANIZATION> are several batch processes that loads data extracted from <NRP> MDM. Data are delivered for countries: <LOCATION>, <LOCATION>, <LOCATION>, <LOCATION>, <LOCATION> and <LOCATION> as zip archive available at <ORGANIZATION> <URL>put filesUATPRODS3 service accountdidn't createdsvc_mdm_project_nuc360_rw-s3S3 Access key IDdidn't <PERSON>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectS3 <PERSON>/UAT/inbound/APAC_CCV/AU/mdm/UAT/inbound/APAC_CCV/KR/mdm/UAT/inbound/nuc360/inc-batch/<LOCATION>/mdm/UAT/inbound/nuc360/inc-batch/<ORGANIZATION>/mdm/UAT/inbound/nuc360/inc-batch/<ORGANIZATION>/mdm/UAT/inbound/nuc360/inc-batch/CA/mdm/inbound/nuc360/inc-batch/AU/mdm/inbound/nuc360/inc-batch/KR/mdm/inbound/nuc360/inc-batch/GB/mdm/inbound/nuc360/inc-batch/<ORGANIZATION>/mdm/inbound/nuc360/inc-batch/DK/mdm/inbound/nuc360/inc-batch/<ORGANIZATION> data file mask NUCLEUS_CCV_[0-9_]+.zipNUCLEUS_CCV_[0-9_]+.zipCompressionZipZipFormatFlat files in <ORGANIZATION> format Flat files in <ORGANIZATION> format ExampleNUCLEUS_CCV_<PHONE_NUMBER>_20200609_211102.zipNUCLEUS_CCV_<PHONE_NUMBER>_20200609_211102.zipSchedulenoneinc_batch_apac_ccv_au_prod - at <DATE_TIME> on every day-of-week from <DATE_TIME> (0 17 * * 1-5)inc_batch_apac_ccv_kr_prod - at <DATE_TIME> on every day-of-week from <DATE_TIME> (0 8 * * 1-5)inc_batch_eu_ccv_gb_stage - at <DATE_TIME> on every day-of-week from <DATE_TIME> (0 7 * * 1-5)inc_batch_eu_ccv_pt_stage - at <DATE_TIME> on every day-of-week from <DATE_TIME> (0 7 * * 1-5)inc_batch_eu_ccv_dk_stage - at <DATE_TIME> on every day-of-week from <DATE_TIME> (0 7 * * 1-5)inc_batch_amer_ccv_ca_prod - at <DATE_TIME> on every day-of-week from <DATE_TIME> (0 17 * * 1-5)Airflow's DAGSinc_batch_apac_ccv_au_stageinc_batch_apac_ccv_kr_stageinc_batch_eu_ccv_gb_stageinc_batch_eu_ccv_pt_stageinc_batch_eu_ccv_dk_stageinc_batch_amer_ccv_ca_stageinc_batch_apac_ccv_au_prodinc_batch_apac_ccv_kr_prodinc_batch_eu_ccv_gb_stageinc_batch_eu_ccv_pt_stageinc_batch_eu_ccv_dk_stageinc_batch_amer_ccv_ca_prodData mappingData mapping is described in the following <URL>nfigurationFlows configuration is stored in <ORGANIZATION> configuration repository. For each environment where the flows should be enabled configuration files has to be created in the location related to configured environment: inventory/[env name]/group_vars/gw-airflow-services/ and the batch name has to be added to "airflow_components" list which is defined in file inventory/[env name]/group_vars/gw-airflow-services/all.yml. Below table presents the location of flows configuration files for <ORGANIZATION> and PROD env:Flow configuration <ORGANIZATION> deploy changes of <ORGANIZATION>'s configuration you have to execute SOP Deploying DAGsSOPsThere is no particular SOP procedure for this flow. All common SOPs was described in the "Airflow:" chapter."
|
||
},
|
||
{
|
||
"title": "Veeva New Zealand",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Veeva+New+Zealand",
|
||
"content": "ContactsDL-<ORGANIZATION> flow transforms the <ORGANIZATION>'s data to <ORGANIZATION> model and loads the result to <ORGANIZATION>. Data contains HCPs and HCOs from <LOCATION><URL>is flow is divided into two steps:Pre-proccessing - Copying source files from <ORGANIZATION>'s <ORGANIZATION> bucket, filtering once and uploading result to HUB's bucket,Incremental batch - Running the standard incremental batch process.Each of these steps are realized by separated <ORGANIZATION>'s <URL>put filesUATPRODVeeva's <ORGANIZATION> service accountSRVC-MDMHUB_GBL_NONPRODSRVC-MDMHUB_GBLVeeva's <ORGANIZATION> bucketapacdatalakeprcaspasp55737apacdatalakeprcaspasp63567Veeva's <ORGANIZATION> bucket regionap-southeast-1ap-southeast-1Veeva's <ORGANIZATION> Folderproject_kangaroo/landing/veeva/sf_account/project_kangaroo/landing/veeva/sf_address_vod__c/project_kangaroo/landing/veeva/sf_child_account_vod__c/project_kangaroo/landing/veeva/sf_account/project_kangaroo/landing/veeva/sf_address_vod__c/project_kangaroo/landing/veeva/sf_child_account_vod__c/<PERSON>'s Input data file mask * (all files inside above folders)* (all files inside above <ORGANIZATION>'s Input data file compressionnonenoneHUB's <US_DRIVER_LICENSE> Bucketpfe-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectHUB's <US_DRIVER_LICENSE> <PERSON>/UAT/inbound/APAC_VEEVA/mdm/inbound/APAC_PforceRx/<ORGANIZATION>'s input data file maskin_nz_[0-9]+.zipin_nz_[0-9]+.zipHUS's input data file compressionZipZipSchedule (is set only for pre-processing DAG)noneAt <DATE_TIME> on every day-of-week from <DATE_TIME> (0 8 * * 1-5)Pre-processing <ORGANIZATION>'s DAGinc_batch_apac_veeva_wrapper_stageinc_batch_apac_veeva_wrapper_prodIncremental batch <ORGANIZATION>'s DAGinc_batch_apac_veeva_stageinc_batch_apac_veeva_prodData mappingData mapping is described in the following <URL>nfigurationConfiguration of this flow is defined in two configuration files. First of these inc_batch_apac_veeva_wrapper.yml specifies the pre-processing DAG configuration and the second inc_batch_apac_veeva.yml defines configuration of DAG for standard incremental batch process. To activate the flow on environment files should be created in the following location inventory/[env name]/group_vars/gw-airflow-services/ and batch names "inc_batch_apac_veeva_wrapper" and "inc_batch_apac_veeva" have to be added to "airflow_components" list which is defined in file inventory/[env name]/group_vars/gw-airflow-services/all.yml. Changes made in configuration are applied on environment by running <ORGANIZATION> <URL>low table presents the location of flows configuration files for <ORGANIZATION> and PROD env:Configuration fileUATPRODinc_batch_apac_veeva_wrapper.yml<URL> is no dedicated SOP procedures for this flow. However, you must remember that this flow consists of two DAGs which both have to finish <URL>l common SOPs was described in the "Incremental batch flows: SOP" chapter."
|
||
},
|
||
{
|
||
"title": "ODS",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/ODS",
|
||
"content": "<EMAIL_ADDRESS> - APAC ODS <EMAIL_ADDRESS> - EU ODS <ORGANIZATION>, <LOCATION> <<EMAIL_ADDRESS>>; velmurugan, Aarthi <<EMAIL_ADDRESS>> - AMER ODS SupportFlowThe flow transforms the <ORGANIZATION>'s data to <ORGANIZATION> model and loads the result to <ORGANIZATION>. Data contains HCPs and HCOs from: <LOCATION>, ID, IN, MY, PH, PK, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <PERSON>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, PM, RE, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, RS <URL>is flow is divided into two steps:Pre-proccessing - Copying source files from <ORGANIZATION>'s bucket and then uploading these to HUB's bucket,Incremental batch - Running the standard incremental batch process.Each of these steps are realized by separated <ORGANIZATION>'s <URL>put filesUAT APACUAT EUPROD APACPROD EUSupported countriesHK, ID, IN, MY, PH, PK, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <PERSON>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, PM, RE, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, ID, IN, MY, PH, PK, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <PERSON>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, PM, RE, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION> service <ORGANIZATION> bucketapacdatalakeintaspasp100939apacdatalakeintaspasp100939apacdatalakeintaspasp104492pfe-gbi-eu-<US_DRIVER_LICENSE>-prod-partner-internalODS <ORGANIZATION> folder/<ORGANIZATION>-odsd-file-extracts/gateway/GATEWAY/ODS/PROD/GCMDM/ODS Input data file mask ****ODS Input data file compressionzipzipzipzipHUB's <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectHUB's <US_DRIVER_LICENSE> <PERSON>/UAT/inbound/ODS/<ORGANIZATION>/mdm/UAT/inbound/ODS/<ORGANIZATION>/mdm/inbound/ODS/<ORGANIZATION>/mdm/inbound/ODS/<ORGANIZATION>/<ORGANIZATION>'s input data file mask****HUS's input data file compressionzipzipzipzipPre-processing <ORGANIZATION>'s DAGmove_ods_apac_export_stagemove_ods_eu_export_stagemove_ods_apac_export_prodmove_ods_eu_export_prodPre-processing <ORGANIZATION>'s DAG schedulenonenone0 6 * * 1-50 7 * * 2 (At <DATE_TIME> on <ORGANIZATION> batch <ORGANIZATION>'s <ORGANIZATION> batch <ORGANIZATION>'s DAG schedulenonenone0 8 * * 1-50 8 * * 2 (At <DATE_TIME> on Tuesday.)Data mappingData mapping is described in the following <URL>nfigurationConfiguration of this flow is defined in two configuration files. First of these <PERSON> specifies the pre-processing DAG configuration and the second inc_batch_apac_ods.yml defines configuration of DAG for standard incremental batch process. To activate the flow on environment files should be created in the following location inventory/[env name]/group_vars/gw-airflow-services/ and batch names "move_ods_apac_export" and "inc_batch_apac_ods" have to be added to "airflow_components" list which is defined in file inventory/[env name]/group_vars/gw-airflow-services/all.yml. Changes made in configuration are applied on environment by running <PERSON> components <URL>low table presents the location of flows configuration files for <ORGANIZATION> and PROD env:Configuration fileUATPRODmove_ods_apac_export.yml<URL> is no dedicated SOP procedures for this flow. However, you must remember that this flow consists of two DAGs which both have to finish <URL>l common SOPs was described in the "Incremental batch flows: SOP" chapter."
|
||
},
|
||
{
|
||
"title": "<LOCATION>",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/<LOCATION>",
|
||
"content": "ACLsNameGateway User NameAuthenticationPing <ORGANIZATION> UserRolesCountriesSourcesTopicChina client <ORGANIZATION> "CREATE_HCP"- "CREATE_HCO"- "UPDATE_HCO"- "UPDATE_HCP"- "GET_ENTITIES"- CN- "CN3RDPARTY"- "MDE"- "FACE"- "EVR"- dev-out-full-mde-cn- stage-out-full-mde-cn- dev-out-full-mde-cnContactsQianRu.<ORGANIZATION> generation process (<LOCATION> DCR)[<URL>.1] <ORGANIZATION> update processesReportsReports"
|
||
},
|
||
{
|
||
"title": "Corrective batch process for EVR",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Corrective+batch+process+for+EVR",
|
||
"content": "Corrective batch process for <ORGANIZATION> fixes <LOCATION> data using standard incremental batch mechanism. The process gets data from csv file, transforms to json model and loads to Reltio. During loading of changes following <ORGANIZATION>'s attributes can be changed:Name,Title,SubTypeCode,<ORGANIZATION>,Specific Workplace can be ignored or its <ORGANIZATION> can be changed,Specific <ORGANIZATION> can be <URL>e load saves the changes in Reltio under crosswalk where:type of crosswalk is EVR,crosswalk's value is the same as Reltio id,crosswalk's source table is "corrective".Thanks this, it is easy to find changes that was made by this <URL>put filesThe input files are delivered to <ORGANIZATION> bucketUATPRODInput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectInput <ORGANIZATION> <PERSON>/UAT/inbound/<LOCATION>/EVR/mdm/inbound/<LOCATION>/EVR/Input data file mask evr_corrective_file_[0-9]*.zipevr_corrective_file_[0-9]*.zipCompressionzipzipFormatFlat files in <ORGANIZATION> format Flat files in <ORGANIZATION> format Exampleevr_corrective_file_20201109.zipevr_corrective_file_20201109.zipSchedulenonenoneAirflow's DAGSinc_batch_china_evr_stageinc_batch_china_evr_prodData mappingMapping from CSV to <ORGANIZATION>'s json was describe in this document: evr_corrective_file_format_new.xlsxExample file presented input data: evr_corrective_file_20221215.csvConfigurationFlows configuration is stored in <ORGANIZATION> configuration repository. For each environment where the flow should be enabled configuration file inc_batch_china_evr.yml has to be created in the location related to configured environment: inventory/[env name]/group_vars/gw-airflow-services/ and the batch name "inc_batch_china" has to be added to "airflow_components" list which is defined in file inventory/[env name]/group_vars/gw-airflow-services/all.yml. Below table presents the location of flow configuration files for <ORGANIZATION> and PROD environment:UATPROD<URL> is no particular SOP procedure for this flow. All common SOPs was described in the "Incremental batch flows: SOP" chapter."
|
||
},
|
||
{
|
||
"title": "Reports",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Reports",
|
||
"content": "Daily ReportsThere are 4 reports which their preparing is triggered by china_generate_reports_[env] DAG. The <ORGANIZATION> starts all dependent report DAGs and then waits for files published by them on <ORGANIZATION>. When all required files are delivered to <ORGANIZATION>, DAG sents the email with generted reports to all configured <URL>ina_generate_reports_[env]|-- china_import_and_gen_dcr_statistics_report_[env] |-- import_pfdcr_from_reltio_[env] +-- china_dcr_statistics_report_[env]|-- china_import_and_gen_merge_report_[env] |-- import_merges_from_reltio_[env] +-- china_merge_report_[env]|-- china_total_entities_report_[env]+-- china_hcp_by_source_report_[env]Daily DAGs are triggered by DAG china_generate_reportsUATPRODParent <DATE_TIME> at <DATE_TIME> applied to all reports:<ORGANIZATION> by source reportThe Report shows how many HCPs was delivered to MDM by specific <URL>e Output files are delivered to <ORGANIZATION> bucket:<ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_hcp_by_source_report_.*.xlsxchina_hcp_by_source_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_hcp_by_source_report_20201113093437.xlsxchina_hcp_by_source_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_hcp_by_source_report_stagechina_hcp_by_source_report_prodReport Templatechina_hcp_by_source_template.xlsxMongo scripthcp_by_source_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ColumnDescriptionSourceThe source which delivered HCPHCPNumber of all HCPs which has the sourceDaily IncrementalNumber of HCPs modified last utc <URL>tal entities reportThe report shows total entities count, grouped by entity type, theirs validation status and speaker <URL>e Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_total_entities_report_.*.xlsxchina_total_entities_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_total_entities_report_20201113093437.xlsxchina_total_entities_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_total_entities_report_stagechina_total_entities_report_prodReport Templatechina_total_entities_template.xlsxMongo scripttotal_entities_report.jsApplied filters"country" : "CN""status": "ACTIVE"Report fields description:ColumnDescriptionTotal_Hospital_MDMNumber of total hospital MDMTotal_Dept_MDMNumber of total department MDMTotal_HCP_MDMNumber of total HCP MDMValidated_HCPNumber of validated HCPPending_HCPNumber of pending HCPNot_Validated_HCPNumber of validated HCPOther_Status_HCP?Number of <ORGANIZATION> with other statusTotal_Speaker Number of total speakersTotal_Speaker_EnabledNumber of enabled speakersTotal_Speaker_DisabledNumber of disabled <NRP> statistics reportThe report shows statistics about data change requests which were created in <ORGANIZATION>. Generating of this report is divided into two steps:Importing PfDataChengeRequest data from <ORGANIZATION> - this step is realized by import_pfdcr_from_reltio_[env] DAG. It schedules export data in <ORGANIZATION> using Export Entities operation and then waits for result. After export file is ready, DAG load its content to mongo,Generating report - generates report based on proviosly imported data. This step is perform by china_dcr_statistics_report_[env] <URL>h of above steps are run sequentially by china_import_and_gen_dcr_statistics_report_[env] DAG. The Output files are delivered to <ORGANIZATION> bucket:<ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_dcr_statistics_report_.*.xlsxchina_dcr_statistics_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_dcr_statistics_report_20201113093437.xlsxchina_dcr_statistics_report_20201113093437.xlsxAirflow's DAGSchina_dcr_statistics_report_stagechina_dcr_statistics_report_prodReport Templatechina_dcr_statistics_template.xlsxMongo scriptchina_dcr_statistics_report.jsApplied filtersThere are no additional conditions applied to select dataReport fields description:ColumnDescriptionTotal_DCR_MDMTotal number of DCRsNew_HCP_DCRTotal number of DCRs of type NewHCPNew_HCO_L1_DCRTotal number of DCRs of type <ORGANIZATION> number of DCRs of type NewHCOL2MultiAffil_DCRTotal number of DCRs of type MultiAffilNew_HCP_DCR_CompletedTotal number of DCRs of type <PERSON> which have completed statusNew_HCO_L1_DCR_CompletedTotal number of DCRs of type NewHCOL1 which have completed statusNew_HCO_L2_DCR_CompletedTotal number of DCRs of type <ORGANIZATION> which have completed statusMultiAffil_DCR_CompletedTotal number of DCRs of type <ORGANIZATION> which have completed statusNew_HCP_AcceptTotal number of DCRs of type <PERSON> which were acceptedNew_HCP_UpdateTotal number of DCRs of type <PERSON> which were updated during responding for theseNew_HCP_MergeTotal number of DCRs of type <PERSON> which were accepted and response had entities to mergeNew_HCP_MergeUpdateTotal number of DCRs of type <PERSON> which were updated and response had entities to mergeNew_HCP_RejectTotal number of DCRs of type <PERSON> which were rejectedNew_HCP_CloseTotal number of closed DCRs of type NewHCPAffil_AcceptTotal number of DCRs of type <ORGANIZATION> which were acceptedAffil_RejectTotal number of DCRs of type <ORGANIZATION> which were rejectedAffil_AddTotal number of DCRs of type <ORGANIZATION> which data were updated during respondingMultiAffil_DCR_CloseTotal number of closed DCRs of type MultiAffilNew_HCO_L1_UpdateTotal number of closed DCRs of type NewHCOL1 which data were updated during respondingNew_HCO_L1_RejectTotal number of rejected DCRs of type NewHCOL1 New_HCO_L1_CloseTotal number of closed DCRs of type NewHCOL1 New_HCO_L2_AcceptTotal number of accepted DCRs of type NewHCOL2New_HCO_L2_UpdateTotal number of DCRs of type <ORGANIZATION> which data were updated during respondingNew_HCO_L2_RejectTotal number of rejected DCRs of type <ORGANIZATION> number of closed DCRs of type NewHCOL2New_HCP_DCR_OpenedTotal number of opend DCRs of type NewHCPMultiAffil_DCR_OpenedTotal number of opend DCRs of type <LOCATION> number of opend DCRs of type <ORGANIZATION> number of opend DCRs of type <ORGANIZATION> number of failed DCRs of type NewHCPMultiAffil_DCR_FailedTotal number of failed DCRs of type <ORGANIZATION> number of failed DCRs of type NewHCOL1New_HCO_L2_DCR_FailedTotal number of failed DCRs of type NewHCOL2Merge reportThe report shows statistics about merges which were occurred in <ORGANIZATION>. Generating of this report, similar to <ORGANIZATION> statistics report, is divided into two steps:Importing merges data from <ORGANIZATION> - this step is performed by import_merges_from_reltio_[env] DAG. It schedules export data in <ORGANIZATION> unsing Export Merge Tree operation and then waits for result. After export file is ready, <ORGANIZATION> loads its content to mongo,Generating report - generates report based on previously imported data. This step is performed by china_merge_report_[env] <URL>h of above steps are run sequentially by china_import_and_gen_merge_report_[env] DAG. The Output files are delivered to <ORGANIZATION> bucket:<ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_merge_report_.*.xlsxchina_merge_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_merge_report_20201113093437.xlsxchina_merge_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_import_and_gen_merge_report_stagechina_import_and_gen_merge_report_prodReport Templatechina_daily_merges_template.xlsxMongo scriptmerge_report.jsApplied filters"country" : "CN"Report fields description:ColumnDescriptionDateDate when merges occurredDaily_Merge_HosptialTotal number of merges on HCODaily_Merge_HCPTotal number of merges on <ORGANIZATION> number of manual merges on <NRP> number of manual merges on <ORGANIZATION> are 8 <DATE_TIME> reports. All of them are triggered by china_monthly_generate_reports_[env] which then waits for files, generated and published to <ORGANIZATION> bucket by each depended DAGs. When all required files exist on <ORGANIZATION>, <ORGANIZATION> prepares the email with all files and sents this defined <URL>ina_monthly_generate_reports_[env]|-- china_monthly_hcp_by_SubTypeCode_report_[env]|-- china_monthly_hcp_by_channel_report_[env]|-- china_monthly_hcp_by_city_type_report_[env]|-- china_monthly_hcp_by_department_report_[env]|-- china_monthly_hcp_by_gender_report_[env]|-- china_monthly_hcp_by_hospital_class_report_[env]|-- china_monthly_hcp_by_province_report_[env]+-- china_monthly_hcp_by_source_report_[env]Monthly DAGs are triggered by DAG china_monthly_generate_reportsUATPRODParent DAGchina_monthly_generate_reports_stagechina_monthly_generate_reports_prodHCP by source reportThe report shows how many HCPs were delivered by specific <URL>e Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_monthly_hcp_by_source_report_.*.xlsxchina_monthly_hcp_by_source_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_monthly_hcp_by_source_report_20201113093437.xlsxchina_monthly_hcp_by_source_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_monthly_hcp_by_source_report_stagechina_monthly_hcp_by_source_report_prodReport Templatechina_monthly_hcp_by_source_template.xlsxMongo scriptmonthly_hcp_by_source_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ColumnDescriptionSourceSource that delivered HCPHCPNumber of all HCPs which has the <ORGANIZATION> by channel reportThe report presents amount of HCPs which were delivered to MDM through specific <URL>e Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_monthly_hcp_by_channel_report_.*.xlsxchina_monthly_hcp_by_channel_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_monthly_hcp_by_channel_report_20201113093437.xlsxchina_monthly_hcp_by_channel_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_monthly_hcp_by_channel_report_stagechina_monthly_hcp_by_channel_report_prodReport Templatechina_monthly_hcp_by_channel_template.xlsxMongo scriptmonthly_hcp_by_channel_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ColumnDescriptionChannelChannel nameHCPNumber of all HCPs which match the <ORGANIZATION> by SubTypeCode reportThe report presents HCPs grouped by its Medical Title (SubTypeCode)The Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_monthly_hcp_by_SubTypeCode_report_.*.xlsxchina_monthly_hcp_by_SubTypeCode_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_monthly_hcp_by_SubTypeCode_report_20201113093437.xlsxchina_monthly_hcp_by_SubTypeCode_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_monthly_hcp_by_SubTypeCode_report_stage china_monthly_hcp_by_SubTypeCode_report_prodReport Templatechina_monthly_hcp_by_SubTypeCode_template.xlsxMongo scriptmonthly_hcp_by_SubTypeCode_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ColumnDescriptionMedical TitleMedical Title (SubTypeCode) of HCPHCPNumber of all HCPs which match the medical titleHCP by city type reportThe report shows amount of <ORGANIZATION> which works in specific city type. Type of city in not avaiable in <ORGANIZATION> data. To know what is type of specific citys report uses additional collection chinaGeography which has mapping between city's name and its type. Data in the collection can be updated on request of <LOCATION>'s <URL>e Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_monthly_hcp_by_city_type_report_.*.xlsxchina_monthly_hcp_by_city_type_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_monthly_hcp_by_city_type_report_20201113093437.xlsxchina_monthly_hcp_by_city_type_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_monthly_hcp_by_city_type_report_stage china_monthly_hcp_by_city_type_report_prodReport Templatechina_monthly_hcp_by_city_type_template.xlsxMongo scriptmonthly_hcp_by_city_type_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ColumnDescriptionCity TypeCity Type taken from chinaGeography collection which match <URL>lueHCPNumber of all HCPs which match the city typeHCP by department reportThe report presents the HCPs grouped by department where they <URL>e Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_monthly_hcp_by_department_report_.*.xlsxchina_monthly_hcp_by_department_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_monthly_hcp_by_department_report_20201113093437.xlsxchina_monthly_hcp_by_department_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_monthly_hcp_by_department_report_stage china_monthly_hcp_by_department_report_prodReport Templatechina_monthly_hcp_by_department_template.xlsxMongo scriptmonthly_hcp_by_department_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ColumnDescriptionDeptDepartment's nameHCPNumber of all HCPs which match the deptHCP by gender reportThe report presents the HCPs grouped by <URL>e Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_monthly_hcp_by_gender_report_.*.xlsxchina_monthly_hcp_by_gender_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel <ORGANIZATION>'s DAGSchina_monthly_hcp_by_gender_report_stage china_monthly_hcp_by_gender_report_prodReport Templatechina_monthly_hcp_by_gender_template.xlsxMongo scriptmonthly_hcp_by_gender_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ColumnDescriptionGenderGenderHCPNumber of all HCPs which match the genderHCP by hospital class reportThe report presents the HCPs grouped by theirs <URL>e Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask <PERSON> xlsxMicrosoft <ORGANIZATION> DAGSchina_monthly_hcp_by_hospital_class_report_stage china_monthly_hcp_by_hospital_class_report_prodReport Templatechina_monthly_hcp_by_hospital_class_template.xlsxMongo scriptmonthly_hcp_by_hospital_class_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ColumnDescriptionClassClassificationHCPNumber of all HCPs which match the classHCP by province reportThe report presents the HCPs grouped by province where they <URL>e Output files are delivered to <ORGANIZATION> bucketUATPRODOutput <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectOutput <ORGANIZATION>/outbound/china_reports/daily/mdm/outbound/china_reports/daily/Output data file mask china_monthly_hcp_by_province_report_.*.xlsxchina_monthly_hcp_by_province_report_.*.xlsxFormatMicrosoft Excel xlsxMicrosoft Excel xlsxExamplechina_monthly_hcp_by_province_report_20201113093437.xlsxchina_monthly_hcp_by_province_report_20201113093437.xlsxSchedulenonenoneAirflow's DAGSchina_monthly_hcp_by_province_report_stage china_monthly_hcp_by_province_report_prodReport Templatechina_monthly_hcp_by_province_template.xlsxMongo scriptmonthly_hcp_by_province_report.jsApplied filters"country" : "CN""entityType": "configuration/entityTypes/HCP""status": "ACTIVE"Report fields description:ProvinceName of provinceHCPNumber of all HCPs which match the ProvinceSOPsHow can I check the status of generating reports?Status of generating reports can be chacked by verification of task statuses on main DAGs - china_generate_reports_[env] for <DATE_TIME> reports or china_monthly_generate_reports_[env] for <DATE_TIME> reports. Both of these DAGs have task "sendEmailReports" which waits for files generated by dependent DAGs. If required files are not published to <ORGANIZATION> in confgured amount of time, the task will fail with following message:\n[<DATE_TIME> 12:12:54,085] {{docker_<URL>:252}} INFO - Caught: <URL>timeException: ERROR: Elapsed time <DATE_TIME>. Timeout exceeded: 300\n[<DATE_TIME> 12:12:54,086] {{docker_<URL>:252}} <ORGANIZATION><URL>timeException: ERROR: Elapsed time <DATE_TIME>. Timeout exceeded: 300\n[<DATE_TIME> 12:12:54,086] {{docker_<URL>:252}} INFO - at <URL>tListOfFilesLoop(<URL>oovy:221)\n\tat <URL>cessReport(<URL>oovy:257)\n[<DATE_TIME> 12:12:54,290] {{docker_<URL>:252}} INFO - at <LOCATION> <URL>(<URL>oovy:279)\n[<DATE_TIME> 12:12:55,552] {{<URL>:1058}} ERROR - docker container failed: {'StatusCode': 1}\nIn this case you have to check the status of all dependent DAGs to find the reason on failure, resolve the issue and retry all failed tasks starting by tasks in dependend DAGs and finishing by task in main DAG.Daily reports failed due to error durign importing data from <ORGANIZATION>. What to do?If you are able to see that DAGs import_pfdcr_from_reltio_[env] or import_merges_from_reltio_[env] in failed state, it probably means that export data from <ORGANIZATION> took longer then usual. To confirm this supposing you have to show details of importing DAG and check status of waitingForExportFile task. If it has failed state and in the logs you can see following messages:\n[<DATE_TIME> 12:09:10,957] {{s3_key_<URL>:88}} INFO - Poking for key : <US_DRIVER_LICENSE>://pfe-baiaes-eu-<US_DRIVER_LICENSE>-project/mdm/reltio_exports/merges_from_reltio_20201204T000718/_SUCCESS\n[<DATE_TIME> 12:09:11,074] {{<URL>:1047}} ERROR - Snap. Time is OUT.\nTraceback (most recent call last):\n File "/usr/local/lib/python3.7/site-packages/airflow/models/<URL>", line 922, in _run_raw_task\n result = task_copy.execute(context=context)\n File "/usr/local/lib/python3.7/site-packages/airflow/sensors/base_sensor_<URL>", line 116, in execute\n raise <ORGANIZATION>. <ORGANIZATION> is OUT.')\<URL>rflowSensorTimeout: Snap. <ORGANIZATION> is <ORGANIZATION>] {{<URL>:1078}} INFO - Marking task as FAILED.\nYou can be pretty sure that the export is still processed on <ORGANIZATION> side. You can confirm this by using tasks api. If on the returned list you are able to see tasks in processing state, it means that <ORGANIZATION> still works on this export. To fix this issue in DAG you have to restart the failed task. The <ORGANIZATION> will start checking existance of export file once agine."
|
||
},
|
||
{
|
||
"title": "CDW (<ORGANIZATION>)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "<LOCATION>, <LOCATION> <<EMAIL_ADDRESS>>Balan, Sakthi <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>>GatewayAMER(manager)NameGateway User NameAuthenticationPing <PERSON> UserRolesCountriesDefaultCountrySourcesTopicCDW user (NPROD)cdwExternal OAuth2CDW-MDM_client["CREATE_HCO","UPDATE_HCO","GET_ENTITIES","USAGE_FLAG_UPDATE"]["US"]["SHS","SHS_MCO","IQVIA_MCO","CENTRIS","SAP","IQVIA_DDD","ONEKEY","DT_340b","DEA","HUB_CALLBACK","IQVIA_RAWDEA","IQVIA_PDRP","ENGAGE","GRV","ICUE","KOL_OneView","COV","ENGAGE 1.0","GRV","IQVIA_RX","MILLIMAN_MCO","ICUE","KOL_OneView","SHS_RX","MMIT","INTEGRICHAIN_TRADE_PARTNER","INTEGRICHAIN_SHIP_TO","EMDS_VVA","APUS_VVA","BMS (<NRP> user (PROD)cdwExternal OAuth2CDW-MDM_client["CREATE_HCO","UPDATE_HCO","GET_ENTITIES","USAGE_FLAG_UPDATE"]["US"]["SHS","SHS_MCO","IQVIA_MCO","CENTRIS","SAP","IQVIA_DDD","ONEKEY","DT_340b","DEA","HUB_CALLBACK","IQVIA_RAWDEA","IQVIA_PDRP","ENGAGE","GRV","ICUE","KOL_OneView","COV","ENGAGE 1.0","GRV","IQVIA_RX","MILLIMAN_MCO","ICUE","KOL_OneView","SHS_RX","MMIT","INTEGRICHAIN_TRADE_PARTNER","INTEGRICHAIN_SHIP_TO","EMDS_VVA","APUS_VVA","BMS (NAV)","EXAS","POLARIS_DM","ANRO_DM","ASHVVA","MM_C1st","KFIS","DVA","Reltio","DDDV","IQVIA_DDD_ZIP","867","MYOV_VVA","COMPANY_ACCTS"]FlowsFlowDescriptionSnowflake: Events publish flowEvents are published to snowflakeSnowflake: Base tables refreshTable is refreshed (<DATE_TIME> in prod) with those eventsSnowflake MDMTable are read by an <ORGANIZATION> process implemented by <ORGANIZATION> used flag on addressesCDW docs: Best Address Data flowClient software <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> (GBLUS)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsNayan, <PERSON><EMAIL_ADDRESS>><ORGANIZATION>, <ORGANIZATION><EMAIL_ADDRESS>>ACLsNameGateway User NameAuthenticationPing <ORGANIZATION> UserRolesCountriesSourcesTopicBatchesETL batch load usermdmetl_nprodOAuth2SVC-MDMETL_client- "CREATE_HCP"- "CREATE_HCO"- "CREATE_MCO"- "CREATE_BATCH"- "GET_BATCH"- "MANAGE_STAGE"- "CLEAR_CACHE_BATCH"US- "SHS"- "SHS_MCO"- "IQVIA_MCO"- "CENTRIS"- "ENGAGE 1.0"- "GRV"- "IQVIA_DDD"- "SAP"- "ONEKEY"- "IQVIA_RAWDEA"- "IQVIA_PDRP"- "COV"- "IQVIA_RX"- "MILLIMAN_MCO"- "ICUE"- "KOL_OneView"- "SHS_RX"- "MMIT"- "INTEGRICHAIN"N/Abatches: "Symphony": - "<ORGANIZATION>" "Centris": - "<ORGANIZATION>" "IQVIA_DDD": - "HCOLoading" - "RelationLoading" "SAP": - "HCOLoading" "<ORGANIZATION>": - "<NRP>" - "HCOLoading" - "RelationLoading" "IQVIA_RAWDEA": - "<ORGANIZATION>" "IQVIA_PDRP": - "<ORGANIZATION>" "PFZ_CUSTID_SYNC": - "COMPANYCustIDLoading" "OneView": - "HCOLoading" "HCPM": - "<ORGANIZATION>" "SHS_MCO": - "MCOLoading" - "RelationLoading" "IQVIA_MCO": - "MCOLoading" - "RelationLoading" "<NRP>": - "<ORGANIZATION>" "MILLIMAN_MCO": - "MCOLoading" - "RelationLoading" "VEEVA": - "<NRP>" - "HCOLoading" - "MCOLoading" - "RelationLoading" "SHS_RX": - "<ORGANIZATION>" "MMIT": - "MCOLoading" - "RelationLoading" "DDD_SAP": - "RelationLoading" "INTEGRICHAIN": - "HCOLoading"<URL>L Get/Resubmit Errorsmdmetl_nprodOAuth2SVC-MDMETL_client- "GET_ERRORS"- "RESUBMIT_ERRORS"USALLN/AN/AFlowsBatch Controller: creating and updating batch instance - the user invokes the batch-service <ORGANIZATION> to create a new batch instanceBulk Service: loading bulk data - the user invokes the batch-service <ORGANIZATION> to load the dataAfter load, the processing starts - ETL BatchesClient software <ORGANIZATION> data loaderSOPsAdding a New BatchCache Address ID Clear (Remove Duplicates) ProcessCache Address ID Update ProcessManager: Resubmitting Failed RecordsSOP in <ORGANIZATION> ClearUpdating ETL Dictionaries in ConsulUpdating Dictionary"
|
||
},
|
||
{
|
||
"title": "KOL_ONEVIEW (GBLUS)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsBrahma, Bagmita <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <ORGANIZATION><EMAIL_ADDRESS>>DL DL-iMed_L3@<URL>ACLsNameGateway User NameAuthenticationPing Federate UserRolesCountriesSourcesTopicKOL_OneView userkol_oneviewOAuth2KOL-MDM-PFORCEOL_client- "CREATE_HCP"- "UPDATE_HCP"- "CREATE_HCO"- "UPDATE_HCO"- "GET_ENTITIES"- "LOOKUPS"USKOL_OneViewN/AKOL_OneView TOPICN/AKafka JassN/A"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'KOL_ONEVIEW')<ORGANIZATION> <URL>.headers.eventType in ['full'<ORGANIZATION> ['<ORGANIZATION> <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"USKOL_OneViewprod-out-full-koloneview-allFlowsCreate/Update <ORGANIZATION>/MCOGet <ORGANIZATION> software <PERSON> connector"
|
||
},
|
||
{
|
||
"title": "<LOCATION> (<ORGANIZATION>)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsBablani, <PERSON><EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <NRP> <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <PERSON> <<EMAIL_ADDRESS>>ACLsNameGateway User NameAuthenticationPing Federate UserRolesCountriesSourcesTopicGRV UsergrvOAuth2GRV-MDM_client- "GET_ENTITIES"- "LOOKUPS"- "VALIDATE_HCP"- "CREATE_HCP"- "UPDATE_HCP"US- "GRV"N/AGRV-AIS-MDM Usergrv_aisOAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●- "GET_ENTITIES"- "LOOKUPS"- "VALIDATE_HCP"- "CREATE_HCP"- "UPDATE_HCP"- "CREATE_HCO"- "UPDATE_HCO"US- "GRV"- "CENTRIS"- "ENGAGE"N/AGRV TOPICN/AKafka JassN/<ORGANIZATION> in ['full_not_trimmed'] && ['GRV'].intersect(<URL>ource)<ORGANIZATION> <URL>.headers.objectType in ['<ORGANIZATION> in ['HCP_CHANGED']"USGRVprod-out-full-grv-allFlowsCreate/Update <ORGANIZATION>/MCOGet <ORGANIZATION> software <NRP> connector"
|
||
},
|
||
{
|
||
"title": "<PERSON> (GBLUS)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<PERSON>",
|
||
"content": "<URL><PERSON>.<PERSON><URL>anley@<URL>ACLsNameGateway User NameAuthenticationPing <PERSON> UsergraceOAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●- "GET_ENTITIES"- "LOOKUPS"US- "GRV"- "CENTRIS"- "ENGAGE"N/<ORGANIZATION> software <ORGANIZATION> - read only"
|
||
},
|
||
{
|
||
"title": "KOL_ONEVIEW (<ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsDL-<ORGANIZATION>-INF_Support_PforceOL@<URL>Solanki, <PERSON> (<LOCATION> - Mumbai) <<EMAIL_ADDRESS>><PERSON>, Maanasa (<LOCATION> - Hyderabad) <<EMAIL_ADDRESS>>ACLsEMEANameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicKOL_ONEVIEW user (NPROD)kol_oneviewExternal OAuth2KOL-MDM-PFORCEOL_clientKOL-MDM_client["CREATE_HCP","UPDATE_HCP","CREATE_HCO","UPDATE_HCO","GET_ENTITIES","LOOKUPS"]["AD","AE","AO","AR","AU","BF","BH","BI","BJ","BL","BO","BR","BW","BZ","CA","CD","CF","CG","CH","CI","CL","CM","CN","CO","CP","CR","CV","DE","DJ","DK","DO","DZ","EC","EG","ES","ET","FI","FO","FR","GA","GB","GF","GH","GL","GM","GN","GP","GQ","GT","GW","HN","IE","IL","IN","IQ","IR","IT","JO","JP","KE","KW","LB","LR","LS","LY","MA","MC","MF","MG","ML","MQ","MR","MU","MW","MX","NA","NC","NG","NI","NZ","OM","PA","PE","PF","PL","PM","PT","PY","QA","RE","RU","RW","SA","SD","SE","SL","SM","SN","SV","SY","SZ","TD","TF","TG","TN","TR","TZ","UG","UY","VE","WF","YE","YT","ZA","ZM","ZW"]GB- "KOL_OneView"KOL_ONEVIEW user (PROD)kol_oneviewExternal OAuth2KOL-MDM-PFORCEOL_clientKOL-MDM_client["CREATE_HCP","UPDATE_HCP","CREATE_HCO","UPDATE_HCO","GET_ENTITIES","LOOKUPS"]["AD","AE","AO","AR","AU","BF","BH","BI","BJ","BL","BO","BR","BW","BZ","CA","CD","CF","CG","CH","CI","CL","CM","CN","CO","CP","CR","CV","DE","DJ","DK","DO","DZ","EC","EG","ES","ET","FO","FR","GA","GB","GF","GH","GL","GM","GN","GP","GQ","GT","GW","HN","IE","IL","IN","IQ","IR","IT","JO","JP","KE","KW","LB","LR","LS","LY","MA","MC","MF","MG","ML","MQ","MR","MU","MW","MX","NA","NC","NG","NI","NZ","OM","PA","PE","PF","PL","PM","PT","PY","QA","RE","RU","RW","SA","SD","SL","SM","SN","SV","SY","SZ","TD","TF","TG","TN","TR","TZ","UG","UY","VE","WF","YE","YT","ZA","ZM","ZW"]GB- "KOL_OneView"AMERNameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicKOL_ONEVIEW user (NPROD)kol_oneviewExternal OAuth2KOL-MDM-PFORCEOL_client["CREATE_HCP","UPDATE_HCP","CREATE_HCO","UPDATE_HCO","GET_ENTITIES","LOOKUPS"]["AR","BR","CA","MX","UY"]CA- "KOL_OneView"KOL_ONEVIEW user (PROD)kol_oneviewExternal OAuth2KOL-MDM-PFORCEOL_client["CREATE_HCP","UPDATE_HCP","CREATE_HCO","UPDATE_HCO","GET_ENTITIES","LOOKUPS"]["AR","BR","CA","MX","UY"]CA- "KOL_OneView"APACNameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicKOL_ONEVIEW user (NPROD)kol_oneviewExternal OAuth2KOL-MDM-PFORCEOL_client["CREATE_HCP","UPDATE_HCP","CREATE_HCO","UPDATE_HCO","GET_ENTITIES","LOOKUPS"]["AU","IN","KR","NZ","JP"]JP- "KOL_OneView"KOL_ONEVIEW user (PROD)kol_oneviewExternal OAuth2KOL-MDM-PFORCEOL_client["CREATE_HCP","UPDATE_HCP","CREATE_HCO","UPDATE_HCO","GET_ENTITIES","LOOKUPS"]["AU","IN","KR","NZ","JP"]JP- "KOL_OneView"KafkaEMEAEnvNameKafka <LOCATION> routing ruleTopicPartitionsemea-prodKol_oneviewkol_oneview"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'KOL_ONEVIEW') <ORGANIZATION> <URL>.headers.eventType in ['full'] && ['<ORGANIZATION>) && <URL>.headers.objectType in ['<ORGANIZATION>', '<ORGANIZATION>'] && <URL>untry in ['ie', 'gb']"-${env}-out-full-koloneview-all3emea-devKol_oneviewkol_oneview-${env}-out-full-koloneview-all3emea-qaKol_oneviewkol_oneview-${env}-out-full-koloneview-all3emea-stageKol_oneviewkol_oneview-${env}-out-full-koloneview-all3AMEREnvNameKafka <ORGANIZATION> routing ruleTopicPartitionsgblus-prodKol_oneviewkol_oneview"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'KOL_OneView') && <URL>.headers.eventType in ['full'<ORGANIZATION> ['<ORGANIZATION> <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"-${env}-out-full-koloneview-all3gblus-devKol_oneviewkol_oneview-${env}-out-full-koloneview-all3gblus-qaKol_oneviewkol_oneview-${env}-out-full-koloneview-all3gblus-stageKol_oneviewkol_oneview-${env}-out-full-koloneview-all3"
|
||
},
|
||
{
|
||
"title": "<LOCATION> (<ORGANIZATION>, <ORGANIZATION>)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsTODOGatewayEMEANameGateway User NameAuthenticationPing <PERSON> UserRolesCountriesDefaultCountrySourcesTopicGRV user (NPROD)grvExternal OAuth2GRV-MDM_client- GET_ENTITIES- LOOKUPS- VALIDATE_HCP["CA"]GBGRVN/AGRV user (PROD)grvExternal OAuth2GRV-MDM_client- GET_ENTITIES- LOOKUPS- VALIDATE_HCP["CA"]GBGRVN/AAMER(manager)NameGateway User NameAuthenticationPing <PERSON> UserRolesCountriesDefaultCountrySourcesTopicGRV user (NPROD)grvExternal OAuth2GRV-MDM_client["GET_ENTITIES","LOOKUPS","VALIDATE_HCP","CREATE_HCP","UPDATE_HCP"]["US"]GRVN/AGRV user (PROD)grvExternal OAuth2GRV-MDM_client["GET_ENTITIES","LOOKUPS","VALIDATE_HCP","CREATE_HCP","UPDATE_HCP"]["US"]GRVN/AKafkaAMEREnvNameKafka UsernameConsumergroupPublisher routing ruleTopicPartitionsgblus-prodGrvgrv"(<URL>conciliationTarget==null) && <URL>.headers.eventType in ['full_not_trimmed'] && ['GRV'].intersect(<URL>ource) && <URL>.headers.objectType in ['<ORGANIZATION> in ['HCP_CHANGED']"- ${env}-out-full-grv-allgblus-devGrvgrv- ${local_env}-out-full-grv-allgblus-qaGrvgrv- ${local_env}-out-full-grv-allgblus-stageGrv grv- ${local_env}-out-full-grv-all"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> (Global, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "<PERSON>, <PERSON> (<EMAIL_ADDRESS>)GatewayEMEANameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicGANT <ORGANIZATION> OAuth2GANT-MDM_client- "GET_ENTITIES"- "LOOKUPS"["AD", "<ORGANIZATION>", "AI", "AM", "AN","AR", "AT", "AU", "AW", "BA","BB", "BE", "BG", "BL", "BM","BO", "<ORGANIZATION>", "BR", "BS", "BY","BZ", "CA", "CH", "CL", "CN","CO", "CP", "CR", "CW", "CY","CZ", "DE", "DK", "DO", "DZ","EC", "EE", "EG", "ES", "FI","FO", "FR", "<LOCATION>", "GF", "GP","GR", "GT", "<ORGANIZATION>", "HK", "HN","HR", "<PERSON>", "ID", "IE", "IL","IN", "IT", "JM", "JP", "KR","KY", "KZ", "LC", "LT", "LU","LV", "MA", "MC", "MF", "MQ","MU", "MX", "MY", "<LOCATION>", "NI","NL", "NO", "<LOCATION>", "PA", "PE","PF", "PH", "PK", "PL", "PM","PN", "PT", "PY", "RE", "RO","RS", "RU", "<ORGANIZATION>", "SE", "SG","SI", "SK", "<ORGANIZATION>", "<ORGANIZATION>", "<LOCATION>", "<LOCATION>", "TR", "TT", "TW","UA", "UY", "VE", "VG", "VN","WF", "<LOCATION>", "YT", "ZA"]GBGRVN/AAMERAction RequiredUser configurationPingFederate UsernameGANT-MDM_clientCountriesBrazilTenantAMEREnvironments (PROD/NON-PROD/ALL)ALLAPI Servicesext-api-gw-amer-stage/entities, ext-api-gw-amer-stage/<URL><NRP>,<ORGANIZATION>,<PERSON> we are fetching hcp data from <ORGANIZATION>, Earlier It was <PERSON> instanceNameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicGANT <ORGANIZATION> OAuth2GANT-MDM_client- "GET_ENTITIES"- "LOOKUPS"["BR"]BR- ONEKEY- CRMMI- MAPPN/AAPACAction RequiredUser configurationPingFederate UsernameGANT-MDM_clientCountriesIndiaTenantAPACEnvironments (PROD/NON-PROD/ALL)ALLAPI Servicesext-api-gw-apac-stage/entities, ext-api-gw-apac-stage/<URL><NRP>,<ORGANIZATION>,<PERSON> we are fetching hcp data from <ORGANIZATION>, Earlier It was <PERSON> instanceNameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicGANT <ORGANIZATION> OAuth2GANT-MDM_client- "GET_ENTITIES"- "LOOKUPS"["IN"]IN- ONEKEY- CRMMI- MAPPN/A"
|
||
},
|
||
{
|
||
"title": "Medic (<ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsDL-F&BO-MEDIC@<URL>GatewayEMEANameGateway User NameAuthenticationPing <PERSON> user (NPROD)medicExternal OAuth2MEDIC-MDM_client●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AR","BR","CO","FR","GR","IE","IN","IT","NZ"]IE["MEDIC"]Medic user (PROD)medicExternal OAuth2MEDIC-MDM_client●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AR","BR","CO","FR","GR","IE","IN","IT","NZ"]IE["MEDIC"]AMERNameGateway User NameAuthenticationPing <ORGANIZATION> user (NPROD)medicExternal <PERSON>●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●, ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["<PERSON> (NAV)","CENTRIS","CICR","CN3RDPARTY","COV","CRMMI","DDDV","DEA","DT_340b","DVA","EMDS_VVA","ENGAGE 1.0","ENGAGE","EVR","EXAS","FACE","GCP","GRV","HUB_CALLBACK","HUB_Callback","ICUE","INTEGRICHAIN_SHIP_TO","INTEGRICHAIN_TRADE_PARTNER","IQVIA_DDD","IQVIA_DDD_ZIP","IQVIA_MCO","IQVIA_PDRP","IQVIA_RAWDEA","IQVIA_RX","JPDWH","KFIS","KOL_OneView","LocalMDM","MAPP","MDE","MEDIC","MILLIMAN_MCO","MMIT","MM_C1st","MYOV_VVA","NUCLEUS","OK","ONEKEY","COMPANY_ACCTS","PFORCERX","POLARIS_DM","PTRS","Reltio","ReltioCleanser","Rx_Audit","SAP","SHS","SHS_MCO","SHS_RX"]Medic user (PROD)medicExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AR","BR","CO","FR","GR","IE","IN","IT","NZ","US"]["867","ANRO_DM","APUS_VVA","ASHVVA","BMS (NAV)","CENTRIS","CICR","CN3RDPARTY","COV","CRMMI","DDDV","DEA","DT_340b","DVA","EMDS_VVA","ENGAGE 1.0","ENGAGE","EVR","EXAS","FACE","GCP","GRV","HUB_CALLBACK","HUB_Callback","ICUE","INTEGRICHAIN_SHIP_TO","INTEGRICHAIN_TRADE_PARTNER","IQVIA_DDD","IQVIA_DDD_ZIP","IQVIA_MCO","IQVIA_PDRP","IQVIA_RAWDEA","IQVIA_RX","JPDWH","KFIS","KOL_OneView","LocalMDM","MAPP","MDE","MEDIC","MILLIMAN_MCO","MMIT","MM_C1st","MYOV_VVA","NUCLEUS","OK","ONEKEY","COMPANY_ACCTS","PFORCERX","POLARIS_DM","PTRS","Reltio","ReltioCleanser","Rx_Audit","SAP","SHS","SHS_MCO","SHS_RX"]APACNameGateway User NameAuthenticationPing <PERSON> user (NPROD)medicExternal <PERSON>●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AR","BR","CO","FR","GR","IE","IN","IT","NZ"]IN["MEDIC"]Medic user (PROD)medicExternal OAuth2MEDIC-MDM_client●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AR","BR","CO","FR","GR","IE","IN","IT","NZ"]IN["MEDIC"]"
|
||
},
|
||
{
|
||
"title": "PTRS (<ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "RequirementsEnvPublisher routing ruleTopicemea-prod(ptrs-eu)"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_RECONCILIATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['fr', 'gf', 'pf', 'gp', 'mq', 'yt', '<LOCATION>', 're', 'bl', 'mf', 'wf', 'pm', 'tf', 'br', 'mx', 'id', 'pt'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"01/Mar/23 4:14 <DATE_TIME>] Shanbhag, BhushanOkay in that case we want <LOCATION> market's events to come from emea-prod-out-full-ptrs-global2 topic only. ${env}-out-full-ptrs-euemea prod and nprodsAdding MC and <ORGANIZATION> to out-full-ptrs-eu15/05/2023Sagar: Hi <PERSON>,Can you please add below counties for <LOCATION> to country configuration list for <ORGANIZATION> (Prod, Stage QA & Dev)1. Monaco2. Andorra\n MR-6236\n -\n Getting issue details...\n STATUS\n ${env}-out-full-ptrs-euContactsAPI: <EMAIL_ADDRESS>;<URL>unKumar@<URL>Kafka: <URL>dala@<URL>GatewayEMEANameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicPTRS user (NPROD)ptrsExternal OAuth2PTRS-MDM_client["CREATE_HCO","CREATE_HCP","GET_ENTITIES","LOOKUPS"]["AG","AI","AN","AR","AW","BB","BL","BM","BO","BR","BS","BZ","CL","CO","CR","CW","DO","EC","FR","GF","GP","GT","GY","HN","ID","IL","JM","KY","LC","MF","MQ","MU","MX","NC","NI","PA","PE","PF","PH","PM","PN","PT","PY","RE","SV","SX","TF","TR","TT","UY","VE","VG","WF","YT"]["PTRS"]PTRS user (PROD)ptrsExternal OAuth2PTRS-MDM_client["CREATE_HCO","CREATE_HCP","GET_ENTITIES","LOOKUPS"]["AG","AI","AN","AR","AW","BB","BL","BM","BO","BR","BS","BZ","CL","CO","CR","CW","DO","EC","FR","GF","GP","GT","GY","HN","ID","IL","JM","KY","LC","MF","MQ","MU","MX","NC","NI","PA","PE","PF","PH","PM","PN","PT","PY","RE","SV","SX","TF","TR","TT","UY","VE","VG","WF","YT"]["PTRS"]AMER(manager)NameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicPTRS user (NPROD)ptrsExternal OAuth2PTRS-MDM_client["CREATE_HCO","CREATE_HCP","GET_ENTITIES","LOOKUPS"]["MX","BR"]["PTRS"]PTRS user (PROD)ptrsExternal OAuth2PTRS-MDM_client["CREATE_HCO","CREATE_HCP","GET_ENTITIES","LOOKUPS"]["MX","BR"]["PTRS"]APAC(manager)NameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicPTRS user (NPROD)ptrsExternal OAuth2PTRS_RELTIO_ClientPTRS-MDM_client["CREATE_HCO","CREATE_HCP","GET_ENTITIES"]["ID","JP","PH"]["VOC","PTRS"]PTRS user (PROD)ptrsExternal OAuth2PTRS_RELTIO_ClientPTRS-MDM_client["CREATE_HCO","CREATE_HCP","GET_ENTITIES"]["JP"]["VOC","PTRS"]KafkaEMEAEnvNameKafka <LOCATION> routing ruleTopicPartitionsemea-prod(ptrs-eu)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_RECONCILIATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['fr', 'gf', 'pf', 'gp', 'mq', 'yt', '<LOCATION>', 're', 'bl', 'mf', 'wf', 'pm', 'tf', 'br', 'mx', 'id', 'pt', 'ad', 'mc'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-eu3emea-prod (ptrs-global2)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_GLOBAL2_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['tr'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-global23emea-dev (ptrs-global2)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_GLOBAL2_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['tr'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-global23emea-qa (ptrs-eu)Ptrsptrsemea-dev-ptrs-eu"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_EU_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['fr', 'gf', 'pf', 'gp', 'mq', 'yt', '<LOCATION>', 're', 'bl', 'mf', 'wf', 'pm', 'tf'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-eu3emea-qa (ptrs-global2)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_GLOBAL2_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['tr'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-global23emea-stage (ptrs-eu)Ptrsptrsemea-stage-ptrs-eu"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_EU_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['fr', 'gf', 'pf', 'gp', 'mq', 'yt', '<LOCATION>', 're', 'bl', 'mf', 'wf', 'pm', 'tf', 'pt', 'id', 'tr'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-eu3emea-stage (ptrs-global2)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_GLOBAL2_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['tr'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-global23AMEREnvNameKafka UsernameConsumergroupPublisher routing ruleTopicPartitionsamer-prod(ptrs-amer)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_AMER_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['mx', 'br'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-amer3amer-dev (ptrs-amer)Ptrsptrsamer-dev-ptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_AMER_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['mx', 'br'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-amer3amer-qa (ptrs-amer)Ptrsptrsamer-qa-ptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_AMER_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['mx', 'br'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-amer3amer-stage (ptrs-amer)Ptrsptrsamer-stage-ptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_AMER_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['mx', 'br'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-amer3APACEnvNameKafka <LOCATION> routing ruleTopicPartitionsapac-dev (ptrs-apac)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == '<ORGANIZATION>') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['pk'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-apacapac-qa (ptrs-apac)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == '<ORGANIZATION>') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['pk'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-apacapac-stage (ptrs-apac)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == '<ORGANIZATION>') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['pk'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-apacGBLEnvNameKafka <ORGANIZATION> routing ruleTopicPartitionsgbl-prodPtrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['co', 'mx', 'br', 'ph'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"- ${env}-out-full-ptrsgbl-prod (ptrs-eu)Ptrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_EU_REGENERATION') <ORGANIZATION> <URL>.headers.eventType in ['full'] && <URL>untry in ['fr', 'gf', 'pf', 'gp', 'mq', 'yt', '<LOCATION>', 're', 'bl', 'mf', 'wf', 'pm', 'tf'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"${env}-out-full-ptrs-eugbl-prod (ptrs-porind)<URL>.headers.eventType in ['full'] && <URL>untry in ['id', 'pt'] && <URL>.headers.objectType in ['<ORGANIZATION>', '<ORGANIZATION>'] && !<URL>ubtype.endsWith('_MATCHES_CHANGED') && (<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_PORIND_REGENERATION')"${env}-out-full-ptrs-porindgbl-devPtrsptrs"<URL>.headers.eventType in ['full'] && <URL>untry in ['co', 'mx', 'br', 'ph', 'cl', 'tr'] && <URL>.headers.objectType in ['<ORGANIZATION>', '<ORGANIZATION>'] && !<URL>ubtype.endsWith('_MATCHES_CHANGED') && (<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_REGENERATION')"- ${env}-out-full-ptrs20gbl-dev (ptrs-eu)Ptrsptrsptrs_nprod"<URL>.headers.eventType in ['full'] && <URL>untry in ['fr', 'gf', 'pf', 'gp', 'mq', 'yt', '<LOCATION>', 're', 'bl', 'mf', 'wf', 'pm', 'tf'] && <URL>.headers.objectType in ['<ORGANIZATION>', '<ORGANIZATION>'] && !<URL>ubtype.endsWith('_MATCHES_CHANGED') && (<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_EU_REGENERATION')"- ${env}-out-full-ptrs-eugbl-dev (ptrs-porind)Ptrsptrs"<URL>.headers.eventType in ['full'] && <URL>untry in ['id', 'pt'] && <URL>.headers.objectType in ['<ORGANIZATION>', '<ORGANIZATION>'] && !<URL>ubtype.endsWith('_MATCHES_CHANGED') && (<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_PORIND_REGENERATION')"- ${env}-out-full-ptrs-porindgbl-qa (ptrs-eu)Ptrsptrs"<URL>.headers.eventType in ['full'] && <URL>untry in ['fr', 'gf', 'pf', 'gp', 'mq', 'yt', '<LOCATION>', 're', 'bl', 'mf', 'wf', 'pm', 'tf'] && <URL>.headers.objectType in ['<ORGANIZATION>', '<ORGANIZATION>'] && (<URL>conciliationTarget==null)"- ${env}-out-full-ptrs-eu20gbl-stagePtrsptrs"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_LATAM') <ORGANIZATION> <URL>.headers.eventType in ['full'] <ORGANIZATION> in ['co', 'mx', 'br', 'ph', 'cl','tr'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"- ${env}-out-full-ptrsgbl-stage (ptrs-eu)Ptrsptrsptrs_nprod"(<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_EU') <ORGANIZATION> <URL>.headers.eventType in ['full'] <ORGANIZATION> in ['fr', 'gf', 'pf', 'gp', 'mq', 'yt', '<LOCATION>', 're', 'bl', 'mf', 'wf', 'pm', 'tf'] && <URL>.headers.objectType in ['<ORGANIZATION>', 'HCO']"- ${env}-out-full-ptrs-eugbl-stage (ptrs-porind)Ptrsptrs"<URL>.headers.eventType in ['full'] && <URL>untry in ['id', 'pt'] && <URL>.headers.objectType in ['<ORGANIZATION>', '<ORGANIZATION>'] && !<URL>ubtype.endsWith('_MATCHES_CHANGED') && (<URL>conciliationTarget==null || <URL>conciliationTarget == 'PTRS_PORIND_REGENERATION')"- ${env}-out-full-ptrs-porind"
|
||
},
|
||
{
|
||
"title": "OneMed (EMEA)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "<EMAIL_ADDRESS>;<URL>alapati@<URL>GatewayEMEANameGateway User NameAuthenticationPing <ORGANIZATION> UserRolesCountriesDefaultCountrySourcesTopicOneMed user (NPROD)onemedExternal OAuth2ONEMED-MDM_client["GET_ENTITIES","LOOKUPS"]["AR","AU","BR","CH","CN","DE","ES","FR","GB","IE","IL","IN","IT","JP","MX","NZ","PL","SA","TR"]IE["CICR","CN3RDPARTY","CRMMI","EVR","FACE","GCP","GRV","KOL_OneView","LocalMDM","MAPP","MDE","OK","Reltio","Rx_Audit"]OneMeduser (PROD)onemedExternal OAuth2ONEMED-MDM_client["GET_ENTITIES","LOOKUPS"]["AR","AU","BR","CH","CN","DE","ES","FR","GB","IE","IL","IN","IT","JP","MX","NZ","PL","SA","TR"]IE["CICR","CN3RDPARTY","CRMMI","EVR","FACE","GCP","GRV","KOL_OneView","LocalMDM","MAPP","MDE","OK","Reltio","Rx_Audit"]"
|
||
},
|
||
{
|
||
"title": "GRACE (<ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsDL-AIS-Mule-Integration-Support@<URL>RequirementsPartial requirementsSent by <ORGANIZATION> neededNeed Plugin Configuration for below usernamesusernameGRACE MAVENS SFDC - DEV - ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● - DevGRACE MAVENS SFDC - STG - ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● - StageGRACE MAVENS SFDC - ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● - ProdcountriesAU,<LOCATION>,IN,<LOCATION>,<ORGANIZATION> (<ORGANIZATION>) and AR, <ORGANIZATION>, <ORGANIZATION> (AMER)tenantAPAC and <ORGANIZATION> (prod/nonprods/all)ALLAPI services exposedHCP <ORGANIZATION>, LookupsSourcesGraceBusiness justificationClient ID used by <ORGANIZATION> application to search <ORGANIZATION> and HCOsGatewayEMEANameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicGRACE usergraceExternal <ORGANIZATION>●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AD","AG","AI","AM","AN","AR","AT","AU","AW","BA","BB","BE","BG","BL","BM","BO","BQ","BR","BS","BY","BZ","CA","CH","CL","CN","CO","CP","CR","CW","CY","CZ","DE","DK","DO","DZ","EC","EE","ES","FI","FO","FR","GB","GD","GF","GL","GP","GR","GT","GY","HK","HN","HR","HU","ID","IE","IL","IN","IT","JM","JP","KR","KY","KZ","LC","LT","LU","LV","MA","MC","MF","MQ","MU","MX","MY","NC","NI","NL","NO","NZ","PA","PE","PF","PH","PK","PL","PM","PN","PT","PY","RE","RO","RS","RU","SA","SE","SG","SI","SK","SR","SV","SX","TF","TH","TN","TR","TT","TW","UA","US","UY","VE","VG","VN","WF","XX","YT","ZA"]GB["NONE"]N/AGRACE UsergraceExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AD","AG","AI","AM","AN","AR","AT","AU","AW","BA","BB","BE","BG","BL","BM","BO","BQ","BR","BS","BY","BZ","CA","CH","CL","CN","CO","CP","CR","CW","CY","CZ","DE","DK","DO","DZ","EC","EE","ES","FI","FO","FR","GB","GD","GF","GL","GP","GR","GT","GY","HK","HN","HR","HU","ID","IE","IL","IN","IT","JM","JP","KR","KY","KZ","LC","LT","LU","LV","MA","MC","MF","MQ","MU","MX","MY","NC","NI","NL","NO","NZ","PA","PE","PF","PH","PK","PL","PM","PN","PT","PY","RE","RO","RS","RU","SA","SE","SG","SI","SK","SR","SV","SX","TF","TH","TN","TR","TT","TW","UA","US","UY","VE","VG","VN","WF","XX","YT"]GB["NONE"]N/AAMERNameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicGRACE usergraceExternal <PERSON> (all)●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["CA","US","AR","UY","MX"]["NONE"]N/<ORGANIZATION> (<PERSON>●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●External OAuth2 (gblus-stage)●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●External OAuth2 (amer-stage)●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●GRACE UsergraceExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AD","AR","AU","BR","CA","DE","ES","FR","GB","GF","GP","IN","IT","JP","KR","MC","MF","MQ","MX","NC","NZ","PF","PM","RE","SA","TR","US","UY"]["NONE"]N/AAPACNameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicGRACE usergraceExternal <PERSON> (all)●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AR","AU","BR","CA","HK","ID","IN","JP","KR","MX","MY","NZ","PH","PK","SG","TH","TW","US","UY","VN"]["NONE"]N/<ORGANIZATION> (<ORGANIZATION> UsergraceExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AD","AR","AU","BR","CA","DE","ES","FR","GB","GF","GP","IN","IT","JP","KR","MC","MF","MQ","MX","NC","NZ","PF","PM","RE","SA","TR","US","UY"]["NONE"]N/A"
|
||
},
|
||
{
|
||
"title": "Snowflake (Global, GBLUS)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "<LOCATION>, <LOCATION> <<EMAIL_ADDRESS>>ACLsNameGateway User NameAuthenticationPing Federate UserRolesCountriesSourcesTopicSnowflake topicSnowflake TopicKafka JAASN/<URL>.headers.eventType in ['full_not_trimmed']<URL>.headers.objectType in ['<ORGANIZATION>', '<ORGANIZATION>', '<ORGANIZATION>', 'RELATIONSHIP']) ||(<URL>.headers.eventType in ['simple'<ORGANIZATION> <URL>.headers.objectType in ['ENTITY'])) <ORGANIZATION>-out-full-snowflake-allFlowsSnowflake participate in two flows:Snowflake: Events publish flowEvent publisher pushes all events regarding entity/relation change to <PERSON> topic that is created for <ORGANIZATION>( {{$env}}-out-full-snowflake-all }} ). Then <PERSON> component pulls those events and loads them to Snowflake table(Flat model).ReconciliationMain goal of reconciliation process is to synchronise Snowflake database with <URL>owflake periodically exports entities and creates csv file with their identifiers and checksums. The file is sent to <ORGANIZATION> from where it is then downloaded in the reconciliation process. This process compares the data in the file with the values stored in <PERSON>.A reconciliation event is created and posted on <PERSON> topic in two cases:the cheksum has changedthere is lack of entity in csv fileClient software <PERSON> is responsible for collecting kafka events and loading them to <ORGANIZATION> database in flat <URL>PsCurrently there are no SOPs for snowflake."
|
||
},
|
||
{
|
||
"title": "Vaccine (GBLUS)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsVajapeyajula, <PERSON><EMAIL_ADDRESS>>BAVISHI, <PERSON> <<EMAIL_ADDRESS>><ORGANIZATION>, <ORGANIZATION><EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>>FlowsFlowDescriptionSnowflake: Events publish flowEvents AUTO_LINK_FOUND and POTENTIAL_LINK_FOUND are published to snowflakeSnowflake: Base tables refreshMATCHES table is refreshed (<DATE_TIME> in prod) with those eventsSnowflake <ORGANIZATION> table are read by an <ORGANIZATION> process implemented by <ORGANIZATION> process creates relations like SAPtoHCOSAffiliations. FlextoDDDAffiliations, FlextoHCOSAffiliations through <ORGANIZATION> created relations, the <ORGANIZATION> callback is triggered and removes LINKS using <ORGANIZATION> callsClient software <ORGANIZATION> clients links/software/description ACLsNameGateway User NameAuthenticationPing Federate UserRolesCountriesSourcesTopicDerivedAffilations Batch Load userderivedaffiliations_loadN/AN/A- "CREATE_RELATION"- "UPDATE_RELATION"- <LOCATION>*"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> (<ORGANIZATION>)",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "ContactsBrahma, Bagmita <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <ORGANIZATION><EMAIL_ADDRESS>><ORGANIZATION> User NameAuthenticationPing <PERSON> user (NPROD)icueExternal OAuth2ICUE-MDM_client["CREATE_HCP","UPDATE_HCP","CREATE_HCO","UPDATE_HCO","CREATE_MCO","UPDATE_MCO","GET_ENTITIES","LOOKUPS"]["US"]["ICUE"]consumer: regex: - "^.*-out-full-icue-all$" - "^.*-out-full-icue-grv-all$"groups: - icue_dev - icue_qa - icue_stage - dev_icue_grv - qa_icue_grv - stage_icue_grvICUE user (PROD)icueExternal OAuth2ICUE-MDM_client["CREATE_HCP","UPDATE_HCP","CREATE_HCO","UPDATE_HCO","CREATE_MCO","UPDATE_MCO","GET_ENTITIES","LOOKUPS"]["US"]["ICUE"]consumer: regex: - "^.*-out-full-icue-all$" - "^.*-out-full-icue-grv-all$"groups: - icue_prod - prod_icue_grvKafkaGBLUS (icue-grv-mule)NameKafka <LOCATION> routing ruleTopicPartitionsicue - DEVicue_nprod"<URL>.headers.eventType in ['full_not_trimmed'] && <URL>.headers.objectType in ['<ORGANIZATION>'] && ['GRV'].intersect(<URL>ource) && !(['ICUE'].intersect(<URL>ource)) && <URL>ubtype in ['HCP_CREATED', 'HCP_CHANGED']"${local_env}-out-full-icue-grv-all"icue - QAicue_nprod${local_env}-out-full-icue-grv-allicue - STAGEicue_nprod${local_env}-out-full-icue-grv-allicue - PRODicuex_prod${env}-out-full-icue-grv-allFlowsCreate/Update <ORGANIZATION>HCO/MCOGet <ORGANIZATION> software <NRP> connector"
|
||
},
|
||
{
|
||
"title": "ESAMPLES (GBLUS)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "<ORGANIZATION>, <NRP> <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>>ACLsNameGateway User NameAuthenticationPing <PERSON>●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●- "GET_ENTITIES"USall_sourcesN/<ORGANIZATION> software <ORGANIZATION> - read only"
|
||
},
|
||
{
|
||
"title": "VEEVA_FIELD (<ORGANIZATION>, <ORGANIZATION>)",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "<ORGANIZATION>, <NRP> <<EMAIL_ADDRESS>><PERSON>, <PERSON> <<EMAIL_ADDRESS>>GatewayEMEANameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicVEEVA_FIELD user (NPROD)veeva_fieldExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AD","AG","AI","AM","AN","AR","AT","AU","AW","BA","BB","BE","BG","BL","BM","BO","BQ","BR","BS","BY","BZ","CA","CH","CL","CN","CO","CP","CR","CW","CY","CZ","DE","DK","DO","DZ","EC","EE","ES","FI","FO","FR","GB","GF","GL","GP","GR","GT","GY","HK","HN","HR","HU","ID","IE","IL","IN","IT","JM","JP","KR","KY","KZ","LC","LT","LU","LV","MA","MC","MF","MQ","MU","MX","MY","NC","NI","NL","NO","NZ","PA","PE","PF","PH","PK","PL","PM","PN","PT","PY","RE","RO","RS","RU","SA","SE","SG","SI","SK","SV","SX","TF","TH","TN","TR","TT","TW","UA","UY","VE","VG","VN","WF","XX","YT"]GB["AHA","AMA","AMPCO","AMS","AOA","BIODOSE","BUPA","CH","CICR","CN3RDPARTY","CRMMI","CRMMI-SUR","CSL","DDD","DEA","DT_340b","ENGAGE","EVR","FACE","GCP","GRV","HCH","HCOS","HMS","HUB_CALLBACK","HUB_Callback","HUB_USAGETAG","IMSDDD","IMSPLAN","JPDWH","KOL_OneView","KOL_OneView","LLOYDS","LocalMDM","MAPP","MDE","MEDIC","NHS","NUCLEUS","OK","ONEKEY","PCMS","PFORCERX","PFORCERX_ID","PFORCERX_ODS","PTRS","RX_AUDIT","Reltio","ReltioCleanser","Rx_Audit","SAP","SYMP","VEEVA","VEEVA_AU","VEEVA_NZ","VEEVA_PHARMACY_AU","XPO"]N/AVEEVA_FIELD user (PROD)veeva_fieldExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["AD","AG","AI","AM","AN","AR","AT","AU","AW","BA","BB","BE","BG","BL","BM","BO","BQ","BR","BS","BY","BZ","CA","CH","CL","CN","CO","CP","CR","CW","CY","CZ","DE","DK","DO","DZ","EC","EE","ES","FI","FO","FR","GB","GF","GL","GP","GR","GT","GY","HK","HN","HR","HU","ID","IE","IL","IN","IT","JM","JP","KR","KY","KZ","LC","LT","LU","LV","MA","MC","MF","MQ","MU","MX","MY","NC","NI","NL","NO","NZ","PA","PE","PF","PH","PK","PL","PM","PN","PT","PY","RE","RO","RS","RU","SA","SE","SG","SI","SK","SV","SX","TF","TH","TN","TR","TT","TW","UA","UY","VE","VG","VN","WF","XX","YT"]GB["AHA","AMA","AMPCO","AMS","AOA","BIODOSE","BUPA","CH","CICR","CN3RDPARTY","CRMMI","CRMMI-SUR","CSL","DDD","DEA","DT_340b","ENGAGE","EVR","FACE","GCP","GRV","HCH","HCOS","HMS","HUB_CALLBACK","HUB_Callback","HUB_USAGETAG","IMSDDD","IMSPLAN","JPDWH","KOL_OneView","LLOYDS","LocalMDM","MAPP","MDE","MEDIC","NHS","NUCLEUS","OK","ONEKEY","PCMS","PFORCERX","PFORCERX_ID","PFORCERX_ODS","PTRS","RX_AUDIT","Reltio","ReltioCleanser","Rx_Audit","SAP","SYMP","VEEVA","VEEVA_AU","VEEVA_NZ","VEEVA_PHARMACY_AU","XPO"]N/AAMERNameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicVEEVA_FIELD user (NPROD)veeva_fieldExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["CA", "US"]["867","ANRO_DM","APUS_VVA","ASHVVA","BMS (NAV)","CENTRIS","CICR","CN3RDPARTY","COV","CRMMI","DDDV","DEA","DT_340b","DVA","EMDS_VVA","ENGAGE 1.0","ENGAGE","EVR","EXAS","FACE","GCP","GRV","HUB_CALLBACK","HUB_Callback","ICUE","INTEGRICHAIN_SHIP_TO","INTEGRICHAIN_TRADE_PARTNER","IQVIA_DDD","IQVIA_DDD_ZIP","IQVIA_MCO","IQVIA_PDRP","IQVIA_RAWDEA","IQVIA_RX","JPDWH","KFIS","KOL_OneView","LocalMDM","MAPP","MDE","MEDIC","MILLIMAN_MCO","MMIT","MM_C1st","MYOV_VVA","NUCLEUS","OK","ONEKEY","COMPANY_ACCTS","PFORCERX","POLARIS_DM","PTRS","Reltio","ReltioCleanser","Rx_Audit","SAP","SHS","SHS_MCO","SHS_RX"]N/AExternal OAuth2(GBLUS-STAGE)55062bae02364c7598bc3ffbfe38e07bVEEVA_FIELD user (PROD)veeva_fieldExternal <PERSON> (ALL)67b77aa7ecf045539237af0dec890e59726b6d341f994412a998a3e32fdec17a["GET_ENTITIES","LOOKUPS"]["CA", "US"]["867","ANRO_DM","APUS_VVA","ASHVVA","BMS (NAV)","CENTRIS","CICR","CN3RDPARTY","COV","CRMMI","DDDV","DEA","DT_340b","DVA","EMDS_VVA","ENGAGE 1.0","ENGAGE","EVR","EXAS","FACE","GCP","GRV","HUB_CALLBACK","HUB_Callback","ICUE","INTEGRICHAIN_SHIP_TO","INTEGRICHAIN_TRADE_PARTNER","IQVIA_DDD","IQVIA_DDD_ZIP","IQVIA_MCO","IQVIA_PDRP","IQVIA_RAWDEA","IQVIA_RX","JPDWH","KFIS","KOL_OneView","LocalMDM","MAPP","MDE","MEDIC","MILLIMAN_MCO","MMIT","MM_C1st","MYOV_VVA","NUCLEUS","OK","ONEKEY","COMPANY_ACCTS","PFORCERX","POLARIS_DM","PTRS","Reltio","ReltioCleanser","Rx_Audit","SAP","SHS","SHS_MCO","SHS_RX"]N/<ORGANIZATION> software <ORGANIZATION> - read only"
|
||
},
|
||
{
|
||
"title": "PFORCEOL (<ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "<ORGANIZATION>, <NRP> <<EMAIL_ADDRESS>><PERSON>, <PERSON> <<EMAIL_ADDRESS>>RequirementsPartial requirementsSent by <NRP> AdhvaryuPforceOL Dev - ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●PforceOL Stage - ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●PforceOL Prod - ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● <ORGANIZATION> RO DK BR IL TR GR NO CA JP MX AT AR RU <LOCATION> <ORGANIZATION> IN <LOCATION> <ORGANIZATION> TH ES CZ LT <ORGANIZATION> <ORGANIZATION> ID <ORGANIZATION> <LOCATION> <PERSON> FI CH SA <ORGANIZATION> BE <ORGANIZATION> IT <ORGANIZATION> <ORGANIZATION> <ORGANIZATION> CL EE HR LV RS <LOCATION> <LOCATION> CN SI FR BG <ORGANIZATION> WA PKNew Requirements - <DATE_TIME> 2024Action neededNeed Access to PFORCEOL - DEV, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> usernameDEV & QA: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●<ORGANIZATION>: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●PROD: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●CountriesAC, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, AR, AT, <LOCATION>, AW, <LOCATION>, BE, <ORGANIZATION>, <ORGANIZATION>, BR, BS, <DATE_TIME>, CA, CH, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, DO, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, FI, <LOCATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <PERSON>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, HN, <ORGANIZATION>, <ORGANIZATION>, IE, <LOCATION>, IN, IT, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <PERSON>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, MY, NI, <ORGANIZATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <LOCATION>, PH, PL, <ORGANIZATION>, QA, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, TR, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, YE, <PERSON>: "Keep the other countries for now"Full list:<ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, AM, AN, AR, AT, <LOCATION>, AW, <NRP>, <LOCATION>, BE, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, BR, BS, BY, <DATE_TIME>, CA, CH, <ORGANIZATION>, <LOCATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, DO, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, FI, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <PERSON>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, HN, HR, <ORGANIZATION>, <PERSON>, ID, IE, <LOCATION>, IN, <ORGANIZATION>, IT, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, LT, <PERSON>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, MY, <LOCATION>, <LOCATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, PF, PH, PK, <LOCATION>, PM, <ORGANIZATION>, <ORGANIZATION>, PY, QA, RE, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, TR, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, <LOCATION>, YE, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, EX-USEnvironmentsDEV, QA, <ORGANIZATION>, <ORGANIZATION> rangeRead access for <ORGANIZATION> and <ORGANIZATION> and <ORGANIZATION> that are configured in OneMed:<LOCATION>, <ORGANIZATION>,OK, PFORCERX_ODS, <ORGANIZATION>, <ORGANIZATION>, LEGACY_SFA_IDL, PTRS, <ORGANIZATION>, iCUE, IQVIA_DDD, DCR_SYNC, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> justificationThese changes are required as part of <ORGANIZATION>. This project is responsible to ensure an improvised system due to which the proposed changes will help the OneMed technical team to build a better solution to search for <ORGANIZATION> data within <ORGANIZATION> system through <ORGANIZATION> integration.Point of contactAnvesh (<EMAIL_ADDRESS>), <PERSON> (<EMAIL_ADDRESS>)Excel sheet with countries: GatewayEMEANameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicPFORCEOL user (NPROD)pforceolExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["NO","AD","AG","AI","AM","AN","AR","AT","AU","AW","BA","BB","BE","BG","BL","BM","BO","BQ","BR","BS","BY","BZ","CA","CH","CL","CN","CO","CP","CR","CW","CY","CZ","DE","DK","DO","DZ","EC","EE","EG","ES","FI","FO","FR","GB","GF","GL","GP","GR","GT","GY","HK","HN","HR","HU","ID","IE","IL","IN","IR","IT","JM","JP","KR","KY","KZ","LC","LT","LU","LV","MA","MC","MF","MQ","MU","MX","MY","NC","NI","NL","false","NZ","PA","PE","PF","PH","PK","PL","PM","PN","PT","PY","RE","RO","RS","RU","SA","SE","SG","SI","SK","SV","SX","TF","TH","TN","TR","TT","TW","UA","UK","US","UY","VE","VG","VN","WA","WF","XX","YT","ZA"]GB["AHA","AMA","AMPCO","AMS","AOA","BIODOSE","BUPA","CH","CICR","CN3RDPARTY","CRMMI","CRMMI-SUR","CSL","DDD","DEA","DT_340b","ENGAGE","EVR","FACE","GCP","GRV","HCH","HCOS","HMS","HUB_CALLBACK","HUB_Callback","HUB_USAGETAG","IMSDDD","IMSPLAN","JPDWH","KOL_OneView","KOL_OneView","LLOYDS","LocalMDM","MAPP","MDE","MEDIC","NHS","NUCLEUS","OK","ONEKEY","PCMS","PFORCERX","PFORCERX_ID","PFORCERX_ODS","PTRS","RX_AUDIT","Reltio","ReltioCleanser","Rx_Audit","SAP","SYMP","VEEVA","VEEVA_AU","VEEVA_NZ","VEEVA_PHARMACY_AU","XPO"]N/APFORCEOL user (PROD)pforceolExternal OAuth2- ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["NO","AD","AG","AI","AM","AN","AR","AT","AU","AW","BA","BB","BE","BG","BL","BM","BO","BQ","BR","BS","BY","BZ","CA","CH","CL","CN","CO","CP","CR","CW","CY","CZ","DE","DK","DO","DZ","EC","EE","EG","ES","FI","FO","FR","GB","GF","GL","GP","GR","GT","GY","HK","HN","HR","HU","ID","IE","IL","IN","IR","IT","JM","JP","KR","KY","KZ","LC","LT","LU","LV","MA","MC","MF","MQ","MU","MX","MY","NC","NI","NL","false","NZ","PA","PE","PF","PH","PK","PL","PM","PN","PT","PY","RE","RO","RS","RU","SA","SE","SG","SI","SK","SV","SX","TF","TH","TN","TR","TT","TW","UA","UK","UY","VE","VG","VN","WA","WF","XX","YT","ZA"]GB["AHA","AMA","AMPCO","AMS","AOA","BIODOSE","BUPA","CH","CICR","CN3RDPARTY","CRMMI","CRMMI-SUR","CSL","DDD","DEA","DT_340b","ENGAGE","EVR","FACE","GCP","GRV","HCH","HCOS","HMS","HUB_CALLBACK","HUB_Callback","HUB_USAGETAG","IMSDDD","IMSPLAN","JPDWH","KOL_OneView","LLOYDS","LocalMDM","MAPP","MDE","MEDIC","NHS","NUCLEUS","OK","ONEKEY","PCMS","PFORCERX","PFORCERX_ID","PFORCERX_ODS","PTRS","RX_AUDIT","Reltio","ReltioCleanser","Rx_Audit","SAP","SYMP","VEEVA","VEEVA_AU","VEEVA_NZ","VEEVA_PHARMACY_AU","XPO"]N/AAMERNameGateway User NameAuthenticationPing Federate UserRolesCountriesDefaultCountrySourcesTopicPFORCEOL user (NPROD)pforceolExternal OAuth2●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●["GET_ENTITIES","LOOKUPS"]["CA", "US"]["867","ANRO_DM","APUS_VVA","ASHVVA","BMS (NAV)","CENTRIS","CICR","CN3RDPARTY","COV","CRMMI","DDDV","DEA","DT_340b","DVA","EMDS_VVA","ENGAGE 1.0","ENGAGE","EVR","EXAS","FACE","GCP","GRV","HUB_CALLBACK","HUB_Callback","ICUE","INTEGRICHAIN_SHIP_TO","INTEGRICHAIN_TRADE_PARTNER","IQVIA_DDD","IQVIA_DDD_ZIP","IQVIA_MCO","IQVIA_PDRP","IQVIA_RAWDEA","IQVIA_RX","JPDWH","KFIS","KOL_OneView","LocalMDM","MAPP","MDE","MEDIC","MILLIMAN_MCO","MMIT","MM_C1st","MYOV_VVA","NUCLEUS","OK","ONEKEY","COMPANY_ACCTS","PFORCERX","POLARIS_DM","PTRS","Reltio","ReltioCleanser","Rx_Audit","SAP","SHS","SHS_MCO","SHS_RX"]N/AExternal OAuth2(GBLUS-STAGE)223ca6b37aef4168afaa35aa2cf39a3ePFORCEOL user (PROD)pforceolExternal OAuth2 (ALL)e678c66c02c64b599b351e0ab02bae9fe6ece8da20284c6987ce3b8564fe9087["GET_ENTITIES","LOOKUPS"]["CA", "US"]["867","ANRO_DM","APUS_VVA","ASHVVA","BMS (NAV)","CENTRIS","CICR","CN3RDPARTY","COV","CRMMI","DDDV","DEA","DT_340b","DVA","EMDS_VVA","ENGAGE 1.0","ENGAGE","EVR","EXAS","FACE","GCP","GRV","HUB_CALLBACK","HUB_Callback","ICUE","INTEGRICHAIN_SHIP_TO","INTEGRICHAIN_TRADE_PARTNER","IQVIA_DDD","IQVIA_DDD_ZIP","IQVIA_MCO","IQVIA_PDRP","IQVIA_RAWDEA","IQVIA_RX","JPDWH","KFIS","KOL_OneView","LocalMDM","MAPP","MDE","MEDIC","MILLIMAN_MCO","MMIT","MM_C1st","MYOV_VVA","NUCLEUS","OK","ONEKEY","COMPANY_ACCTS","PFORCERX","POLARIS_DM","PTRS","Reltio","ReltioCleanser","Rx_Audit","SAP","SHS","SHS_MCO","SHS_RX"]N/<ORGANIZATION> software <ORGANIZATION> - read only"
|
||
},
|
||
{
|
||
"title": "1CKOL (Global)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "Contacts:<PERSON>, <PERSON> <<EMAIL_ADDRESS>>; <PERSON>, <PERSON><EMAIL_ADDRESS>>Old Contacts:Data load support:First Name: IlyaLast Name: EnkovichOffice: ●●●●●●●●●●●●●●●●●●Mob: ●●●●●●●●●●●●●●●●●●Internet: <URL>E-mail: enkovich.i.s@<URL>Backup contact:First Name: SergeyLast Name: PortnovOffice: ●●●●●●●●●●●●●●●●●●Mob: ●●●●●●●●●●●●●●●●●●Internet: <URL>E-mail: portnov.s.a@<URL>Flows1CKOL has one batch process which consumes export files from data warehouse, process this, and loads data to <ORGANIZATION>. This process is base on incremental batch engine and run on <ORGANIZATION> <URL>put filesThe input files are delivered by 1CKOL to <ORGANIZATION> <US_DRIVER_LICENSE> bucketMAPP Review - Europe - 1cKOL - All Documents (<URL>)UATPRODS3 service accountsvc_gbicc_euw1_project_mdm_inbound_1ckol_rw_s3svc_gbicc_euw1_project_mdm_inbound_1ckol_rw_s3S3 Access key IDAKIATCTZXPPJXRNSDOGNAKIATCTZXPPJXRNSDOGNS3 Bucketpfe-baiaes-eu-<US_DRIVER_LICENSE>-nprod-projectpfe-baiaes-eu-<US_DRIVER_LICENSE>-projectS3 <PERSON>/UAT/inbound/KOL/RU/mdm/inbound/KOL/RU/Input data file mask KOL_Extract_Russia_[0-9]+.zipKOL_Extract_Russia_[0-9]+.zipCompressionzipzipFormatFlat files, 1CKOL dedicated format Flat files, 1CKOL dedicated format ExampleKOL_Extract_Russia_<PHONE_NUMBER>.zipKOL_Extract_Russia_<PHONE_NUMBER>.zipSchedulenonenoneAirflow job inc_batch_eu_kol_ru_stage <ORGANIZATION> mapping Data mapping is described in the attached <URL>nfigurationFlow configuration is stored in <ORGANIZATION> configuration repository. For each environment where the flow should be enabled the configuration file inc_batch_eu_kol_ru.yml has to be created in the location related to configured environment: inventory/[env name]/group_vars/gw-airflow-services/ and the batch name "inc_batch_eu_kol_ru" has to be added to "airflow_components" list which is defined in file inventory/[env name]/group_vars/gw-airflow-services/all.yml. Below table prresents the location of inc_batch_jp.yml file for Test, Dev, <LOCATION>, Stage and PROD envs:inc_batch_eu_kol_ruUAT<URL> configuration changes is done by executing the deploy <ORGANIZATION>'s components <URL>PsThere is no particular SOP procedure for this flow. All common SOPs was described in the "Incremental batch flows: SOP" chapter."
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Snowflake+MDM+Data+Mart",
|
||
"content": "The section describes <ORGANIZATION> in <LOCATION>. <ORGANIZATION> contains <ORGANIZATION> data from <ORGANIZATION> tenants published into <ORGANIZATION> via <PERSON>, permissions, warehouses used in <ORGANIZATION> in <LOCATION>: NewMdmSfRoles_231017.xlsx"
|
||
},
|
||
{
|
||
"title": "Connect Guide",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Connect+Guide",
|
||
"content": "How to add a user to the DATA Role: Users accessing snowflake have to create a ticket and add themselves to the DATA role. This will allow the user to view CUSTOMER_SL schema (users access layer to <LOCATION> to <URL> on the TOP: "Group Manager" - <URL> on the "Distribution Lists"Search for the correct group you want to be added. Check the group name here: "List Of Groups With Access To The DataMart" In the search write <ORGANIZATION> Name" for selected <ORGANIZATION><URL> Request AccessClick "Add Myself" and then save Go to "Cart" and click "Submit Request"How to connect to the DB:Go to the Environments <URL>oose the Environments that you want to view:e.g. EMEA - EMEAChoose the <ORGANIZATION> or PROD environmentse.g - EMEA STAGE <ORGANIZATION> this page go to the Snowflake MDM DataMartClick on the DB Urle.g. - <URL>The following page will open:Click "Sign in using COMPANY SSO"Open "New Worksheet"Choose:ROLE: WAREHOUSE: COMM_MDM_DMART_WH - this is based on the "Snowflake MDM DataMart" table - Default warehouse nameDATABASE: COMM_<MARKET>_MDM_DMART_<ENV>_DB - this is based on the "Snowflake MDM DataMart" table - DB NameSCHEMA: <ORGANIZATION> DataMartSince <DATE_TIME> 1.xlsx[Expired <DATE_TIME>] Groups that have access to CUSTOMER_SL schema:Role NameSF InstanceDB <ORGANIZATION> NameCOMM_AMER_MDM_DMART_DEV_DATA_ROLEAMERAMERDEVsfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_DEV_DATA_ROLECOMM_AMER_MDM_DMART_QA_DATA_ROLEAMERAMERQAsfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_QA_DATA_ROLECOMM_AMER_MDM_DMART_STG_DATA_ROLEAMERAMERSTAGEsfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_STG_DATA_ROLECOMM_AMER_MDM_DMART_PROD_DATA_ROLEAMERAMERPRODsfdb_us-east-1_amerprod01_COMM_AMER_MDM_DMART_PROD_DATA_ROLECOMM_MDM_DMART_DEV_DATA_ROLEAMERUSDEVsfdb_us-east-1_amerdev01_COMM_DEV_MDM_DMART_DATA_ROLECOMM_MDM_DMART_QA_DATA_ROLEAMERUSQAsfdb_us-east-1_amerdev01_COMM_QA_MDM_DMART_DATA_ROLECOMM_MDM_DMART_STG_DATA_ROLEAMERUSSTAGEsfdb_us-east-1_amerdev01_COMM_STG_MDM_DMART_DATA_ROLECOMM_MDM_DMART_PROD_DATA_ROLEAMERUSPRODsfdb_us-east-1_amerprod01_COMM_PROD_MDM_DMART_DATA_ROLECOMM_APAC_MDM_DMART_DEV_DATA_ROLEEMEAAPACDEVsfdb_eu-west-1_emeadev01_COMM_APAC_MDM_DMART_DEV_DATA_ROLECOMM_APAC_MDM_DMART_QA_DATA_ROLEEMEAAPACQAsfdb_eu-west-1_emeadev01_COMM_APAC_MDM_DMART_QA_DATA_ROLECOMM_APAC_MDM_DMART_STG_DATA_ROLEEMEAAPACSTAGEsfdb_eu-west-1_emeadev01_COMM_APAC_MDM_DMART_STG_DATA_ROLECOMM_APAC_MDM_DMART_PROD_DATA_ROLEEMEAAPACPRODsfdb_eu-west-1_emeaprod01_COMM_APAC_MDM_DMART_PROD_DATA_ROLECOMM_EMEA_MDM_DMART_DEV_DATA_ROLEEMEAEMEADEVsfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_DEV_DATA_ROLECOMM_EMEA_MDM_DMART_QA_DATA_ROLEEMEAEMEAQAsfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_QA_DATA_ROLECOMM_EMEA_MDM_DMART_STG_DATA_ROLEEMEAEMEASTAGEsfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_STG_DATA_ROLECOMM_EMEA_MDM_DMART_PROD_DATA_ROLEEMEAEMEAPRODsfdb_eu-west-1_emeaprod01_COMM_EMEA_MDM_DMART_PROD_DATA_ROLECOMM_MDM_DMART_DEV_DATA_ROLEEMEAEUDEVsfdb_eu-west-1_emeadev01_COMM_DEV_MDM_DMART_DATA_ROLECOMM_MDM_DMART_QA_DATA_ROLEEMEAEUQAsfdb_eu-west-1_emeadev01_COMM_QA_MDM_DMART_DATA_ROLECOMM_MDM_DMART_STG_DATA_ROLEEMEAEUSTAGEsfdb_eu-west-1_emeadev01_COMM_STG_MDM_DMART_DATA_ROLECOMM_MDM_DMART_PROD_DATA_ROLEEMEAEUPRODsfdb_eu-west-1_emeaprod01_COMM_PROD_MDM_DMART_DATA_ROLECOMM_GBL_MDM_DMART_DEV_DATA_ROLEEMEAGBLDEVsfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_DEV_DATA_ROLECOMM_GBL_MDM_DMART_QA_DATA_ROLEEMEAGBLQAsfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_QA_DATA_ROLECOMM_GBL_MDM_DMART_STG_DATA_ROLEEMEAGBLSTAGEsfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_STG_DATA_ROLECOMM_GBL_MDM_DMART_PROD_DATA_ROLEEMEAGBLPRODsfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PROD_DATA_ROLE"
|
||
},
|
||
{
|
||
"title": "Data model",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Data+model",
|
||
"content": "The data mart contains <ORGANIZATION> data in object & relational data models. The fragment of the model is presented in the picture below. The object data model includes the latest version of Reltio JSON documents representing entities, relationships, lovs, merge-tree. They are loaded into ENTITIES, RELATIONS, LOV_DATA, MERGES, MATCHES tables. They are loading from <ORGANIZATION> using a HUB streaming interface described <URL>e object model is transformed into the relation model by a set of dynamic views using <ORGANIZATION> processing query language. Dynamic views are generated dynamically from the <ORGANIZATION> data model. The regeneration process is maintained in <PERSON> and triggered <DATE_TIME> or on-demand. The generation process starts from root objects like <ORGANIZATION>, <ORGANIZATION>, walks through <LOCATION> tree and generates views with the following rules: for simple attributes like first name, a view column is generated in the current <URL>r nested attributes like addresses, a new view is generated, nested attribute uri and parent key from the parent view become primary key in the new viewfor lookup values like gender the lookup id is generatedModel versionsThere are two versions of <ORGANIZATION> data model maintained in the data mart:<ORGANIZATION> data model - the current model maintained in all regional data marts that consume data from <ORGANIZATION> regional instancesIqivia <ORGANIZATION> data model - legacy model from the first Reltio instance maintained in <ORGANIZATION> regional data mart that consumes data from <ORGANIZATION> (ex-us)Key generation strategyObject model:ObjectsKey <PERSON>, MATCHES MERGESentity_uri, country*Reltio entity unique identifier and countryRELATIONSrelation_uri, country*Reltio relationship unique identifier & countryLOV_DATAid, mdm_region*the concatenation of Reltio LOV name + ':'+ canonical code as id & mdm region * - only in global data martRelational model:<ORGANIZATION> columnsDescriptionroot objects like <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, MERGE_HISTORY, <ORGANIZATION>, country*Reltio entity unique identifier and countryAFFILIATIONSrelation_uri, country*Reltio relationship unique identifier and countrychild views for nested attributes Addresses, Specialties <URL>rent view keys, nested attribute uri, country* parent view keys + nested attribute uri + country * - only in global data martSchemas:<ORGANIZATION> contains the following schemas:Schema nameDescriptionLANDINGSchemas used by HUB ETL processes as stage areaCUSTOMERMain schema containing data <ORGANIZATION> data CUSTOMER_SLAccess schema to CUSTOMER schema dataAES_RS_SLContains views presenting data in <ORGANIZATION> data model"
|
||
},
|
||
{
|
||
"title": "AES_RS_SL",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/AES_RS_SL",
|
||
"content": "The schema contains a set of views that mimic <ORGANIZATION> from <ORGANIZATION>. The views integrate both data models COMPANY and IQIVIA and present data from all countries available in Reltio.Differences from original Redshift martTechnical ids in views keeping nested attributes values are different from <ORGANIZATION> ones. They are based on Reltio attribute uris instead of <ORGANIZATION> checksum generated from attribute <URL>reign keys for code values to be joined with the dictionary table are also generated using a different strategy."
|
||
},
|
||
{
|
||
"title": "CUSTOMER schema",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/CUSTOMER+schema",
|
||
"content": "This is the main schema containing <ORGANIZATION> data in two formats.Object model that represents Reltio JSON format. Data in the format are kept in ENTITIES , RELATIONS, MERGE_TREE tables. Relation model is created as a part of views (standard or materialized) derived from the object model. Most of the views are generated in an automated way based on <ORGANIZATION> configuration. They directly reflect <PERSON> object model. There are two sets of views as there are two models in Reltio: COMPANY and <ORGANIZATION>, Those views can change dynamically as <ORGANIZATION> config is updated.\n\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n"
|
||
},
|
||
{
|
||
"title": "Customer base objects",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Customer+base+objects",
|
||
"content": "ENTITIESKeeps Relto entities objectsColumnTypeDescriptionENTITY_URITEXTReltio entityt uriCOUNTRYTEXTCountryENTITY_TYPETEXTEntity type for example: <ORGANIZATION>, <NRP> flag CREATE_TIMETIMESTAMP_LTZCreate timeUPDATE_TIMETIMESTAMP_LTZUpdate timeOBJECTVARIANTJSON objectLAST_EVENT_TYPETEXTThe last event updated the <LOCATION> objectLAST_EVENT_TIMETIMESTAMP_LTZLast event timePARENTTEXTParent entity uriCHECKSUMNUMBERChecksumCOMPANY_GLOBAL_CUSTOMER_IDTEXTEntity COMPANY Global IdPARENT_COMPANY_GLOBAL_CUSTOMER_ITEXTIn case of lost merge that field store COMPANY Global Id of the winner entity else is emptyHIST_INACTIVE_ENTITIESUsed for history inactive onekey crosswals. Structure is a copy of entities <URL>lumnTypeDescriptionENTITY_URITEXTReltio entityt uriCOUNTRYTEXTCountryENTITY_TYPETEXTEntity type for example: <ORGANIZATION>, <NRP> flag CREATE_TIMETIMESTAMP_LTZCreate timeUPDATE_TIMETIMESTAMP_LTZUpdate timeOBJECTVARIANTJSON objectLAST_EVENT_TYPETEXTThe last event updated the <LOCATION> objectLAST_EVENT_TIMETIMESTAMP_LTZLast event timePARENTTEXTParent entity uriCHECKSUMNUMBERChecksumCOMPANY_GLOBAL_CUSTOMER_IDTEXTEntity COMPANY Global IdPARENT_COMPANY_GLOBAL_CUSTOMER_ITEXTIn case of lost merge that field store COMPANY Global Id of the winner entity else is emptyRELATIONSKeeps <LOCATION> relations objectsColumnTypeDescriptionRELATION_URITEXTReltio relation uriCOUNTRYTEXTCountryRELATION_TYPETEXTRelation typeACTIVEBOOLEANActive flagCREATE_TIMETIMESTAMP_LTZCreate timeUPDATE_TIMETIMESTAMP_LTZUpdate timeSTART_ENTITY_URITEXTSource entity uri END_ENTITY_URITEXTTarget entity uriOBJECTVARIANTJSON object LAST_EVENT_TYPETEXTThe last event type modified the recordLAST_EVENT_TIMETIMESTAMP_LTZLast event timePARENTTEXTnot usedCHECKSUMNUMBERChecksumMATCHESThe table presents active and historical matches found in <ORGANIZATION> for all <URL>lumnTypeDescriptionENTITY_URITEXTReltio entity uriTARGET_ENTITY_URITEXTReltio entity uri to which matches ENTITY_URIMATCH_TYPETEXTMatch typeMATCH_RULE_NAMETEXTMatch rule nameCOUNTRYTEXTCountryLAST_EVENT_TYPETEXTThe last event type modified the recordLAST_EVENT_TIMETIMESTAMP_LTZLast event timeLAST_EVENT_CHECKSUMNUMBERThe last event checksumACTIVEBOOLEANActive flagMATCH_HISTORYThe view shows match history for active and inactive matches enriched by merge data. The merge info is available for matches that were inactivated by the merge action triggered by users or Reltio background processes. ColumnTypeDescriptionENTITY_URITEXTReltio entity uriTARGET_ENTITY_URITEXTReltio entity uri to which matches ENTITY_URIMATCH_TYPETEXTMatch typeMATCH_RULE_NAMETEXTMatch rule nameCOUNTRYTEXTCountryLAST_EVENT_TYPETEXTThe last event type modified the recordLAST_EVENT_TIMETIMESTAMP_LTZLast event timeLAST_EVENT_CHECKSUMNUMBERThe last event checksumACTIVEBOOLEANActive flagMERGEDBOOLEANMerge indicator, the true value indicates that the merge happened for the <URL>RGE_REASONTEXT Merge reason MERGE_USERTEXTReltio user name or process name that executed the mergeMERGE_DATETO_TIMESTAMP_LTZMerge date MERGE_RULETEXTMerge rule that triggered the mergeMERGESThe table presents active merges found in <ORGANIZATION> based on the merge_tree <URL>lumnTypeDescriptionENTITY_URITEXTReltio entity uriLAST_UPDATE_TIMETO_TIMESTAMP_LTZDate of the last update on the selected rowCREATE_TIMETO_TIMESTAMP_LTZCreation date on the selected rowOBJECTVARIANTJSON object MERGE_HISTORYThe view shows merge history for active entities. The merge history view is build based on <ORGANIZATION> export. ColumnTypeDescriptionENTITY_URITEXTReltio entity uriLOSER_ENTITY_URITEXTReltio entity uri for the merge loserMERGE_REASONTEXT Merge reason Merge on the flyThis indicates automatic match rules were able to find matches for a newly added entity. Therefore, the new entity was not created as a separate entity in the platform but was merged into an existing one <URL>rge by crosswalksIf a newly added entity has the same crosswalk as that of an existing entity in the platform, such entities are merged automatically on the fly because the <ORGANIZATION> platform does not allow multiple entities with the same <URL>matic merge by crosswalksSometimes, two entities with the same crosswalk may exist in the platform (simultaneously added entities). In this case, such entities are merged automatically using a special background <URL> merge (Matches found on object creation)This indicates that several entities are grouped into one merge request because all such entities will be merged at the same time to create a single entity in the platform. The reason for a group merge can be an automatic match rule or same crosswalk or <URL>rges found by background merge processThe background match thread (incremental match processor) modifies entities as a result of create/change/remove events and performs a rematch. During the rematch, if some entities match using the automatic match rules, such entities are <URL>rge by handThis is a merge performed by a user through the <ORGANIZATION> or from the <ORGANIZATION> by going through the potential <URL>RGE_RULETEXTMerge rule that triggered the mergeUSERTEXTUser name which executed the mergeMERGE_DATETO_TIMESTAMP_LTZMerge date ENTITY_HISTORYKeeps event history for entities and relationsColumnTypeDescriptionEVENT_KEYTEXTEvent keyEVENT_PARTITIONNUMBERPartition number in KafkaEVENT_OFFSETNUMBEROffset in KafkaEVENT_TOPICTEXTName of the topic in <PERSON> where this event is storedEVENT_TIMETIMESTAMP_LTZTimestamp when the event was generatedEVENT_TYPETEXTEvent typeCOUNTRYTEXTCountryENTITY_URITEXTReltio entity uriCHECKSUMNUMBERChecksumLOV_DATAKeeps LOV objectsColumnTypeDescriptionIDTEXTLOV identifier <NRP> RDM object in <LOCATION> formatCODESColumnTypeDescriptionSOURCETEXTSource MDM system nameCODE_IDTEXTCode id - generated by concatenated LOV name and canonical codeCANONICAL_CODETEXTCanonical codeLOV_NAMETEXTLOV (Dictionary) nameACTIVEBOOLEANActive flagDESCTEXTEnglish descriptionCOUNTRYTEXTCode countryPARENTSTEXTParent code idCODE_TRANSLATIONSRDM code translationsColumnTypeDescriptionSOURCETEXTSource MDM system nameCODE_IDTEXTCode idCANONICAL_CODETEXTCanonical codeLOV_NAMETEXTLOV (Dictionary) nameACTIVEBOOLEANActive flagLANG_CODETEXTLanguage codeLAND_DESCTEXTLanguage descriptionCOUNTRYTEXTCountryCODE_SOURCE_MAPPINGSSource code mappings to canonical codes in <ORGANIZATION> RDMColumnTypeDescriptionSOURCETEXTSource MDM system nameCODE_IDTEXTCode idSOURCE_NAMETEXTSource nameSOURCE_CODETEXTSource codeACTIVEBOOLEANActve flag (true - active, false - inactive)IS_CANONICALBOOLEANIs canonicalCOUNTRYTEXTCountryLAST_MODIFIEDTIMESTAMP_LTZLast modified datePARENTTEXTParent codeENTITY_CROSSWALKSKeeps entity crosswalksColumnTypeDescriptionCROSSWALK_URITEXTCrosswalk uriENTITY_URITEXTEntity uriENTITY_TYPETEXTEntity typeACTIVEBOOLEANActive flagTYPETEXTCrosswalk typeVALUETEXTCrosswalk <ORGANIZATION> tableCREATE_DATETIMESTAMP_NTZCreate dateUPDATE_DATETIMESTAMP_NTZUpdate dateRELTIO_LOAD_DATETIMESTAMP_NTZDate when this crosswalk was loaded to <ORGANIZATION> IdRELATION_CROSSWALKSKeeps relations crosswalksColumnTypeDescriptionCROSSWALK_URITEXTCrosswalk URIRELATION_URITEXTRelation URIRELATION_TYPETEXTRelation typeACTIVEBOOLEANActive flagTYPETEXTCrosswalk typeVALUETEXTCrosswalk <ORGANIZATION> tableCREATE_DATETIMESTAMP_NTZCreate dateUPDATE_DATETIMESTAMP_NTZUpdate dateDELETE_DATETIMESTAMP_NTZDelete dateRELTIO_LOAD_DATETIMESTAMP_NTZDate when this relation was loaded to ReltioATTRIBUTE_SOURCEPresents information about what crosswalk provided the given attribute. The view can be joined with views for nested attributes to get also attribute <URL>lumnTypeDescriptionATTTRIBUTE_URITEXTAttribute URIENTITY_URTEXTEntity URIACTIVEBOOLEANIs entity activeTYPETEXTCrosswalk typeVALUETEXTCrosswalk valueSOURCE_TABLETEXTCrosswalk source tableENTITY_UPDATE_DATESPresents information about updated dates of entities in Reltio MDM or SnowflakeThe view can be used to query updated records in a period of time including root objects like <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, and child objects like IDENTIFIERS, SPECIALTIES, ADDRESSED <URL>lumnTypeDescriptionENTITY_URITEXTEntity URIACTIVEBOOLEANIs entity <ORGANIZATION> of entityCOUNTRYTEXTCountry iso codeMDM_CREATE_TIMETIMESTAMP_LTZEntity create time in ReltioMDM_UPDATE_TIMETIMESAMP_LTZEntity update time in ReltioSF_CREATE_TIMETIMESTAMP_LTZEntity create time in <ORGANIZATION> last update time in SnowflakeLAST_EVENT_TIMETIMESTAMP_LTZLast <PERSON> event timestampCHECKSUMNUMBERChecksumCOMPANY_GLOBAL_CUSTOMER_IDTEXTEntity COMPANY Global IdPARENT_COMPANY_GLOBAL_CUSTOMER_ITEXTIn case of lost merge that field store COMPANY Global Id of the winner entity else is emptyRELATION_UPDATE_DATESPresents information about updated dates of relations <PERSON> or SnowflakeThe view can be used to query all updated entries in a period of time from <ORGANIZATION> and child objects like AFFIL_RELATION_TYPEColumnTypeDescriptionRELATION_URITEXTEntity URIACTIVEBOOLEANIs entity activeRELATION_TYPETEXTType of entityCOUNTRYTEXTCountry iso codeMDM_CREATE_TIMETIMESTAMP_LTZRelation create time in ReltioMDM_UPDATE_TIMETIMESAMP_LTZRelation update time in ReltioSF_CREATE_TIMETIMESTAMP_LTZRelation create time in Snowflake DBSF_UPDATE_TIMETIMESTAMP_LTZRelation last update time in SnowflakeLAST_EVENT_TIMETIMESTAMP_LTZLast <PERSON> event timestampCHECKSUMNUMBERChecksum"
|
||
},
|
||
{
|
||
"title": "Data Materialization Process",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Data+Materialization+Process",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Dynamic views for <ORGANIZATION>",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Dynamic+views++for+IQVIA+MDM+Model",
|
||
"content": "<NRP> care providerReltio URI: configuration/entityTypes/HCPMaterialized: <ORGANIZATION> URILOV NameENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeFIRST_NAMEVARCHARFirst Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/FirstNameLAST_NAMEVARCHARLast Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/MiddleNameNAMEVARCHARNameconfiguration/entityTypes/<ORGANIZATION>/attributes/NamePREFIXVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PrefixLKUP_IMS_PREFIXSUFFIX_NAMEVARCHARGeneration Suffixconfiguration/entityTypes/<ORGANIZATION>/attributes/SuffixNameLKUP_IMS_SUFFIXPREFERRED_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PreferredNameNICKNAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NicknameCOUNTRY_CODEVARCHARCountry Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/CountryLKUP_IMS_COUNTRY_CODEGENDERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GenderLKUP_IMS_GENDERTYPE_CODEVARCHARType codeconfiguration/entityTypes/<ORGANIZATION>/attributes/TypeCodeLKUP_IMS_HCP_CUST_TYPEACCOUNT_TYPEVARCHARAccount Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/AccountTypeSUB_TYPE_CODEVARCHARSub type codeconfiguration/entityTypes/<ORGANIZATION>/attributes/SubTypeCodeLKUP_IMS_HCP_SUBTYPETITLEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TitleLKUP_IMS_PROF_TITLEINITIALSVARCHARInitialsconfiguration/entityTypes/<ORGANIZATION>/attributes/InitialsD_O_BDATEDate of Birthconfiguration/entityTypes/<ORGANIZATION>/attributes/DoBY_O_BVARCHARBirth Yearconfiguration/entityTypes/<ORGANIZATION>/attributes/YoBMAPP_HCP_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MAPPHcpStatusLKUP_MAPP_HCPSTATUSGO_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GOStatusLKUP_GOVOFF_GOSTATUSPIGO_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PIGOStatusLKUP_GOVOFF_PIGOSTATUSNIPPIGO_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NIPPIGOStatusLKUP_GOVOFF_NIPPIGOSTATUSPRIMARY_PIGO_RATIONALEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PrimaryPIGORationaleLKUP_GOVOFF_PIGORATIONALESECONDARY_PIGO_RATIONALEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/SecondaryPIGORationaleLKUP_GOVOFF_PIGORATIONALEPIGOSME_REVIEWVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PIGOSMEReviewLKUP_GOVOFF_PIGOSMEREVIEWGSQ_DATEDATEGSQDateconfiguration/entityTypes/<ORGANIZATION>/attributes/GSQDateMAPP_DO_NOT_USEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MAPPDoNotUseLKUP_GOVOFF_DONOTUSEMAPP_CHANGE_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MAPPChangeDateMAPP_CHANGE_REASONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MAPPChangeReasonIS_EMPLOYEEBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/IsEmployeeVALIDATION_STATUSVARCHARValidation Status of the Customerconfiguration/entityTypes/<ORGANIZATION>/attributes/ValidationStatusLKUP_IMS_VAL_STATUSSOURCE_CHANGE_DATEDATESourceChangeDateconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceChangeDateSOURCE_CHANGE_REASONVARCHARSourceChangeReasonconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceChangeReasonORIGIN_SOURCEVARCHAROriginating <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/OriginSourceOK_VR_TRIGGERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/OK_VR_TriggerLKUP_IMS_SEND_FOR_VALIDATIONBIRTH_CITYVARCHARBirth Cityconfiguration/entityTypes/<ORGANIZATION>/attributes/BirthCityBIRTH_STATEVARCHARBirth Stateconfiguration/entityTypes/<ORGANIZATION>/attributes/BirthStateSTATE_CODEBIRTH_COUNTRYVARCHARBirth Countryconfiguration/entityTypes/<ORGANIZATION>/attributes/BirthCountryCOUNTRY_CDD_O_DDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/DoDY_O_DVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/YoDTAX_IDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TaxIDSSN_LAST4VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/SSNLast4MEVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION> NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/NPIUPINVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/UPINKAISER_PROVIDERBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/KaiserProviderMAJOR_PROFESSIONAL_ACTIVITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MajorProfessionalActivityMPA_CDPRESENT_EMPLOYMENTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PresentEmploymentPE_CDTYPE_OF_PRACTICEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TypeOfPracticeTOP_CDSOLOBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/SoloGROUPBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/GroupADMINISTRATORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/AdministratorRESEARCHBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ResearchCLINICAL_TRIALSBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ClinicalTrialsWEBSITE_URLVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/WebsiteURLIMAGE_LINKSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ImageLinksDOCUMENT_LINKSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DocumentLinksVIDEO_LINKSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/VideoLinksDESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DescriptionCREDENTIALSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/CredentialsCREDFORMER_FIRST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FormerFirstNameFORMER_LAST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FormerLastNameFORMER_MIDDLE_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FormerMiddleNameFORMER_SUFFIX_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FormerSuffixNameSSNVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/SSNPRESUMED_DEADBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PresumedDeadDEA_BUSINESS_ACTIVITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DEABusinessActivitySTATUS_IMSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/StatusIMSLKUP_IMS_STATUSSTATUS_UPDATE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/StatusUpdateDateSTATUS_REASON_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/StatusReasonCodeLKUP_IMS_SRC_DEACTIVE_REASON_CODECOMMENTERSVARCHARCommentersconfiguration/entityTypes/<ORGANIZATION>/attributes/CommentersSOURCE_CREATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceCreationDateSOURCE_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceNameSUB_SOURCE_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/SubSourceNameEXCLUDE_FROM_MATCHVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ExcludeFromMatchPROVIDER_IDENTIFIER_TYPEVARCHARProvider Identifier Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/ProviderIdentifierTypeLKUP_IMS_PROVIDER_IDENTIFIER_TYPECATEGORYVARCHARCategory Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/CategoryLKUP_IMS_HCP_CATEGORYDEGREE_CODEVARCHARDegree Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/DegreeCodeLKUP_IMS_DEGREESALUTATION_NAMEVARCHARSalutation Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/SalutationNameIS_BLACK_LISTEDBOOLEANIndicates to Blacklist the profileconfiguration/entityTypes/<ORGANIZATION>/attributes/IsBlackListedTRAINING_HOSPITALVARCHARTraining <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/TrainingHospitalACRONYM_NAMEVARCHARAcronymNameconfiguration/entityTypes/<ORGANIZATION>/attributes/AcronymNameFIRST_SET_DATEDATEDate of <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/CreateDateUPDATE_DATEDATEDate of <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/UpdateDateCHECK_DATEDATEDate of <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/CheckDateSTATE_CODEVARCHARSituation of <ORGANIZATION> Active, Inactive, Retired)configuration/entityTypes/<ORGANIZATION>/attributes/StateCodeLKUP_IMS_PROFILE_STATESTATE_DATEDATEDate when state of the record was last <URL>nfiguration/entityTypes/HCP/attributes/StateDateVALIDATION_CHANGE_REASONVARCHARReason for Validation Status changeconfiguration/entityTypes/<ORGANIZATION>/attributes/ValidationChangeReasonLKUP_IMS_VAL_STATUS_CHANGE_REASONVALIDATION_CHANGE_DATEDATEDate of Validation changeconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION> whether sales reps need to make an appointment to see the <URL>nfiguration/entityTypes/HCP/attributes/AppointmentRequiredNHS_STATUSVARCHARNational Health System Statusconfiguration/entityTypes/<ORGANIZATION>/attributes/NHSStatusLKUP_IMS_SECTOR_OF_CARENUM_OF_PATIENTSVARCHARNumber of attached patientsconfiguration/entityTypes/<ORGANIZATION>/attributes/NumOfPatientsPRACTICE_SIZEVARCHARPractice Sizeconfiguration/entityTypes/<ORGANIZATION>/attributes/PracticeSizePATIENTS_X_DAYVARCHARPatients Per Dayconfiguration/entityTypes/<ORGANIZATION>/attributes/PatientsXDayPREFERRED_LANGUAGEVARCHARPreferred Spoken Languageconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/entityTypes/<ORGANIZATION>/attributes/PoliticalAffiliationLKUP_IMS_POL_AFFILPRESCRIBING_LEVELVARCHARPrescribing Levelconfiguration/entityTypes/<ORGANIZATION>/attributes/PrescribingLevelLKUP_IMS_PRES_LEVELEXTERNAL_RATINGVARCHARExternal Ratingconfiguration/entityTypes/<ORGANIZATION>/attributes/ExternalRatingTARGETING_CLASSIFICATIONVARCHARTargeting Classificationconfiguration/entityTypes/<ORGANIZATION>/attributes/TargetingClassificationKOL_TITLEVARCHARKey Opinion Leader Titleconfiguration/entityTypes/<ORGANIZATION>/attributes/KOLTitleSAMPLING_STATUSVARCHARSampling Status of HCPconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/AdministrativeNamePROFESSIONAL_DESIGNATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ProfessionalDesignationLKUP_IMS_PROF_DESIGNATIONEXTERNAL_INFORMATION_URLVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ExternalInformationURLMATCH_STATUS_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchStatusCodeLKUP_IMS_MATCH_STATUS_CODESUBSCRIPTION_FLAG1BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag1SUBSCRIPTION_FLAG2BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag2SUBSCRIPTION_FLAG3BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag3SUBSCRIPTION_FLAG4BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag4SUBSCRIPTION_FLAG5BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag5SUBSCRIPTION_FLAG6BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag6SUBSCRIPTION_FLAG7BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag7SUBSCRIPTION_FLAG8BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag8SUBSCRIPTION_FLAG9BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag9SUBSCRIPTION_FLAG10BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag10MIDDLE_INITIALVARCHARMiddle Initial. This attribute is populated from <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/MiddleInitialDELETE_ENTITYBOOLEANProperty for <ORGANIZATION> removingconfiguration/entityTypes/<ORGANIZATION>/attributes/DeleteEntityPARTY_IDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PartyIDLAST_VERIFICATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/LastVerificationStatusLAST_VERIFICATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/LastVerificationDateEFFECTIVE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/EffectiveDateEND_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/EndDatePARTY_LOCALIZATION_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PartyLocalizationCodeMATCH_PARTY_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchPartyNameLICENSEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: <ORGANIZATION> URILOV NameLICENSE_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeCATEGORYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/CategoryLKUP_IMS_LIC_CATEGORYNUMBERVARCHARState License INTEGER. A unique license <ORGANIZATION> is listed for each license the physician holds. There is no standard format syntax. Format examples: 18986, <US_BANK_NUMBER>, <MEDICAL_LICENSE>. There is also no limit to the <ORGANIZATION> of licenses a physician can hold in a state. Example: A physician can have an inactive resident license plus unlimited active licenses. Residents can have as many as four licenses since some states issue licenses every yearconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/NumberBOARD_EXTERNAL_IDVARCHARBoard External IDconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/BoardExternalIDBOARD_CODEVARCHARState License Board Code. For <ORGANIZATION> The board code will always be <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/BoardCodeSTLIC_BRD_CD_LOVSTATEVARCHARState License State. Two character field. <ORGANIZATION>/<ORGANIZATION>/attributes/License/attributes/ISOCountryCodeLKUP_IMS_COUNTRY_CODEDEGREEVARCHARState <PERSON>. A physician may hold more than one license in a given state. However, not more than one <LOCATION> or more than one DO license in the same <URL>nfiguration/entityTypes/HCP/attributes/License/attributes/DegreeLKUP_IMS_DEGREEAUTHORIZATION_STATUSVARCHARAuthorization Statusconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/AuthorizationStatusLKUP_IMS_IDENTIFIER_STATUSLICENSE_NUMBER_KEYVARCHARState License Number Keyconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/LicenseNumberKeyAUTHORITY_NAMEVARCHARAuthority Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/AuthorityNamePROFESSION_CODEVARCHARProfessionconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/ProfessionCodeLKUP_IMS_PROFESSIONTYPE_IDVARCHARAuthorization Type idconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/TypeIdTYPEVARCHARState License Type. U = Unlimited there is no restriction on the physician to practice medicine; <ORGANIZATION> implies restrictions of some sort. For example, the physician may practice only in a given county, admit patients only to particular hospitals, or practice under the supervision of a physician with a license in state or private hospitals or other settings; T = Temporary issued to a physician temporarily practicing in an underserved area outside his/her state of licensure. Also granted between board meetings when new licenses are issued. <ORGANIZATION> span for a temporary license varies from state to state. Temporary licenses typically expire <DATE_TIME> from the date they are issued; R = Resident License granted to a physician in graduate medical education (e.g., residency training).configuration/entityTypes/<ORGANIZATION>/attributes/License/attributes/TypeLKUP_IMS_LICENSE_TYPEPRIVILEGE_IDVARCHARLicense Privilegeconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrivilegeIdPRIVILEGE_NAMEVARCHARLicense Privilege Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrivilegeNamePRIVILEGE_RANKVARCHARLicense Privilege Rankconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrivilegeRankSTATUSVARCHARState License Status. A = <ORGANIZATION>. Physician is licensed to practice within the state; I = Inactive. If the physician has not reregistered a state license OR if the license has been suspended or revoked by <ORGANIZATION>; X = unknown. If the state has not provided current information Note: Some state boards issue inactive licenses to physicians who want to maintain licensure in the state although they are currently practicing in <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/DeactivationReasonCodeLKUP_IMS_SRC_DEACTIVE_REASON_CODEEXPIRATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/ExpirationDateISSUE_DATEDATEState License Issue Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/IssueDateBRD_DATEDATEState License as of date or pull date. The as of date (or stamp date) is the date the current license file is provided to the Database <URL>nfiguration/entityTypes/HCP/attributes/License/attributes/BrdDateSAMPLE_ELIGIBILITYVARCHARconfiguration/entityTypes/HCP/attributes/License/attributes/SampleEligibilitySOURCE_CDVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SourceCDRANKVARCHARLicense Rankconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/RankCERTIFICATIONVARCHARCertificationconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/CertificationREQ_SAMPL_NON_CTRLVARCHARRequest Samples Non-Controlledconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/ReqSamplNonCtrlREQ_SAMPL_CTRLVARCHARRequest Samples Controlledconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/ReqSamplCtrlRECV_SAMPL_NON_CTRLVARCHARReceives <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/RecvSamplNonCtrlRECV_SAMPL_CTRLVARCHARReceives Samples Controlledconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/RecvSamplCtrlDISTR_SAMPL_NON_CTRLVARCHARDistribute Samples <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/DistrSamplNonCtrlDISTR_SAMPL_CTRLVARCHARDistribute Samples Controlledconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/<ORGANIZATION> Schedule I flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SampDrugSchedIFlagSAMP_DRUG_SCHED_II_FLAGVARCHARSample Drug Schedule II flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SampDrugSchedIIFlagSAMP_DRUG_SCHED_III_FLAGVARCHARSample Drug Schedule III flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/<ORGANIZATION> flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SampDrugSchedIVFlagSAMP_DRUG_SCHED_V_FLAGVARCHARSample Drug Schedule V flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SampDrugSchedVFlagSAMP_DRUG_SCHED_VI_FLAGVARCHARSample Drug Schedule VI flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SampDrugSchedVIFlagPRESCR_NON_CTRL_FLAGVARCHARPrescribe Non-controlled flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrNonCtrlFlagPRESCR_APP_REQ_NON_CTRL_FLAGVARCHARPrescribe Application Request for Non-controlled Substances Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrAppReqNonCtrlFlagPRESCR_CTRL_FLAGVARCHARPrescribe Controlled flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrCtrlFlagPRESCR_APP_REQ_CTRL_FLAGVARCHARPrescribe Application Request for Controlled Substances Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrAppReqCtrlFlagPRESCR_DRUG_SCHED_I_FLAGVARCHARPrescrDrugSchedIFlagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrDrugSchedIFlagPRESCR_DRUG_SCHED_II_FLAGVARCHARPrescribe Schedule II Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrDrugSchedIIFlagPRESCR_DRUG_SCHED_III_FLAGVARCHARPrescribe Schedule III Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrDrugSchedIIIFlagPRESCR_DRUG_SCHED_IV_FLAGVARCHARPrescribe Schedule IV Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrDrugSchedIVFlagPRESCR_DRUG_SCHED_V_FLAGVARCHARPrescribe Schedule V Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrDrugSchedVFlagPRESCR_DRUG_SCHED_VI_FLAGVARCHARPrescribe Schedule <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/PrescrDrugSchedVIFlagSUPERVISORY_REL_CD_NON_CTRLVARCHARSupervisory Relationship for Non-Controlled Substancesconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SupervisoryRelCdNonCtrlSUPERVISORY_REL_CD_CTRLVARCHARSupervisoryRelCdCtrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SupervisoryRelCdCtrlCOLLABORATIVE_NONCTRLVARCHARCollaboration for <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/CollaborativeNonctrlCOLLABORATIVE_CTRLVARCHARCollaboration for Controlled Substancesconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/CollaborativeCtrlINCLUSIONARYVARCHARInclusionaryconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/InclusionaryEXCLUSIONARYVARCHARExclusionaryconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/ExclusionaryDELEGATION_NON_CTRLVARCHARDelegationNonCtrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/DelegationNonCtrlDELEGATION_CTRLVARCHARDelegation for <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/DelegationCtrlDISCIPLINARY_ACTION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/DisciplinaryActionStatusADDRESSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Address, configuration/entityTypes/<ORGANIZATION>/attributes/AddressMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESS_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypePRIMARY_AFFILIATIONVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/<ORGANIZATION>/attributes/PrimaryAffiliationLKUP_IMS_YES_NOSOURCE_ADDRESS_IDVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/SourceAddressID, configuration/relationTypes/<ORGANIZATION>/attributes/SourceAddressIDADDRESS_TYPEVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/<ORGANIZATION>/attributes/AddressTypeLKUP_IMS_ADDR_TYPECARE_OFVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/CareOf, configuration/relationTypes/<ORGANIZATION>/attributes/CareOfPRIMARYBOOLEANconfiguration/relationTypes/<ORGANIZATION>/attributes/Primary, configuration/relationTypes/<ORGANIZATION>/attributes/PrimaryADDRESS_RANKVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/AddressRank, configuration/relationTypes/<ORGANIZATION>/attributes/AddressRankSOURCE_NAMEVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/SourceAddressInfo/attributes/SourceName, configuration/relationTypes/<ORGANIZATION>/attributes/SourceAddressInfo/attributes/SourceNameSOURCE_LOCATION_IDVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/SourceAddressInfo/attributes/SourceLocationId, configuration/relationTypes/<ORGANIZATION>/attributes/SourceAddressInfo/attributes/SourceLocationIdADDRESS_LINE1VARCHARconfiguration/entityTypes/Location/attributes/AddressLine1, configuration/entityTypes/Location/attributes/AddressLine1ADDRESS_LINE2VARCHARconfiguration/entityTypes/Location/attributes/AddressLine2, configuration/entityTypes/Location/attributes/AddressLine2ADDRESS_LINE3VARCHARAddressLine3configuration/entityTypes/Location/attributes/AddressLine3, configuration/entityTypes/Location/attributes/AddressLine3ADDRESS_LINE4VARCHARAddressLine4configuration/entityTypes/Location/attributes/AddressLine4, configuration/entityTypes/Location/attributes/AddressLine4PREMISEVARCHARconfiguration/entityTypes/Location/attributes/Premise, configuration/entityTypes/Location/attributes/PremiseSTREETVARCHARconfiguration/entityTypes/Location/attributes/Street, configuration/entityTypes/Location/attributes/StreetFLOORVARCHARN/Aconfiguration/entityTypes/Location/attributes/Floor, configuration/entityTypes/Location/attributes/FloorBUILDINGVARCHARN/Aconfiguration/entityTypes/Location/attributes/Building, configuration/entityTypes/Location/attributes/BuildingCITYVARCHARconfiguration/entityTypes/Location/attributes/City, configuration/entityTypes/Location/attributes/CitySTATE_PROVINCEVARCHARconfiguration/entityTypes/Location/attributes/StateProvince, configuration/entityTypes/Location/attributes/StateProvinceSTATE_PROVINCE_CODEVARCHARconfiguration/entityTypes/Location/attributes/StateProvinceCode, configuration/entityTypes/Location/attributes/StateProvinceCodeLKUP_IMS_STATE_CODEPOSTAL_CODEVARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/<LOCATION>, configuration/entityTypes/Location/attributes/Zip/attributes/PostalCodeZIP5VARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/Zip5, configuration/entityTypes/Location/attributes/Zip/attributes/Zip5ZIP4VARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/Zip4, configuration/entityTypes/Location/attributes/Zip/attributes/Zip4COUNTRYVARCHARconfiguration/entityTypes/Location/attributes/CountryLKUP_IMS_COUNTRY_CODECBSA_CODEVARCHARCore Based Statistical Areaconfiguration/entityTypes/Location/attributes/CBSACode, configuration/entityTypes/Location/attributes/CBSACodeCBSA_CDFIPS_COUNTY_CODEVARCHARFIPS county Codeconfiguration/entityTypes/Location/attributes/FIPSCountyCode, configuration/entityTypes/Location/attributes/FIPSCountyCodeFIPS_STATE_CODEVARCHARFIPS State Codeconfiguration/entityTypes/Location/attributes/<ORGANIZATION>, configuration/entityTypes/Location/attributes/FIPSStateCodeDPVVARCHARUSPS delivery point validation. R = Range Check; C = Clerk; F = Formally Valid; V = <ORGANIZATION>/entityTypes/Location/attributes/DPV, configuration/entityTypes/Location/attributes/DPVMSAVARCHARMetropolitan Statistical Area for a businessconfiguration/entityTypes/Location/attributes/<ORGANIZATION>, configuration/entityTypes/Location/attributes/MSALATITUDEVARCHARconfiguration/entityTypes/Location/attributes/GeoLocation/attributes/LatitudeLONGITUDEVARCHARconfiguration/entityTypes/Location/attributes/GeoLocation/attributes/LongitudeGEO_ACCURACYVARCHARconfiguration/entityTypes/Location/attributes/GeoLocation/attributes/GeoAccuracyGEO_CODING_SYSTEMVARCHARconfiguration/entityTypes/Location/attributes/GeoLocation/attributes/GeoCodingSystemADDRESS_INPUTVARCHARconfiguration/entityTypes/Location/attributes/AddressInput, configuration/entityTypes/Location/attributes/AddressInputSUB_ADMINISTRATIVE_AREAVARCHARThis field holds the smallest geographic data element within a country. For instance, <ORGANIZATION>, configuration/entityTypes/Location/attributes/SubAdministrativeAreaPOSTAL_CITYVARCHARconfiguration/entityTypes/Location/attributes/PostalCity, configuration/entityTypes/Location/attributes/PostalCityLOCALITYVARCHARThis field holds the most common population center data element within a country. For instance, <LOCATION>, <NRP> <URL>nfiguration/entityTypes/Location/attributes/Locality, configuration/entityTypes/Location/attributes/LocalityVERIFICATION_STATUSVARCHARconfiguration/entityTypes/Location/attributes/<ORGANIZATION>, configuration/entityTypes/Location/attributes/VerificationStatusSTATUS_CHANGE_DATEDATEStatus Change Dateconfiguration/entityTypes/Location/attributes/StatusChangeDate, configuration/entityTypes/Location/attributes/StatusChangeDateADDRESS_STATUSVARCHARStatus of the Addressconfiguration/entityTypes/Location/attributes/<ORGANIZATION>, configuration/entityTypes/Location/attributes/AddressStatusACTIVE_ADDRESSBOOLEANconfiguration/relationTypes/<ORGANIZATION>/attributes/Active, configuration/relationTypes/<ORGANIZATION>/attributes/ActiveLOC_CONF_INDVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/LocConfInd, configuration/relationTypes/<ORGANIZATION>/attributes/LocConfIndLKUP_IMS_LOCATION_CONFIDENCEBEST_RECORDVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/<ORGANIZATION>/attributes/BestRecordRELATION_STATUS_CHANGE_DATEDATEconfiguration/relationTypes/<ORGANIZATION>/attributes/RelationStatusChangeDate, configuration/relationTypes/<ORGANIZATION>/attributes/RelationStatusChangeDateVALIDATION_STATUSVARCHARValidation status of the Address. When Addresses are merged, the loser Address is set to <ORGANIZATION>, configuration/relationTypes/<ORGANIZATION>/attributes/ValidationStatusLKUP_IMS_VAL_STATUSSTATUSVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/Status, configuration/relationTypes/<ORGANIZATION>/attributes/StatusLKUP_IMS_ADDR_STATUSHCO_NAMEVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/<PERSON>, configuration/relationTypes/<ORGANIZATION>/attributes/HcoNameMAIN_HCO_NAMEVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/MainHcoName, configuration/relationTypes/<ORGANIZATION>/attributes/MainHcoNameBUILD_LABELVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/BuildLabel, configuration/relationTypes/<ORGANIZATION>/attributes/BuildLabelPO_BOXVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/POBox, configuration/relationTypes/<ORGANIZATION>/attributes/POBoxVALIDATION_REASONVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/<ORGANIZATION>/attributes/ValidationReasonLKUP_IMS_VAL_STATUS_CHANGE_REASONVALIDATION_CHANGE_DATEDATEconfiguration/relationTypes/<ORGANIZATION>/attributes/ValidationChangeDate, configuration/relationTypes/<ORGANIZATION>/attributes/ValidationChangeDateSTATUS_REASON_CODEVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/StatusReasonCode, configuration/relationTypes/<ORGANIZATION>/attributes/StatusReasonCodeLKUP_IMS_SRC_DEACTIVE_REASON_CODEPRIMARY_MAILBOOLEANconfiguration/relationTypes/<ORGANIZATION>/attributes/PrimaryMail, configuration/relationTypes/<ORGANIZATION>/attributes/PrimaryMailVISIT_ACTIVITYVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/VisitActivity, configuration/relationTypes/<ORGANIZATION>/attributes/VisitActivityDERIVED_ADDRESSVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/derivedAddress, configuration/relationTypes/<ORGANIZATION>/attributes/derivedAddressNEIGHBORHOODVARCHARconfiguration/entityTypes/Location/attributes/Neighborhood, configuration/entityTypes/Location/attributes/NeighborhoodAVCVARCHARconfiguration/entityTypes/Location/attributes/<ORGANIZATION>, configuration/entityTypes/Location/attributes/AVCCOUNTRY_CODEVARCHARconfiguration/entityTypes/Location/attributes/CountryLKUP_IMS_COUNTRY_CODEGEO_<URL>ITUDEVARCHARconfiguration/entityTypes/Location/attributes/GeoLocation/attributes/LatitudeGEO_LOCATION.LONGITUDEVARCHARconfiguration/entityTypes/Location/attributes/GeoLocation/attributes/LongitudeGEO_<URL>O_ACCURACYVARCHARconfiguration/entityTypes/Location/attributes/GeoLocation/attributes/GeoAccuracyGEO_<URL>O_CODING_SYSTEMVARCHARconfiguration/entityTypes/Location/attributes/GeoLocation/attributes/GeoCodingSystemADDRESS_PHONEReltio URI: configuration/relationTypes/<ORGANIZATION>/attributes/Phone, configuration/relationTypes/<ORGANIZATION>/attributes/PhoneMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESS_URIVARCHARgenerated key descriptionPHONE_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeTYPE_IMSVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/TypeIMS, configuration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/TypeIMSLKUP_IMS_COMMUNICATION_TYPENUMBERVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/Number, configuration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/NumberEXTENSIONVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/Extension, configuration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/ExtensionRANKVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/Rank, configuration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/RankACTIVE_ADDRESS_PHONEBOOLEANconfiguration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/Active, configuration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/ActiveBEST_PHONE_INDICATORVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/BestPhoneIndicator, configuration/relationTypes/<ORGANIZATION>/attributes/Phone/attributes/BestPhoneIndicatorADDRESS_DEAReltio URI: configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: <PERSON> NameADDRESS_URIVARCHARgenerated key descriptionDEA_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeNUMBERVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Number, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/NumberEXPIRATION_DATEDATEconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ExpirationDate, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ExpirationDateSTATUSVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Status, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StatusLKUP_IMS_IDENTIFIER_STATUSDRUG_SCHEDULEVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DrugSchedule, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DrugScheduleBUSINESS_ACTIVITY_CODEVARCHARBusiness Activity Codeconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BusinessActivityCode, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BusinessActivityCodeSUB_BUSINESS_ACTIVITY_CODEVARCHARSub Business Activity Codeconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SubBusinessActivityCode, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SubBusinessActivityCodeDEA_CHANGE_REASON_CODEVARCHARDEA Change Reason Codeconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DEAChangeReasonCode, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DEAChangeReasonCodeLKUP_IMS_SRC_DEACTIVE_REASON_CODEAUTHORIZATION_STATUSVARCHARAuthorization Statusconfiguration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AuthorizationStatusLKUP_IMS_IDENTIFIER_STATUSADDRESS_OFFICE_INFORMATIONReltio URI: configuration/relationTypes/<ORGANIZATION>/attributes/OfficeInformation, configuration/relationTypes/<ORGANIZATION>/attributes/OfficeInformationMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESS_URIVARCHARgenerated key descriptionOFFICE_INFORMATION_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeBEST_TIMESVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/OfficeInformation/attributes/<ORGANIZATION>, configuration/relationTypes/<ORGANIZATION>/attributes/OfficeInformation/attributes/BestTimesAPPT_REQUIREDBOOLEANconfiguration/relationTypes/<ORGANIZATION>/attributes/OfficeInformation/attributes/<ORGANIZATION>, configuration/relationTypes/<ORGANIZATION>/attributes/OfficeInformation/attributes/ApptRequiredOFFICE_NOTESVARCHARconfiguration/relationTypes/<ORGANIZATION>/attributes/OfficeInformation/attributes/OfficeNotes, configuration/relationTypes/<ORGANIZATION>/attributes/OfficeInformation/attributes/OfficeNotesSPECIALITIESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/SpecialitiesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSPECIALITIES_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSPECIALTY_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyType, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyTypeLKUP_IMS_SPECIALTY_TYPESPECIALTYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialty, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyLKUP_IMS_SPECIALTYRANKVARCHARSpecialty Rankconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Rank, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/RankDESCVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/DescGROUPVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Group, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/GroupSOURCE_CDVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SourceCDSPECIALTY_DETAILVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyDetailPROFESSION_CODEVARCHARProfessionconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/ProfessionCodeLKUP_IMS_PROFESSIONPRIMARY_SPECIALTY_FLAGBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/PrimarySpecialtyFlag, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/PrimarySpecialtyFlagSORT_ORDERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SortOrderBEST_RECORDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SubSpecialtyLKUP_IMS_SPECIALTYSUB_SPECIALTY_RANKVARCHARSubSpecialty Rankconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SubSpecialtyRank, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SubSpecialtyRankTRUSTED_INDICATORVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/TrustedIndicatorLKUP_IMS_YES_NORAW_SPECIALTYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/RawSpecialtyRAW_SPECIALTY_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/RawSpecialtyDescription, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/RawSpecialtyDescriptionIDENTIFIERSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: <ORGANIZATION> URILOV NameIDENTIFIERS_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<ORGANIZATION>,<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ID, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/IDORDERVARCHARDisplays the order of priority for an <ORGANIZATION> for those facilities that share an <ORGANIZATION>. Valid values are: P ?the <ORGANIZATION> on a business record is the primary identifier for the business and O ?the <ORGANIZATION> is a secondary identifier. (Using P for the <ORGANIZATION> supports aggregating clinical volumes and avoids double counting).configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Order, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/OrderCATEGORYVARCHARAdditional information about the identifer. For a <ORGANIZATION> identifer, the <ORGANIZATION> subcategory code (e.g. <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>). For a <ORGANIZATION> identifier, contains the <ORGANIZATION> activity code (e.g. M for Mid Level Practitioner)configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Category, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/CategoryLKUP_IMS_IDENTIFIERS_CATEGORYSTATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/StatusLKUP_IMS_IDENTIFIER_STATUSAUTHORIZATION_STATUSVARCHARAuthorization Statusconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/AuthorizationStatusLKUP_IMS_IDENTIFIER_STATUSDEACTIVATION_REASON_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<LOCATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/DeactivationReasonCodeLKUP_IMS_SRC_DEACTIVE_REASON_CODEDEACTIVATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/DeactivationDate, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/DeactivationDateREACTIVATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ReactivationDate, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ReactivationDateNATIONAL_ID_ATTRIBUTEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/NationalIdAttribute, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/NationalIdAttributeAMAMDDO_FLAGVARCHARAMA <LOCATION>-DO Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/AMAMDDOFlagMAJOR_PROF_ACTVARCHARMajor <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/MajorProfActHOSPITAL_HOURSVARCHARHospitalHoursconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/HospitalHoursAMA_HOSPITAL_IDVARCHARAMAHospitalIDconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/AMAHospitalIDPRACTICE_TYPE_CODEVARCHARPracticeTypeCodeconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/PracticeTypeCodeEMPLOYMENT_TYPE_CODEVARCHAREmploymentTypeCodeconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/EmploymentTypeCodeBIRTH_CITYVARCHARBirthCityconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/BirthCityBIRTH_STATEVARCHARBirthStateconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/BirthStateBIRTH_COUNTRYVARCHARBirthCountryconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/BirthCountryMEDICAL_SCHOOLVARCHARMedicalSchoolconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/MedicalSchoolGRADUATION_YEARVARCHARGraduationYearconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/GraduationYearNUM_OF_PYSICIANSVARCHARNumOfPysiciansconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/NumOfPysiciansSTATEVARCHARLicenseStateconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/State, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/StateLKUP_IMS_STATE_CODETRUSTED_INDICATORVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/TrustedIndicatorLKUP_IMS_YES_NOHARD_LINK_INDICATORVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/HardLinkIndicator, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/HardLinkIndicatorLKUP_IMS_YES_NOLAST_VERIFICATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/LastVerificationStatus, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/LastVerificationStatusLAST_VERIFICATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/LastVerificationDate, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/LastVerificationDateACTIVATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ActivationDate, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ActivationDateSPEAKERReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SpeakerMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSPEAKER_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeIS_SPEAKERBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/IsSpeakerIS_COMPANY_APPROVED_SPEAKERBOOLEANAttribute to track if an <ORGANIZATION> is a COMPANY approved speakerconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/IsCOMPANYApprovedSpeakerLAST_BRIEFING_DATEDATETrack <DATE_TIME> that the <ORGANIZATION> received the briefing/training to be certified as an approved <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/LastBriefingDateSPEAKER_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/SpeakerStatusLKUP_SPEAKERSTATUSSPEAKER_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/SpeakerTypeLKUP_SPEAKERTYPESPEAKER_LEVELVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/SpeakerLevelLKUP_SPEAKERLEVELHCP_WORKPLACE_MAIN_HCOReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/MainHCOMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameWORKPLACE_URIVARCHARgenerated key descriptionMAINHCO_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeNAMEVARCHARNameconfiguration/entityTypes/<ORGANIZATION>/attributes/NameOTHER_NAMESVARCHAROther Namesconfiguration/entityTypes/<ORGANIZATION>/attributes/OtherNamesTYPE_CODEVARCHARCustomer Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/TypeCodeLKUP_IMS_HCO_CUST_TYPESOURCE_IDVARCHARSource IDconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceIDVALIDATION_STATUSVARCHARconfiguration/relationTypes/<URL>I/attributes/ValidationStatusLKUP_IMS_VAL_STATUSVALIDATION_CHANGE_DATEDATEconfiguration/relationTypes/<URL>I/attributes/ValidationChangeDateAFFILIATION_STATUSVARCHARconfiguration/relationTypes/<URL>I/attributes/AffiliationStatusLKUP_IMS_STATUSCOUNTRYVARCHARCountry Codeconfiguration/relationTypes/<URL>I/attributes/CountryLKUP_IMS_COUNTRY_CODEHCP_WORKPLACE_MAIN_HCO_CLASSOF_TRADE_NReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeNMaterialized: <PERSON> URILOV NameWORKPLACE_URIVARCHARgenerated key descriptionMAINHCO_URIVARCHARgenerated key descriptionCLASSOFTRADEN_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypePRIORITYVARCHARNumeric code for the primary class of tradeconfiguration/<ORGANIZATION>/attributes/ClassofTradeN/attributes/PriorityCLASSIFICATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/ClassificationLKUP_IMS_HCO_CLASSOFTRADEN_CLASSIFICATIONFACILITY_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/FacilityTypeLKUP_IMS_HCO_CLASSOFTRADEN_FACILITYTYPESPECIALTYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/SpecialtyLKUP_IMS_HCO_CLASSOFTRADEN_SPECIALTYHCP_MAIN_WORKPLACE_CLASSOF_TRADE_NReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeNMaterialized: <ORGANIZATION> NameMAINWORKPLACE_URIVARCHARgenerated key descriptionCLASSOFTRADEN_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypePRIORITYVARCHARNumeric code for the primary class of tradeconfiguration/<ORGANIZATION>/attributes/ClassofTradeN/attributes/PriorityCLASSIFICATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/ClassificationLKUP_IMS_HCO_CLASSOFTRADEN_CLASSIFICATIONFACILITY_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/FacilityTypeLKUP_IMS_HCO_CLASSOFTRADEN_FACILITYTYPESPECIALTYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/SpecialtyLKUP_IMS_HCO_CLASSOFTRADEN_SPECIALTYPHONEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Phone, configuration/entityTypes/<ORGANIZATION>/attributes/PhoneMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NamePHONE_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeTYPE_IMSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/TypeIMS, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/TypeIMSLKUP_IMS_COMMUNICATION_TYPENUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Number, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/NumberEXTENSIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Extension, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/ExtensionRANKVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Rank, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/RankCOUNTRY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/CountryCode, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/CountryCodeLKUP_IMS_COUNTRY_CODEAREA_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/AreaCode, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/AreaCodeLOCAL_NUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/LocalNumberFORMATTED_NUMBERVARCHARFormatted number of the phoneconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/FormattedNumberVALIDATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/ValidationStatusVALIDATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/ValidationDate, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/ValidationDateLINE_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/LineType, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/LineTypeFORMAT_MASKVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/FormatMaskDIGIT_COUNTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/DigitCountGEO_AREAVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/GeoAreaGEO_COUNTRYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/GeoCountryDQ_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/DQCodeACTIVE_PHONEBOOLEANDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/ActiveBEST_PHONE_INDICATORVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/BestPhoneIndicator, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/BestPhoneIndicatorPHONE_SOURCE_DATAReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/SourceData, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/SourceDataMaterialized: <ORGANIZATION> NamePHONE_URIVARCHARgenerated key descriptionSOURCE_DATA_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeDATASET_IDENTIFIERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/DatasetIdentifierDATASET_PARTY_IDENTIFIERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/<PERSON>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/DatasetPartyIdentifierDATASET_PHONE_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/DatasetPhoneType, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/DatasetPhoneTypeLKUP_IMS_COMMUNICATION_TYPERAW_DATASET_PHONE_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/RawDatasetPhoneType, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/RawDatasetPhoneTypeBEST_PHONE_INDICATORVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/BestPhoneIndicator, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>/attributes/BestPhoneIndicatorEMAILReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Email, configuration/entityTypes/<ORGANIZATION>/attributes/EmailMaterialized: <ORGANIZATION> NameEMAIL_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeTYPE_IMSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/TypeIMS, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/TypeIMSLKUP_IMS_EMAIL_TYPEEMAILVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Email, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/EmailDOMAINVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Domain, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DomainDOMAIN_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DomainTypeUSERNAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Username, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/UsernameRANKVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Rank, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/RankVALIDATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ValidationStatusVALIDATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ValidationDate, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ValidationDateACTIVE_EMAIL_HCPVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ActiveDQ_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DQCodeSOURCE_CDVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/SourceCDACTIVE_EMAIL_HCOBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ActiveDISCLOSUREDisclosure - Reporting derived attributesReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure, configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameDISCLOSURE_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeDGS_CATEGORYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSCategory, configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSCategoryLKUP_BENEFITCATEGORY_HCP,LKUP_BENEFITCATEGORY_HCODGS_TITLEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSTitleLKUP_BENEFITTITLEDGS_QUALITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSQualityLKUP_BENEFITQUALITYDGS_SPECIALTYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSSpecialtyLKUP_BENEFITSPECIALTYCONTRACT_CLASSIFICATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/ContractClassificationLKUP_CONTRACTCLASSIFICATIONCONTRACT_CLASSIFICATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/ContractClassificationDateMILITARYBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/MilitaryLEGALSTATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/LEGALSTATUSLKUP_LEGALSTATUSTHIRD_PARTY_VERIFYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ThirdPartyVerify, configuration/entityTypes/<ORGANIZATION>/attributes/ThirdPartyVerifyMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameTHIRD_PARTY_VERIFY_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSEND_FOR_VERIFYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ThirdPartyVerify/attributes/SendForVerify, configuration/entityTypes/<ORGANIZATION>/attributes/ThirdPartyVerify/attributes/SendForVerifyLKUP_IMS_SEND_FOR_VALIDATIONVERIFY_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ThirdPartyVerify/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/ThirdPartyVerify/attributes/VerifyDatePRIVACY_PREFERENCESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences, configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferencesMaterialized: <PERSON> NamePRIVACY_PREFERENCES_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/OptOutOPT_OUT_START_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/OptOutStartDateALLOWED_TO_CONTACTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/AllowedToContactPHONE_OPT_OUTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/PhoneOptOut, configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/PhoneOptOutEMAIL_OPT_OUTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/EmailOptOut, configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/EmailOptOutFAX_OPT_OUTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/FaxOptOut, configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/FaxOptOutVISIT_OPT_OUTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/VisitOptOut, configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/VisitOptOutAMA_NO_CONTACTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/AMANoContactPDRPBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/PDRPPDRP_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/PDRPDateTEXT_MESSAGE_OPT_OUTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/TextMessageOptOutMAIL_OPT_OUTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/MailOptOut, configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/MailOptOutOPT_OUT_CHANGE_DATEDATEThe date the opt out indicator was changedconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/OptOutChangeDateREMOTE_OPT_OUTBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/RemoteOptOut, configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/RemoteOptOutOPT_OUT_ONE_KEYBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/OptOutOneKey, configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/OptOutOneKeyOPT_OUT_SAFE_HARBORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/OptOutSafeHarborKEY_OPINION_LEADERBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/KeyOpinionLeaderRESIDENT_INDICATORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/ResidentIndicatorALLOW_SAFE_HARBORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/AllowSafeHarborSANCTIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SanctionMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSANCTION_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Entity TypeSANCTION_IDVARCHARCourt sanction Id for any <URL>nfiguration/entityTypes/HCP/attributes/Sanction/attributes/SanctionIdACTION_CODEVARCHARCourt sanction code for a caseconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/ActionCodeACTION_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/ActionDescriptionBOARD_CODEVARCHARCourt case board idconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/BoardCodeBOARD_DESCVARCHARcourt case board descriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/BoardDescACTION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/ActionDateSANCTION_PERIOD_START_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/SanctionPeriodStartDateSANCTION_PERIOD_END_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/SanctionPeriodEndDateMONTH_DURATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/MonthDurationFINE_AMOUNTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/FineAmountOFFENSE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/OffenseCodeOFFENSE_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/OffenseDescriptionOFFENSE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/OffenseDateHCP_SANCTIONSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SanctionsMaterialized: <ORGANIZATION> URILOV NameSANCTIONS_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeIDENTIFIER_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/IdentifierTypeLKUP_IMS_HCP_IDENTIFIER_TYPEIDENTIFIER_IDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/IdentifierIDTYPE_CODEVARCHARType of sanction/restriction for a given providedconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/TypeCodeLKUP_IMS_SNCTN_RSTR_ACTNDEACTIVATION_REASON_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/DeactivationReasonCodeLKUP_IMS_SNCTN_RSTR_DACT_RSNDISPOSITION_CATEGORY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/DispositionCategoryCodeLKUP_IMS_SNCTN_RSTR_DSP_CATGEXCLUSION_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/ExclusionCodeLKUP_IMS_SNCTN_RSTR_EXCLDESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/DescriptionURLVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/URLISSUED_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/IssuedDateEFFECTIVE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/EffectiveDateREINSTATEMENT_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/ReinstatementDateIS_STATE_WAIVERBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/IsStateWaiverSTATUS_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/StatusCodeLKUP_IMS_IDENTIFIER_STATUSSOURCE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/SourceCodeLKUP_IMS_SNCTN_RSTR_SRCPUBLICATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/PublicationDateGOVERNMENT_LEVEL_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanctions/attributes/GovernmentLevelCodeLKUP_IMS_GOVT_LVLHCP_GSA_SANCTIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/GSASanctionMaterialized: <ORGANIZATION> NameGSA_SANCTION_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSANCTION_IDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/SanctionIdFIRST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/FirstNameMIDDLE_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/MiddleNameLAST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/LastNameSUFFIX_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/SuffixNameCITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/CitySTATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/StateZIPVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/ZipACTION_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/ActionDateTERM_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/TermDateAGENCYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/AgencyCONFIDENCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/ConfidenceDEGREESDO NOT USE THIS ATTRIBUTE - will be deprecatedReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/DegreesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameDEGREES_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeDEGREEVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Degrees/attributes/DegreeDEGREEBEST_DEGREEVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Degrees/attributes/BestDegreeCERTIFICATESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/CertificatesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameCERTIFICATES_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeCERTIFICATE_IDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/CertificateIdNAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/NameBOARD_IDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/BoardIdBOARD_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/BoardNameINTERNAL_HCP_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/InternalHCPStatusINTERNAL_HCP_INACTIVE_REASON_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/InternalHCPInactiveReasonCodeINTERNAL_SAMPLING_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/InternalSamplingStatusPVS_ELIGIBILTYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/PVSEligibiltyEMPLOYMENTReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/EmploymentMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameEMPLOYMENT_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeTITLEVARCHARconfiguration/relationTypes/Employment/attributes/TitleSUMMARYVARCHARconfiguration/relationTypes/Employment/attributes/SummaryIS_CURRENTBOOLEANconfiguration/relationTypes/Employment/attributes/IsCurrentNAMEVARCHARNameconfiguration/<ORGANIZATION>/attributes/NameCREDENTIALDO NOT USE THIS ATTRIBUTE - will be deprecatedReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameCREDENTIAL_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeRANKVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/RankCREDENTIALVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/CredentialCREDPROFESSIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ProfessionMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NamePROFESSION_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Entity TypePROFESSION_CODEVARCHARProfessionconfiguration/entityTypes/<ORGANIZATION>/attributes/Profession/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Profession/attributes/RankEDUCATIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/EducationMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameEDUCATION_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <ORGANIZATION> TypeSCHOOL_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/SchoolNameLKUP_IMS_SCHOOL_CODETYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/TypeDEGREEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/DegreeYEAR_OF_GRADUATIONVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/YearOfGraduationGRADUATEDBOOLEANDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/GraduatedGPAVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/GPAYEARS_IN_PROGRAMVARCHARYear in <ORGANIZATION>, <DATE_TIME> in training in current programconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/YearsInProgramSTART_YEARVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/StartYearEND_YEARVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/EndYearFIELDOF_STUDYVARCHARSpecialty Focus or Specialty Trainingconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/<ORGANIZATION> NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/EligibilityEDUCATION_TYPEVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/EducationTypeRANKVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/RankMEDICAL_SCHOOLVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/MedicalSchoolTAXONOMYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy, configuration/entityTypes/<ORGANIZATION>/attributes/TaxonomyMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameTAXONOMY_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeTAXONOMYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Taxonomy, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/TaxonomyTAXONOMY_CD,LKUP_IMS_JURIDIC_CATEGORYTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/TypeTAXONOMY_TYPEPROVIDER_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/ProviderType, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/ProviderTypeCLASSIFICATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Classification, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/ClassificationSPECIALIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Specialization, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/SpecializationPRIORITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Priority, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/PriorityTAXONOMY_PRIORITYSTR_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/StrTypeLKUP_IMS_STRUCTURE_TYPEDP_PRESENCEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/DPPresence, configuration/entityTypes/<ORGANIZATION>/attributes/DPPresenceMaterialized: <PERSON> NameDP_PRESENCE_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeCHANNEL_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ChannelCode, configuration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ChannelCodeLKUP_IMS_DP_CHANNELCHANNEL_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ChannelName, configuration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ChannelNameCHANNEL_URLVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ChannelURL, configuration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ChannelURLCHANNEL_REGISTRATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ChannelRegistrationDate, configuration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ChannelRegistrationDatePRESENCE_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/PresenceTypeLKUP_IMS_DP_PRESENCE_TYPEACTIVITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/Activity, configuration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/ActivityLKUP_IMS_DP_SCORE_CODEAUDIENCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/Audience, configuration/entityTypes/<ORGANIZATION>/attributes/DPPresence/attributes/AudienceLKUP_IMS_DP_SCORE_CODEDP_SUMMARYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/DPSummaryMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameDP_SUMMARY_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSUMMARY_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SummaryTypeLKUP_IMS_DP_SUMMARY_TYPESCORE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ScoreCode, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ScoreCodeLKUP_IMS_DP_SCORE_CODEADDITIONAL_ATTRIBUTESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDITIONAL_ATTRIBUTES_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeATTRIBUTE_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/AttributeName, configuration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/AttributeNameATTRIBUTE_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/AttributeTypeLKUP_IMS_TYPE_CODEATTRIBUTE_VALUEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/AttributeValueATTRIBUTE_RANKVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/AttributeRankADDITIONAL_INFOVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/AdditionalAttributes/attributes/AdditionalInfoDATA_QUALITYData QualityReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/DataQualityMaterialized: <ORGANIZATION> NameDATA_QUALITY_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeSEVERITY_LEVELVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SeverityLevelLKUP_IMS_DQ_SEVERITYSOURCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Source, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SourceSCOREVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Score, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ScoreCLASSIFICATIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Classification, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameCLASSIFICATION_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeCLASSIFICATION_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/ClassificationTypeLKUP_IMS_CLASSIFICATION_TYPECLASSIFICATION_VALUEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/ClassificationValueCLASSIFICATION_VALUE_NUMERIC_QUANTITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/ClassificationValueNumericQuantity, configuration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/ClassificationValueNumericQuantitySTATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/StatusLKUP_IMS_CLASSIFICATION_STATUSEFFECTIVE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/EffectiveDate, configuration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/EffectiveDateEND_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/EndDate, configuration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/EndDateNOTESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/Notes, configuration/entityTypes/<ORGANIZATION>/attributes/Classification/attributes/NotesTAGReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Tag, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameTAG_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeTAG_TYPE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/TagTypeCode, configuration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/TagTypeCodeLKUP_IMS_TAG_TYPE_CODETAG_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/<PERSON>, configuration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/TagCodeSTATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/StatusLKUP_IMS_TAG_STATUSEFFECTIVE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/EffectiveDate, configuration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/EffectiveDateEND_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/EndDate, configuration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/EndDateNOTESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/Notes, configuration/entityTypes/<ORGANIZATION>/attributes/Tag/attributes/NotesEXCLUSIONSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Exclusions, configuration/entityTypes/<ORGANIZATION>/attributes/ExclusionsMaterialized: <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypePRODUCT_IDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/ProductIdLKUP_IMS_PRODUCT_IDEXCLUSION_STATUS_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/ExclusionStatusCode, configuration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/ExclusionStatusCodeLKUP_IMS_EXCL_STATUS_CODEEFFECTIVE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/EffectiveDate, configuration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/EffectiveDateEND_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/EndDate, configuration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/EndDateNOTESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/Notes, configuration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/NotesEXCLUSION_RULE_IDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/ExclusionRuleId, configuration/entityTypes/<ORGANIZATION>/attributes/Exclusions/attributes/ExclusionRuleIdACTIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Action, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameACTION_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeACTION_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/ActionCodeLKUP_IMS_ACTION_CODEACTION_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/ActionName, configuration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/ActionNameACTION_REQUESTED_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/ActionRequestedDate, configuration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/ActionRequestedDateACTION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/ActionStatusLKUP_IMS_ACTION_STATUSACTION_STATUS_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/ActionStatusDate, configuration/entityTypes/<ORGANIZATION>/attributes/Action/attributes/ActionStatusDateALTERNATE_NAMEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/AlternateName, configuration/entityTypes/<ORGANIZATION>/attributes/AlternateNameMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameALTERNATE_NAME_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> Entity TypeNAME_TYPE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/NameTypeCode, configuration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/NameTypeCodeLKUP_IMS_NAME_TYPE_CODENAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/Name, configuration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/NameFIRST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/FirstName, configuration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/FirstNameMIDDLE_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/MiddleName, configuration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/MiddleNameLAST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/LastName, configuration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/LastNameSUFFIX_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/SuffixName, configuration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/SuffixNameLANGUAGEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Language, configuration/entityTypes/<ORGANIZATION>/attributes/LanguageMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameLANGUAGE_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeLANGUAGE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Language/attributes/<PERSON>, configuration/entityTypes/<ORGANIZATION>/attributes/Language/attributes/LanguageCodePROFICIENCY_LEVELVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Language/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Language/attributes/ProficiencyLevelSOURCE_DATAReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SourceData, configuration/entityTypes/<ORGANIZATION>/attributes/SourceDataMaterialized: <ORGANIZATION> NameSOURCE_DATA_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeCLASS_OF_TRADE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ClassOfTradeCode, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ClassOfTradeCodeRAW_CLASS_OF_TRADE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/RawClassOfTradeCode, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/RawClassOfTradeCodeRAW_CLASS_OF_TRADE_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/RawClassOfTradeDescription, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/RawClassOfTradeDescriptionDATASET_IDENTIFIERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DatasetIdentifierDATASET_PARTY_IDENTIFIERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<PERSON>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DatasetPartyIdentifierPARTY_STATUS_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/PartyStatusCode, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/PartyStatusCodeNOTESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Notes, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameNOTES_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeNOTE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Notes/attributes/NoteCode, configuration/entityTypes/<ORGANIZATION>/attributes/Notes/attributes/NoteCodeLKUP_IMS_NOTE_CODENOTE_TEXTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Notes/attributes/NoteText, configuration/entityTypes/<ORGANIZATION>/attributes/Notes/attributes/NoteTextHCOHealth care providerReltio URI: configuration/entityTypes/HCOMaterialized: <ORGANIZATION> URILOV NameENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeNAMEVARCHARNameconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/TypeCodeLKUP_IMS_HCO_CUST_TYPESUB_TYPE_CODEVARCHARCustomer <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/SubTypeCodeLKUP_IMS_HCO_SUBTYPEEXCLUDE_FROM_MATCHVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ExcludeFromMatchOTHER_NAMESVARCHAROther Namesconfiguration/entityTypes/<ORGANIZATION>/attributes/OtherNamesSOURCE_IDVARCHARSource IDconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceIDVALIDATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ValidationStatusLKUP_IMS_VAL_STATUSORIGIN_SOURCEVARCHAROriginating Sourceconfiguration/entityTypes/<ORGANIZATION>/attributes/OriginSourceCOUNTRY_CODEVARCHARCountry Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/CountryLKUP_IMS_COUNTRY_CODEFISCALVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FiscalSITEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/SiteGROUP_PRACTICEBOOLEANconfiguration/<ORGANIZATION>/attributes/GroupPracticeGEN_FIRSTVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/GenFirstLKUP_IMS_HCO_GENFIRSTSREP_ACCESSVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/SrepAccessLKUP_IMS_HCO_SREPACCESSACCEPT_MEDICAREBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/AcceptMedicareACCEPT_MEDICAIDBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/AcceptMedicaidPERCENT_MEDICAREVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PercentMedicarePERCENT_MEDICAIDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PercentMedicaidPARENT_COMPANYVARCHARReplacement Parent Satelliteconfiguration/entityTypes/<ORGANIZATION>/attributes/ParentCompanyHEALTH_SYSTEM_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/HealthSystemNameVADODBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/VADODGPO_MEMBERSHIPBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/GPOMembershipACADEMICBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/AcademicMKT_SEGMENT_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MktSegmentCodeTOTAL_LICENSE_BEDSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalLicenseBedsTOTAL_CENSUS_BEDSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalCensusBedsNUM_PATIENTSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumPatientsTOTAL_STAFFED_BEDSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalStaffedBedsTOTAL_SURGERIESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalSurgeriesTOTAL_PROCEDURESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalProceduresOR_SURGERIESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ORSurgeriesRESIDENT_PROGRAMBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ResidentProgramRESIDENT_COUNTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ResidentCountNUMS_OF_PROVIDERSVARCHARNum_of_providers displays the total number of distinct providers affiliated with a business. Current Data: Value <DATE_TIME>/entityTypes/<ORGANIZATION>/attributes/NumsOfProvidersCORP_PARENT_NAMEVARCHARCorporate Parent Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<PERSON>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/OwnerSubNameFORMULARYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FormularyLKUP_IMS_HCO_FORMULARYE_MEDICAL_RECORDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EMedicalRecordLKUP_IMS_HCO_ERECE_PRESCRIBEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EPrescribeLKUP_IMS_HCO_ERECPAY_PERFORMVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PayPerformLKUP_IMS_HCO_PAYPERFORMCMS_COVERED_FOR_TEACHINGBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/CMSCoveredForTeachingCOMM_HOSPBOOLEANIndicates whether the facility is a short-term (average length of stay is <DATE_TIME>) acute care, or non federal hospital. Values: Yes and Nullconfiguration/entityTypes/<ORGANIZATION>/attributes/CommHospEMAIL_DOMAINVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmailDomainSTATUS_IMSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/StatusIMSLKUP_IMS_STATUSDOING_BUSINESS_AS_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DoingBusinessAsNameCOMPANY_TYPEVARCHARconfiguration/<ORGANIZATION>/attributes/CompanyTypeLKUP_IMS_ORG_TYPECUSIPVARCHARconfiguration/<ORGANIZATION>/attributes/CUSIPSECTOR_IMSVARCHARSectorconfiguration/entityTypes/<ORGANIZATION>/attributes/SectorIMSLKUP_IMS_HCO_SECTORIMSINDUSTRYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryFOUNDED_YEARVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FoundedYearEND_YEARVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EndYearIPO_YEARVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IPOYearLEGAL_DOMICILEVARCHARState of Legal Domicileconfiguration/entityTypes/<ORGANIZATION>/attributes/LegalDomicileOWNERSHIP_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/OwnershipStatusLKUP_IMS_HCO_OWNERSHIPSTATUSPROFIT_STATUSVARCHARThe profit status of the facility. Values include: For Profit, Not For Profit, Government, Armed Forces, or NULL (If data is unknown or Not Confidential and Proprietary to IMS Health. Field Name Data Type Field Description Applicable).configuration/entityTypes/<ORGANIZATION>/attributes/ProfitStatusLKUP_IMS_HCO_PROFITSTATUSCMIVARCHARCMI is the Case Mix Index for an organization. This is a government-assigned measure of the complexity of medical and surgical care provided to <ORGANIZATION> inpatients by a hospital under the prospective payment system (<ORGANIZATION>). It factors in a hospital?s use of technology for patient care and medical services? level of acuity required by the patient <URL>nfiguration/entityTypes/HCO/attributes/CMISOURCE_NAMEVARCHARconfiguration/entityTypes/HCO/attributes/SourceNameSUB_SOURCE_NAMEVARCHARconfiguration/entityTypes/HCO/attributes/SubSourceNameDEA_BUSINESS_ACTIVITYVARCHARconfiguration/entityTypes/HCO/attributes/DEABusinessActivityIMAGE_LINKSVARCHARconfiguration/entityTypes/HCO/attributes/ImageLinksVIDEO_LINKSVARCHARconfiguration/entityTypes/HCO/attributes/VideoLinksDOCUMENT_LINKSVARCHARconfiguration/entityTypes/HCO/attributes/DocumentLinksWEBSITE_URLVARCHARconfiguration/entityTypes/HCO/attributes/WebsiteURLTAX_IDVARCHARconfiguration/entityTypes/HCO/attributes/TaxIDDESCRIPTIONVARCHARconfiguration/entityTypes/HCO/attributes/DescriptionSTATUS_UPDATE_DATEDATEconfiguration/entityTypes/HCO/attributes/StatusUpdateDateSTATUS_REASON_CODEVARCHARconfiguration/entityTypes/HCO/attributes/StatusReasonCodeLKUP_IMS_SRC_DEACTIVE_REASON_CODECOMMENTERSVARCHARCommentersconfiguration/entityTypes/HCO/attributes/CommentersCLIENT_TYPE_CODEVARCHARClient <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/OfficialNameVALIDATION_CHANGE_REASONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ValidationChangeReasonLKUP_IMS_VAL_STATUS_CHANGE_REASONVALIDATION_CHANGE_DATEDATEconfiguration/<ORGANIZATION>/attributes/ValidationChangeDateCREATE_DATEDATEconfiguration/<ORGANIZATION><ORGANIZATION>/attributes/CreateDateUPDATE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/UpdateDateCHECK_DATEDATEconfiguration/<ORGANIZATION>/attributes/CheckDateSTATE_CODEVARCHARSituation of the workplace: <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/StateCodeLKUP_IMS_PROFILE_STATESTATE_DATEDATEDate when state of the record was last <ORGANIZATION> the status of the Organization changedconfiguration/entityTypes/<ORGANIZATION>/attributes/StatusChangeReasonNUM_EMPLOYEESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumEmployeesNUM_MED_EMPLOYEESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumMedEmployeesTOTAL_BEDS_INTENSIVE_CAREVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalBedsIntensiveCareNUM_EXAMINATION_ROOMVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumExaminationRoomNUM_AFFILIATED_SITESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumAffiliatedSitesNUM_ENROLLED_MEMBERSVARCHARconfiguration/<ORGANIZATION>/attributes/NumEnrolledMembersNUM_IN_PATIENTSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumInPatientsNUM_OUT_PATIENTSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumOutPatientsNUM_OPERATING_ROOMSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumOperatingRoomsNUM_PATIENTS_X_WEEKVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumPatientsXWeekACT_TYPE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ActTypeCodeLKUP_IMS_ACTIVITY_TYPEDISPENSE_DRUGSBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/DispenseDrugsNUM_PRESCRIBERSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/NumPrescribersPATIENTS_X_YEARVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PatientsXYearACCEPTS_NEW_PATIENTSVARCHARY/N field indicating whether the workplace accepts new patientsconfiguration/entityTypes/<ORGANIZATION>/attributes/AcceptsNewPatientsEXTERNAL_INFORMATION_URLVARCHARconfiguration/<ORGANIZATION>/attributes/ExternalInformationURLMATCH_STATUS_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchStatusCodeLKUP_IMS_MATCH_STATUS_CODESUBSCRIPTION_FLAG1BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag1SUBSCRIPTION_FLAG2BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag2SUBSCRIPTION_FLAG3BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag3SUBSCRIPTION_FLAG4BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag4SUBSCRIPTION_FLAG5BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag5SUBSCRIPTION_FLAG6BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag6SUBSCRIPTION_FLAG7BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag7SUBSCRIPTION_FLAG8BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag8SUBSCRIPTION_FLAG9BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag9SUBSCRIPTION_FLAG10BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/SubscriptionFlag10ROLE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/RoleCodeLKUP_IMS_ORG_ROLE_CODEACTIVATION_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ActivationDatePARTY_IDVARCHARconfiguration/<ORGANIZATION>/attributes/PartyIDLAST_VERIFICATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/LastVerificationStatusLAST_VERIFICATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/LastVerificationDateEFFECTIVE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/EffectiveDateEND_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/EndDatePARTY_LOCALIZATION_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PartyLocalizationCodeMATCH_PARTY_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchPartyNameDELETE_ENTITYBOOLEANDeleteEntity flag to identify <ORGANIZATION> compliant dataconfiguration/entityTypes/<ORGANIZATION>/attributes/DeleteEntityOK_VR_TRIGGERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/OK_VR_TriggerLKUP_IMS_SEND_FOR_VALIDATIONHCO_MAIN_HCO_CLASSOF_TRADE_NReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeNMaterialized: <ORGANIZATION> NameMAINHCO_URIVARCHARgenerated key descriptionCLASSOFTRADEN_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypePRIORITYVARCHARNumeric code for the primary class of tradeconfiguration/<ORGANIZATION>/attributes/ClassofTradeN/attributes/PriorityCLASSIFICATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/ClassificationLKUP_IMS_HCO_CLASSOFTRADEN_CLASSIFICATIONFACILITY_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/FacilityTypeLKUP_IMS_HCO_CLASSOFTRADEN_FACILITYTYPESPECIALTYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/SpecialtyLKUP_IMS_HCO_CLASSOFTRADEN_SPECIALTYHCO_ADDRESS_UNITReltio URI: configuration/entityTypes/Location/attributes/UnitMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESS_URIVARCHARgenerated key descriptionUNIT_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeUNIT_NAMEVARCHARconfiguration/entityTypes/Location/attributes/Unit/attributes/UnitNameUNIT_VALUEVARCHARconfiguration/entityTypes/Location/attributes/Unit/attributes/UnitValueHCO_ADDRESS_BRICKReltio URI: configuration/entityTypes/Location/attributes/BrickMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESS_URIVARCHARgenerated key descriptionBRICK_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeTYPEVARCHARconfiguration/entityTypes/Location/attributes/Brick/attributes/TypeLKUP_IMS_BRICK_TYPEBRICK_VALUEVARCHARconfiguration/entityTypes/Location/attributes/Brick/attributes/BrickValueLKUP_IMS_BRICK_VALUESORT_ORDERVARCHARconfiguration/entityTypes/Location/attributes/Brick/attributes/SortOrderKEY_FINANCIAL_FIGURES_OVERVIEWReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverviewMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameKEY_FINANCIAL_FIGURES_OVERVIEW_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeFINANCIAL_STATEMENT_TO_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/FinancialStatementToDateFINANCIAL_PERIOD_DURATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/FinancialPeriodDurationSALES_REVENUE_CURRENCYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueCurrencySALES_REVENUE_CURRENCY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueCurrencyCodeSALES_REVENUE_RELIABILITY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueReliabilityCodeSALES_REVENUE_UNIT_OF_SIZEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueUnitOfSizeSALES_REVENUE_AMOUNTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueAmountPROFIT_OR_LOSS_CURRENCYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/ProfitOrLossCurrencyPROFIT_OR_LOSS_RELIABILITY_TEXTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/ProfitOrLossReliabilityTextPROFIT_OR_LOSS_UNIT_OF_SIZEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/ProfitOrLossUnitOfSizePROFIT_OR_LOSS_AMOUNTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/ProfitOrLossAmountSALES_TURNOVER_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesTurnoverGrowthRateSALES3YRY_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/Sales3YryGrowthRateSALES5YRY_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/Sales5YryGrowthRateEMPLOYEE3YRY_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/Employee3YryGrowthRateEMPLOYEE5YRY_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/Employee5YryGrowthRateCLASSOF_TRADE_NReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeNMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameCLASSOF_TRADE_N_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypePRIORITYVARCHARNumeric code for the primary class of tradeconfiguration/<ORGANIZATION>/attributes/ClassofTradeN/attributes/PriorityCLASSIFICATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/ClassificationLKUP_IMS_HCO_CLASSOFTRADEN_CLASSIFICATIONFACILITY_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/FacilityTypeLKUP_IMS_HCO_CLASSOFTRADEN_FACILITYTYPESPECIALTYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/SpecialtyLKUP_IMS_HCO_CLASSOFTRADEN_SPECIALTYSPECIALTYDO NOT USE THIS ATTRIBUTE - will be deprecatedReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SpecialtyMaterialized: <ORGANIZATION> NameSPECIALTY_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeSPECIALTYVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/<ORGANIZATION>/attributes/Specialty/attributes/SpecialtyTYPEVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/<ORGANIZATION>/attributes/Specialty/attributes/TypeGSA_EXCLUSIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/GSAExclusionMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameGSA_EXCLUSION_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSANCTION_IDVARCHARconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SanctionIdORGANIZATION_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/OrganizationNameADDRESS_LINE1VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AddressLine1ADDRESS_LINE2VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AddressLine2CITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CitySTATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StateZIPVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ZipACTION_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ActionDateTERM_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/TermDateAGENCYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AgencyCONFIDENCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ConfidenceOIG_EXCLUSIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/OIGExclusionMaterialized: <ORGANIZATION> NameOIG_EXCLUSION_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSANCTION_IDVARCHARconfiguration/<ORGANIZATION>/attributes/OIGExclusion/attributes/SanctionIdACTION_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/OIGExclusion/attributes/ActionCodeACTION_DESCRIPTIONVARCHARconfiguration/<ORGANIZATION>/attributes/OIGExclusion/attributes/ActionDescriptionBOARD_CODEVARCHARCourt case board idconfiguration/entityTypes/<ORGANIZATION>/attributes/OIGExclusion/attributes/BoardCodeBOARD_DESCVARCHARcourt case board descriptionconfiguration/<ORGANIZATION>/attributes/OIGExclusion/attributes/BoardDescACTION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/OIGExclusion/attributes/ActionDateOFFENSE_CODEVARCHARconfiguration/<ORGANIZATION>/attributes/OIGExclusion/attributes/OffenseCodeOFFENSE_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/OIGExclusion/attributes/OffenseDescriptionBRICKReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/BrickMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameBRICK_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Brick/attributes/TypeLKUP_IMS_BRICK_TYPEBRICK_VALUEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Brick/attributes/BrickValueLKUP_IMS_BRICK_VALUEEMRReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameEMR_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Entity TypeNOTESBOOLEANY/N field indicating whether workplace uses <ORGANIZATION> software to write notesconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/NotesPRESCRIBESBOOLEANY/N field indicating whether the workplace uses <ORGANIZATION> software to write a prescriptionsconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/PrescribesLKUP_IMS_EMR_PRESCRIBESELABS_X_RAYSBOOLEANY/N indicating whether the workplace uses <ORGANIZATION> software for <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ElabsXRaysLKUP_IMS_EMR_ELABS_XRAYSNUMBER_OF_PHYSICIANSVARCHARNumber of physicians that use EMR software in the workplaceconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/NumberOfPhysiciansPOLICYMAKERVARCHARIndividual who makes decisions regarding <PERSON> softwareconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/PolicymakerSOFTWARE_TYPEVARCHARName of the <ORGANIZATION> software used at the workplaceconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/SoftwareTypeADOPTIONVARCHARWhen the <ORGANIZATION> software was adopted at the workplaceconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/AdoptionBUYING_FACTORVARCHARBuying factor which influenced the workplace's decision to purchase the <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/BuyingFactorOWNERVARCHARIndividual who made the decision to purchase <ORGANIZATION> softwareconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/OwnerAWAREBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/AwareLKUP_IMS_EMR_AWARESOFTWAREBOOLEANconfiguration/<ORGANIZATION>/attributes/<PERSON>/attributes/SoftwareLKUP_IMS_EMR_SOFTWAREVENDORVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/VendorLKUP_IMS_EMR_VENDORBUSINESS_HOURSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/BusinessHoursMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameBUSINESS_HOURS_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeDAYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DayPERIODVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/PeriodTIME_SLOTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/TimeSlotSTART_TIMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StartTimeEND_TIMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/EndTimeAPPOINTMENT_ONLYBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AppointmentOnlyPERIOD_STARTVARCHARconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/PeriodStartPERIOD_ENDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/PeriodEndACO_DETAILSACO DetailsReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ACODetailsMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameACO_DETAILS_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeACO_TYPE_CODEVARCHARAcoTypeCodeconfiguration/entityTypes/<ORGANIZATION>/attributes/ACODetails/attributes/AcoTypeCodeLKUP_IMS_ACO_TYPEACO_TYPE_CATGVARCHARAcoTypeCatgconfiguration/entityTypes/<ORGANIZATION>/attributes/ACODetails/attributes/AcoTypeCatgACO_TYPE_MDELVARCHARAcoTypeMdelconfiguration/entityTypes/<ORGANIZATION>/attributes/ACODetails/attributes/AcoTypeMdelACO_DETAIL_IDVARCHARAcoDetailIdconfiguration/<ORGANIZATION>/attributes/ACODetails/attributes/AcoDetailIdACO_DETAIL_CODEVARCHARAcoDetailCodeconfiguration/entityTypes/<ORGANIZATION>/attributes/ACODetails/attributes/AcoDetailCodeLKUP_IMS_ACO_DETAILACO_DETAIL_GROUP_CODEVARCHARAcoDetailGroupCodeconfiguration/entityTypes/<ORGANIZATION>/attributes/ACODetails/attributes/AcoDetailGroupCodeLKUP_IMS_ACO_DETAIL_GROUPACO_VALVARCHARAcoValconfiguration/<ORGANIZATION>/attributes/ACODetails/attributes/AcoValTRADE_STYLE_NAMEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/TradeStyleNameMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameTRADE_STYLE_NAME_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeORGANIZATION_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TradeStyleName/attributes/OrganizationNameLANGUAGE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TradeStyleName/attributes/LanguageCodeFORMER_ORGANIZATION_PRIMARY_NAMEVARCHARconfiguration/<ORGANIZATION>/attributes/TradeStyleName/attributes/FormerOrganizationPrimaryNameDISPLAY_SEQUENCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TradeStyleName/attributes/DisplaySequenceTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TradeStyleName/attributes/TypePRIOR_DUNS_NUMBERReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmberMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NamePRIOR_DUNSN_UMBER_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeTRANSFER_DUNS_NUMBERVARCHARconfiguration/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferDUNSNumberTRANSFER_REASON_TEXTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferReasonTextTRANSFER_REASON_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferReasonCodeTRANSFER_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferDateTRANSFERRED_FROM_DUNS_NUMBERVARCHARconfiguration/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferredFromDUNSNumberTRANSFERRED_TO_DUNS_NUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferredToDUNSNumberINDUSTRY_CODEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/IndustryCodeMaterialized: <ORGANIZATION> NameINDUSTRY_CODE_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/DNBCodeINDUSTRY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryCodeINDUSTRY_CODE_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryCodeDescriptionINDUSTRY_CODE_LANGUAGE_CODEVARCHARconfiguration/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryCodeLanguageCodeINDUSTRY_CODE_WRITING_SCRIPTVARCHARconfiguration/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryCodeWritingScriptDISPLAY_SEQUENCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/DisplaySequenceSALES_PERCENTAGEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/SalesPercentageTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/TypeINDUSTRY_TYPE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryTypeCodeIMPORT_EXPORT_AGENTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/ImportExportAgentACTIVITIES_AND_OPERATIONSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperationsMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameACTIVITIES_AND_OPERATIONS_URIVARCHARgenerated key descriptionENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/LineOfBusinessDescriptionLANGUAGE_CODEVARCHARconfiguration/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/LanguageCodeWRITING_SCRIPT_CODEVARCHARconfiguration/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/WritingScriptCodeIMPORT_INDICATORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/ImportIndicatorEXPORT_INDICATORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/ExportIndicatorAGENT_INDICATORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/AgentIndicatorEMPLOYEE_DETAILSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetailsMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameEMPLOYEE_DETAILS_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeINDIVIDUAL_EMPLOYEE_FIGURES_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/IndividualEmployeeFiguresDateINDIVIDUAL_TOTAL_EMPLOYEE_QUANTITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/IndividualTotalEmployeeQuantityINDIVIDUAL_RELIABILITY_TEXTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/IndividualReliabilityTextTOTAL_EMPLOYEE_QUANTITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/TotalEmployeeQuantityTOTAL_EMPLOYEE_RELIABILITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/TotalEmployeeReliabilityPRINCIPALS_INCLUDEDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/PrincipalsIncludedMATCH_QUALITYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameMATCH_QUALITY_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeCONFIDENCE_CODEVARCHARDnB Match Quality Confidence Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/DisplaySequenceMATCH_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/MatchCodeBEMFABVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/BEMFABMATCH_GRADEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/<PERSON>: configuration/entityTypes/<ORGANIZATION>/attributes/OrganizationDetailMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameORGANIZATION_DETAIL_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> Entity TypeMEMBER_ROLEVARCHARconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/MemberRoleSTANDALONEBOOLEANconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StandaloneCONTROL_OWNERSHIP_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ControlOwnershipDateOPERATING_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/OperatingStatusSTART_YEARVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StartYearFRANCHISE_OPERATION_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/FranchiseOperationTypeBONEYARD_ORGANIZATIONBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BoneyardOrganizationOPERATING_STATUS_COMMENTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/OperatingStatusCommentDUNS_HIERARCHYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/DUNSHierarchyMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameDUNS_HIERARCHY_URIVARCHARgenerated key <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeGLOBAL_ULTIMATE_DUNSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/GlobalUltimateDUNSGLOBAL_ULTIMATE_ORGANIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/GlobalUltimateOrganizationDOMESTIC_ULTIMATE_DUNSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DomesticUltimateDUNSDOMESTIC_ULTIMATE_ORGANIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DomesticUltimateOrganizationPARENT_DUNSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ParentDUNSPARENT_ORGANIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ParentOrganizationHEADQUARTERS_DUNSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/HeadquartersDUNSHEADQUARTERS_ORGANIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/HeadquartersOrganizationAFFILIATIONSReltio URI: configuration/relationTypes/HasHealthCareRole, configuration/relationTypes/AffiliatedPurchasing, configuration/relationTypes/Activity, configuration/relationTypes/ManagedMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameRELATION_URIVARCHARReltio Relation URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagRELATION_TYPEVARCHARReltio Relation TypeSTART_ENTITY_URIVARCHARReltio Start Entity URIEND_ENTITY_URIVARCHARReltio End Entity URIREL_GROUPVARCHARHCRS relation group from the relationship type, each rel group refers to one relation idconfiguration/relationTypes/AffiliatedPurchasing/attributes/<ORGANIZATION>, configuration/relationTypes/Managed/attributes/RelGroupLKUP_IMS_RELGROUP_TYPEREL_ORDER_AFFILIATEDPURCHASINGVARCHAROrderconfiguration/relationTypes/AffiliatedPurchasing/attributes/RelOrderSTATUS_REASON_CODEVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/StatusReasonCode, configuration/relationTypes/Activity/attributes/StatusReasonCode, configuration/relationTypes/Managed/attributes/StatusReasonCodeLKUP_IMS_SRC_DEACTIVE_REASON_CODESTATUS_UPDATE_DATEDATEconfiguration/relationTypes/AffiliatedPurchasing/attributes/StatusUpdateDate, configuration/relationTypes/Activity/attributes/StatusUpdateDate, configuration/relationTypes/Managed/attributes/StatusUpdateDateVALIDATION_CHANGE_REASONVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/ValidationChangeReason, configuration/relationTypes/Activity/attributes/ValidationChangeReason, configuration/relationTypes/Managed/attributes/ValidationChangeReasonLKUP_IMS_VAL_STATUS_CHANGE_REASONVALIDATION_CHANGE_DATEDATEconfiguration/relationTypes/AffiliatedPurchasing/attributes/ValidationChangeDate, configuration/relationTypes/Activity/attributes/ValidationChangeDate, configuration/relationTypes/Managed/attributes/ValidationChangeDateVALIDATION_STATUSVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/<ORGANIZATION>, configuration/relationTypes/Activity/attributes/<ORGANIZATION>, configuration/relationTypes/Managed/attributes/ValidationStatusLKUP_IMS_VAL_STATUSAFFILIATION_STATUSVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/<ORGANIZATION>, configuration/relationTypes/Activity/attributes/<ORGANIZATION>, configuration/relationTypes/Managed/attributes/AffiliationStatusLKUP_IMS_STATUSCOUNTRYVARCHARCountry Codeconfiguration/relationTypes/AffiliatedPurchasing/attributes/Country, configuration/relationTypes/Activity/attributes/Country, configuration/relationTypes/Managed/attributes/<ORGANIZATION>/relationTypes/AffiliatedPurchasing/attributes/<ORGANIZATION>, configuration/relationTypes/Activity/attributes/AffiliationNameSUBSCRIPTION_FLAG1BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag1, configuration/relationTypes/Activity/attributes/SubscriptionFlag1, configuration/relationTypes/Managed/attributes/SubscriptionFlag1SUBSCRIPTION_FLAG2BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag2, configuration/relationTypes/Activity/attributes/SubscriptionFlag2, configuration/relationTypes/Managed/attributes/SubscriptionFlag2SUBSCRIPTION_FLAG3BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag3, configuration/relationTypes/Activity/attributes/SubscriptionFlag3, configuration/relationTypes/Managed/attributes/SubscriptionFlag3SUBSCRIPTION_FLAG4BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag4, configuration/relationTypes/Activity/attributes/SubscriptionFlag4, configuration/relationTypes/Managed/attributes/SubscriptionFlag4SUBSCRIPTION_FLAG5BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag5, configuration/relationTypes/Activity/attributes/SubscriptionFlag5, configuration/relationTypes/Managed/attributes/SubscriptionFlag5SUBSCRIPTION_FLAG6BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag6, configuration/relationTypes/Activity/attributes/SubscriptionFlag6, configuration/relationTypes/Managed/attributes/SubscriptionFlag6SUBSCRIPTION_FLAG7BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag7, configuration/relationTypes/Activity/attributes/SubscriptionFlag7, configuration/relationTypes/Managed/attributes/SubscriptionFlag7SUBSCRIPTION_FLAG8BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag8, configuration/relationTypes/Activity/attributes/SubscriptionFlag8, configuration/relationTypes/Managed/attributes/SubscriptionFlag8SUBSCRIPTION_FLAG9BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag9, configuration/relationTypes/Activity/attributes/SubscriptionFlag9, configuration/relationTypes/Managed/attributes/SubscriptionFlag9SUBSCRIPTION_FLAG10BOOLEANUsed for setting a profile eligible for certain subscriptionconfiguration/relationTypes/AffiliatedPurchasing/attributes/SubscriptionFlag10, configuration/relationTypes/Activity/attributes/SubscriptionFlag10, configuration/relationTypes/Managed/attributes/SubscriptionFlag10BEST_RELATIONSHIP_INDICATORVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/BestRelationshipIndicator, configuration/relationTypes/Activity/attributes/BestRelationshipIndicator, configuration/relationTypes/Managed/attributes/BestRelationshipIndicatorLKUP_IMS_YES_NORELATIONSHIP_RANKVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/<ORGANIZATION>, configuration/relationTypes/Activity/attributes/<ORGANIZATION>, configuration/relationTypes/Managed/attributes/RelationshipRankRELATIONSHIP_VIEW_CODEVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/RelationshipViewCode, configuration/relationTypes/Activity/attributes/RelationshipViewCode, configuration/relationTypes/Managed/attributes/RelationshipViewCodeRELATIONSHIP_VIEW_TYPE_CODEVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/RelationshipViewTypeCode, configuration/relationTypes/Activity/attributes/RelationshipViewTypeCode, configuration/relationTypes/Managed/attributes/RelationshipViewTypeCodeRELATIONSHIP_STATUSVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/<ORGANIZATION>, configuration/relationTypes/Activity/attributes/<ORGANIZATION>, configuration/relationTypes/Managed/attributes/RelationshipStatusLKUP_IMS_RELATIONSHIP_STATUSRELATIONSHIP_CREATE_DATEDATEconfiguration/relationTypes/AffiliatedPurchasing/attributes/RelationshipCreateDate, configuration/relationTypes/Activity/attributes/RelationshipCreateDate, configuration/relationTypes/Managed/attributes/RelationshipCreateDateUPDATE_DATEDATEconfiguration/relationTypes/AffiliatedPurchasing/attributes/UpdateDate, configuration/relationTypes/Activity/attributes/UpdateDate, configuration/relationTypes/Managed/attributes/UpdateDateRELATIONSHIP_START_DATEDATEconfiguration/relationTypes/AffiliatedPurchasing/attributes/RelationshipStartDate, configuration/relationTypes/Activity/attributes/RelationshipStartDate, configuration/relationTypes/Managed/attributes/RelationshipStartDateRELATIONSHIP_END_DATEDATEconfiguration/relationTypes/AffiliatedPurchasing/attributes/RelationshipEndDate, configuration/relationTypes/Activity/attributes/RelationshipEndDate, configuration/relationTypes/Managed/attributes/RelationshipEndDateCHECKED_DATEDATEconfiguration/relationTypes/Activity/attributes/CheckedDatePREFERRED_MAIL_INDICATORBOOLEANconfiguration/relationTypes/Activity/attributes/PreferredMailIndicatorPREFERRED_VISIT_INDICATORBOOLEANconfiguration/relationTypes/Activity/attributes/PreferredVisitIndicatorCOMMITTEE_MEMBERVARCHARconfiguration/relationTypes/Activity/attributes/CommitteeMemberLKUP_IMS_MEMBER_MED_COMMITTEEAPPOINTMENT_REQUIREDBOOLEANconfiguration/relationTypes/Activity/attributes/AppointmentRequiredAFFILIATION_TYPE_CODEVARCHARAffiliation Type Codeconfiguration/relationTypes/Activity/attributes/AffiliationTypeCodeWORKING_STATUSVARCHARconfiguration/relationTypes/Activity/attributes/WorkingStatusLKUP_IMS_WORKING_STATUSTITLEVARCHARconfiguration/relationTypes/Activity/attributes/TitleLKUP_IMS_PROF_TITLERANKVARCHARconfiguration/relationTypes/Activity/attributes/RankPRIMARY_AFFILIATION_INDICATORBOOLEANconfiguration/relationTypes/Activity/attributes/PrimaryAffiliationIndicatorACT_WEBSITE_URLVARCHARconfiguration/relationTypes/Activity/attributes/ActWebsiteURLACT_VALIDATION_STATUSVARCHARconfiguration/relationTypes/Activity/attributes/ActValidationStatusLKUP_IMS_VAL_STATUSPREF_OR_ACTIVEVARCHARconfiguration/relationTypes/Activity/attributes/PrefOrActiveCOMMENTERSVARCHARCommentersconfiguration/relationTypes/Activity/attributes/CommentersREL_ORDER_MANAGEDBOOLEANOrderconfiguration/relationTypes/Managed/attributes/RelOrderPURCHASING_CLASSIFICATIONReltio URI: configuration/relationTypes/AffiliatedPurchasing/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameCLASSIFICATION_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URICLASSIFICATION_TYPEVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/Classification/attributes/ClassificationTypeLKUP_IMS_CLASSIFICATION_TYPECLASSIFICATION_INDICATORVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/Classification/attributes/ClassificationIndicatorLKUP_IMS_CLASSIFICATION_INDICATORCLASSIFICATION_VALUEVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/Classification/attributes/ClassificationValueCLASSIFICATION_VALUE_NUMERIC_QUANTITYVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/Classification/attributes/ClassificationValueNumericQuantitySTATUSVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/Classification/attributes/StatusLKUP_IMS_CLASSIFICATION_STATUSEFFECTIVE_DATEDATEconfiguration/relationTypes/AffiliatedPurchasing/attributes/Classification/attributes/EffectiveDateEND_DATEDATEconfiguration/relationTypes/AffiliatedPurchasing/attributes/Classification/attributes/EndDateNOTESVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/Classification/attributes/NotesPURCHASING_SOURCE_DATAReltio URI: configuration/relationTypes/AffiliatedPurchasing/attributes/SourceDataMaterialized: <ORGANIZATION> URILOV NameSOURCE_DATA_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URIDATASET_IDENTIFIERVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/<PERSON>/attributes/DatasetIdentifierSTART_OBJECT_DATASET_PARTY_IDENTIFIERVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/<PERSON>/attributes/StartObjectDatasetPartyIdentifierEND_OBJECT_DATASET_PARTY_IDENTIFIERVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/<PERSON>/attributes/EndObjectDatasetPartyIdentifierRANKVARCHARconfiguration/relationTypes/AffiliatedPurchasing/attributes/<PERSON>/attributes/RankACTIVITY_PHONEReltio URI: configuration/relationTypes/Activity/attributes/ActPhoneMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameACT_PHONE_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URITYPE_IMSVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/TypeIMSLKUP_IMS_COMMUNICATION_TYPENUMBERVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/NumberEXTENSIONVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/ExtensionRANKVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/RankCOUNTRY_CODEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/CountryCodeLKUP_IMS_COUNTRY_CODEAREA_CODEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/AreaCodeLOCAL_NUMBERVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/LocalNumberFORMATTED_NUMBERVARCHARFormatted number of the phoneconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/FormattedNumberVALIDATION_STATUSVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/ValidationStatusLINE_TYPEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/LineTypeFORMAT_MASKVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/FormatMaskDIGIT_COUNTVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/DigitCountGEO_AREAVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/GeoAreaGEO_COUNTRYVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/GeoCountryACTIVEBOOLEANDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/ActiveACTIVITY_PRIVACY_PREFERENCESReltio URI: configuration/relationTypes/Activity/attributes/PrivacyPreferencesMaterialized: <PERSON> NamePRIVACY_PREFERENCES_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URIPHONE_OPT_OUTBOOLEANconfiguration/relationTypes/Activity/attributes/PrivacyPreferences/attributes/PhoneOptOutALLOWED_TO_CONTACTBOOLEANconfiguration/relationTypes/Activity/attributes/PrivacyPreferences/attributes/AllowedToContactEMAIL_OPT_OUTBOOLEANconfiguration/relationTypes/Activity/attributes/PrivacyPreferences/attributes/EmailOptOutMAIL_OPT_OUTBOOLEANconfiguration/relationTypes/Activity/attributes/PrivacyPreferences/attributes/MailOptOutFAX_OPT_OUTBOOLEANconfiguration/relationTypes/Activity/attributes/PrivacyPreferences/attributes/FaxOptOutREMOTE_OPT_OUTBOOLEANconfiguration/relationTypes/Activity/attributes/PrivacyPreferences/attributes/RemoteOptOutOPT_OUT_ONEKEYBOOLEANconfiguration/relationTypes/Activity/attributes/PrivacyPreferences/attributes/OptOutOnekeyVISIT_OPT_OUTBOOLEANconfiguration/relationTypes/Activity/attributes/PrivacyPreferences/attributes/VisitOptOutACTIVITY_SPECIALITIESReltio URI: configuration/relationTypes/Activity/attributes/SpecialitiesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSPECIALITIES_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URISPECIALTY_TYPEVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/SpecialtyTypeLKUP_IMS_SPECIALTY_TYPESPECIALTYVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/SpecialtyLKUP_IMS_SPECIALTYEMAIL_OPT_OUTBOOLEANconfiguration/relationTypes/Activity/attributes/Specialities/attributes/EmailOptOutDESCVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/DescGROUPVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/GroupSOURCE_CDVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/SourceCDSPECIALTY_DETAILVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/SpecialtyDetailPROFESSION_CODEVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/ProfessionCodeRANKVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/RankPRIMARY_SPECIALTY_FLAGBOOLEANPrimary Specialty flag to be populated by client teams according to business rulesconfiguration/relationTypes/Activity/attributes/Specialities/attributes/PrimarySpecialtyFlagSORT_ORDERVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/SortOrderBEST_RECORDVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/BestRecordSUB_SPECIALTYVARCHARconfiguration/relationTypes/Activity/attributes/Specialities/attributes/SubSpecialtyLKUP_IMS_SPECIALTYSUB_SPECIALTY_RANKVARCHARSubSpecialty Rankconfiguration/relationTypes/Activity/attributes/Specialities/attributes/SubSpecialtyRankACTIVITY_IDENTIFIERSReltio URI: configuration/relationTypes/Activity/attributes/ActIdentifiersMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameACT_IDENTIFIERS_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URIIDVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/IDTYPEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/TypeLKUP_IMS_HCP_IDENTIFIER_TYPEORDERVARCHARDisplays the order of priority for an <ORGANIZATION> for those facilities that share an <ORGANIZATION>. Valid values are: P ?the <ORGANIZATION> on a business record is the primary identifier for the business and O ?the <ORGANIZATION> is a secondary identifier. (Using P for the <ORGANIZATION> supports aggregating clinical volumes and avoids double counting).configuration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/OrderAUTHORIZATION_STATUSVARCHARAuthorization Statusconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/AuthorizationStatusLKUP_IMS_IDENTIFIER_STATUSNATIONAL_ID_ATTRIBUTEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/NationalIdAttributeACTIVITY_ADDITIONAL_ATTRIBUTESReltio URI: configuration/relationTypes/Activity/attributes/AdditionalAttributesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDITIONAL_ATTRIBUTES_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URIATTRIBUTE_NAMEVARCHARconfiguration/relationTypes/Activity/attributes/AdditionalAttributes/attributes/AttributeNameATTRIBUTE_TYPEVARCHARconfiguration/relationTypes/Activity/attributes/AdditionalAttributes/attributes/AttributeTypeLKUP_IMS_TYPE_CODEATTRIBUTE_VALUEVARCHARconfiguration/relationTypes/Activity/attributes/AdditionalAttributes/attributes/AttributeValueATTRIBUTE_RANKVARCHARconfiguration/relationTypes/Activity/attributes/AdditionalAttributes/attributes/AttributeRankADDITIONAL_INFOVARCHARconfiguration/relationTypes/Activity/attributes/AdditionalAttributes/attributes/AdditionalInfoACTIVITY_BUSINESS_HOURSReltio URI: configuration/relationTypes/Activity/attributes/BusinessHoursMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameBUSINESS_HOURS_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URIDAYVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/DayPERIODVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/PeriodTIME_SLOTVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/TimeSlotSTART_TIMEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/StartTimeEND_TIMEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/EndTimeAPPOINTMENT_ONLYBOOLEANconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/AppointmentOnlyPERIOD_STARTVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/PeriodStartPERIOD_ENDVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/PeriodEndPERIOD_OF_DAYVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/PeriodOfDayACTIVITY_AFFILIATION_ROLEReltio URI: configuration/relationTypes/Activity/attributes/AffiliationRoleMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameAFFILIATION_ROLE_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URIROLE_RANKVARCHARconfiguration/relationTypes/Activity/attributes/AffiliationRole/attributes/RoleRankROLE_NAMEVARCHARconfiguration/relationTypes/Activity/attributes/AffiliationRole/attributes/RoleNameLKUP_IMS_ROLEROLE_ATTRIBUTEVARCHARconfiguration/relationTypes/Activity/attributes/AffiliationRole/attributes/RoleAttributeROLE_TYPE_ATTRIBUTEVARCHARconfiguration/relationTypes/Activity/attributes/AffiliationRole/attributes/RoleTypeAttributeROLE_STATUSVARCHARconfiguration/relationTypes/Activity/attributes/AffiliationRole/attributes/RoleStatusBEST_ROLE_INDICATORVARCHARconfiguration/relationTypes/Activity/attributes/AffiliationRole/attributes/BestRoleIndicatorACTIVITY_EMAILReltio URI: configuration/relationTypes/Activity/attributes/ActEmailMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameACT_EMAIL_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URITYPE_IMSVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/TypeIMSLKUP_IMS_COMMUNICATION_TYPEEMAILVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/EmailDOMAINVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/DomainDOMAIN_TYPEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/DomainTypeUSERNAMEVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/UsernameRANKVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/RankVALIDATION_STATUSVARCHARconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/ValidationStatusACTIVEBOOLEANconfiguration/relationTypes/Activity/attributes/<ORGANIZATION>/attributes/ActiveACTIVITY_BRICKReltio URI: configuration/relationTypes/Activity/attributes/BrickMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameBRICK_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URITYPEVARCHARconfiguration/relationTypes/Activity/attributes/Brick/attributes/TypeLKUP_IMS_BRICK_TYPEBRICK_VALUEVARCHARconfiguration/relationTypes/Activity/attributes/Brick/attributes/BrickValueLKUP_IMS_BRICK_VALUESORT_ORDERVARCHARconfiguration/relationTypes/Activity/attributes/Brick/attributes/SortOrderACTIVITY_CLASSIFICATIONReltio URI: configuration/relationTypes/Activity/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameCLASSIFICATION_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URICLASSIFICATION_TYPEVARCHARconfiguration/relationTypes/Activity/attributes/Classification/attributes/ClassificationTypeLKUP_IMS_CLASSIFICATION_TYPECLASSIFICATION_INDICATORVARCHARconfiguration/relationTypes/Activity/attributes/Classification/attributes/ClassificationIndicatorLKUP_IMS_CLASSIFICATION_INDICATORCLASSIFICATION_VALUEVARCHARconfiguration/relationTypes/Activity/attributes/Classification/attributes/ClassificationValueCLASSIFICATION_VALUE_NUMERIC_QUANTITYVARCHARconfiguration/relationTypes/Activity/attributes/Classification/attributes/ClassificationValueNumericQuantitySTATUSVARCHARconfiguration/relationTypes/Activity/attributes/Classification/attributes/StatusLKUP_IMS_CLASSIFICATION_STATUSEFFECTIVE_DATEDATEconfiguration/relationTypes/Activity/attributes/Classification/attributes/EffectiveDateEND_DATEDATEconfiguration/relationTypes/Activity/attributes/Classification/attributes/EndDateNOTESVARCHARconfiguration/relationTypes/Activity/attributes/Classification/attributes/NotesACTIVITY_SOURCE_DATAReltio URI: configuration/relationTypes/Activity/attributes/SourceDataMaterialized: <ORGANIZATION> URILOV NameSOURCE_DATA_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URIDATASET_IDENTIFIERVARCHARconfiguration/relationTypes/Activity/attributes/<PERSON>/attributes/DatasetIdentifierSTART_OBJECT_DATASET_PARTY_IDENTIFIERVARCHARconfiguration/relationTypes/Activity/attributes/<PERSON>/attributes/StartObjectDatasetPartyIdentifierEND_OBJECT_DATASET_PARTY_IDENTIFIERVARCHARconfiguration/relationTypes/Activity/attributes/<PERSON>/attributes/EndObjectDatasetPartyIdentifierRANKVARCHARconfiguration/relationTypes/Activity/attributes/<PERSON>/attributes/RankMANAGED_CLASSIFICATIONReltio URI: configuration/relationTypes/Managed/attributes/<ORGANIZATION>: <ORGANIZATION> NameCLASSIFICATION_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URICLASSIFICATION_TYPEVARCHARconfiguration/relationTypes/Managed/attributes/Classification/attributes/ClassificationTypeLKUP_IMS_CLASSIFICATION_TYPECLASSIFICATION_INDICATORVARCHARconfiguration/relationTypes/Managed/attributes/Classification/attributes/ClassificationIndicatorLKUP_IMS_CLASSIFICATION_INDICATORCLASSIFICATION_VALUEVARCHARconfiguration/relationTypes/Managed/attributes/Classification/attributes/ClassificationValueCLASSIFICATION_VALUE_NUMERIC_QUANTITYVARCHARconfiguration/relationTypes/Managed/attributes/Classification/attributes/ClassificationValueNumericQuantitySTATUSVARCHARconfiguration/relationTypes/Managed/attributes/Classification/attributes/StatusLKUP_IMS_CLASSIFICATION_STATUSEFFECTIVE_DATEDATEconfiguration/relationTypes/Managed/attributes/Classification/attributes/EffectiveDateEND_DATEDATEconfiguration/relationTypes/Managed/attributes/Classification/attributes/EndDateNOTESVARCHARconfiguration/relationTypes/Managed/attributes/Classification/attributes/NotesMANAGED_SOURCE_DATAReltio URI: configuration/relationTypes/Managed/attributes/SourceDataMaterialized: <ORGANIZATION> URILOV NameSOURCE_DATA_URIVARCHARgenerated key descriptionRELATION_URIVARCHARReltio Relation URIDATASET_IDENTIFIERVARCHARconfiguration/relationTypes/Managed/attributes/<PERSON>/attributes/DatasetIdentifierSTART_OBJECT_DATASET_PARTY_IDENTIFIERVARCHARconfiguration/relationTypes/Managed/attributes/<PERSON>/attributes/StartObjectDatasetPartyIdentifierEND_OBJECT_DATASET_PARTY_IDENTIFIERVARCHARconfiguration/relationTypes/Managed/attributes/<PERSON>/attributes/EndObjectDatasetPartyIdentifierRANKVARCHARconfiguration/relationTypes/Managed/attributes/<PERSON>/attributes/Rank"
|
||
},
|
||
{
|
||
"title": "Dynamic views for <ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Dynamic+views+for+COMPANY+MDM+Model",
|
||
"content": "<NRP> care providerReltio URI: configuration/entityTypes/HCPMaterialized: <ORGANIZATION> URILOV NameENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/CountryCOMPANY_CUST_IDVARCHARAn auto-generated unique COMPANY id assigned to an <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/COMPANYCustIDPREFIXVARCHARPrefix added before the name, e.g., Mr, Ms, Drconfiguration/entityTypes/<ORGANIZATION>/attributes/PrefixHCPPrefixNAMEVARCHARNameconfiguration/entityTypes/<ORGANIZATION>/attributes/NameFIRST_NAMEVARCHARFirst Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/FirstNameLAST_NAMEVARCHARLast Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/CleansedMiddleNameSTATUSVARCHARStatus, e.g., <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/StatusHCPStatusSTATUS_DETAILVARCHARDeactivation reasonconfiguration/entityTypes/<ORGANIZATION>/attributes/StatusDetailHCPStatusDetailDEACTIVATION_CODEVARCHARDeactivation reasonconfiguration/entityTypes/<ORGANIZATION>/attributes/DeactivationCodeHCPDeactivationReasonCodeSUFFIX_NAMEVARCHARGeneration <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/SuffixNameSuffixNameGENDERVARCHARGenderconfiguration/entityTypes/<ORGANIZATION>/attributes/GenderGenderNICKNAMEVARCHARNicknameconfiguration/entityTypes/<ORGANIZATION>/attributes/NicknamePREFERRED_NAMEVARCHARPreferred Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/PreferredNameFORMATTED_NAMEVARCHARFormatted <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/FormattedNameTYPE_CODEVARCHARHCP Type Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/SubTypeCodeHCPSubTypeCodeIS_COMPANY_APPROVED_SPEAKERBOOLEANIs COMPANY Approved Speakerconfiguration/entityTypes/<ORGANIZATION>/attributes/IsCOMPANYApprovedSpeakerSPEAKER_LAST_BRIEFING_DATEDATELast Briefing Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/SpeakerLastBriefingDateSPEAKER_TYPEVARCHARSpeaker typeconfiguration/entityTypes/<ORGANIZATION>/attributes/SpeakerTypeSPEAKER_STATUSVARCHARSpeaker <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/SpeakerStatusHCPSpeakerStatusSPEAKER_LEVELVARCHARSpeaker Statusconfiguration/entityTypes/<ORGANIZATION>/attributes/SpeakerLevelSPEAKER_EFFECTIVE_DATEDATESpeaker Effective Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/SpeakerEffectiveDateSPEAKER_DEACTIVATE_REASONVARCHARSpeaker Effective Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/SpeakerDeactivateReasonDELETION_DATEDATEDeletion Dataconfiguration/entityTypes/<ORGANIZATION>/attributes/DeletionDateACCOUNT_BLOCKEDBOOLEANIndicator of account blocked or notconfiguration/entityTypes/<ORGANIZATION>/attributes/AccountBlockedY_O_BVARCHARBirth Yearconfiguration/entityTypes/<ORGANIZATION>/attributes/YoBD_O_DDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/DoDY_O_DVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/YoDTERRITORY_NUMBERVARCHARTitle of <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/TerritoryNumberWEBSITE_URLVARCHARWebsite URLconfiguration/entityTypes/<ORGANIZATION>/attributes/WebsiteURLTITLEVARCHARTitle of <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/TitleHCPTitleEFFECTIVE_END_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/EffectiveEndDateCOMPANY_WATCH_INDBOOLEANCOMPANY Watch Indconfiguration/entityTypes/<ORGANIZATION>/attributes/COMPANYWatchIndKOL_STATUSBOOLEANKOL Statusconfiguration/entityTypes/<ORGANIZATION>/attributes/KOLStatusTHIRD_PARTY_DECILVARCHARThird Party Decilconfiguration/entityTypes/<ORGANIZATION>/attributes/ThirdPartyDecilFEDERAL_EMP_LETTER_DATEDATEFederal Emp Letter Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<PERSON>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/SpeakerTravelIndicatorSPEAKER_INFOVARCHARSpeaker Informationconfiguration/entityTypes/<ORGANIZATION>/attributes/SpeakerInfoDEGREEVARCHARDegree <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/DegreePRESENT_EMPLOYMENTVARCHARPresent Employmentconfiguration/entityTypes/<ORGANIZATION>/attributes/PresentEmploymentPE_CDEMPLOYMENT_TYPE_CODEVARCHAREmployment Type Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/EmploymentTypeCodeEMPLOYMENT_TYPE_DESCVARCHAREmployment Type Descriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/EmploymentTypeDescTYPE_OF_PRACTICEVARCHARType Of Practiceconfiguration/entityTypes/<ORGANIZATION>/attributes/TypeOfPracticeTOP_CDTYPE_OF_PRACTICE_DESCVARCHARType Of Practice Descriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/TypeOfPracticeDescSCHOOL_SEQ_NUMBERVARCHARSchool Sequence Numberconfiguration/entityTypes/<ORGANIZATION>/attributes/SchoolSeqNumberMRM_DELETE_FLAGBOOLEANMRM Delete Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/MRMDeleteFlagMRM_DELETE_DATEDATEMRM Delete Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/CNCYDateAMA_HOSPITALVARCHARAMA Hospital Infoconfiguration/entityTypes/<ORGANIZATION>/attributes/AMAHospitalAMA_HOSPITAL_DESCVARCHARAMA Hospital Descconfiguration/entityTypes/<ORGANIZATION>/attributes/AMAHospitalDescPRACTISE_AT_HOSPITALVARCHARPractise At <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/PractiseAtHospitalSEGMENT_IDVARCHARSegment IDconfiguration/entityTypes/<ORGANIZATION>/attributes/SegmentIDSEGMENT_DESCVARCHARSegment Descconfiguration/entityTypes/<ORGANIZATION>/attributes/SegmentDescDCR_STATUSVARCHARStatus of <ORGANIZATION> profileconfiguration/entityTypes/<ORGANIZATION>/attributes/DCRStatusDCRStatusPREFERRED_LANGUAGEVARCHARLanguage preferenceconfiguration/entityTypes/<ORGANIZATION>/attributes/PreferredLanguageSOURCE_TYPEVARCHARType of the sourceconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceTypeSTATE_UPDATE_DATEDATEUpdate date of stateconfiguration/entityTypes/<ORGANIZATION>/attributes/StateUpdateDateSOURCE_UPDATE_DATEDATEUpdate date at sourceconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceUpdateDateCOMMENTERSVARCHARCommentersconfiguration/entityTypes/<ORGANIZATION>/attributes/CommentersIMAGE_GALLERYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/entityTypes/<ORGANIZATION>/attributes/BirthCityBIRTH_STATEVARCHARBirth Stateconfiguration/entityTypes/<ORGANIZATION>/attributes/BirthStateStateBIRTH_COUNTRYVARCHARBirth <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/BirthCountryCountryD_O_BDATEDate of <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/DoBORIGINAL_SOURCE_NAMEVARCHAROriginal Source Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/OriginalSourceNameSOURCE_MATCH_CATEGORYVARCHARSource Match Categoryconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceMatchCategoryALTERNATE_NAMEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/AlternateNameMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameALTERNATE_NAME_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> Entity TypeNAME_TYPE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/NameTypeCodeHCPAlternateNameTypeFULL_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/FullNameFIRST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/FirstNameMIDDLE_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/MiddleNameLAST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/LastNameVERSIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/VersionADDRESSESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESSES_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeADDRESS_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressTypeAddressTypeCOMPANY_ADDRESS_IDVARCHARCOMPANY Address IDconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/COMPANYAddressID, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/COMPANYAddressID, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/COMPANYAddressIDADDRESS_LINE1VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine1, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine1, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine1ADDRESS_LINE2VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine2, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine2, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine2ADDRESS_LINE3VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine3, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine3, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine3ADDRESS_LINE4VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine4, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine4, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine4CITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/City, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/City, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CitySTATE_PROVINCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StateProvince, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StateProvince, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StateProvinceStateCOUNTRY_ADDRESSESVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Country, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Country, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CountryCountryPO_BOXVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/POBox, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/POBox, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/POBoxZIP5VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip5, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip5, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip5ZIP4VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip4, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip4, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip4STREETVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Street, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Street, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StreetPOSTAL_CODE_EXTENSIONVARCHARPostal Code Extensionconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PostalCodeExtension, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PostalCodeExtension, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PostalCodeExtensionADDRESS_USAGE_TAGVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressUsageTag, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressUsageTagAddressUsageTagCNCY_DATEDATECNCY Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CNCYDate, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CNCYDateCBSA_CODEVARCHARCore Based Statistical Areaconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CBSACode, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CBSACode, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CBSACodePREMISEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Premise, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PremiseISO3166-2VARCHARThis field holds the ISO 3166 2-character country <URL>nfiguration/entityTypes/HCP/attributes/Addresses/attributes/ISO3166-2, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/ISO3166-2, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/ISO3166-2ISO3166-3VARCHARThis field holds the ISO 3166 3-character country <URL>nfiguration/entityTypes/HCP/attributes/Addresses/attributes/ISO3166-3, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/ISO3166-3, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/ISO3166-3ISO3166-NVARCHARThis field holds the ISO 3166 N-digit numeric country <URL>nfiguration/entityTypes/HCP/attributes/Addresses/attributes/ISO3166-N, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/ISO3166-N, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/ISO3166-NLATITUDEVARCHARLatitudeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Latitude, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Latitude, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/LatitudeLONGITUDEVARCHARLongitudeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Longitude, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Longitude, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/LongitudeGEO_ACCURACYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/GeoAccuracyVERIFICATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/VerificationStatusVERIFICATION_STATUS_DETAILSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/VerificationStatusDetails, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/VerificationStatusDetails, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/VerificationStatusDetailsAVCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AVCSETTING_TYPEVARCHARSetting Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SettingTypeADDRESS_SETTING_TYPE_DESCVARCHARAddress Setting Type Descconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressSettingTypeDesc, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressSettingTypeDescCATEGORYVARCHARCategoryconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Category, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CategoryAddressCategoryFIPS_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSCode, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSCodeFIPS_COUNTY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSCountyCode, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSCountyCodeFIPS_COUNTY_CODE_DESCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSCountyCodeDesc, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSCountyCodeDescFIPS_STATE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSStateCodeFIPS_STATE_CODE_DESCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSStateCodeDesc, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/FIPSStateCodeDescCARE_OFVARCHARCare Ofconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CareOf, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/CareOfMAIN_PHYSICAL_OFFICEVARCHARMain Physical Officeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/MainPhysicalOffice, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/MainPhysicalOfficeDELIVERABILITY_CONFIDENCEVARCHARDeliverability Confidenceconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/DeliverabilityConfidence, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/DeliverabilityConfidenceAPPLIDVARCHARAPPLIDconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/APPLID, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/APPLIDSMPLDLV_INDBOOLEANSMPLDLV <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SMPLDLVInd, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SMPLDLVIndSTATUSVARCHARStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StatusAddressStatusSTARTER_ELIGIBLE_FLAGVARCHARStarterEligibleFlagconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StarterEligibleFlag, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StarterEligibleFlagDEA_FLAGBOOLEANDEA Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/DEAFlag, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/DEAFlagUSAGE_TYPEVARCHARUsage Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/UsageTypePRIMARYBOOLEANPrimary <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Primary, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PrimaryEFFECTIVE_START_DATEDATEEffective Start Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/EffectiveStartDate, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/EffectiveStartDateEFFECTIVE_END_DATEDATEEffective End Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/EffectiveEndDate, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/EffectiveEndDateADDRESS_RANKVARCHARAddress Rank for priorityconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressRank, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressRank, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressRankSOURCE_SEGMENT_CODEVARCHARSource Segment Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SourceSegmentCode, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SourceSegmentCodeSEGMENT1VARCHARSegment1configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Segment1, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Segment1SEGMENT2VARCHARSegment2configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Segment2, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Segment2SEGMENT3VARCHARSegment3configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Segment3, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Segment3ADDRESS_INDBOOLEANAddressIndconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressInd, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressIndSCRIPT_UTILIZATION_WEIGHTVARCHARScript Utilization Weightconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/ScriptUtilizationWeight, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/ScriptUtilizationWeightBUSINESS_ACTIVITY_CODEVARCHARBusiness Activity Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/BusinessActivityCode, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/BusinessActivityCodeBUSINESS_ACTIVITY_DESCVARCHARBusiness Activity Descconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/BusinessActivityDesc, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PracticeLocationRank, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PracticeLocationRankPracticeLocationRankPRACTICE_LOCATION_CONFIDENCE_INDVARCHARPractice <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PracticeLocationConfidenceInd, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PracticeLocationConfidenceIndPRACTICE_LOCATION_CONFIDENCE_DESCVARCHARPractice <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PracticeLocationConfidenceDesc, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/PracticeLocationConfidenceDescSINGLE_ADDRESS_INDBOOLEANSingle Address Indconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SingleAddressInd, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SingleAddressIndSUB_ADMINISTRATIVE_AREAVARCHARThis field holds the smallest geographic data element within a country. For instance, <LOCATION> <URL>nfiguration/entityTypes/HCP/attributes/Addresses/attributes/SubAdministrativeArea, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SubAdministrativeArea, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SubAdministrativeAreaSUPER_ADMINISTRATIVE_AREAVARCHARThis field holds the largest geographic data element within a <URL>nfiguration/entityTypes/HCO/attributes/Addresses/attributes/SuperAdministrativeAreaADMINISTRATIVE_AREAVARCHARThis field holds the most common geographic data element within a country. For instance, <ORGANIZATION>, and <NRP> <URL>nfiguration/entityTypes/HCO/attributes/Addresses/attributes/AdministrativeAreaUNIT_NAMEVARCHARconfiguration/entityTypes/HCO/attributes/Addresses/attributes/UnitNameUNIT_VALUEVARCHARconfiguration/entityTypes/HCO/attributes/Addresses/attributes/UnitValueFLOORVARCHARN/Aconfiguration/entityTypes/HCO/attributes/Addresses/attributes/FloorBUILDINGVARCHARN/Aconfiguration/entityTypes/HCO/attributes/Addresses/attributes/BuildingSUB_BUILDINGVARCHARconfiguration/entityTypes/HCO/attributes/Addresses/attributes/SubBuildingNEIGHBORHOODVARCHARconfiguration/entityTypes/HCO/attributes/Addresses/attributes/NeighborhoodPREMISE_NUMBERVARCHARconfiguration/entityTypes/HCO/attributes/Addresses/attributes/PremiseNumberADDRESSES_SOURCESourceReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/SourceMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESSES_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeSOURCE_NAMEVARCHARSourceNameconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceName, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceName, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceNameSOURCE_RANKVARCHARSourceRankconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceRankSOURCE_ADDRESS_IDVARCHARSource Address IDconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceAddressID, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceAddressID, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/SourceAddressIDLEGACY_IQVIA_ADDRESS_IDVARCHARLegacy address idconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/LegacyIQVIAAddressID, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Source/attributes/LegacyIQVIAAddressIDADDRESSES_DEADEAReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>: <PERSON> KeyDEA_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeNUMBERVARCHARNumberconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/Number, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/NumberEXPIRATION_DATEDATEExpiration Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/ExpirationDate, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/ExpirationDateSTATUSVARCHARStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/StatusAddressDEAStatusSTATUSVARCHARStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/StatusSTATUS_DETAILVARCHARDeactivation Reason Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/StatusDetailHCPDEAStatusDetailSTATUS_DETAILVARCHARDeactivation Reason Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/StatusDetailDRUG_SCHEDULEVARCHARDrug Scheduleconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/DrugSchedule, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/DrugScheduleDRUG_SCHEDULEVARCHARDrug Scheduleconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/DrugSchedule, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/DrugScheduleApp-LSCustomer360DEADrugScheduleEFFECTIVE_DATEDATEEffective Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/EffectiveDate, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/EffectiveDateSTATUS_DATEDATEStatus Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/StatusDate, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/StatusDateDEA_BUSINESS_ACTIVITYVARCHARBusiness Activityconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/DEABusinessActivity, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/DEABusinessActivityDEABusinessActivityDEA_BUSINESS_ACTIVITYVARCHARBusiness Activityconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/DEABusinessActivity, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/DEABusinessActivitySUB_BUSINESS_ACTIVITYVARCHARSub Business Activityconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/SubBusinessActivity, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/SubBusinessActivityDEABusinessSubActivitySUB_BUSINESS_ACTIVITYVARCHARSub Business Activityconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/SubBusinessActivity, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/BusinessActivityDescSUB_BUSINESS_ACTIVITY_DESCVARCHARSub Business Activity Descconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<ORGANIZATION>/attributes/SubBusinessActivityDescADDRESSES_OFFICE_INFORMATIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/OfficeInformation, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/OfficeInformationMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESSES_URIVARCHARGenerated KeyOFFICE_INFORMATION_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeBEST_TIMESVARCHARBest Timesconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/OfficeInformation/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/OfficeInformation/attributes/BestTimesAPPT_REQUIREDBOOLEANAppointment Required or notconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/OfficeInformation/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/OfficeInformation/attributes/ApptRequiredOFFICE_NOTESVARCHAROffice Notesconfiguration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/OfficeInformation/attributes/OfficeNotes, configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/OfficeInformation/attributes/OfficeNotesCOMPLIANCEComplianceReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameCOMPLIANCE_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeGO_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/GOStatusHCPComplianceGOStatusPIGO_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/PIGOStatusHCPPIGOStatusNIPPIGO_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/NIPPIGOStatusHCPNIPPIGOStatusPRIMARY_PIGO_RATIONALEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/PrimaryPIGORationaleHCPPIGORationaleSECONDARY_PIGO_RATIONALEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/SecondaryPIGORationaleHCPPIGORationalePIGOSME_REVIEWVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/PIGOSMEReviewHCPPIGOSMEReviewGSQ_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/GSQDateDO_NOT_USEBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/DoNotUseCHANGE_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/ChangeDateCHANGE_REASONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/ChangeReasonMAPPHCP_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/MAPPHCPStatusMAPP_MAILVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/MAPPMailDISCLOSUREDisclosureReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameDISCLOSURE_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeBENEFIT_CATEGORYVARCHARBenefit Categoryconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/BenefitCategoryHCPBenefitCategoryBENEFIT_TITLEVARCHARBenefit Titleconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/BenefitSpecialtyHCPBenefitSpecialtyCONTRACT_CLASSIFICATIONVARCHARContract Classificationconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/ContractClassificationCONTRACT_CLASSIFICATION_DATEDATEContract Classification Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/ContractClassificationDateMILITARYBOOLEANMilitaryconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/MilitaryCIVIL_SERVANTBOOLEANCivil Servantconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/CivilServantCREDENTIALCredential <ORGANIZATION> URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameCREDENTIAL_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeCREDENTIALVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/CredentialCredentialOTHER_CDTL_TXTVARCHAROther Credential Textconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/OtherCdtlTxtPRIMARY_FLAGBOOLEANPrimary Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/PrimaryFlagEFFECTIVE_END_DATEDATEEffective End Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/EffectiveEndDatePROFESSIONProfession InformationReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ProfessionMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NamePROFESSION_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypePROFESSIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Profession/attributes/ProfessionHCPSpecialtyProfessionPROFESSION_SOURCESourceReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Profession/attributes/SourceMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NamePROFESSION_URIVARCHARGenerated KeySOURCE_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/Profession/attributes/Source/attributes/SourceNameSOURCE_RANKVARCHARSourceRankconfiguration/entityTypes/<ORGANIZATION>/attributes/Profession/attributes/Source/attributes/SourceRankSPECIALITIESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/SpecialitiesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSPECIALITIES_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeSPECIALTYVARCHARSpecialty of the entity, e.g., Adult Congenital Heart Diseaseconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialty, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyHCPSpecialty,App-LSCustomer360SpecialtyPROFESSIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/ProfessionHCPSpecialtyProfessionPRIMARYBOOLEANWhether Primary Specialty or notconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Primary, configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/PrimaryRANKVARCHARRankconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/RankTRUST_INDICATORVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/TrustIndicatorDESCVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/DescSPECIALTY_TYPEVARCHARType of <ORGANIZATION>, e.g. <PERSON>/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyTypeApp-LSCustomer360SpecialtyTypeGROUPVARCHARGroup, Specialty belongs toconfiguration/<ORGANIZATION><ORGANIZATION>/attributes/Specialities/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyDetailSPECIALITIES_SOURCEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SourceMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSPECIALITIES_URIVARCHARGenerated KeySOURCE_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Source/attributes/SourceNameSOURCE_RANKVARCHARRankconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Source/attributes/SourceRankSUB_SPECIALITIESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SubSpecialitiesMaterialized: <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeSPECIALTY_CODEVARCHARSub specialty code of the entityconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SpecialtyCodeSUB_SPECIALTYVARCHARSub specialty of the entityconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SubSpecialtyPROFESSION_CODEVARCHARProfession Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ProfessionCodeSUB_SPECIALITIES_SOURCEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SourceMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSUB_SPECIALITIES_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Source/attributes/SourceNameSOURCE_RANKVARCHARRankconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Source/attributes/SourceRankEDUCATIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/EducationMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameEDUCATION_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSCHOOL_CDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/SchoolCDSCHOOL_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/SchoolNameYEAR_OF_GRADUATIONVARCHARDO NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/YearOfGraduationSTATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/StateCOUNTRY_EDUCATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/CountryTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/TypeGPAVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/<ORGANIZATION> NOT USE THIS ATTRIBUTE - will be deprecatedconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/GraduatedEMAILReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Email, configuration/entityTypes/<ORGANIZATION>/attributes/Email, configuration/entityTypes/<ORGANIZATION>/attributes/EmailMaterialized: <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeTYPEVARCHARType of Email, e.g., <PERSON>/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/TypeEmailTypeEMAILVARCHAREmail addressconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Email, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Email, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/EmailRANKVARCHARRank used to assign priority to a Emailconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Rank, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Rank, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/RankEMAIL_USAGE_TAGVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/EmailUsageTag, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/EmailUsageTag, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/EmailUsageTagEmailUsageTagUSAGE_TYPEVARCHARUsage Type of an Emailconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/UsageTypeDOMAINVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Domain, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Domain, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DomainVALIDATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ValidationStatusDOMAIN_TYPEVARCHARStatus of Emailconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DomainTypeUSERNAMEVARCHARDomain on which <PERSON> is createdconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Username, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/UsernameEMAIL_SOURCESourceReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Source, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Source, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/SourceMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameEMAIL_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Source/attributes/SourceName, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Source/attributes/SourceName, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Source/attributes/SourceNameSOURCE_RANKVARCHARSourceRankconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Source/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Source/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/Source/attributes/SourceRankIDENTIFIERSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeTYPEVARCHARIdentifier Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/TypeHCPIdentifierType,HCOIdentifierTypeIDVARCHARIdentifier IDconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ID, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ID, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/IDEXTL_DATEDATEExternal Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/EXTLDateACTIVATION_DATEDATEActivation Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ActivationDate, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ActivationDateREFER_BACK_ID_STATUSVARCHARStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ReferBackIDStatus, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ReferBackIDStatusDEACTIVATION_DATEDATEIdentifier Deactivation Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/DeactivationDate, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/DeactivationDateSTATEVARCHARIdentifier Stateconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/StateStateSOURCE_NAMEVARCHARName of the Identifier sourceconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/SourceName, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/SourceName, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/SourceNameTRUSTVARCHARTrustconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Trust, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Trust, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/TrustSOURCE_START_DATEDATEStart date at sourceconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/SourceStartDateSOURCE_UPDATE_DATEDATEUpdate date at sourceconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/SourceUpdateDate, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/SourceUpdateDateSTATUSVARCHARStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/StatusHCPIdentifierStatus,HCOIdentifierStatusSTATUS_DETAILVARCHARIdentifier Deactivation Reason Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/StatusDetailHCPIdentifierStatusDetail,HCOIdentifierStatusDetailDRUG_SCHEDULEVARCHARStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/DrugScheduleTAXONOMYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/TaxonomySEQUENCE_NUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/SequenceNumberMCRPE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/MCRPECodeMCRPE_START_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/MCRPEStartDateMCRPE_END_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/MCRPEEndDateMCRPE_IS_OPTEDBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/MCRPEIsOptedEXPIRATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ExpirationDateORDERVARCHAROrderconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/OrderREASONVARCHARReasonconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/StartDateEND_DATEDATEIdentifier End Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/EndDateDATA_QUALITYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/DataQualityMaterialized: <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeDQ_DESCRIPTIONVARCHARDQ Descriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DQDescription, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DQDescription, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DQDescriptionDQDescriptionLICENSEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/License, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: <ORGANIZATION> NameLICENSE_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeCATEGORYVARCHARCategory License belongs to, e.g., <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/CategoryPROFESSION_CODEVARCHARProfession Informationconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/ProfessionCodeHCPProfessionNUMBERVARCHARState License INTEGER. A unique license <ORGANIZATION> is listed for each license the physician holds. There is no standard format syntax. Format examples: 18986, <US_BANK_NUMBER>, <MEDICAL_LICENSE>. There is also no limit to the <ORGANIZATION> of licenses a physician can hold in a state. Example: A physician can have an inactive resident license plus unlimited active licenses. Residents can have as many as four licenses since some states issue licenses every yearconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Number, configuration/entityTypes/<ORGANIZATION>/attributes/License/attributes/NumberREG_AUTH_IDVARCHARRegAuthIDconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/RegAuthIDSTATE_BOARDVARCHARState Boardconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/StateBoardNameSTATEVARCHARState License State. Two character field. <ORGANIZATION> standard <URL>nfiguration/entityTypes/HCP/attributes/License/attributes/State, configuration/entityTypes/<ORGANIZATION>/attributes/License/attributes/StateTYPEVARCHARState License Type. U = Unlimited there is no restriction on the physician to practice medicine; <ORGANIZATION> implies restrictions of some sort. For example, the physician may practice only in a given county, admit patients only to particular hospitals, or practice under the supervision of a physician with a license in state or private hospitals or other settings; T = Temporary issued to a physician temporarily practicing in an underserved area outside his/her state of licensure. Also granted between board meetings when new licenses are issued. <ORGANIZATION> span for a temporary license varies from state to state. Temporary licenses typically expire <DATE_TIME> from the date they are issued; R = Resident License granted to a physician in graduate medical education (e.g., residency training).configuration/entityTypes/<ORGANIZATION>/attributes/License/attributes/TypeST_LIC_TYPESTATUSVARCHARState License Status. A = <ORGANIZATION>. Physician is licensed to practice within the state; I = Inactive. If the physician has not reregistered a state license OR if the license has been suspended or revoked by <ORGANIZATION>; X = unknown. If the state has not provided current information Note: Some state boards issue inactive licenses to physicians who want to maintain licensure in the state although they are currently practicing in <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/StatusDetailHCPLicenseStatusDetailTRUSTVARCHARTrust flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/TrustDEACTIVATION_REASON_CODEVARCHARDeactivation Reason Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/DeactivationReasonCodeHCPLicenseDeactivationReasonCodeEXPIRATION_DATEDATELicense Expiration Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/ExpirationDateISSUE_DATEDATEState License Issue Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/IssueDateSTATE_LICENSE_PRIVILEGEVARCHARState License Privilegeconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/StateLicensePrivilegeSTATE_LICENSE_PRIVILEGE_NAMEVARCHARState License Privilege Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/StateLicensePrivilegeNameSTATE_LICENSE_STATUS_DATEDATEState License Status Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/StateLicenseStatusDateRANKVARCHARRank of Licenseconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/RankCERTIFICATION_CODEVARCHARCertification Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/CertificationCodeHCPLicenseCertificationLICENSE_SOURCESourceReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/License/attributes/SourceMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameLICENSE_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Source/attributes/SourceNameSOURCE_RANKVARCHARSourceRankconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Source/attributes/SourceRankLICENSE_REGULATORYLicense RegulatoryReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/License/attributes/RegulatoryMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameLICENSE_URIVARCHARGenerated KeyREGULATORY_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Sampl Non Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/ReqSamplNonCtrlREQ_SAMPL_CTRLVARCHARReq <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/ReqSamplCtrlRECV_SAMPL_NON_CTRLVARCHARRecv Sampl Non Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/RecvSamplNonCtrlRECV_SAMPL_CTRLVARCHARRecv Sampl Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/RecvSamplCtrlDISTR_SAMPL_NON_CTRLVARCHARDistr <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/<ORGANIZATION> I Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/SampDrugSchedIFlagSAMP_DRUG_SCHED_II_FLAGVARCHARSamp Drug Sched II Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/SampDrugSchedIIFlagSAMP_DRUG_SCHED_III_FLAGVARCHARSamp Drug Sched III Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/SampDrugSchedIIIFlagSAMP_DRUG_SCHED_IV_FLAGVARCHARSamp <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/SampDrugSchedIVFlagSAMP_DRUG_SCHED_V_FLAGVARCHARSamp <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/SampDrugSchedVIFlagPRESCR_NON_CTRL_FLAGVARCHARPrescr <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/PrescrNonCtrlFlagPRESCR_APP_REQ_NON_CTRL_FLAGVARCHARPrescr App <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/PrescrCtrlFlagPRESCR_APP_REQ_CTRL_FLAGVARCHARPrescr App <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/<ORGANIZATION> I Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/PrescrDrugSchedIFlagPRESCR_DRUG_SCHED_II_FLAGVARCHARPrescr Drug Sched II Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/PrescrDrugSchedIIFlagPRESCR_DRUG_SCHED_III_FLAGVARCHARPrescr Drug Sched III Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/PrescrDrugSchedIIIFlagPRESCR_DRUG_SCHED_IV_FLAGVARCHARPrescr Drug Sched IV Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/PrescrDrugSchedIVFlagPRESCR_DRUG_SCHED_V_FLAGVARCHARPrescr Drug Sched V Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/PrescrDrugSchedVFlagPRESCR_DRUG_SCHED_VI_FLAGVARCHARPrescr <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/PrescrDrugSchedVIFlagSUPERVISORY_REL_CD_NON_CTRLVARCHARSupervisory <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/SupervisoryRelCdNonCtrlSUPERVISORY_REL_CD_CTRLVARCHARSupervisory Rel Cd Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/SupervisoryRelCdCtrlCOLLABORATIVE_NONCTRLVARCHARCollaborative Non ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/CollaborativeNonctrlCOLLABORATIVE_CTRLVARCHARCollaborative ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/CollaborativeCtrlINCLUSIONARYVARCHARInclusionaryconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/InclusionaryEXCLUSIONARYVARCHARExclusionaryconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/ExclusionaryDELEGATION_NON_CTRLVARCHARDelegation Non Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/DelegationNonCtrlDELEGATION_CTRLVARCHARDelegation Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/License/attributes/Regulatory/attributes/DelegationCtrlCSRReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/CSRMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameCSR_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ProfessionCodeHCPProfessionAUTHORIZATION_NUMBERVARCHARAutorization number of CSRconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AuthorizationNumberREG_AUTH_IDVARCHARRegAuthIDconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/RegAuthIDSTATE_BOARDVARCHARState Boardconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StateBoardNameSTATEVARCHARState of <URL>nfiguration/entityTypes/HCP/attributes/CSR/attributes/StateCSR_LICENSE_TYPEVARCHARCSR License Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicenseTypeCSR_LICENSE_TYPE_NAMEVARCHARCSR License Type Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicenseTypeNameCSR_LICENSE_PRIVILEGEVARCHARCSR License Privilegeconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicensePrivilegeCSR_LICENSE_PRIVILEGE_NAMEVARCHARCSR License Privilege Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicensePrivilegeNameCSR_LICENSE_EFFECTIVE_DATEDATECSR License Effective Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicenseEffectiveDateCSR_LICENSE_EXPIRATION_DATEDATECSR License Expiration Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicenseExpirationDateCSR_LICENSE_STATUSVARCHARCSR License Statusconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicenseStatusHCPLicenseStatusSTATUS_DETAILVARCHARCSRLicenseDeactivationReasonconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StatusDetailHCPLicenseStatusDetailCSR_LICENSE_DEACTIVATION_REASONVARCHARCSR License Deactivation Reasonconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicenseDeactivationReasonHCPCSRLicenseDeactivationReasonCSR_LICENSE_CERTIFICATIONVARCHARCSR License Certificationconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicenseCertificationHCPLicenseCertificationCSR_LICENSE_TYPE_PRIVILEGE_RANKVARCHARCSR License Type Privilege Rankconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CSRLicenseTypePrivilegeRankCSR_REGULATORYCSR RegulatoryReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/RegulatoryMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameCSR_URIVARCHARGenerated KeyREGULATORY_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeREQ_SAMPL_NON_CTRLVARCHARReq Sampl Non Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/ReqSamplNonCtrlREQ_SAMPL_CTRLVARCHARReq <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/ReqSamplCtrlRECV_SAMPL_NON_CTRLVARCHARRecv Sampl Non Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/RecvSamplNonCtrlRECV_SAMPL_CTRLVARCHARRecv Sampl Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/RecvSamplCtrlDISTR_SAMPL_NON_CTRLVARCHARDistr <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/DistrSamplNonCtrlDISTR_SAMPL_CTRLVARCHARDistr Sampl Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/<ORGANIZATION> I Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/SampDrugSchedIFlagSAMP_DRUG_SCHED_II_FLAGVARCHARSamp Drug Sched II Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/SampDrugSchedIIFlagSAMP_DRUG_SCHED_III_FLAGVARCHARSamp Drug Sched III Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/SampDrugSchedIIIFlagSAMP_DRUG_SCHED_IV_FLAGVARCHARSamp <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/SampDrugSchedIVFlagSAMP_DRUG_SCHED_V_FLAGVARCHARSamp <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/SampDrugSchedVIFlagPRESCR_NON_CTRL_FLAGVARCHARPrescr <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/PrescrNonCtrlFlagPRESCR_APP_REQ_NON_CTRL_FLAGVARCHARPrescr App <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/PrescrCtrlFlagPRESCR_APP_REQ_CTRL_FLAGVARCHARPrescr App <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/<ORGANIZATION> I Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/PrescrDrugSchedIFlagPRESCR_DRUG_SCHED_II_FLAGVARCHARPrescr Drug Sched II Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/PrescrDrugSchedIIFlagPRESCR_DRUG_SCHED_III_FLAGVARCHARPrescr Drug Sched III Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/PrescrDrugSchedIIIFlagPRESCR_DRUG_SCHED_IV_FLAGVARCHARPrescr Drug Sched IV Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/PrescrDrugSchedIVFlagPRESCR_DRUG_SCHED_V_FLAGVARCHARPrescr Drug Sched V Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/PrescrDrugSchedVFlagPRESCR_DRUG_SCHED_VI_FLAGVARCHARPrescr <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/PrescrDrugSchedVIFlagSUPERVISORY_REL_CD_NON_CTRLVARCHARSupervisory <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/SupervisoryRelCdNonCtrlSUPERVISORY_REL_CD_CTRLVARCHARSupervisory Rel Cd Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/SupervisoryRelCdCtrlCOLLABORATIVE_NONCTRLVARCHARCollaborative Non ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/CollaborativeNonctrlCOLLABORATIVE_CTRLVARCHARCollaborative ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/CollaborativeCtrlINCLUSIONARYVARCHARInclusionaryconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/InclusionaryEXCLUSIONARYVARCHARExclusionaryconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/ExclusionaryDELEGATION_NON_CTRLVARCHARDelegation Non Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/DelegationNonCtrlDELEGATION_CTRLVARCHARDelegation Ctrlconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Regulatory/attributes/DelegationCtrlPRIVACY_PREFERENCESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferencesMaterialized: <PERSON> NamePRIVACY_PREFERENCES_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> Entity TypeAMA_NO_CONTACTBOOLEANCan be Contacted through <ORGANIZATION> or notconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/AMANoContactFTC_NO_CONTACTBOOLEANCan be Contacted through <ORGANIZATION> or notconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/FTCNoContactPDRPBOOLEANPhysician Data Restriction Program enrolled or notconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/PDRPPDRP_DATEDATEPhysician Data Restriction Program enrolment dateconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/PDRPDateOPT_OUT_START_DATEDATEOpt Out Start Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/OptOutStartDateALLOWED_TO_CONTACTBOOLEANIndicator whether allowed to contactconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/AllowedToContactPHONE_OPT_OUTBOOLEANOpted Out for being contacted on Phone or notconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/PhoneOptOutEMAIL_OPT_OUTBOOLEANOpted Out for being contacted through <PERSON> or notconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/EmailOptOutFAX_OPT_OUTBOOLEANOpted Out for being contacted through Fax or notconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/FaxOptOutMAIL_OPT_OUTBOOLEANOpted Out for being contacted through Mail or notconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/MailOptOutNO_CONTACT_REASONVARCHARReason for no contactconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/NoContactReasonNO_CONTACT_EFFECTIVE_DATEDATEEffective date of no contactconfiguration/entityTypes/<ORGANIZATION>/attributes/PrivacyPreferences/attributes/NoContactEffectiveDateCERTIFICATESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/CertificatesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameCERTIFICATES_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Entity TypeCERTIFICATE_IDVARCHARCertificate Id of Certificate received by <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Certificates/attributes/CertificateIdSPEAKERReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SpeakerMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSPEAKER_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeLEVELVARCHARLevelconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/LevelHCPTierLevelTIER_STATUSVARCHARTier <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/TierStatusHCPTierStatusTIER_APPROVAL_DATEDATETier Approval Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/TierApprovalDateTIER_UPDATED_DATEDATETier Updated Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/TierUpdatedDateTIER_APPROVERVARCHARTier Approverconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/TierApproverEFFECTIVE_DATEDATESpeaker Effective Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/EffectiveDateDEACTIVATE_REASONVARCHARSpeaker Deactivate Reasonconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/DeactivateReasonIS_SPEAKERBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/IsSpeakerSPEAKER_TIER_RATIONALETier <ORGANIZATION> URI: configuration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/TierRationaleMaterialized: <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeTIER_RATIONALEVARCHARTier Rationaleconfiguration/entityTypes/<ORGANIZATION>/attributes/Speaker/attributes/<ORGANIZATION>/attributes/TierRationaleHCPTierRationalRAWDEAReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/RAWDEAMaterialized: <PERSON> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeDEA_NUMBERVARCHARRAW DEA Numberconfiguration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/DEANumberDEA_BUSINESS_ACTIVITYVARCHARDEA Business Activityconfiguration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/DEABusinessActivityEFFECTIVE_DATEDATERAW <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/EffectiveDateEXPIRATION_DATEDATERAW DEA Expiration Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/ExpirationDateNAMEVARCHARRAW <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/NameADDITIONAL_COMPANY_INFOVARCHARAdditional Company Infoconfiguration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/AdditionalCompanyInfoADDRESS1VARCHARRAW DEA Address 1configuration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/Address1ADDRESS2VARCHARRAW DEA Address 2configuration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/Address2CITYVARCHARRAW <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/CitySTATEVARCHARRAW DEA Stateconfiguration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/StateZIPVARCHARRAW <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/ZipBUSINESS_ACTIVITY_SUB_CDVARCHARBusiness Activity Sub Cdconfiguration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/BusinessActivitySubCdPAYMT_INDVARCHARPaymt Indicatorconfiguration/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/PaymtIndHCPRAWDEAPaymtIndRAW_DEA_SCHD_CLAS_CDVARCHARRaw <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/<PERSON>/entityTypes/<ORGANIZATION>/attributes/RAWDEA/attributes/StatusPHONEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Phone, configuration/entityTypes/<ORGANIZATION>/attributes/Phone, configuration/entityTypes/<ORGANIZATION>/attributes/PhoneMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NamePHONE_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/TypePhoneTypeNUMBERVARCHARPhone numberconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Number, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Number, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/NumberFORMATTED_NUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/FormattedNumberEXTENSIONVARCHARExtension, if anyconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Extension, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Extension, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/ExtensionRANKVARCHARRank used to assign priority to a Phone numberconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Rank, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Rank, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/RankPHONE_USAGE_TAGVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/PhoneUsageTag, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/PhoneUsageTag, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/PhoneUsageTagPhoneUsageTagUSAGE_TYPEVARCHARUsage Type of a Phone numberconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/UsageTypeAREA_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/AreaCode, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/AreaCode, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/AreaCodeLOCAL_NUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/LocalNumberVALIDATION_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/ValidationStatusLINE_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/LineType, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/LineType, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/LineTypeFORMAT_MASKVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/FormatMaskDIGIT_COUNTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/DigitCountGEO_AREAVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<PERSON>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/GeoAreaGEO_COUNTRYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/GeoCountryCOUNTRY_CODEVARCHARTwo digit code for a Countryconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/CountryCode, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/CountryCodePHONE_SOURCESourceReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/SourceMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NamePHONE_URIVARCHARGenerated KeySOURCE_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/SourceName, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/SourceName, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/SourceNameSOURCE_RANKVARCHARSourceRankconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/SourceRankSOURCE_ADDRESS_IDVARCHARSourceAddressIDconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/SourceAddressID, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/SourceAddressID, configuration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Source/attributes/SourceAddressIDHCP_ADDRESS_ZIPReltio URI: configuration/entityTypes/Location/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESS_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypePOSTAL_CODEVARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/PostalCodeZIP5VARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/Zip5ZIP4VARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/Zip4DEAReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: <PERSON> CodeACTIVEVARCHARActive <PERSON> TypeNUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Number, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/NumberSTATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StatusSTATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/Status, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StatusApp-LSCustomer360DEAStatusEXPIRATION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ExpirationDate, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ExpirationDateDRUG_SCHEDULEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DrugSchedule, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DrugScheduleApp-LSCustomer360DEADrugScheduleDRUG_SCHEDULE_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DrugScheduleDescription, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/DrugScheduleDescriptionBUSINESS_ACTIVITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BusinessActivity, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BusinessActivityApp-LSCustomer360DEABusinessActivityBUSINESS_ACTIVITY_PLUS_SUB_CODEVARCHARBusiness Activity SubCodeconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BusinessActivityPlusSubCode, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BusinessActivityPlusSubCodeApp-LSCustomer360DEABusinessActivitySubcodeBUSINESS_ACTIVITY_DESCRIPTIONVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BusinessActivityDescription, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BusinessActivityDescriptionApp-LSCustomer360DEABusinessActivityDescriptionPAYMENT_INDICATORVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/PaymentIndicator, configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/PaymentIndicatorApp-LSCustomer360DEAPaymentIndicatorTAXONOMYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy, configuration/entityTypes/<ORGANIZATION>/attributes/TaxonomyMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameTAXONOMY_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeTAXONOMYVARCHARTaxonomy related to <ORGANIZATION>, e.g., <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Taxonomy, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/TaxonomyApp-LSCustomer360Taxonomy,TAXONOMY_CDTYPEVARCHARType of Taxonomy, e.g., Primaryconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Type, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/<ORGANIZATION>,TAXONOMY_TYPESTATE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/StateCodeGROUPVARCHARGroup Taxonomy belongs toconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/GroupPROVIDER_TYPEVARCHARTaxonomy <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/ProviderType, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/ProviderTypeCLASSIFICATIONVARCHARClassification of <PERSON>/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Classification, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/ClassificationSPECIALIZATIONVARCHARSpecialization of Taxonomyconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Specialization, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/SpecializationPRIORITYVARCHARTaxonomy Priorityconfiguration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/Priority, configuration/entityTypes/<ORGANIZATION>/attributes/Taxonomy/attributes/PriorityTAXONOMY_PRIORITYSANCTIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SanctionMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSANCTION_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Entity TypeSANCTION_IDVARCHARCourt sanction Id for any <URL>nfiguration/entityTypes/HCP/attributes/Sanction/attributes/SanctionIdACTION_CODEVARCHARCourt sanction code for a caseconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/ActionCodeACTION_DESCRIPTIONVARCHARCourt sanction Action Descriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/ActionDescriptionBOARD_CODEVARCHARCourt case board idconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/BoardCodeBOARD_DESCVARCHARcourt case board descriptionconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/BoardDescACTION_DATEDATECourt sanction Action Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/ActionDateSANCTION_PERIOD_START_DATEDATESanction Period Start Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/SanctionPeriodStartDateSANCTION_PERIOD_END_DATEDATESanction Period End Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/SanctionPeriodEndDateMONTH_DURATIONVARCHARSanction Duration in Monthsconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/MonthDurationFINE_AMOUNTVARCHARFine Amount for Sanctionconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/FineAmountOFFENSE_CODEVARCHAROffense Code for <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/OffenseCodeOFFENSE_DESCRIPTIONVARCHAROffense <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/OffenseDescriptionOFFENSE_DATEDATEOffense Date for Sanctionconfiguration/entityTypes/<ORGANIZATION>/attributes/Sanction/attributes/OffenseDateGSA_SANCTIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/GSASanctionMaterialized: <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSANCTION_IDVARCHARSanction Id of <ORGANIZATION> as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/SanctionIdFIRST_NAMEVARCHARFirst Name of <ORGANIZATION> as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/FirstNameMIDDLE_NAMEVARCHARMiddle Name of <ORGANIZATION> as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/MiddleNameLAST_NAMEVARCHARLast Name of <ORGANIZATION> as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/LastNameSUFFIX_NAMEVARCHARSuffix Name of <ORGANIZATION> as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/SuffixNameCITYVARCHARCity of <ORGANIZATION> as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/CitySTATEVARCHARState of <ORGANIZATION> as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/StateZIPVARCHARZip of HCP as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/ZipACTION_DATEVARCHARAction Date for <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/ActionDateTERM_DATEVARCHARTerm Date for <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/TermDateAGENCYVARCHARAgency that imposed <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/AgencyCONFIDENCEVARCHARConfidence as per <ORGANIZATION> listconfiguration/entityTypes/<ORGANIZATION>/attributes/GSASanction/attributes/ConfidenceMULTI_CHANNEL_COMMUNICATION_CONSENTReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/MultiChannelCommunicationConsentMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameMULTI_CHANNEL_COMMUNICATION_CONSENT_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Entity TypeCHANNEL_TYPEVARCHARChannel type for the consent, e.g. email, <ORGANIZATION>, <URL>nfiguration/entityTypes/HCP/attributes/MultiChannelCommunicationConsent/attributes/ChannelTypeCHANNEL_VALUEVARCHARValue of the channel for consent - <URL>e@<URL>configuration/entityTypes/HCP/attributes/MultiChannelCommunicationConsent/attributes/ChannelValueCHANNEL_CONSENTVARCHARThe consent for the corresponding channel and the id - yes or noconfiguration/entityTypes/<ORGANIZATION>/attributes/MultiChannelCommunicationConsent/attributes/ChannelConsentChannelConsentSTART_DATEDATEStart date of the consentconfiguration/entityTypes/<ORGANIZATION>/attributes/MultiChannelCommunicationConsent/attributes/StartDateEXPIRATION_DATEDATEExpiration date of the consentconfiguration/entityTypes/<ORGANIZATION>/attributes/MultiChannelCommunicationConsent/attributes/ExpirationDateCOMMUNICATION_TYPEVARCHARDifferent communication type that the individual prefers, for e.g. - New Product Launches, Sales/Discounts, Brand-level Newsconfiguration/entityTypes/<ORGANIZATION>/attributes/MultiChannelCommunicationConsent/attributes/CommunicationTypeCOMMUNICATION_FREQUENCYVARCHARHow frequently can the individual be communicated to. <ORGANIZATION>monthly/weeklyconfiguration/entityTypes/<ORGANIZATION>/attributes/MultiChannelCommunicationConsent/attributes/CommunicationFrequencyCHANNEL_PREFERENCE_FLAGBOOLEANWhen checked denotes the preferred channel of communicationconfiguration/entityTypes/<ORGANIZATION>/attributes/MultiChannelCommunicationConsent/attributes/ChannelPreferenceFlagEMPLOYMENTReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/EmploymentMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameEMPLOYMENT_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeNAMEVARCHARNameconfiguration/entityTypes/Organization/attributes/NameTITLEVARCHARconfiguration/relationTypes/Employment/attributes/TitleSUMMARYVARCHARconfiguration/relationTypes/Employment/attributes/SummaryIS_CURRENTBOOLEANconfiguration/relationTypes/Employment/attributes/IsCurrentHCOHealth care organizationReltio URI: configuration/entityTypes/HCOMaterialized: <ORGANIZATION> URILOV NameENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeTYPE_CODEVARCHARType Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/TypeCodeHCOTypeCOMPANY_CUST_IDVARCHARCOMPANY Customer IDconfiguration/entityTypes/<ORGANIZATION>/attributes/COMPANYCustIDSUB_TYPE_CODEVARCHARSubType Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/SubTypeCodeHCOSubTypeSUB_CATEGORYVARCHARSubCategoryconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/StructureTypeCodeHCOStructureTypeCodeNAMEVARCHARNameconfiguration/entityTypes/<ORGANIZATION>/attributes/NameDOING_BUSINESS_AS_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/DoingBusinessAsNameFLEX_RESTRICTED_PARTY_INDVARCHARparty indicator for <LOCATION>/entityTypes/<ORGANIZATION>/attributes/FlexRestrictedPartyIndTRADE_PARTNERVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/TradePartnerSHIP_TO_SR_PARENT_NAMEVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/ShipToSrParentNameSHIP_TO_JR_PARENT_NAMEVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/ShipToJrParentNameSHIP_FROM_JR_PARENT_NAMEVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/ShipFromJrParentNameTEACHING_HOSPITALVARCHARTeaching <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/TeachingHospitalOWNERSHIP_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/entityTypes/<ORGANIZATION>/attributes/ProfitStatusHCOProfitStatusCMIVARCHARCMIconfiguration/entityTypes/<ORGANIZATION>/attributes/CMICOMPANY_HCOS_FLAGVARCHARCOMPANY HCOS Flagconfiguration/entityTypes/<ORGANIZATION>/attributes/COMPANYHCOSFlagSOURCE_MATCH_CATEGORYVARCHARSource Match Categoryconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceMatchCategoryCOMM_HOSPVARCHARCommHospconfiguration/entityTypes/<ORGANIZATION>/attributes/CommHospGEN_FIRSTVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/GenFirstHCOGenFirstSREP_ACCESSVARCHARStringconfiguration/entityTypes/<ORGANIZATION>/attributes/SrepAccessHCOSrepAccessOUT_PATIENTS_NUMBERSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/OutPatientsNumbersUNIT_OPER_ROOM_NUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/UnitOperRoomNumberPRIMARY_GPOVARCHARPrimary GPOconfiguration/entityTypes/<ORGANIZATION>/attributes/PrimaryGPOTOTAL_PRESCRIBERSVARCHARTotal Prescribersconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalPrescribersNUM_IN_PATIENTSVARCHARTotal InPatientsconfiguration/entityTypes/<ORGANIZATION>/attributes/NumInPatientsTOTAL_LIVESVARCHARTotal Livesconfiguration/entityTypes/<ORGANIZATION>/attributes<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/TotalPharmacistsTOTAL_M_DSVARCHARTotal MDsconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalMDsTOTAL_REVENUEVARCHARTotal <PERSON>/entityTypes/<ORGANIZATION>/attributes/TotalRevenueSTATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/StatusHCOStatusSTATUS_DETAILVARCHARDeactivation Reasonconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/AccountBlockCodeTOTAL_LICENSE_BEDSVARCHARTotal License Bedsconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalLicenseBedsTOTAL_CENSUS_BEDSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalCensusBedsTOTAL_STAFFED_BEDSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/TotalSurgeriesTOTAL_PROCEDURESVARCHARTotal Proceduresconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalProceduresNUM_EMPLOYEESVARCHARNumber of Proceduresconfiguration/entityTypes/<ORGANIZATION>/attributes/NumEmployeesRESIDENT_COUNTVARCHARResident Countconfiguration/entityTypes/<ORGANIZATION>/attributes/ResidentCountFORMULARYVARCHARFormularyconfiguration/entityTypes/<ORGANIZATION>/attributes/FormularyHCOFormularyE_MEDICAL_RECORDVARCHARe-Medical Recordconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/EPrescribeHCOEPrescribePAY_PERFORMVARCHARPay Performconfiguration/entityTypes/<ORGANIZATION>/attributes/PayPerformHCOPayPerformDEACTIVATION_REASONVARCHARDeactivation Reasonconfiguration/entityTypes/<ORGANIZATION>/attributes/DeactivationReasonHCODeactivationReasonINTERNATIONAL_LOCATION_NUMBERVARCHARInternational location number (part 1)configuration/entityTypes/<ORGANIZATION>/attributes/InternationalLocationNumberDCR_STATUSVARCHARStatus of <ORGANIZATION> profileconfiguration/<ORGANIZATION><ORGANIZATION>/attributes/DCRStatusDCRStatusCOUNTRY_HCOVARCHARCountryconfiguration/entityTypes/<ORGANIZATION>/attributes/CountryORIGINAL_SOURCE_NAMEVARCHAROriginal <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/OriginalSourceNameSOURCE_UPDATE_DATEDATEconfiguration/<ORGANIZATION>/attributes/SourceUpdateDateCLASSOF_TRADE_NReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeNMaterialized: <ORGANIZATION> NameCLASSOF_TRADE_N_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Entity TypeSOURCE_COTIDVARCHARSource COT IDconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/SourceCOTIDCOTPRIORITYVARCHARPriorityconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/PrioritySPECIALTYVARCHARSpecialty of Class of Tradeconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/SpecialtyCOTSpecialtyCLASSIFICATIONVARCHARClassification of Class of Tradeconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/ClassificationCOTClassificationFACILITY_TYPEVARCHARFacility Type of Class of Tradeconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/FacilityTypeCOTFacilityTypeCOT_ORDERVARCHARCOT Orderconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/COTOrderSTART_DATEDATEStart Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/StartDateSOURCEVARCHARSourceconfiguration/<ORGANIZATION>/attributes/ClassofTradeN/attributes/SourcePRIMARYVARCHARPrimaryconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/PrimaryHCO_ADDRESS_ZIPReltio URI: configuration/entityTypes/Location/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameADDRESS_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypePOSTAL_CODEVARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/PostalCodeZIP5VARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/Zip5ZIP4VARCHARconfiguration/entityTypes/Location/attributes/Zip/attributes/Zip4340BReltio URI: configuration/<ORGANIZATION><ORGANIZATION>/attributes/340bMaterialized: noColumnTypeDescriptionReltio Attribute URILOV Name340B_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/340b/attributes/340BIDENTITY_SUB_DIVISION_NAMEVARCHAREntity <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/340b/attributes/EntitySubDivisionNamePROGRAM_CODEVARCHARProgram Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ProgramCode340BProgramCodePARTICIPATINGBOOLEANParticipatingconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ParticipatingAUTHORIZING_OFFICIAL_NAMEVARCHARAuthorizing Official Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/340b/attributes/AuthorizingOfficialTitleAUTHORIZING_OFFICIAL_TELVARCHARAuthorizing Official Telconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/AuthorizingOfficialTelAUTHORIZING_OFFICIAL_TEL_EXTVARCHARAuthorizing Official Tel Extconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/AuthorizingOfficialTelExtCONTACT_NAMEVARCHARContact Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ContactNameCONTACT_TITLEVARCHARContact <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ContactTitleCONTACT_TELEPHONEVARCHARContact Telephoneconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ContactTelephoneExtSIGNED_BY_NAMEVARCHARSigned By <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/340b/attributes/SignedByNameSIGNED_BY_TITLEVARCHARSigned By Titleconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/SignedByTitleSIGNED_BY_TELEPHONEVARCHARSigned By Telephoneconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/SignedByTelephoneSIGNED_BY_TELEPHONE_EXTVARCHARSigned By <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/340b/attributes/SignedByTelephoneExtSIGNED_BY_DATEDATESigned By <ORGANIZATION><ORGANIZATION>/attributes/340b/attributes/SignedByDateCERTIFIED_DECERTIFIED_DATEDATECertified/Decertified Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/CertifiedDecertifiedDateRURALVARCHARRuralconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/RuralENTRY_COMMENTSVARCHAREntry Commentsconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/EntryCommentsNATURE_OF_SUPPORTVARCHARNature Of Supportconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/NatureOfSupportEDIT_DATEVARCHAREdit Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/EditDate340B_PARTICIPATION_DATESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ParticipationDatesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV Name340B_URIVARCHARGenerated KeyPARTICIPATION_DATES_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypePARTICIPATING_START_DATEDATEParticipating Start Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ParticipationDates/attributes/ParticipatingStartDateTERMINATION_DATEDATETermination Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ParticipationDates/attributes/TerminationDateTERMINATION_CODEVARCHARTermination Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/340b/attributes/ParticipationDates/attributes/TerminationCode340BTerminationCodeOTHER_NAMESReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/OtherNamesMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameOTHER_NAMES_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeTYPEVARCHARTypeconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/TypeNAMEVARCHARNameconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/NameACOReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameACO_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeTYPEVARCHARTypeconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/TypeHCOACOTypeACO_TYPE_CATEGORYVARCHARType Categoryconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ACOTypeCategoryHCOACOTypeCategoryACO_TYPE_GROUPVARCHARType Group of ACOconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ACOTypeGroupHCOACOTypeGroupACO_ACODETAILReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ACODetailMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameACO_URIVARCHARGenerated KeyACO_DETAIL_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeACO_DETAIL_CODEVARCHARDetail Code for <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/<NRP>/attributes/ACODetailCodeHCOACODetailACO_DETAIL_VALUEVARCHARDetail Value for ACOconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/<NRP>/attributes/ACODetailValueACO_DETAIL_GROUP_CODEVARCHARDetail Value for ACOconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/<NRP>/attributes/ACODetailGroupCodeHCOACODetailGroupWEBSITEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/WebsiteMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameWEBSITE_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeWEBSITE_URLVARCHARUrl of the websiteconfiguration/<ORGANIZATION><ORGANIZATION>/attributes/Website/attributes/WebsiteURLWEBSITE_SOURCESourceReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/Website/attributes/SourceMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameWEBSITE_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/Website/attributes/Source/attributes/SourceNameSOURCE_RANKVARCHARSourceRankconfiguration/entityTypes/<ORGANIZATION>/attributes/Website/attributes/Source/attributes/SourceRankSALES_ORGANIZATIONSales OrganizationReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/SalesOrganizationMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameSALES_ORGANIZATION_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeSALES_ORGANIZATION_CODEVARCHARSales Organization Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/SalesOrganization/attributes/SalesOrganizationCodeCUSTOMER_ORDER_BLOCKVARCHARCustomer Order Blockconfiguration/entityTypes/<ORGANIZATION>/attributes/SalesOrganization/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/SalesOrganization/attributes/CustomerGroupHCO_BUSINESS_UNIT_TAGReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/BusinessUnitTAGMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameBUSINESSUNITTAG_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/BusinessUnitTAG/attributes/BusinessUnitSEGMENTVARCHARSegmentconfiguration/entityTypes/<ORGANIZATION>/attributes/BusinessUnitTAG/attributes/SegmentCONTRACT_TYPEVARCHARContract Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/BusinessUnitTAG/attributes/ContractTypeGLNReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/GLNMaterialized: <PERSON> CodeACTIVEVARCHARActive <PERSON> TypeTYPEVARCHARGLN Typeconfiguration/entityTypes/<ORGANIZATION>/attributes/GLN/attributes/TypeIDVARCHARGLN IDconfiguration/entityTypes/<ORGANIZATION>/attributes/GLN/attributes/IDSTATUSVARCHARGLN Statusconfiguration/entityTypes/<ORGANIZATION>/attributes/GLN/attributes/StatusHCOGLNStatusSTATUS_DETAILVARCHARGLN Statusconfiguration/entityTypes/<ORGANIZATION>/attributes/GLN/attributes/StatusDetailHCOGLNStatusDetailHCO_REFER_BACKReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ReferBackMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameREFERBACK_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> Entity TypeREFER_BACK_IDVARCHARRefer Back IDconfiguration/entityTypes/<ORGANIZATION>/attributes/ReferBack/attributes/ReferBackIDREFER_BACK_HCOSIDVARCHARGLN IDconfiguration/entityTypes/<ORGANIZATION>/attributes/ReferBack/attributes/ReferBackHCOSIDDEACTIVATION_REASONVARCHARDeactivation Reasonconfiguration/entityTypes/<ORGANIZATION>/attributes/ReferBack/attributes/DeactivationReasonBEDReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameBED_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeTYPEVARCHARTypeconfiguration/<ORGANIZATION>/attributes/Bed/attributes/TypeHCOBedTypeLICENSE_BEDSVARCHARLicense Bedsconfiguration/entityTypes/<ORGANIZATION>/attributes/Bed/attributes/LicenseBedsCENSUS_BEDSVARCHARCensus Bedsconfiguration/entityTypes/<ORGANIZATION>/attributes/Bed/attributes/CensusBedsSTAFFED_BEDSVARCHARStaffed Bedsconfiguration/entityTypes/<ORGANIZATION>/attributes/Bed/attributes/StaffedBedsGSA_EXCLUSIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/GSAExclusionMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameGSA_EXCLUSION_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSANCTION_IDVARCHARconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/SanctionIdORGANIZATION_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/OrganizationNameADDRESS_LINE1VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AddressLine1ADDRESS_LINE2VARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AddressLine2CITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/CitySTATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StateZIPVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ZipACTION_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ActionDateTERM_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/TermDateAGENCYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/AgencyCONFIDENCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ConfidenceOIG_EXCLUSIONReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/OIGExclusionMaterialized: <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSANCTION_IDVARCHARconfiguration/<ORGANIZATION>/attributes/OIGExclusion/attributes/SanctionIdACTION_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/OIGExclusion/attributes/ActionCodeACTION_DESCRIPTIONVARCHARconfiguration/<ORGANIZATION>/attributes/OIGExclusion/attributes/ActionDescriptionBOARD_CODEVARCHARCourt case board idconfiguration/entityTypes/<ORGANIZATION>/attributes/OIGExclusion/attributes/BoardCodeBOARD_DESCVARCHARcourt case board descriptionconfiguration/<ORGANIZATION>/attributes/OIGExclusion/attributes/BoardDescACTION_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/OIGExclusion/attributes/ActionDateOFFENSE_CODEVARCHARconfiguration/<ORGANIZATION>/attributes/OIGExclusion/attributes/OffenseCodeOFFENSE_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/OIGExclusion/attributes/OffenseDescriptionBUSINESS_DETAILReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/BusinessDetailMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameBUSINESS_DETAIL_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeDETAILVARCHARDetailconfiguration/entityTypes/<ORGANIZATION>/attributes/BusinessDetail/attributes/DetailHCOBusinessDetailGROUPVARCHARGroupconfiguration/entityTypes/<ORGANIZATION>/attributes/BusinessDetail/attributes/GroupHCOBusinessDetailGroupDETAIL_VALUEVARCHARDetail Valueconfiguration/entityTypes/<ORGANIZATION>/attributes/BusinessDetail/attributes/DetailValueDETAIL_COUNTVARCHARDetail Countconfiguration/entityTypes/<ORGANIZATION>/attributes/BusinessDetail/attributes/DetailCountHINHINReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeHINVARCHARHINconfiguration/<ORGANIZATION><ORGANIZATION>/attributes/HIN/attributes/HINTICKERReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/TickerMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameTICKER_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeSYMBOLVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Ticker/attributes/SymbolSTOCK_EXCHANGEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Ticker/attributes/StockExchangeTRADE_STYLE_NAMEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/TradeStyleNameMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameTRADE_STYLE_NAME_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeORGANIZATION_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TradeStyleName/attributes/OrganizationNameLANGUAGE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TradeStyleName/attributes/LanguageCodeFORMER_ORGANIZATION_PRIMARY_NAMEVARCHARconfiguration/<ORGANIZATION>/attributes/TradeStyleName/attributes/FormerOrganizationPrimaryNameDISPLAY_SEQUENCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TradeStyleName/attributes/DisplaySequenceTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TradeStyleName/attributes/TypeHRIOR_DUNS_NUMBERReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmberMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NamePRIOR_DUNS_NUMBER_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeTRANSFER_DUNS_NUMBERVARCHARconfiguration/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferDUNSNumberTRANSFER_REASON_TEXTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferReasonTextTRANSFER_REASON_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferReasonCodeTRANSFER_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferDateTRANSFERRED_FROM_DUNS_NUMBERVARCHARconfiguration/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferredFromDUNSNumberTRANSFERRED_TO_DUNS_NUMBERVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/PriorDUNSNUmber/attributes/TransferredToDUNSNumberINDUSTRY_CODEReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/IndustryCodeMaterialized: <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON>/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/DNBCodeINDUSTRY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryCodeINDUSTRY_CODE_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryCodeDescriptionINDUSTRY_CODE_LANGUAGE_CODEVARCHARconfiguration/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryCodeLanguageCodeINDUSTRY_CODE_WRITING_SCRIPTVARCHARconfiguration/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryCodeWritingScriptDISPLAY_SEQUENCEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/DisplaySequenceSALES_PERCENTAGEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/SalesPercentageTYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/TypeINDUSTRY_TYPE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/IndustryTypeCodeIMPORT_EXPORT_AGENTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/IndustryCode/attributes/ImportExportAgentACTIVITIES_AND_OPERATIONSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperationsMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameACTIVITIES_AND_OPERATIONS_URIVARCHARGenerated KeyENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeLINE_OF_BUSINESS_DESCRIPTIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/LineOfBusinessDescriptionLANGUAGE_CODEVARCHARconfiguration/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/LanguageCodeWRITING_SCRIPT_CODEVARCHARconfiguration/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/WritingScriptCodeIMPORT_INDICATORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/ImportIndicatorEXPORT_INDICATORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/ExportIndicatorAGENT_INDICATORBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/ActivitiesAndOperations/attributes/AgentIndicatorEMPLOYEE_DETAILSReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetailsMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameEMPLOYEE_DETAILS_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> Entity TypeINDIVIDUAL_EMPLOYEE_FIGURES_DATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/IndividualEmployeeFiguresDateINDIVIDUAL_TOTAL_EMPLOYEE_QUANTITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/IndividualTotalEmployeeQuantityINDIVIDUAL_RELIABILITY_TEXTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/IndividualReliabilityTextTOTAL_EMPLOYEE_QUANTITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/TotalEmployeeQuantityTOTAL_EMPLOYEE_RELIABILITYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/TotalEmployeeReliabilityPRINCIPALS_INCLUDEDVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/EmployeeDetails/attributes/PrincipalsIncludedKEY_FINANCIAL_FIGURES_OVERVIEWReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverviewMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameKEY_FINANCIAL_FIGURES_OVERVIEW_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeFINANCIAL_STATEMENT_TO_DATEDATEconfiguration/<ORGANIZATION><ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/FinancialStatementToDateFINANCIAL_PERIOD_DURATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/FinancialPeriodDurationSALES_REVENUE_CURRENCYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueCurrencySALES_REVENUE_CURRENCY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueCurrencyCodeSALES_REVENUE_RELIABILITY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueReliabilityCodeSALES_REVENUE_UNIT_OF_SIZEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueUnitOfSizeSALES_REVENUE_AMOUNTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesRevenueAmountPROFIT_OR_LOSS_CURRENCYVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/ProfitOrLossCurrencyPROFIT_OR_LOSS_RELIABILITY_TEXTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/ProfitOrLossReliabilityTextPROFIT_OR_LOSS_UNIT_OF_SIZEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/ProfitOrLossUnitOfSizePROFIT_OR_LOSS_AMOUNTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/ProfitOrLossAmountSALES_TURNOVER_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/SalesTurnoverGrowthRateSALES3YRY_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/Sales3YryGrowthRateSALES5YRY_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/Sales5YryGrowthRateEMPLOYEE3YRY_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/Employee3YryGrowthRateEMPLOYEE5YRY_GROWTH_RATEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/KeyFinancialFiguresOverview/attributes/Employee5YryGrowthRateMATCH_QUALITYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameMATCH_QUALITY_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive FlagENTITY_TYPEVARCHARReltio Entity TypeCONFIDENCE_CODEVARCHARDnB Match Quality Confidence Codeconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/<ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/DisplaySequenceMATCH_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/MatchCodeBEMFABVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/BEMFABMATCH_GRADEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/MatchQuality/attributes/<PERSON>: configuration/entityTypes/<ORGANIZATION>/attributes/OrganizationDetailMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameORGANIZATION_DETAIL_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> Entity TypeMEMBER_ROLEVARCHARconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/MemberRoleSTANDALONEBOOLEANconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StandaloneCONTROL_OWNERSHIP_DATEDATEconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/ControlOwnershipDateOPERATING_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/OperatingStatusSTART_YEARVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/StartYearFRANCHISE_OPERATION_TYPEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/FranchiseOperationTypeBONEYARD_ORGANIZATIONBOOLEANconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/BoneyardOrganizationOPERATING_STATUS_COMMENTVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/OperatingStatusCommentDUNS_HIERARCHYReltio URI: configuration/entityTypes/<ORGANIZATION>/attributes/DUNSHierarchyMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameDUNS_HIERARCHY_URIVARCHARGenerated <ORGANIZATION> CodeACTIVEVARCHARActive <PERSON> TypeGLOBAL_ULTIMATE_DUNSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/GlobalUltimateDUNSGLOBAL_ULTIMATE_ORGANIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/GlobalUltimateOrganizationDOMESTIC_ULTIMATE_DUNSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DomesticUltimateDUNSDOMESTIC_ULTIMATE_ORGANIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/DomesticUltimateOrganizationPARENT_DUNSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ParentDUNSPARENT_ORGANIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/ParentOrganizationHEADQUARTERS_DUNSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/HeadquartersDUNSHEADQUARTERS_ORGANIZATIONVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/HeadquartersOrganizationMCOManaged Care OrganizationReltio URI: configuration/entityTypes/MCOMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameENTITY_URIVARCHARReltio Entity URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive <PERSON> TypeCOMPANY_CUST_IDVARCHARCOMPANY Customer IDconfiguration/entityTypes/<ORGANIZATION>/attributes/COMPANYCustIDNAMEVARCHARNameconfiguration/entityTypes/<ORGANIZATION>/attributes/NameTYPEVARCHARTypeconfiguration/entityTypes/<ORGANIZATION>/attributes/TypeMCOTypeMANAGED_CARE_CHANNELVARCHARManaged Care Channelconfiguration/entityTypes/<ORGANIZATION>/attributes/ManagedCareChannelMCOManagedCareChannelPLAN_MODEL_TYPEVARCHARPlanModelTypeconfiguration/entityTypes/<ORGANIZATION>/attributes/PlanModelTypeMCOPlanModelTypeSUB_TYPEVARCHARSubTypeconfiguration/entityTypes/<ORGANIZATION>/attributes/SubTypeMCOSubTypeSUB_TYPE2VARCHARSubType2configuration/entityTypes/<ORGANIZATION>/attributes/SubType2SUB_TYPE3VARCHARSub Type 3configuration/entityTypes/<ORGANIZATION>/attributes/SubType3NUM_LIVES_MEDICAREVARCHARMedicare Number of Livesconfiguration/entityTypes/<ORGANIZATION>/attributes/NumLives_MedicareNUM_LIVES_MEDICALVARCHARMedical Number of Livesconfiguration/entityTypes/<ORGANIZATION>/attributes/NumLives_MedicalNUM_LIVES_PHARMACYVARCHARPharmacy Number of Livesconfiguration/entityTypes/<ORGANIZATION>/attributes/NumLives_PharmacyOPERATING_STATEVARCHARState Operating fromconfiguration/entityTypes/<ORGANIZATION>/attributes/Operating_StateORIGINAL_SOURCE_NAMEVARCHAROriginal Source Nameconfiguration/entityTypes/<ORGANIZATION>/attributes/OriginalSourceNameDISTRIBUTION_CHANNELVARCHARDistribution Channelconfiguration/entityTypes/<ORGANIZATION>/attributes/DistributionChannelACCESS_LANDSCAPE_FORMULARY_CHANNELVARCHARAccess <ORGANIZATION>/entityTypes/<ORGANIZATION>/attributes/AccessLandscapeFormularyChannelEFFECTIVE_START_DATEDATEEffective Start Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/EffectiveStartDateEFFECTIVE_END_DATEDATEEffective End Dateconfiguration/entityTypes/<ORGANIZATION>/attributes/EffectiveEndDateSTATUSVARCHARStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/StatusMCOStatusSOURCE_MATCH_CATEGORYVARCHARSource Match Categoryconfiguration/entityTypes/<ORGANIZATION>/attributes/SourceMatchCategoryCOUNTRY_MCOVARCHARCountryconfiguration/entityTypes/<ORGANIZATION>/attributes/CountryAFFILIATIONSReltio URI: configuration/relationTypes/FlextoDDDAffiliations, configuration/relationTypes/Ownership, configuration/relationTypes/PAYERtoPLAN, configuration/relationTypes/PBMVendortoMCO, configuration/relationTypes/<ORGANIZATION>, configuration/relationTypes/MCOtoPLAN, configuration/relationTypes/FlextoHCOSAffiliations, configuration/relationTypes/FlextoSAPAffiliations, ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●, configuration/relationTypes/HCOStoDDDAffiliations, configuration/relationTypes/EnterprisetoBOB, configuration/relationTypes/OtherHCOtoHCOAffiliations, configuration/relationTypes/ContactAffiliations, configuration/relationTypes/VAAffiliations, configuration/relationTypes/PBMtoPLAN, configuration/relationTypes/Purchasing, configuration/relationTypes/BOBtoMCO, configuration/relationTypes/DDDtoSAPAffiliations, ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●, configuration/relationTypes/<ORGANIZATION>, configuration/relationTypes/SAPtoHCOSAffiliationsMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameRELATION_URIVARCHARReltio Relation URICOUNTRYVARCHARCountry CodeACTIVEVARCHARActive FlagRELATION_TYPEVARCHARReltio Relation TypeSTART_ENTITY_URIVARCHARReltio Start Entity URIEND_ENTITY_URIVARCHARReltio End Entity URISOURCEVARCHARconfiguration/relationTypes/FlextoDDDAffiliations/attributes/Source, configuration/relationTypes/Ownership/attributes/Source, configuration/relationTypes/PAYERtoPLAN/attributes/Source, configuration/relationTypes/PBMVendortoMCO/attributes/Source, configuration/relationTypes/ACOAffiliations/attributes/Source, configuration/relationTypes/MCOtoPLAN/attributes/Source, configuration/relationTypes/FlextoHCOSAffiliations/attributes/Source, configuration/relationTypes/FlextoSAPAffiliations/attributes/Source, configuration/relationTypes<ORGANIZATION>/attributes/Source, configuration/relationTypes/HCOStoDDDAffiliations/attributes/Source, configuration/relationTypes/EnterprisetoBOB/attributes/Source, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/Source, configuration/relationTypes/ContactAffiliations/attributes/Source, configuration/relationTypes/VAAffiliations/attributes/Source, configuration/relationTypes/PBMtoPLAN/attributes/Source, configuration/relationTypes/Purchasing/attributes/Source, configuration/relationTypes/BOBtoMCO/attributes/Source, configuration/relationTypes/DDDtoSAPAffiliations/attributes/Source, configuration/relationTypes/Distribution/attributes/Source, configuration/relationTypes/ProviderAffiliations/attributes/Source, configuration/relationTypes/SAPtoHCOSAffiliations/attributes/SourceLINKED_BYVARCHARconfiguration/relationTypes/FlextoDDDAffiliations/attributes/LinkedBy, configuration/relationTypes/FlextoHCOSAffiliations/attributes/LinkedBy, configuration/relationTypes/FlextoSAPAffiliations/attributes/LinkedBy, configuration/relationTypes/SAPtoHCOSAffiliations/attributes/LinkedByCOUNTRY_AFFILIATIONSVARCHARconfiguration/relationTypes/FlextoDDDAffiliations/attributes/Country, configuration/relationTypes/Ownership/attributes/Country, configuration/relationTypes/PAYERtoPLAN/attributes/Country, configuration/relationTypes/PBMVendortoMCO/attributes/Country, configuration/relationTypes/ACOAffiliations/attributes/Country, configuration/relationTypes/MCOtoPLAN/attributes/Country, configuration/relationTypes/FlextoHCOSAffiliations/attributes/Country, configuration/relationTypes/FlextoSAPAffiliations/attributes/Country, configuration/relationTypes<ORGANIZATION>/attributes/Country, configuration/relationTypes/HCOStoDDDAffiliations/attributes/Country, configuration/relationTypes/EnterprisetoBOB/attributes/Country, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/Country, configuration/relationTypes/ContactAffiliations/attributes/Country, configuration/relationTypes/VAAffiliations/attributes/Country, configuration/relationTypes/PBMtoPLAN/attributes/Country, configuration/relationTypes/Purchasing/attributes/Country, configuration/relationTypes/BOBtoMCO/attributes/Country, configuration/relationTypes/DDDtoSAPAffiliations/attributes/Country, configuration/relationTypes/Distribution/attributes/Country, configuration/relationTypes/ProviderAffiliations/attributes/Country, configuration/relationTypes/SAPtoHCOSAffiliations/attributes/CountryAFFILIATION_TYPEVARCHARconfiguration/relationTypes/PAYERtoPLAN/attributes/<ORGANIZATION>, configuration/relationTypes/PBMVendortoMCO/attributes/<ORGANIZATION>, configuration/relationTypes/MCOtoPLAN/attributes/<ORGANIZATION>, configuration/relationTypes<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/EnterprisetoBOB/attributes/<ORGANIZATION>, configuration/relationTypes/VAAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/PBMtoPLAN/attributes/<ORGANIZATION>, configuration/relationTypes/BOBtoMCO/attributes/AffiliationTypePBM_AFFILIATION_TYPEVARCHARconfiguration/relationTypes/PAYERtoPLAN/attributes/PBMAffiliationType, configuration/relationTypes/PBMVendortoMCO/attributes/PBMAffiliationType, configuration/relationTypes/MCOtoPLAN/attributes/PBMAffiliationType, configuration/relationTypes<ORGANIZATION>/attributes/PBMAffiliationType, configuration/relationTypes/EnterprisetoBOB/attributes/PBMAffiliationType, configuration/relationTypes/PBMtoPLAN/attributes/PBMAffiliationType, configuration/relationTypes/BOBtoMCO/attributes/PBMAffiliationTypePLAN_MODEL_TYPEVARCHARconfiguration/relationTypes/PAYERtoPLAN/attributes/PlanModelType, configuration/relationTypes/PBMVendortoMCO/attributes/PlanModelType, configuration/relationTypes/MCOtoPLAN/attributes/PlanModelType, configuration/relationTypes<ORGANIZATION>/attributes/PlanModelType, configuration/relationTypes/EnterprisetoBOB/attributes/PlanModelType, configuration/relationTypes/PBMtoPLAN/attributes/PlanModelType, configuration/relationTypes/BOBtoMCO/attributes/PlanModelTypeMCOPlanModelTypeMANAGED_CARE_CHANNELVARCHARconfiguration/relationTypes/PAYERtoPLAN/attributes/ManagedCareChannel, configuration/relationTypes/PBMVendortoMCO/attributes/ManagedCareChannel, configuration/relationTypes/MCOtoPLAN/attributes/ManagedCareChannel, configuration/relationTypes<ORGANIZATION>/attributes/ManagedCareChannel, configuration/relationTypes/EnterprisetoBOB/attributes/ManagedCareChannel, configuration/relationTypes/PBMtoPLAN/attributes/ManagedCareChannel, configuration/relationTypes/BOBtoMCO/attributes/ManagedCareChannelMCOManagedCareChannelEFFECTIVE_START_DATEDATEconfiguration/relationTypes/MCOtoPLAN/attributes/EffectiveStartDateEFFECTIVE_END_DATEDATEconfiguration/relationTypes/MCOtoPLAN/attributes/EffectiveEndDateSTATUSVARCHARconfiguration/relationTypes/VAAffiliations/attributes/StatusAFFIL_RELATION_TYPEReltio URI: configuration/relationTypes/Ownership/attributes/<ORGANIZATION>, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>, configuration/relationTypes/ProviderAffiliations/attributes/RelationTypeMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameRELATION_TYPE_URIVARCHARGenerated KeyRELATION_URIVARCHARReltio Relation URIRELATIONSHIP_GROUP_OWNERSHIPVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCORelationGroupRELATIONSHIP_DESCRIPTION_OWNERSHIPVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCORelationDescriptionRELATIONSHIP_ORDERVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/RelationshipOrder, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipOrder, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipOrder, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/RelationshipOrder, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipOrder, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/RelationshipOrderRANKVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/Rank, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/Rank, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/Rank, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/Rank, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/Rank, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/Rank, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/Rank, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/Rank, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/RankAMA_HOSPITAL_IDVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/AMAHospitalIDAMA_HOSPITAL_HOURSVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/AMAHospitalHours, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/AMAHospitalHours, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/AMAHospitalHours, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/AMAHospitalHours, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/AMAHospitalHours, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/AMAHospitalHoursEFFECTIVE_START_DATEDATEconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/EffectiveStartDate, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveStartDate, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveStartDate, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveStartDate, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveStartDate, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/EffectiveStartDate, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveStartDate, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/EffectiveStartDate, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveStartDateEFFECTIVE_END_DATEDATEconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/EffectiveEndDate, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveEndDate, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveEndDate, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveEndDate, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveEndDate, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/EffectiveEndDate, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveEndDate, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/EffectiveEndDate, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/EffectiveEndDateACTIVE_FLAGBOOLEANconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/ActiveFlagPRIMARY_AFFILIATIONVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/PrimaryAffiliation, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/PrimaryAffiliationAFFILIATION_CONFIDENCE_CODEVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCode, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCode, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCode, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCode, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCode, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCode, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCode, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCode, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/AffiliationConfidenceCodeRELATIONSHIP_GROUP_ACOAFFILIATIONSVARCHARconfiguration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCPRelationGroupRELATIONSHIP_DESCRIPTION_ACOAFFILIATIONSVARCHARconfiguration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCPRelationshipDescriptionRELATIONSHIP_STATUS_CODEVARCHARconfiguration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipStatusCode, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipStatusCode, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipStatusCodeHCPtoHCORelationshipStatusRELATIONSHIP_STATUS_REASON_CODEVARCHARconfiguration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipStatusReasonCode, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipStatusReasonCode, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipStatusReasonCodeHCPtoHCORelationshipStatusReasonCodeWORKING_STATUSVARCHARconfiguration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/WorkingStatusWorkingStatusRELATIONSHIP_GROUP_HCOSTODDDAFFILIATIONSVARCHARconfiguration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCORelationGroupRELATIONSHIP_DESCRIPTION_HCOSTODDDAFFILIATIONSVARCHARconfiguration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCORelationDescriptionRELATIONSHIP_GROUP_OTHERHCOTOHCOAFFILIATIONSVARCHARconfiguration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCORelationGroupRELATIONSHIP_DESCRIPTION_OTHERHCOTOHCOAFFILIATIONSVARCHARconfiguration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCORelationDescriptionRELATIONSHIP_GROUP_CONTACTAFFILIATIONSVARCHARconfiguration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCPRelationGroupRELATIONSHIP_DESCRIPTION_CONTACTAFFILIATIONSVARCHARconfiguration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCPRelationshipDescriptionRELATIONSHIP_GROUP_PURCHASINGVARCHARconfiguration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCORelationGroupRELATIONSHIP_DESCRIPTION_PURCHASINGVARCHARconfiguration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCORelationDescriptionRELATIONSHIP_GROUP_DDDTOSAPAFFILIATIONSVARCHARconfiguration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCORelationGroupRELATIONSHIP_DESCRIPTION_DDDTOSAPAFFILIATIONSVARCHARconfiguration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCORelationDescriptionRELATIONSHIP_GROUP_DISTRIBUTIONVARCHARconfiguration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCORelationGroupRELATIONSHIP_DESCRIPTION_DISTRIBUTIONVARCHARconfiguration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCORelationDescriptionRELATIONSHIP_GROUP_PROVIDERAFFILIATIONSVARCHARconfiguration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipGroupHCPRelationGroupRELATIONSHIP_DESCRIPTION_PROVIDERAFFILIATIONSVARCHARconfiguration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/RelationshipDescriptionHCPRelationshipDescriptionAFFIL_ACOReltio URI: configuration/relationTypes/Ownership/attributes/<ORGANIZATION>, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameACO_URIVARCHARGenerated KeyRELATION_URIVARCHARReltio Relation URIACO_TYPEVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/ACOType, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/ACOType, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/ACOType, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/ACOType, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/ACOType, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/ACOType, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/ACOType, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/ACOType, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeHCOACOTypeACO_TYPE_CATEGORYVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/ACOTypeCategory, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeCategory, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeCategory, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeCategory, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeCategory, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/ACOTypeCategory, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeCategory, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/ACOTypeCategory, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeCategoryHCOACOTypeCategoryACO_TYPE_GROUPVARCHARconfiguration/relationTypes/Ownership/attributes/<ORGANIZATION>/attributes/ACOTypeGroup, configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeGroup, configuration/relationTypes/HCOStoDDDAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeGroup, configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeGroup, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeGroup, configuration/relationTypes/Purchasing/attributes/<ORGANIZATION>/attributes/ACOTypeGroup, configuration/relationTypes/DDDtoSAPAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeGroup, configuration/relationTypes/Distribution/attributes/<ORGANIZATION>/attributes/ACOTypeGroup, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/ACOTypeGroupHCOACOTypeGroupAFFIL_RELATION_TYPE_ROLEReltio URI: configuration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/Role, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/Role, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/<ORGANIZATION>: noColumnTypeDescriptionReltio Attribute URILOV NameRELATION_TYPE_URIVARCHARGenerated <ORGANIZATION>/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/Role/attributes/Role, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/Role/attributes/Role, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/Role/attributes/RoleRoleTypeRANKVARCHARconfiguration/relationTypes/ACOAffiliations/attributes/<ORGANIZATION>/attributes/Role/attributes/Rank, configuration/relationTypes/ContactAffiliations/attributes/<ORGANIZATION>/attributes/Role/attributes/Rank, configuration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/Role/attributes/RankAFFIL_USAGE_TAGReltio URI: configuration/relationTypes/ProviderAffiliations/attributes/UsageTagMaterialized: noColumnTypeDescriptionReltio Attribute URILOV NameUSAGE_TAG_URIVARCHARGenerated KeyRELATION_URIVARCHARReltio Relation URIUSAGE_TAGVARCHARconfiguration/relationTypes/ProviderAffiliations/attributes/<ORGANIZATION>/attributes/UsageTag"
|
||
},
|
||
{
|
||
"title": "CUSTOMER_SL schema",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/CUSTOMER_SL+schema",
|
||
"content": "The schema plays the role of access layer for clients reading <ORGANIZATION> data. It includes a set of views that are directly inherited from CUSTOMER <URL><ORGANIZATION> have the same structure as views in CUSTOMER schemat. To learn about view definitions please see CUSTOMER schema. In regional data marts, the schema views have MDM prefix. In CUSTOMER_SL schema in <ORGANIZATION> views are prefixed with 'P' for COMPANY Reltio Model,'I' for <ORGANIZATION> model, and 'P_HI' for <ORGANIZATION> data for <ORGANIZATION><URL> speed up access, most views are being materialized to physical tables. The process is transparent to users. Access views are being switched to physical tables automatically if they are available. The refresh process is incremental and connected with the loading process. "
|
||
},
|
||
{
|
||
"title": "LANDING schema",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/LANDING+schema",
|
||
"content": "LANDING schema plays a role of the staging database for publishing <ORGANIZATION> data from <ORGANIZATION> tenants <ORGANIZATION> table for <ORGANIZATION> events published through <ORGANIZATION><URL>lumnTypeDescriptionRECORD_METADATAVARIANTMetadata of <PERSON> event like <PERSON> key, topic, partition, create timeRECORD_CONTENTVARIANTEvent payloadLOV_DATATarget table for LOV data publish ColumnTypeDescription IDTEXTLOV object idOBJECTVARIANTRelto RDM json objectMERGE_TREE_DATATarget table for merge_tree exports from ReltioColumnTypeDescription <ORGANIZATION> file pathOBJECTVARIANTRelto <DATE_TIME> json objectHI_DATATarget table for ad-hoc historical inactive dataColumnTypeDescription OBJECTVARIANTHistorical Inactive json object"
|
||
},
|
||
{
|
||
"title": "PTE_SL",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/PTE_SL",
|
||
"content": "The schema plays the role of access layer for Clients reading data required for <ORGANIZATION> reports. It mimics its structure and logic. To make a connection to the PTE_SL schema you need to have a proper role assigned:COMM_GBL_MDM_DMART_DEV_PTE_ROLECOMM_GBL_MDM_DMART_QA_PTE_ROLECOMM_GBL_MDM_DMART_STG_PTE_ROLECOMM_GBL_MDM_DMART_PROD_PTE_ROLEthat are connected with groups:sfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_DEV_PTE_ROLE\nsfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_QA_PTE_ROLE\nsfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_STG_PTE_ROLE\nsfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PROD_PTE_ROLEInformation how to request for an acces is described here: Snowflake - connection guidSnowflake path to the client report: "COMM_GBL_MDM_DMART_PROD_DB"."PTE_SL"."PTE_REPORT"General assumptions for view creation:The views integrate both data models COMPANY and IQIVIA via a Union function. Meaning that they're calculated separately and then joined together. <ORGANIZATION> The lang_code from the code translations is always 'en'In case the hcp identifiers aren't provided by the client there is an option to calculate them dynamically by the number of HCPs having the identifier.Driven tables:DRIVEN_TABLE1This is a view selecting data from the country_config table for countries that need to be added to the PTE_REPORTColumn nameDescriptionISO_CODEISO2 code of the countryNAMECountry nameLABELCountry label (name + iso_code)RELTIO_TENANTEither 'IQVIA' or the region of the <ORGANIZATION> tenant (<ORGANIZATION>...)HUB_TENANTIndicator of the HUB database the date comes fromSF_INSTANCEName of the <ORGANIZATION> instance the data comes from (<URL>-west-1...)SF_TENANTDATABASEFull database name form which the data comes fromCUSTOMERSL_PREFIXeither 'i_' for the IQVIA data model or 'p_' for the COMPANY data modelDRIVEN_TABLEV2 / DRIVEN_TABLE2_STATICDRIVEN_TABLEV2 is a view used to get the HCP identifiers and sort them by the count of HCPs that have the identifier. DRIVEN_TABLE2_STATIC is a table containing the list of identifiers used per country and the order in which they're placed in the PTE_REPORT view. If the country isn't available in DRIVEN_TABLE2_STATIC the report will use DRIVEN_TABLEV2 to get them calculated dynamically every time the report is <URL>lumn nameDescriptionISO_CDOEISO2 code of the countryCANONICAL_CODECanonical code of the <PERSON> description in EnglishCODE_IDCode idMODELeither 'i' for the IQVIA data model or 'p' for the COMPANY data modelORDER_IDOrder in which the identifier will be available in the PTE_REPORT view. Only identifiers from 1 to 5 will be used.DRIVEN_TABLE3Specialty dictionary provided by the client for the IQVIA data model only. Used for calculating the <ORGANIZATION> data.'IS PRESCRIBER' calculation method for IQIVIA modelThe path to the dictionary files on <ORGANIZATION>: <ORGANIZATION>-baiaes-eu-<US_DRIVER_LICENSE>-project/mdm/config/PTE_DictionariesColumn nameDescriptionCOUNTRY_CODEISO2 code of the <ORGANIZATION> nameMDM_CODECode idCANONICAL_CODECanonical code of the identifierLONG_DESCRIPTIONCode description in <ORGANIZATION> the specialty is a prescriber or not PTE_REPORT:The PTE_REPORT is the view from which the clients should get their data. It's an UNION of the reports for the IQVIA data model and the COMPANY data model. Calculation detail may be found in the respective articles:IQVIA: PTE_SL IQVIA MODELCOMPANY: PTE_SL COMPANY MODEL"
|
||
},
|
||
{
|
||
"title": "Data Sourcing",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Data+Sourcing",
|
||
"content": "<ORGANIZATION> CodeMDM <PERSON> and <NRP> PolynesiaPFEMEACOMPANYPTE_REPORTFrench GuianaGFEMEACOMPANYPTE_REPORTWallis and FutunaWFEMEACOMPANYPTE_REPORTGuadeloupeGPEMEACOMPANYPTE_REPORTNew CaledoniaNCEMEACOMPANYPTE_REPORTMartiniqueMQEMEACOMPANYPTE_REPORTMauritiusMUEMEACOMPANYPTE_REPORTMonacoMCEMEACOMPANYPTE_REPORTAndorraADEMEACOMPANYPTE_REPORTTurkeyTREMEACOMPANYPTE_REPORT_TRSouth KoreaKRAPACCOMPANYPTE_REPORT_KRAll views are available in the global database in the PTE_SL schema."
|
||
},
|
||
{
|
||
"title": "PTE_SL IQVIA MODEL",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/PTE_SL+IQVIA+MODEL",
|
||
"content": "<PERSON> data model specification:name typedescription Reltio attribute URILOV Name additional querry conditions (<ORGANIZATION> model)additional querry conditions (COMPANY model)HCP_IDVARCHARReltio Entity URIi_hcp.entity_uri or i_<URL>art_entity_urionly active hcp are returned (customer_sl.i_<URL>tive ='<LOCATION> or i_<URL>art_entity_urionly active hcp are returnedHCO_IDVARCHARReltio Entity URIFor the <ORGANIZATION> model, all affiliation with i_<URL>tive = 'TRUE' and relation type in ('Activity','HasHealthCareRole') must be returned.i_hco.entity_uri select END_ENTITY_URI from customer_sl.i_affiliations where start_entity_uri ='T9u7Ej4'and active = 'TRUE'and relation_type in ('Activity','HasHealthCareRole') ;select * from customer_sl.p_affiliations where active=TRUE and relation_type = 'ContactAffiliations';WORKPLACE_NAMEVARCHARReltio workplace name or reltio workplace parent <URL>nfiguration/entityTypes/HCO/attributes/NameFor the <ORGANIZATION> model, all affiliation with i_<URL>tive = 'TRUE' and relation type in ('Activity','HasHealthCareRole') must be returned.i_<URL> must be returnedselect <URL> from customer_sl.i_affiliations a,customer_sl.i_hco hcowhere a.end_entity_uri = hco.entity_uri and <URL>art_entity_uri ='T9u7Ej4'and <URL>tive = 'TRUE'and <ORGANIZATION> in ('Activity','HasHealthCareRole') ;For the COMPANY model, all affiliation with p_<URL>tive=TRUE and relation_type = 'ContactAffiliations'i_<URL>STATUSBOOLEANReltio Entity statusi_customer_sl.i_<URL>tivemapping rule TRUE = ACTIVEi_customer_sl.p_<URL>tivemapping rule TRUE = ACTIVELAST_MODIFICATION_DATETIMESAMP_LTZEntity update time in <ORGANIZATION>/entityTypes/HCP/updateTimecustomer_sl.i_entity_update_dates.SF_UPDATE_TIMEi_customer_sl.p_entity_update.SF_UPDATE_TIMEFIRST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FirstNamei_customer_sl.i_<URL>rst_namei_customer_sl.p_<URL>rst_nameLAST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/LastNamei_customer_sl.i_<URL>st_namei_customer_sl.p_<URL>st_nameTITLE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TitleLOV Name COMPANY = HCPTitleLOV Name IQIVIA = LKUP_IMS_PROF_TITLEselect <URL>nonical_code from customer_sl.i_hcp hcp,customer_sl.i_codetranslations cwhere hcp.title_lkp = <URL>de_<URL>lect <URL>nonical_code fromcustomer_sl.i_hcp hcp,customer_sl.i_code_translations cwherehcp.title_lkp = <URL>de_idand hcp.entity_uri='T9u7Ej4'and <URL>untry='FR';select <URL>nonical_code from customer_sl.p_hcp hcp,customer_sl.p_codes cwhere hcp.title_lkp = <URL>de_idTITLE_DESCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TitleLOV Name COMPANY = THCPTitleLOV Name IQIVIA = LKUP_IMS_PROF_TITLEselect <URL>ng_desc from customer_sl.i_hcp hcp,customer_sl.i_code_translations cwhere hcp.title_lkp = <URL>de_<URL>lect <URL>ng_desc fromcustomer_sl.i_hcp hcp,customer_sl.i_code_translations cwherehcp.title_lkp = <URL>de_idand hcp.entity_uri='T9u7Ej4'and <URL>untry='FR';select <URL>sc from customer_sl.p_hcp hcp,customer_sl.p_codes cwhere hcp.title_lkp = <URL>de_idIS_PRESCRIBER'IS PRESCRIBER' calculation method for <ORGANIZATION> modelCASEWhen p_hcp.TYPE_CODE_LKP = 'HCPType:<URL>ES' then YCASEWhen p_hcp.<PERSON> = 'HCPType:<URL>RS' then NELSETo define <ORGANIZATION> codeconfiguration/entityTypes/Location/attributes/countrycustomer_sl.i_<URL>untrycustomer_sl.p_<URL>untryPRIMARY_ADDRESS_LINE_1IQIVIA: configuration/entityTypes/Location/attributes/AddressLine1COMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine1select address_line1 from customer_sl.i_address where address_rank=1select address_line1 from customer_sl.i_address where <ORGANIZATION> and <PERSON> from customer_sl.p_addresses a where <ORGANIZATION> =1PRIMARY_ADDRESS_LINE_2IQIVIA: configuration/entityTypes/Location/attributes/AddressLine2COMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine2select address_line2 from customer_sl.i_address where address_rank=1select a. address_line2 from customer_sl.p_addresses a where <ORGANIZATION> =1PRIMARY_ADDRESS_CITYIQIVIA: configuration/entityTypes/Location/attributes/CityCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Cityselect cityfrom customer_sl.i_address where address_rank=1select <URL> from customer_sl.p_addresses a where <ORGANIZATION> =1PRIMARY_ADDRESS_POSTAL_CODEIQIVIA: configuration/entityTypes/Location/attributes/Zip/attributes/<PERSON>: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip5select ZIP5 from customer_sl.i_address where address_rank=1select a.ZIP5 from customer_sl.p_addresses a where <ORGANIZATION> =1PRIMARY_ADDRESS_STATEIQIVIA: configuration/entityTypes/Location/attributes/<ORGANIZATION>: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StateProvinceLOV Name COMPANY = <PERSON> from customer_sl.i_address where address_rank=1select <URL>sc fromcustomer_sl.p_codes c,customer_sl.p_addresses awhere <URL>dress_rank=<URL>ATE_PROVINCE_LKP = <URL>de_id PRIMARY_ADDR_STATUSIQIVIA: configuration/entityTypes/Location/attributes/VerificationStatusCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/VerificationStatuscustomer_sl.i_<URL>rification_statuscustomer_sl.p_<URL>rification_statusPRIMARY_SPECIALTY_CODEconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyLOV Name COMPANY = HCPSpecialtyLOV Name IQIVIA =LKUP_IMS_<URL>lect <URL>nonical_code from customer_sl.i_specialities s,customer_sl.i_code_translations cwhere s.specialty_lkp = <URL>de_idand s.entity_uri ='T9liLpi'and s.SPECIALTY_TYPE_LKP='LKUP_IMS_SPECIALTY_TYPE:<ORGANIZATION>' and <URL>ng_code = 'en'and <URL>untry = 'FR';select <URL>nonical_code from customer_sl.p_specialities s,customer_sl.p_codes cwhere s.specialty_lkp =<URL>de_idand s.rank = 1 ;There are no extra query conditions connected with SPECIALTY_TYPE_LKP because in the <ORGANIZATION> environment that parameter always has a NULL value. PRIMARY_SPECIALTY_DESCconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyLOV Name COMPANY = LKUP_IMS_SPECIALTYLOV Name IQIVIA =LKUP_IMS_<URL>elect <URL>ng_desc from customer_sl.i_specialities s,customer_sl.i_code_translations cwhere s.specialty_lkp = <URL>de_idand s.entity_uri ='T9liLpi'and s.SPECIALTY_TYPE_LKP='LKUP_IMS_SPECIALTY_TYPE:<ORGANIZATION>' and <URL>ng_code = 'en'and <URL>untry = 'FR';select <URL>sc from customer_sl.p_specialities s,customer_sl.p_codes cwhere s.specialty_lkp =<URL>de_idand s.rank = 1 ;There are no extra query conditions connected with SPECIALTY_TYPE_LKP because in the <ORGANIZATION> environment that parameter always has a NULL value. GO_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/GOStatusgo_status <> ''CASEWhen i_hcp.go_status_lkp = 'LKUP_GOVOFF_GOSTATUS:GO' then YesCASEWhen i_hcp.go_status_lkp = 'LKUP_GOVOFF_GOSTATUS:NGO' then NoELSENULLgo_status <> ''CASEWhen p_compliance.go_status_lkp = 'LKUP_GOVOFF_GOSTATUS:GO' then YCASEWhen p_compliance.go_status_lkp = 'LKUP_GOVOFF_GOSTATUS:NGO' then NELSE Not defined(now this is an empty tabel)IDENTIFIER1_CODEVARCHARReltio identyfier <URL>nfiguration/entityTypes/HCP/attributes/Identifiers/attributes/Typeselect <URL>nonical_code from customer_sl.i_code_translations ct,customer_sl.i_identifiers <URL>de_id = d.TYPE_LKPThere is a need to set steering parameters that match country code with proper code identifiers - according to driven_tabel2 describes below. This is a place for the first <URL>lect <URL>nonical_code, <URL>ng_desc, <URL>, ct.*,d.* from customer_sl.i_code_translations ct,customer_sl.i_identifiers <URL>de_id = d.TYPE_LKPand <ORGANIZATION> <URL>untry ='FR';select <URL>nonical_code from customer_sl.p_codes ct,customer_sl.p_identifiers <DATE_TIME> = d.TYPE_LKPThere is a need to set steering parameters that match country code with proper code identifiers - according to driven_tabel2 describes below. This is a place for the first <URL>ENTIFIER1_CODE_DESCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Typeselect <URL>ng_desc from customer_sl.i_code_translations ct,customer_sl.i_identifiers <URL>de_id = d.TYPE_LKPselect <URL>sc from customer_sl.p_codes ct,customer_sl.p_identifiers <DATE_TIME> = d.TYPE_LKPIDENTIFIER1_VALUEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/IDselect id from customer_sl.i_<URL> select id from customer_sl.p_identifiersIDENTIFIER2_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<ORGANIZATION> <URL>nonical_code from customer_sl.i_code_translations ct,customer_sl.i_identifiers <URL>de_id = <NRP>TYPE_LKPMaximum two identyfiers can be returnedThere is a need to set steering parameters that match country code with proper code identifiers - according to driven_tabel2 describes below. This is a place for the second <URL>lect <URL>nonical_code from customer_sl.p_codes ct,customer_sl.p_identifiers <DATE_TIME> = <NRP>TYPE_LKPMaximum two identifiers can be returnedThere is a need to set steering parameters that match country code with proper code identifiers - according to driven_tabel2 describes below. This is a place for the second <URL>ENTIFIER2_CODE_DESCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Typeselect <URL>ng_desc from customer_sl.i_code_translations ct,customer_sl.i_identifiers <URL>de_id = d.TYPE_LKPselect <URL>sc from customer_sl.p_codes ct,customer_sl.p_identifiers <DATE_TIME> = d.TYPE_LKPIDENTIFIER2_VALUEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<NRP> <URL> from customer_sl.i_<URL>select id from customer_sl.p_identifiersDGSCATEGORYVARCHARIQIVIA: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSCategoryCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureBenefitCategoryLKUP_BENEFITCATEGORY_HCP,LKUP_BENEFITCATEGORY_HCOselect <URL>ng_desc from customer_sl.i_code_translations ct,customer_sl.i_disclosure <URL>de_id = d.dgs_category_lkpselect DisclosureBenefitCategory from p_hcpDGSCATEGORY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSCategoryLKUP_BENEFITCATEGORY_HCP,LKUP_BENEFITCATEGORY_HCOselect <URL>nonical_code from customer_sl.i_code_translations ct,customer_sl.i_disclosure <URL>de_id = d.dgs_category_lkpcomment: select i_<URL>nonical_code for a valu returned from DisclosureBenefitCategory DGSTITLEVARCHARIQIVIA: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSTitleCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureBenefitTitleLKUP_BENEFITTITLEselect <URL>ng_desc from customer_sl.i_code_translations ct,customer_sl.i_disclosure <URL>de_id = d.DGS_TITLE_LKPselect DisclosureBenefitTitle from p_hcpDGSTITLE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSTitleLKUP_BENEFITTITLEselect <URL>nonical_code from customer_sl.i_code_translations ct,customer_sl.i_disclosure <URL>de_id = <NRP>DGS_TITLE_LKPcomment: select i_<URL>nonical_code for a valu returned from DisclosureBenefitTitle DGSQUALITYVARCHARIQIVIA: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSQualityCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureBenefitQualityLKUP_BENEFITQUALITYselect <URL>ng_desc from customer_sl.i_code_translations ct,customer_sl.i_disclosure <URL>de_id = <PERSON> DisclosureBenefitQuality from p_hcpDGSQUALITY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSQualityLKUP_BENEFITQUALITYselect <URL>nonical_code from customer_sl.i_code_translations ct,customer_sl.i_disclosure <URL>de_id = <NRP>DGS_QUALITY_LKPcomment: select i_<URL>nonical_code for a valu returned from <ORGANIZATION> DGSSPECIALTYVARCHARIQIVIA: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/<NRP>: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureBenefitSpecialtyLKUP_BENEFITSPECIALTYselect <URL>ng_desc from customer_sl.i_code_translations ct,customer_sl.i_disclosure <URL>de_id = <PERSON>/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSSpecialtyLKUP_BENEFITSPECIALTYselect canonical_code from customer_sl.i_code_translations ct,customer_sl.i_disclosure <URL>de_id = <NRP>DGS_SPECIALTY_LKPcomment: select i_<URL>nonical_code for a valu returned from <ORGANIZATION> query should return values like:select <PERSON> from "COMM_GBL_MDM_DMART_PROD_DB"."CUSTOMER_SL"."I_SPECIALITIES" s,"COMM_GBL_MDM_DMART_PROD_DB"."CUSTOMER_SL"."I_CODE_TRANSLATIONS" cwhere <ORGANIZATION><PERSON>SPECIALTY_TYPE_LKP='LKUP_IMS_SPECIALTY_TYPE:SPEC'and <PERSON> ='en' ← lang code <ORGANIZATION> ='PH' ← country conditionand s.ENTITY_URI ='ENTITI_URI'; ← entity uri conditionEMAILVARCHARA query should return values like:select EMAIL from "COMM_GBL_MDM_DMART_PROD_DB"."CUSTOMER_SL"."I_EMAIL" where rank= 1 and entity_uri ='ENTITI_URI'; ← entity uri conditionCAUTION: In case when multiple values are returned, the first one must be returned as a query <URL><ORGANIZATION> query should return values like:select FORMATTED_NUMBER from "COMM_GBL_MDM_DMART_PROD_DB"."CUSTOMER_SL"."I_PHONE" where RANK=1 and entity_uri ='ENTITI_URI'; <ORGANIZATION> entity uri conditionCAUTION: In case when multiple values are returned, the first one must be returned as a query result."
|
||
},
|
||
{
|
||
"title": "'IS PRESCRIBER' calculation method for <ORGANIZATION> model",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/%27IS+PRESCRIBER%27+calculation+method+for+IQIVIA+model",
|
||
"content": "Parameters contains in <LOCATION> model:<LOCATION> xml parameter name in calculation metode.g. value from <LOCATION> modelcustomer_sl.i_hcp.type_code_lkp <URL>fessional_type_cdi_hcp.type_code_lkp LKUP_IMS_HCP_CUST_TYPE:PRESselect <URL>nonical_code from <ORGANIZATION>,customer_sl.i_codes <URL>B_TYPE_CODE_LKP = <URL>de_id <URL>fessional_subtype_cdprof_subtype_<URL>elect <URL>nonical_code from customer_sl.i_specialities s,customer_sl.i_codes cwheres.specialty_lkp = <URL>de_id and s.rank=1 and s.SPECIALTY_TYPE_LKP='LKUP_IMS_SPECIALTY_TYPE:<ORGANIZATION>' and <URL>rents='SPEC'spec.specialty_codespec_<URL>customer_sl.i_<URL>untryi_<URL>untryFRDictionaries parameters:profesion_type_subtype.csv as dict_subtypesprofesion_type_subtype_fr.csv as dict_subtypesprofessions_type_subtype.xlsxxmlvalue from file to calculate <LOCATION> viewe.g. value to calculate <LOCATION> viewmdm_codedict_<URL>m_codecanonical_codeWAR.TYP.Aprofessional_typedict_<URL>fessional_typeprofessional_typeNon-Prescriber, Prescribercountry_codedict_<URL>untry_codecountry_codeFRprofesion_type_speciality.csv as dict_specialtiesprofesion_type_speciality_fr.csv as <ORGANIZATION> from file to calculate <LOCATION> viewe.g. value to calculate <ORGANIZATION>, Prescribercountry_codedict_<URL>untry_codecountry_codeFRIn a new PTE_SL view the files mentions above are migrated to driven_tabel3. So in a method description, there is an extra condition that matches a dependence with profession subtype or <URL>thod description:Query condition: driven_<URL>untry_code = i_<URL>untry and driven_<URL>nonical_code = prof_subtype_code and driven_tabel3.header_name = 'LKUP_IMS_HCP_SUBTYPE'driven_<URL>untry_code = i_<URL>untry and driven_<URL>nonical_code = spec_code and driven_tabel3.header_name='LKUP_IMS_SPECIALTY'CASE WHEN i_hcp.type_code_lkp ='LKUP_IMS_HCP_CUST_TYPE:PRES' THEN 'Y' WHEN coalesce(prof_subtype_code,spec_code,'') = '' THEN 'N' WHEN coalesce(prof_subtype_code,'') <> '' THEN CASE WHEN coalesce(driven_<URL>nonical_code,'') = '' THEN 'N@1' –- for driven_tabel3.header_name = 'LKUP_IMS_HCP_SUBTYPE', this is a profession subtype checking condition WHEN coalesce(driven_<URL>nonical_code,'') <> '' THEN –- for driven_tabel3.header_name = 'LKUP_IMS_HCP_SUBTYPE', this is a profession subtype checking condition CASE WHEN driven_<URL>fessional_type = 'Prescriber' THEN 'Y' –- for driven_tabel3.header_name = 'LKUP_IMS_HCP_SUBTYPE', this is a profession subtype checking condition WHEN driven_<URL>fessional_type = 'Non-Prescriber' THEN 'N' –- for driven_tabel3.header_name = 'LKUP_IMS_HCP_SUBTYPE', this is a profession subtype checking condition ELSE 'N@2' END END WHEN coalesce(spec_code,'') <> '' THEN CASE WHEN coalesce(driven_<URL>nonical_code,'') = '' THEN 'N@3' –- for driven_tabel3.header_name = '<ORGANIZATION>', this is a specialty checking condition WHEN coalesce(driven_<URL>nonical_code,'') <> '' THEN –- for driven_tabel3.header_name = '<ORGANIZATION>', this is a specialty checking condition CASE WHEN driven_<URL>fessional_type = 'Prescriber' THEN 'Y' –- for driven_tabel3.header_name = '<ORGANIZATION>', this is a specialty checking condition WHEN driven_<URL>fessional_type = 'Non-Prescriber' THEN 'N' –- for driven_tabel3.header_name = '<ORGANIZATION>', this is a specialty checking condition ELSE 'N@4' END END ELSE 'N@99'END AS IS_PRESCRIBER"
|
||
},
|
||
{
|
||
"title": "PTE_SL COMPANY MODEL",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/PTE_SL+COMPANY+MODEL",
|
||
"content": "COMPANY data model specification:name typedescription Reltio attribute URILOV Name additional querry conditions (COMPANY model)HCP_IDVARCHARReltio Entity URIi_hcp.entity_uri or i_<URL>art_entity_urionly active hcp are returned (customer_sl.i_<URL>tive ='TRUE')HCO_IDVARCHARReltio Entity URISELECT HCO.ENTITY_URIFROM CUSTOMER_SL.P_HCP HCPINNER JOIN CUSTOMER_SL.P_AFFILIATIONS <PERSON> ON HCP.ENTITY_URI= <URL>ART_ENTITY_URIINNER JOIN CUSTOMER_SL.P_HCO <ORGANIZATION> <ORGANIZATION> = HCO.ENTITY_URIWHERE <URL>lation_type = 'ContactAffiliations'AND <URL>TIVE = 'TRUE';TO - DO An additional conditions that should be included:querry need to return only <ORGANIZATION> pairs for witch "P_AFFIL_RELATION_<URL>LATIONSHIPDESCRIPTION_LKP" = 'HCPRelationshipDescription:CON' A Pair HCP plus <ORGANIZATION> must be <URL>PLACE_NAMEVARCHARReltio workplace name or reltio workplace parent <URL>nfiguration/entityTypes/HCO/attributes/NameSELECT <PERSON> ON HCP.ENTITY_URI= <URL>ART_ENTITY_URIINNER JOIN CUSTOMER_SL.P_HCO <ORGANIZATION> <ORGANIZATION> = HCO.ENTITY_URIWHERE <URL>lation_type = 'ContactAffiliations'AND <URL>TIVE = 'TRUE';A Pair HCP plus <ORGANIZATION> must be <URL><NRP> Entity statusi_customer_sl.p_<URL>tivemapping rule TRUE = ACTIVELAST_MODIFICATION_DATETIMESAMP_LTZEntity update time in <ORGANIZATION>/entityTypes/HCP/updateTimep_entity_update.SF_UPDATE_TIMEFIRST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/FirstNamei_customer_sl.p_<URL>rst_nameLAST_NAMEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/LastNamei_customer_sl.p_<URL>st_nameTITLE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TitleLOV Name COMPANY = HCPTitleLOV Name IQIVIA = LKUP_IMS_PROF_TITLEselect <URL>nonical_code from customer_sl.p_hcp hcp,customer_sl.p_codes cwhere hcp.title_lkp = <URL>de_idTITLE_DESCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/TitleLOV Name COMPANY = THCPTitleLOV Name IQIVIA = LKUP_IMS_PROF_TITLEselect <URL>sc from customer_sl.p_hcp hcp,customer_sl.p_codes cwhere hcp.title_lkp = <URL>de_idIS_PRESCRIBERCASEWhen p_hcp.<PERSON> = 'HCPType:<URL>ES' then YCASEWhen p_hcp.<PERSON> = 'HCPType:<URL>RS' then NELSETo define <ORGANIZATION> codeconfiguration/entityTypes/Location/attributes/countrycustomer_sl.p_<URL>untryPRIMARY_ADDRESS_LINE_1IQIVIA: configuration/entityTypes/Location/attributes/AddressLine1COMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine1select a. address_line1 from customer_sl.p_addresses a where <ORGANIZATION> =1PRIMARY_ADDRESS_LINE_2IQIVIA: configuration/entityTypes/Location/attributes/AddressLine2COMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/AddressLine2select a. address_line2 from customer_sl.p_addresses a where <ORGANIZATION> =1PRIMARY_ADDRESS_CITYIQIVIA: configuration/entityTypes/Location/attributes/CityCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/<LOCATION> <URL> from customer_sl.p_addresses a where <ORGANIZATION> =1PRIMARY_ADDRESS_POSTAL_CODEIQIVIA: configuration/entityTypes/Location/attributes/Zip/attributes/<PERSON>: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip5select a.ZIP5 from customer_sl.p_addresses a where <ORGANIZATION> =1PRIMARY_ADDRESS_STATEIQIVIA: configuration/entityTypes/Location/attributes/<ORGANIZATION>: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/StateProvinceLOV Name COMPANY = <PERSON> fromcustomer_sl.p_codes c,customer_sl.p_addresses awhere <URL>dress_rank=<URL>ATE_PROVINCE_LKP = <URL>de_id PRIMARY_ADDR_STATUSIQIVIA: configuration/entityTypes/Location/attributes/VerificationStatusCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/VerificationStatuscustomer_sl.p_<URL>rification_statusPRIMARY_SPECIALTY_CODEconfiguration/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyLOV Name COMPANY = HCPSpecialtyLOV Name IQIVIA =LKUP_IMS_SPECIALTYselect <URL>nonical_code from customer_sl.p_specialities s,customer_sl.p_codes cwhere s.specialty_lkp =<URL>de_idand s.rank = 1 ;There are no extra query conditions connected with SPECIALTY_TYPE_LKP because in the <ORGANIZATION> environment that parameter always has a NULL value. PRIMARY_SPECIALTY_DESCconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/SpecialtyLOV Name COMPANY = LKUP_IMS_SPECIALTYLOV Name IQIVIA =LKUP_IMS_SPECIALTYselect <URL>sc from customer_sl.p_specialities s,customer_sl.p_codes cwhere s.specialty_lkp =<URL>de_idand s.rank = 1 ;There are no extra query conditions connected with SPECIALTY_TYPE_LKP because in the <ORGANIZATION> environment that parameter always has a NULL value. GO_STATUSVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Compliance/attributes/GOStatusgo_status <> ''CASEWhen p_compliance.go_status_lkp = 'LKUP_GOVOFF_GOSTATUS:GO' then YCASEWhen p_compliance.go_status_lkp = 'LKUP_GOVOFF_GOSTATUS:NGO' then NELSE Not defined(now this is an empty tabel)IDENTIFIER1_CODEVARCHARReltio identyfier <URL>nfiguration/entityTypes/HCP/attributes/Identifiers/attributes/Typeselect <URL>nonical_code from customer_sl.p_codes ct,customer_sl.p_identifiers <DATE_TIME> = d.TYPE_LKPThere is a need to set steering parameters that match country code with proper code identifiers - according to driven_tabel2 describes below. This is a place for the first <URL>ENTIFIER1_CODE_DESCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Typeselect <URL>sc from customer_sl.p_codes ct,customer_sl.p_identifiers <DATE_TIME> = d.TYPE_LKPIDENTIFIER1_VALUEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/IDselect id from customer_sl.p_identifiersIDENTIFIER2_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/<ORGANIZATION> <URL>nonical_code from customer_sl.p_codes ct,customer_sl.p_identifiers <DATE_TIME> = <NRP>TYPE_LKPMaximum two identifiers can be returnedThere is a need to set steering parameters that match country code with proper code identifiers - according to driven_tabel2 describes below. This is a place for the second <URL>ENTIFIER2_CODE_DESCVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Typeselect <URL>sc from customer_sl.p_codes ct,customer_sl.p_identifiers <DATE_TIME> = d.TYPE_LKPIDENTIFIER2_VALUEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/IDselect id from customer_sl.p_identifiersDGSCATEGORYVARCHARIQIVIA: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSCategoryCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureBenefitCategoryLKUP_BENEFITCATEGORY_HCP,LKUP_BENEFITCATEGORY_HCOselect DisclosureBenefitCategory from p_hcpDGSCATEGORY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSCategoryLKUP_BENEFITCATEGORY_HCP,LKUP_BENEFITCATEGORY_HCOcomment: select i_<URL>nonical_code for a valu returned from DisclosureBenefitCategory DGSTITLEVARCHARIQIVIA: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSTitleCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureBenefitTitleLKUP_BENEFITTITLEselect <ORGANIZATION> from p_hcpDGSTITLE_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSTitleLKUP_BENEFITTITLEcomment: select i_<URL>nonical_code for a valu returned from DisclosureBenefitTitle DGSQUALITYVARCHARIQIVIA: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSQualityCOMPANY: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureBenefitQualityLKUP_BENEFITQUALITYselect <ORGANIZATION> from p_hcpDGSQUALITY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSQualityLKUP_BENEFITQUALITYcomment: select i_<URL>nonical_code for a valu returned from <ORGANIZATION> DGSSPECIALTYVARCHARIQIVIA: configuration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/<NRP>: configuration/entityTypes/<ORGANIZATION>/attributes/DisclosureBenefitSpecialtyLKUP_BENEFITSPECIALTYDisclosureBenefitSpecialtyDGSSPECIALTY_CODEVARCHARconfiguration/entityTypes/<ORGANIZATION>/attributes/Disclosure/attributes/DGSSpecialtyLKUP_BENEFITSPECIALTYcomment: select i_<URL>nonical_code for a valu returned from DisclosureBenefitSpecialtySECONDARY_SPECIALTY_DESCVARCHAREMAILVARCHARPHONEVARCHAR"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Global+Data+Mart",
|
||
"content": "The section describes the structure of <ORGANIZATION> in <LOCATION>. The <ORGANIZATION> contains consolidated data from multiple regional data marts.Databases:The <ORGANIZATION> connects all markets using Snowflake DB Replication (if in the different zone) or Local DB (if in the same zone)<ENV>: <ORGANIZATION> detailsSnowflake <ORGANIZATION> DB nameTypeModelEMEAlink<URL><URL>COMM_EMEA_MDM_DMART_<ENV>_DBlocalP / P_HIAMERlink<URL><URL>COMM_AMER_MDM_DMART_<ENV>_DBreplicaP / P_HIUSlink<URL><URL>COMM_GBL_MDM_DMART_<ENV>replicaP / P_HIAPAClink<URL><URL>COMM_APAC_MDM_DMART_<ENV>_DBlocalP / P_HIEUlink<URL><URL>COMM_EU_MDM_DMART_<ENV>_DBlocalIConsolidated GLOBAL Schema:The COMM_GBL_MDM_DMART_<ENV>_DB database includes the following schema:CUSTOMER - main schema containing consolidated views for all COMPANY <URL>STOMER_SL - access schema for users containing a set of views accessing CUSTOMER schema objectsP_ - COMPANY Reltio Model and are prefixed with 'P'P_HI - COMPANY Reltio Model with Historical Inactive onekey crosswalksI_ - Ex-US data are in the <ORGANIZATION> model and are prefixed with 'I'AES_RS_SL - schema containing views that mimic <ORGANIZATION><URL>er accessing the CUSTOMER_SL schema can query across all markets, having in mind the following details:P_ prefixed viewsP_HI prefixed viewsI_ prefixed viewsConsolidated view from all markets that are from "P" <URL>e first column in each view is the MDM_REGION representing the information about the connection of the specific row to the market. Each market may contain a different number of columns and also some columns that exist in one market may not be available in the other. The <ORGANIZATION> views aggregate all columns from all <URL>rresponding data model: Dynamic views for COMPANY <PERSON> view from all markets that are from "P_HI" <URL>e first column in each view is the MDM_REGION representing the information about the connection of the specific row to the market. Each market may contain a different number of columns and also some columns that exist in one market may not be available in the other. The <ORGANIZATION> views aggregate all columns from all <URL>ew build based on <ORGANIZATION>, from <ORGANIZATION> market that is using "I" Model"Corresponding data model: Dynamic views for IQIVIA MDM ModelGLOBALInstance detailsENVSnowflake <ORGANIZATION> DB NameReltio TenantRefresh timeDEV<URL>COMM_GBL_MDM_DMART_DEV_DBEMEA + AMER + US+ APAC + EUonce per dayQA<URL>COMM_GBL_MDM_DMART_QA_DBEMEA + AMER + US+ APAC + EUonce per daySTG<URL>COMM_GBL_MDM_DMART_STG_DBEMEA + AMER + US+ APAC + EUonce per dayPROD<URL>COMM_GBL_MDM_DMART_PROD_DBEMEA + AMER + US+ APAC + EUevery 2hRolesNPROD<ENV> = <ORGANIZATION>/STGRole NameLandingCustomerCustomer SLAES RS SLAccount MappingMetricsSandboxPTE_SLWarehouseAD Group NameCOMM_GBL_MDM_DMART_<ENV>_DEVOPS_ROLEFullFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_<ENV>_DEVOPS_ROLECOMM_GBL_MDM_DMART_<ENV>_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_<ENV>_MTCH_AFFIL_ROLECOMM_GBL_MDM_DMART_<ENV>_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_<ENV>_METRIC_ROLECOMM_GBL_MDM_DMART_<ENV>_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_<ENV>_MDM_ROLECOMM_GBL_MDM_DMART_<ENV>_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_<ENV>_READ_ROLECOMM_GBL_MDM_DMART_<ENV>_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_<ENV>_DATA_ROLECOMM_GBL_MDM_DMART_<ENV>_PTE_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_GBL_MDM_DMART_<ENV>_PTE_ROLEPRODRole NameLandingCustomerCustomer SLAES RS SLAccount MappingMetricsSandboxPTE_SLWarehouseAD Group NameCOMM_GBL_MDM_DMART_PROD_DEVOPS_ROLEFullFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PROD_DEVOPS_ROLECOMM_GBL_MDM_DMART_PROD_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PRD_MTCHAFFIL_ROLECOMM_GBL_MDM_DMART_PROD_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PROD_METRIC_ROLECOMM_GBL_MDM_DMART_PROD_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PROD_MDM_ROLECOMM_GBL_MDM_DMART_PROD_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PROD_READ_ROLECOMM_GBL_MDM_DMART_PROD_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PROD_DATA_ROLECOMM_GBL_MDM_DMART_PROD_PTE_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_GBL_MDM_DMART_PROD_PTE_ROLE"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/Global+Data+Materialization+Process",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Regional Data Marts",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Regional+Data+Marts",
|
||
"content": "The regional data mart is presenting <ORGANIZATION> data from one region. Data are loaded from one selected <ORGANIZATION> instance. They are being refreshed more frequently than the global mart. They are a good choice for clients operating in local markets.<LOCATION> detailsENVSnowflake <ORGANIZATION> DB NameReltio TenantRefresh timeDEV<URL>COMM_EMEA_MDM_DMART_DEV_DBwn60kG248ziQSMWevery day between <DATE_TIME> am ESTQA<URL>COMM_EMEA_MDM_DMART_QA_DBvke5zyYwTifyeJSevery day between <DATE_TIME> between <DATE_TIME> *Due to many projects running on the environment the refresh time has been temporarily changed to "<DATE_TIME>" for the client's <URL>D<URL> 2 hoursRolesNPROD<ENV> = <ORGANIZATION>/STGRole NameLandingCustomerCustomer SLAES RS <ORGANIZATION> NameCOMM_EMEA_MDM_DMART_<ENV>_DEVOPS_ROLEFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_<ENV>_DEVOPS_ROLECOMM_EMEA_MDM_DMART_<ENV>_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_<ENV>_MTCH_AFFIL_ROLECOMM_EMEA_MDM_DMART_<ENV>_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_<ENV>_METRIC_ROLECOMM_EMEA_MDM_DMART_<ENV>_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_<ENV>_MDM_ROLECOMM_EMEA_MDM_DMART_<ENV>_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_<ENV>_READ_ROLECOMM_EMEA_MDM_DMART_<ENV>_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_EMEA_MDM_DMART_<ENV>_DATA_ROLEPRODRole NameLandingCustomerCustomer SLAES RS <ORGANIZATION> <LOCATION>-west-1_emeaprod01_COMM_EMEA_MDM_DMART_PROD_DEVOPS_ROLECOMM_EMEA_MDM_DMART_PROD_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_EMEA_MDM_DMART_PRD_MTCHAFFIL_ROLECOMM_EMEA_MDM_DMART_PROD_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_EMEA_MDM_DMART_PROD_METRIC_ROLECOMM_EMEA_MDM_DMART_PROD_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_EMEA_MDM_DMART_PROD_MDM_ROLECOMM_EMEA_MDM_DMART_PROD_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_EMEA_MDM_DMART_PROD_READ_ROLECOMM_EMEA_MDM_DMART_PROD_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_EMEA_MDM_DMART_PROD_DATA_ROLEAMERInstance detailsENVSnowflake <ORGANIZATION> DB NameReltio TenantRefresh timeDEV<URL> day between <DATE_TIME> between <DATE_TIME> between <DATE_TIME> ESTPROD<URL>COMM_AMER_MDM_DMART_PROD_DBYs7joaPjhr9DwBJevery 2 hoursRolesNPROD<ENV> = <ORGANIZATION>/STGRole NameLandingCustomerCustomer SLAES RS <ORGANIZATION> NameCOMM_AMER_MDM_DMART_<ENV>_DEVOPS_ROLEFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_<ENV>_DEVOPS_ROLECOMM_AMER_MDM_DMART_<ENV>_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_<ENV>_MTCH_AFFIL_ROLECOMM_AMER_MDM_DMART_<ENV>_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_<ENV>_METRIC_ROLECOMM_AMER_MDM_DMART_<ENV>_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_<ENV>_MDM_ROLECOMM_AMER_MDM_DMART_<ENV>_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_<ENV>_READ_ROLECOMM_AMER_MDM_DMART_<ENV>_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_AMER_MDM_DMART_<ENV>_DATA_ROLEPRODRole NameLandingCustomerCustomer SLAES RS SLAccount MappingMetricsSandboxWarehouseAD Group NameCOMM_AMER_MDM_DMART_PROD_DEVOPS_ROLEFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_us-east-1_amerprod01_COMM_AMER_MDM_DMART_PROD_DEVOPS_ROLECOMM_AMER_MDM_DMART_PROD_MTCH_AFFIL_RORead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_AMER_MDM_DMART_PROD_MTCH_AFFIL_ROCOMM_AMER_MDM_DMART_PROD_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_AMER_MDM_DMART_PROD_METRIC_ROLECOMM_AMER_MDM_DMART_PROD_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_AMER_MDM_DMART_PROD_MDM_ROLECOMM_AMER_MDM_DMART_PROD_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_AMER_MDM_DMART_PROD_READ_ROLECOMM_AMER_MDM_DMART_PROD_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_AMER_MDM_DMART_PROD_DATA_ROLEUSInstance detailsENVSnowflake <ORGANIZATION> DB NameReltio TenantRefresh timeDEV<URL>COMM_GBL_MDM_DMART_DEVsw8BkTZqjzGr7hnevery day between <DATE_TIME> ESTQA<URL>COMM_GBL_MDM_DMART_QArEAXRHas2ovllvTevery day between <DATE_TIME> ESTSTG<URL>COMM_GBL_MDM_DMART_STG48ElTIteZz05XwTevery day <DATE_TIME> ESTPROD<URL>COMM_GBL_MDM_DMART_PROD9kL30u7lFoDHp6Xevery 2 hoursRolesNPROD<ENV> = <ORGANIZATION>/STGRole NameLandingCustomerCustomer SLAES RS SLAccount MappingMetricsSandboxWarehouseAD Group NameCOMM_<ENV>_MDM_DMART_DEVOPS_ROLEFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_us-east-1_amerdev01_COMM_<ENV>_MDM_DMART_DEVOPS_ROLECOMM_MDM_DMART_<ENV>_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_<ENV>_MDM_DMART_MTCH_AFFIL_ROLECOMM_<ENV>_MDM_DMART_ANALYSIS_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-Onlysfdb_us-east-1_amerdev01_COMM_<ENV>_MDM_DMART_ANALYSIS_ROLECOMM_<ENV>_MDM_DMART_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_<ENV>_MDM_DMART_METRIC_ROLECOMM_MDM_DMART_<ENV>_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_<ENV>_MDM_DMART_MDM_ROLECOMM_<ENV>_MDM_DMART_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_<ENV>_MDM_DMART_READ_ROLECOMM_MDM_DMART_<ENV>_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerdev01_COMM_<ENV>_MDM_DMART_DATA_ROLEPRODRole NameLandingCustomerCustomer SLAES RS SLAccount MappingMetricsSandboxWarehouseAD Group NameCOMM_PROD_MDM_DMART_DEVOPS_ROLEFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_us-east-1_amerprod01_COMM_PROD_MDM_DMART_DEVOPS_ROLECOMM_MDM_DMART_PROD_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_PROD_MDM_DMART_MTCH_AFFIL_ROLECOMM_PROD_MDM_DMART_ANALYSIS_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_PROD_MDM_DMART_ANALYSIS_ROLECOMM_PROD_MDM_DMART_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_PROD_MDM_DMART_METRIC_ROLECOMM_MDM_DMART_PROD_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_PROD_MDM_DMART_MDM_ROLECOMM_PROD_MDM_DMART_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_PROD_MDM_DMART_READ_ROLECOMM_MDM_DMART_PROD_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_us-east-1_amerprod01_COMM_PROD_MDM_DMART_DATA_ROLEAPACInstance detailsENVSnowflake InstanceSnowflake DB NameReltio TenantRefresh timeDEV<URL>COMM_APAC_MDM_DMART_DEV_DBw2NBAwv1z2AvlkgSevery day between <DATE_TIME> am ESTQA<URL>COMM_APAC_MDM_DMART_QA_DBxs4oRCXpCKewNDKevery day between <DATE_TIME> am ESTSTG<URL>COMM_APAC_MDM_DMART_STG_DBY4StMNK3b0AGDf6every day between <DATE_TIME> ESTPROD<URL> 2 hoursRolesNPROD<ENV> = <ORGANIZATION>/STGRole NameLandingCustomerCustomer SLAES RS <ORGANIZATION>OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_APAC_MDM_DMART_<ENV>_MTCH_AFFIL_ROLECOMM_APAC_MDM_DMART_<ENV>_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_APAC_MDM_DMART_<ENV>_METRIC_ROLECOMM_APAC_MDM_DMART_<ENV>_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_APAC_MDM_DMART_<ENV>_MDM_ROLECOMM_APAC_MDM_DMART_<ENV>_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_APAC_MDM_DMART_<ENV>_READ_ROLECOMM_APAC_MDM_DMART_<ENV>_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_APAC_MDM_DMART_<ENV>_DATA_ROLEPRODRole NameLandingCustomerCustomer SLAES RS SLAccount MappingMetricsSandboxWarehouseAD Group NameCOMM_APAC_MDM_DMART_PROD_DEVOPS_ROLEFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_eu-west-1_emeaprod01_COMM_APAC_MDM_DMART_PROD_DEVOPS_ROLECOMM_APAC_MDM_DMART_PROD_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_APAC_MDM_DMART_PRD_MTCHAFFIL_ROLECOMM_APAC_MDM_DMART_PROD_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_APAC_MDM_DMART_PROD_METRIC_ROLECOMM_APAC_MDM_DMART_PROD_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_APAC_MDM_DMART_PROD_MDM_ROLECOMM_APAC_MDM_DMART_PROD_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_APAC_MDM_DMART_PROD_READ_ROLECOMM_APAC_MDM_DMART_PROD_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_APAC_MDM_DMART_PROD_DATA_ROLEEU (ex-us)Instance detailsENVSnowflake <ORGANIZATION> DB NameReltio TenantRefresh timeDEV<URL>COMM_EU_MDM_DMART_DEV_DBFLy4mo0XAh0YEbNevery day between <DATE_TIME> am ESTQA<URL>COMM_EU_MDM_DMART_QA_DBAwFwKWinxbarC0Zevery day between <DATE_TIME> am ESTSTG<URL>COMM_EU_MDM_DMART_STG_DBFW4YTaNQTJEcN2gevery day between <DATE_TIME> hoursRolesNPROD<ENV> = <ORGANIZATION>/STGRole NameLandingCustomerCustomer SLAES RS <ORGANIZATION> NameCOMM_<ENV>_MDM_DMART_OPS_ROLEDEVFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_eu-west-1_emeadev01_COMM_<ENV>_MDM_DMART_DEVOPS_ROLECOMM_MDM_DMART_<ENV>_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_<ENV>_MDM_DMART_MTCH_AFFIL_ROLECOMM_EU_<ENV>_MDM_DMART_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_EU_<ENV>_MDM_DMART_METRIC_ROLECOMM_MDM_DMART_<ENV>_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_<ENV>_MDM_DMART_MDM_ROLECOMM_EU_MDM_DMART_<ENV>_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_<ENV>_MDM_DMART_READ_ROLECOMM_MDM_DMART_<ENV>_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeadev01_COMM_<ENV>_MDM_DMART_DATA_ROLEPRODRole NameLandingCustomerCustomer SLAES RS SLAccount MappingMetricsSandboxWarehouseAD Group NameCOMM_PROD_MDM_DMART_DEVOPS_ROLEFullFullFullFullFullFullFullCOMM_MDM_DMART_WH(S)COMM_MDM_DMART_M_WH(M)COMM_MDM_DMART_L_WH(L)sfdb_eu-west-1_emeaprod01_COMM_PROD_MDM_DMART_DEVOPS_ROLECOMM_MDM_DMART_PROD_MTCH_AFFIL_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyFullRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_PROD_MDM_DMART_MTCH_AFFIL_ROLECOMM_EU_MDM_DMART_PROD_METRIC_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_EU_PROD_MDM_DMART_METRIC_ROLECOMM_MDM_DMART_PROD_MDM_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyFullCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_PROD_MDM_DMART_MDM_ROLECOMM_PROD_MDM_DMART_READ_ROLERead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_PROD_MDM_DMART_READ_ROLECOMM_MDM_DMART_PROD_DATA_ROLERead-OnlyRead-OnlyCOMM_MDM_DMART_WH(S)sfdb_eu-west-1_emeaprod01_COMM_PROD_MDM_DMART_DATA_ROLE"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> API",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/MDM+Admin+Management+API",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Description",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Description",
|
||
"content": "MDM Admin is a management <ORGANIZATION>, automating numerous repeatable tasks and enabling the end user to perform them, without the need to make a request and wait for one of <ORGANIZATION> engineers to pick it <URL> its current state, <ORGANIZATION> provides below services:Modify <PERSON> offsetGenerate outbound eventsReconcile an entity/relation (only used by <ORGANIZATION> Team)Each functionality is described in detail in the following chapters.<ORGANIZATION> listTenantEnvironmentMDM Admin API Base URLSwagger URL - API DocumentationGBL (EX-US)DEV<URL> QA<URL> STAGE<URL> PROD<URL> GBLUSDEV<URL> QA<URL> STAGE<URL> PROD<URL> EMEADEV<URL> QA<URL> STAGE<URL> PROD<URL> AMERDEV<URL> QA<URL> STAGE<URL> PROD<URL> APACDEV<URL> QA<URL> STAGE<URL> <LOCATION> Modify <PERSON> offsetIf you are consuming from <ORGANIZATION> outbound topic, you can now modify the offsets to skip/re-send messages. Please refer to the Swagger Documentation for additional details.Example 1Environment is <ORGANIZATION>. User wants to consume the last 100 messages from his topic again. He is using topic "emea-dev-out-full-test-topic-1" and consumer-group "emea-dev-consumergroup-1"Steps:Disable the consumer. <PERSON> will not allow offset manipulation, if the topic/consumergroup is being usedSend below request:\nPOST <PERSON> "topic": "emea-dev-out-full-test-topic-1", <ORGANIZATION> "groupId": "emea-dev-consumergroup-1",\n "shiftBy": -100\n}\nEnable the consumer. Last 100 events will be re-consumed.Example 2User wants to consume all available messages from the topic <URL>eps:Disable the consumer. <PERSON> will not allow offset manipulation, if the topic/consumergroup is being <URL>nd below request:\nPOST <PERSON> "topic": "emea-dev-out-full-test-topic-1", <ORGANIZATION> "groupId": "emea-dev-consumergroup-1",\n "offset": earliest\n}\nEnable the consumer. All events from the topic will be available for consumption <URL>send EventsAllows re-sending events to <ORGANIZATION> outbound <PERSON> topics, with filtering by Entity Type (entity or relation), modification date, country and source. Please refer to the Swagger Documentation for more details. Example use scenario is described <URL>nerated events are filtered by the topic routing rule (by country, event type etc.). Generating events for some country may not result in anything being produced on the topic, if this country is not added to the <URL>fore starting a Resend Events job, please make sure that the country is already added to the routing rule. Otherwise, request additional country to be added (<ORGANIZATION>: link to the instruction).ExampleFor development purposes, user needs to generate 10k of events to his "emea-dev-out-full-test-topic-1" topic for the new market - <LOCATION> (BE).Steps:Send below request:\nPOST <URL> "countries": [\n "be"\n ],<ORGANIZATION> "objectType": "ENTITY",\n "limit": 10000,\n "reconciliationTarget": "emea-dev-out-full-test-topic-1"\n}\nA process will start on <ORGANIZATION> side, generating events on this topic. Response to the request will contain the process ID (dag_run_id):\n{\n "dag_id": "reconciliation_system_amer_dev",\n "dag_run_id": "manual__2022-11-30T14:12:07.<US_DRIVER_LICENSE>+00:00",\n "execution_date": "<DATE_TIME>",\n "state": "queued"\n}\nYou can check the status of this process by sending below request:\nGET <URL> "dag_id": "reconciliation_system_amer_dev",\n "dag_run_id": "manual__2022-11-30T14:12:07.<US_DRIVER_LICENSE>+00:00",\n "execution_date": "<DATE_TIME>",\n "state": "started"\n}\nOnce the process is completed, all the requested events will have been sent to the topic."
|
||
},
|
||
{
|
||
"title": "Requesting Access",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Requesting+Access",
|
||
"content": "Access to <ORGANIZATION> should be requested via email sent to <ORGANIZATION> DL: <ORGANIZATION><URL>low chapters contain required details and email <URL>dify <PERSON> OffsetRequired details:Team name (including Person of Contact)List of topicsList of consumergroupsUsername (already used for <PERSON>, <ORGANIZATION> etc.)Email template:\nHi <ORGANIZATION> provide us with access to <ORGANIZATION>. Details below:\n\nAPI: <PERSON> name: <PERSON>-out-full-test-topic\n - emea-qa-out-full-test-topic \n - emea-stage-out-full-test-topic \nConsumergroups: \n - emea-dev-hub \n - emea-qa-hub \n - emea-stage-hub \nUsername: mdm-hub-user\n\nBest Regards,\nPiotr\nResend EventsRequired details:Team name (including Person of Contact)List of topicsUsername (already used for <PERSON>, <ORGANIZATION> etc.)Email template:\nHi <ORGANIZATION> provide us with access to <ORGANIZATION>. Details below:\n\nAPI: Resend Events\nTeam name: MDM Hub\nTopics: \n - emea-dev-out-full-test-topic\nUsername: mdm-hub-user\n\nBest Regards,\nPiotr\n"
|
||
},
|
||
{
|
||
"title": "Flows",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Flows",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Batch clear <ORGANIZATION> data load cache",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Batch+clear+ETL+data+load+cache",
|
||
"content": "DescriptionThis is the batch operation to clear batch cache. The process was design to clear mongo cache (removes records from batchEntityProcessStatus) for specified batch name, sourceId type and value. This process is an adapter to the /batchController/{batchName}/_clearCache operation exposed by <PERSON> service that allows user to clear <URL> to clear batch cache by crosswalk documentation exposed by <ORGANIZATION> by croswalksLink to HUB UI documentation: HUB UI User Guide Flow: The client delivers file including the list of source types and values to be cleared by HUB. File is uploaded to <ORGANIZATION> resource by <ORGANIZATION> <URL>e clear batch process is triggered by <ORGANIZATION> <URL>e process parses the input files and calls <ORGANIZATION> to clear <URL>le load through <ORGANIZATION> details:<PERSON> file size is 128MBHow to prepare the file to avoid unexpected errors:File format descriptionFile needs to be encoded with UTF-8 without <URL>put fileFile format: CSV Encoding: UTF-8EOL: <LOCATION> to setup this using <ORGANIZATION> encoding:Set EOL to Unix:Check (bottom right corner):Column headers:SourceType - source crosswalk type that describes entitySourceValue - source crosswalk value that describes entityInput file example123SourceType;SourceValueReltio;upIP01WSAP;3000201428clear_cache_ex.csvInternalsAirflow process name: clear_batch_service_cache_{{ env }}"
|
||
},
|
||
{
|
||
"title": "Batch merge & unmerge",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "DescriptionThis is the batch operation to merge/unmerge entities in Reltio. The process was designed to execute the force merge operation between <ORGANIZATION> objects. In <ORGANIZATION>, there are merge rules that automatically merge objects, but the user may explicitly define the merge between objects. This process is the adapter to the _merge or _unmerge operation that allows the user to specify the <ORGANIZATION> file with multi entries so there is no need to execute <ORGANIZATION> multiple times. Flow: The client delivers files including the list of merge/unmerge operations to be executed by HUB. Files must be placed in <ORGANIZATION> resource controlled by <ORGANIZATION> either by a client or <ORGANIZATION> support via HUB UI. The batch process is triggered by <ORGANIZATION> directly or by HUB UIThe process parses the input files and calls <ORGANIZATION> to merge or unmerge <URL>e result of the process is the report file generated and published to S3File load through <ORGANIZATION> details:<PERSON> file size is 128<ORGANIZATION> or 10k recordsHow to prepare the file to avoid unexpected errors:File format descriptionFile needs to be encoded with UTF-8 without bom. Merge operation Input fileFile format: CSV Encoding: UTF-8EOL: <LOCATION> to setup this using <ORGANIZATION> encoding:Set EOL to Unix:Check (bottom right corner):File name format: merge_YYYYMMDD.csvDrop location: DEV: <PERSON>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-project/mdm/DEV/merge_unmerge_entities/input/STAGE: <US_DRIVER_LICENSE>://pfe-baiaes-eu-<US_DRIVER_LICENSE>-nprod-project/mdm/STAGE/merge_unmerge_entities/input/PROD: Column headers:The column names are kept for backward compatibility. The winner of the merge is always the entity that was created earlier. There is currently no possibility to select an explicit winner via the merge_unmerge batch.WinnerSourceName - source name of the source entity: the survivor of the merge operation or the entity that will be splitWinnerId - id of the source entity: the survivor of the merge operation or the entity that will be splitLoserSourceName - source name of the target entity: the looser of the merge operation <LOCATION> the target entity: the loser of the merge operation In the output file there are two additional fields:responseStatus - the response statusresponseErrorMessage - the error messageMerge input file example\nWinnerSourceName;WinnerId;LoserSourceName;LoserId\nRELTIO;15hgDlsd;RELTIO;1JRPpffH\nRELTI;15hgDlsd;RELTIO;1JRPpffH\nOutput fileFile format: CSV Encoding: UTF-8File name format: status_merge_YYYYMMDD_<seqNr>.csv <seqNr> - the number of the file process in <DATE_TIME>. Starting with 1 to n. Drop location: DEV: <PERSON>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-project/mdm/DEV/merge_unmerge_entities/output/YYYYMMDD_hhmmss/STAGE: <US_DRIVER_LICENSE>://pfe-baiaes-eu-<US_DRIVER_LICENSE>-nprod-project/mdm/DEV/merge_unmerge_entities/output/YYYYMMDD_hhmmss/PROD: Column headers:sourceId.type - source name of the source entity: the survivor of the merge operation or the entity that will be <URL>lue - id of the source entity: the survivor of the merge operation or the entity that will be splittedstatus - the response statuserrorCode - the error codeerrorMessage - the error meesageMerge output file example\nsourceId.type,<URL>lue,status,errorCode,errorMessage\nmerge_RELTIO_RELTIO,0009e93_00Ff82E,updated,,\nmerge_GRV_GRV,6422af22f7c95392db313216_23f45427-8cdc-43e6-9aea-0896d4cae5f8,updated,,\nmerge_RELTI_RELTIO,15hgDlsd_1JRPpffH,notFound,EntityNotFoundByCrosswalk,Entity not found by crosswalk in getEntityByCrosswalk [Type:RELTI Value:15hgDlsd]\nUnmerge operation Input fileFile format: CSV Encoding: UTF-8File name format: unmerge_YYYYMMDD_<seqNr>.csv <seqNr> - the number of the file process in <DATE_TIME>. Starting with 1 to n. Drop location: DEV: <PERSON>-baiaes-eu-<US_DRIVER_LICENSE>-nprod-project/mdm/DEV/merge_unmerge_entities/input/STAGE: <US_DRIVER_LICENSE>://pfe-baiaes-eu-<US_DRIVER_LICENSE>-nprod-project/mdm/STAGE/merge_unmerge_entities/input/Column headers:SourceURI - uri of the source entityTargetURI - uri of the extracted entityUnmerge input file example\nSourceURI;TargetURI\n15hgG6nP;15hgG6nQ1\n15hgG6qc;15hgG6rq\nOutput fileFile format: CSV Encoding: UTF-8File name format: status_umerge_YYYYMMDD_<seqNr>.csv <seqNr> - the number of the file process in <DATE_TIME>. Starting with 1 to n. Column headers:SourceURI - uri of the source entityTargetURI - uri of the extracted entityresponseStatus - the response statusresponseErrorMessage - the error messageUnmerge output file example\nsourceId.type,<URL>lue,status,errorCode,errorMessage\nunmerge_RELTIO_RELTIO,01lAEll_01jIfxx,updated,,\nunmerge_RELTIO_RELTIO,0144V4D_01EFVyb,updated,,\nInternalsAirflow process name: merge_unmerge_entities"
|
||
},
|
||
{
|
||
"title": "Batch reload <ORGANIZATION> data",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Batch+reload+MapChannel+data",
|
||
"content": "DescriptionThis process is used to reload source data from <ORGANIZATION>/<LOCATION> systems. The user has two ways to indicate the data he wants to reload:CSV file - contains lines with entity uri or crosswalk valuesQuery mongo - only entities meeting the criteria will be reloadedIn process <ORGANIZATION> is used to control the flow Flow: The client delivers files including the list of entity uris/crosswalk values. Files must be placed in <ORGANIZATION> resource controlled by <ORGANIZATION> either by a client via HUB <ORGANIZATION> or <ORGANIZATION> <URL><ORGANIZATION> is triggered:The process parses the input and query mongo for selected entitiesFor each entity - sending events to raw <ORGANIZATION>/<LOCATION> input topicsThe result of the process is the report file generated and published to S3File load through <ORGANIZATION> details:<PERSON> file size is 128MBInput file examplereload_map_channel_data.csv Output fileFile format: CSV Encoding: UTF-8File name format: report__reload_map_channel_data_YYYYMMDD_<seqNr>.csv <seqNr> - the number of the file process in <DATE_TIME>. Starting with 1 to n. Column headers: TODOOutput file example TODOSourceCrosswalkType,<ORGANIZATION>,IdentifierType,<ORGANIZATION>,status,errorCode,errorMessageReltio,upIP01W,<URL>ORCERX,TEST9_OEG_1000005218888,failed,404,Can't find entity for target: EntityURITargetObjectId(entityURI=entities/upIP01W)SAP,<US_BANK_NUMBER>,<URL>P,<US_BANK_NUMBER>,failed,CrosswalkNotFoundException,Entity not found by crosswalk in getEntityByCrosswalk [Type:SAP Value:<US_BANK_NUMBER>]InternalsAirflow process name: reload_map_channel_data_{{ env }}"
|
||
},
|
||
{
|
||
"title": "Batch Reltio Reindex",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Batch+Reltio+Reindex",
|
||
"content": "DescriptionThis is the operation to execute Reltio Reindex API. The process was designed to get the input <ORGANIZATION> file with entities <ORGANIZATION> and schedule the Reltio Reindex API. More details about <ORGANIZATION> is available here: 5. Reltio ReindexHUB wraps the Entity URIs and schedules Reltio Task. Flow: The client delivers files including the list of entity uris. The file is uploaded to the <ORGANIZATION> resource by <ORGANIZATION> process is triggered by <ORGANIZATION> <URL>e process parses the input files and calls Reltio <URL>le load through <ORGANIZATION> details:<PERSON> file size is 128MB. The user should be able to load around 7.4M entity uris lines in one file to fit into a 128<ORGANIZATION> file size. Please check the file size before uploading. Larger files will be <URL>ease be aware that 128<ORGANIZATION> file upload may take <DATE_TIME> depending on the user network performance. Please wait until processing is finished and the response <URL> to prepare the file to avoid unexpected errors:File format descriptionFile needs to be encoded with UTF-8 without <URL>put fileFile format: CSV Encoding: UTF-8EOL: <LOCATION> to setup this using <ORGANIZATION> encoding:Set EOL to Unix:Check (bottom right corner):Column headers:N/A - do not add headersInput file example123entities/E0pV5Xmentities/1CsgdXN4entities/2O5RmRireltio_reindex.csvInternalsAirflow process name: reindex_entities_mdm_{{ env }}"
|
||
},
|
||
{
|
||
"title": "Batch update identifiers",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Batch+update+identifiers",
|
||
"content": "DescriptionThis is the batch operation to update identifiers in Reltio. The process was design to update selected identifiers selected by identifier lookup code. This process is an adapter to the /entities/_updateAttributes operation exposed by <PERSON> manager service that allows user to modify nested attributes using specific <URL>urce for the batch process is csv in which one row corresponds with single identifiers that should be <URL> process batch service is used to control the flow Flow: The client delivers files including the list of identifiers that should be updated. Files must be placed in <ORGANIZATION> resource controlled by <ORGANIZATION> either by a client via HUB <ORGANIZATION> or <ORGANIZATION> <URL>e batch process is triggered by <ORGANIZATION> manually or scheduled wayThe process parses the input files and calls <ORGANIZATION> to update identifiersThe result of the process is the report file generated and published to S3File load through <ORGANIZATION> details:<PERSON> file size is 128<ORGANIZATION> or 10k recordsHow to prepare the file to avoid unexpected errors:File format descriptionFile needs to be encoded with UTF-8 without bom. Input fileFile format: CSV Encoding: UTF-8EOL: <LOCATION> to setup this using <ORGANIZATION> encoding:Set EOL to Unix:Check (bottom right corner):File name format: update_identifiers_YYYYMMDD_<seqNr>.csv <seqNr> - the number of the file process in <DATE_TIME>. Starting with 1 to n. Drop location: GBL:DEV: <PERSON>/gbl/dev/inbound/update_identifiersSTAGE: <PERSON>/gbl/stage/inbound/update_identifiersPROD: <PERSON>-baiaes-eu-<US_DRIVER_LICENSE>-project/mdm/inbound/update_identifiersEMEA:DEV: <PERSON>/emea/dev/inbound/update_identifiersQA: <PERSON>/emea/qa/inbound/update_identifiersSTAGE: <PERSON>/emea/stage/inbound/update_identifiersPROD: <PERSON>/emea/prod/inbound/update_identifiersColumn headers:SourceCrosswalkType - source crosswalk type that describes entity. If you use "Reltio" then you should use entity uri in <LOCATION> column. For every other crosswalk type use SourceCrosswalkValue - source crosswalk value that describes entityIdentifierType - identifier type that you want to <NRP> - identifier values that you want to set(update/insert/merge). More information in /entities/_updateAttributes documentationIdentifierTrust - trust flag for given identifier, accepted values: Yes, No and <empty string>. In case of <empty string>, default value No for <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> and null for <ORGANIZATION> will be <URL><ORGANIZATION> - source name of updated identifier. In case of <empty string>, default value <ORGANIZATION> for <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> and null for <ORGANIZATION> will be <URL>tion - action you want to perform on attribute. More information in /entities/_updateAttributes documentationdelete - IGNORE_ATTRIBUTE - IdentifierType has to exists - if it does not exists do not delete and share the information in the "details" attribute that the target key does not exist This operation works like DELETE FROM Identifiers WHERE key=(key)update - UPDATE_ATTRIBUTE - IdentifierType have to exists - if it does not exist return share the information in the "details" attribute that the target key does not exist This operation works like UPDATE Identifiers SET (set) WHERE key=(key)Only allows updating existing attributes ( for example if the ID does not exist in the target - do not update this Identifier and share the information in the details that "ID" does not exist in the target)insert - INSERT_ATTRIBUTE only allows to insert new attributes, if the "set" exists in the target return the information in the "details" element that such object already exists This operation work like INSERT INTO Identifiers values (set) Adds only a new element to the target <URL>rge - (insert or update) (similar to "update" but it makes an insert if "set" elements do not exist in target) - update attributes matched by the key or inserts a new one. If there are multiple keys related to one filter, it updates all matches or inserts a new one. In this case, we are checking the target array. For example, we matched multiple target Identifiers by the "key" and we want to "set" the "ID". If the target identifier does not have the "ID" we are making an INSERT_ATTRIBUTE, if the target attribute contains the "ID" we are making the UPDATE_ATTRIBUTEreplace -(delete or insert) - delete (IGNORE_ATTRIBUTE) attributes matched by the "key" and insert the new <URL>is operation works in a way that it will delete all target attributes matched by the "key" and put only one new Identifier in that place. For example, we had 3 Identifiers in the target matching by the "key". Replace will cause that now in the target we have 1 new Identifier. 3 old ones are removed (IGNORE_ATTRIBUTE) and a new one is inserted (INSERT_ATTRIBUTE).TargetCrosswalkType - HUB_ID is a default source that updates the data in <ORGANIZATION>/A - keep empty and add just this <URL>put file example123SourceCrosswalkType;SourceCrosswalkValue;IdentifierType;IdentifierValue;IdentifierTrust;IdentifierSourceName;Action;TargetCrosswalkTypeReltio;upIP01W;<URL>ORCERX;TEST9_OEG_1000005218888;;;update;SAP;<US_BANK_NUMBER>;<URL>P;<US_BANK_NUMBER>;Yes;SAP;update;update_identifier_20220323.csvOutput fileFile format: CSV Encoding: UTF-8File name format: report__update_identifiers_YYYYMMDD_<seqNr>.csv <seqNr> - the number of the file process in <DATE_TIME>. Starting with 1 to n. Column headers:SourceCrosswalkType - source crosswalk type that describes entity. If you use "Reltio" then you should use entity uri in <LOCATION> column. For every other crosswalk type use SourceCrosswalkValue - source crosswalk value that describes entityIdentifierType - identifier type that you want to <NRP> - identifier values that you want to set(update/insert/merge). More information in /entities/_updateAttributes documentationstatus- the response statuserrorCode - the error codeerrorMessage- the error messageOutput file example\nSourceCrosswalkType,<ORGANIZATION>,IdentifierType,<ORGANIZATION>,status,errorCode,errorMessage\nReltio,<ORGANIZATION>,TEST9_OEG_1000005218888,failed,404,Can't find entity for target: EntityURITargetObjectId(entityURI=entities/upIP01W)\nSAP,<US_BANK_NUMBER>,<URL>P,<US_BANK_NUMBER>,failed,CrosswalkNotFoundException,Entity not found by crosswalk in getEntityByCrosswalk [Type:SAP Value:<US_BANK_NUMBER>]\nInternalsAirflow process name: update_identifiers_{{ env }}"
|
||
},
|
||
{
|
||
"title": "Callbacks",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Callbacks",
|
||
"content": "DescriptionThe HUB Callbacks are divided into the following two sections:<ORGANIZATION> process is responsible for the Ranking of the selected attributes <ORGANIZATION>. This callback is based on the full enriched events from the "${env}-internal-reltio-full-events". Only events that do not require additional ranking updates in <ORGANIZATION> are published to the next processing stage. Some rankings calculations - like OtherHCOtoHCO is delayed and processed in PreDylayCallbackService - such functionality was required to gather all changes for relations in time windows and send events to Reltio only after the aggregation window is closed. This limits the number of events and updates to Reltio. OtherHCOtoHCOAffiliations Rankings - more details related to the OtherHCOtoHCO relation ranking with all PreDylayCallbackService and DelayRankActivationProcessorrank details OtherHCOtoHCOAffiliations RankSorter"Post" Callback process is responsible for the specific logic and is based on the events published by the Event Publisher component. Here are the processes executed in the post callback process:<PERSON> - based on the "{env}-internal--callback-attributes-setter-in" events. Sets additional attributes for <ORGANIZATION> market e.g. ComplianceMAPPHCPStatusCrosswalkActivator Callback - based on the "${env}-internal-callback-activator-in" events. Activates selected crosswalk or soft-delete specific crosswalks based on the configuration. CrosswalkCleaner Callback - based on the "${env}-internal-callback-cleaner-in" events. Cleans orphan HUB_Callback crosswalk or soft-delete specific crosswalks based on the configuration. CrosswalkCleanerWithDelay Callback - based on the "${env}-internal-callback-cleaner-with-delay-in" events. Cleans orphan HUB_Callback crosswalk or soft-delete specific crosswalks based on the configuration with delay (aggregate events in time window)DanglingAffiliations Callback - based on the "${env}-internal-callback-orphan-clean-in" events. Removes orphan affiliations once one of the start or end objects was removed. Derived Addresses Callback - based on the "${env}-internal-callback-derived-addresses-in" events. Rewrites an Address from <ORGANIZATION> to <ORGANIZATION>, connected to each other with some type of <ORGANIZATION>. used on IQVIA tenantHCONames Callback for IQVIA model - based on the "${env}-internal-callback-hconame-in" events. Caclucate HCO Names. <ORGANIZATION> for COMPANY model - based on the "${env}-internal-callback-hconame-in" events. <ORGANIZATION> in <ORGANIZATION><URL>tMatch Callback - based on the "${env}-internal-callback-potential-match-cleaner-in" events. Based on the created relationships between two matched objects, removes the match using _notMatch operation. More details about the HUB callbacks are described in the sub-pages. Flow diagram"
|
||
},
|
||
{
|
||
"title": "AttributeSetter Callback",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/AttributeSetter+Callback",
|
||
"content": "DescriptionCallback auto-fills configured static Attributes, as long as the profile's attribute values meet the requirements. If no requirement (rule) is met, an optional cleaner deletes the existing, Hub-provided value for this attribute. AttributeSetter uses Manager's Update Attributes async interface.<PERSON> event has been routed from EventPublisher, check the following:Entity must be active and have at least one active crosswalk Event Type must match configured allowedEventTypesCountry must match configured allowedCountriesFor each configured <ORGANIZATION> do the following:Check if the entityType matches For each rules do the following:Check if criteria are metIf criteria are met:Check if Hub crosswalk already provides the AutoFill value (either Attribute's value or lookupCode must match)If attribute value is already present, do nothingIf attribute is not present:Add inserting AutoFill attribute to the list of changesCheck if Hub crosswalk provides another value for this attributeIf Hub crosswalk provides another value, add deleting that attribute value to the list of changesIf no rules were matched for this <ORGANIZATION> and cleaner is enabled:Find the Hub-provided value of this attribute and add deleting this value to the list of changes (if exists)Map the list of changes into a single AttributeUpdateRequest object and send to Manager inbound <URL>nfigurationExample AttributeSetter rule (multiple allowed):\n - setAttribute: "ComplianceMAPPHCPStatus"\n entityType: "HCP"\n cleanerEnabled: true\n rules:\n - name: "AutoFill <ORGANIZATION> IF SubTypeCode = Administrator (HCPST.A) / Researcher/Scientist (HCPST.C) / Counselor/Social Worker (<URL>) / <ORGANIZATION> (<URL>)"\n setValue: "<URL>n-HCP"\n where:\n - attribute: "SubTypeCode"\n values: [ "HCPST.A", "HCPST.C", <URL>, <URL> ]\n\n - name: "AutoFill <ORGANIZATION> IF SubTypeCode = <ORGANIZATION>) AND PrimarySpecialty = Psychology (<URL>Y)"\n setValue: "<URL>n-HCP"\n where:\n - attribute: "SubTypeCode"\n values: [ "HCPST.R" ]\n - attribute: "Specialities"\n nested:\n - attribute: "Primary"\n values: [ "true" ]\n - attribute: "Specialty"\n values: [ "<URL>Y" ]\n\n - name: "AutoFill HCPMHS.HCP for all others"\n setValue: "HCPMHS.HCP"\nRule inserts ComplianceMAPPHCPStatus attribute for every HCP:"<URL>n-HCP" for every profile having SubTypeCode in [ "HCPST.A", "HCPST.C", <URL>, <URL> ]"<URL>n-HCP" for every profile having SubTypeCode == "HCPST.R" where one of <ORGANIZATION> == "<URL>Y" and has Primary flag"HCPMHS.HCP" in all other scenariosDependent ComponentsComponentUsageCallback ServiceMain component with flow implementationPublisherGeneration of incoming eventsManagerAsynchronous processing of generated AttributeUpdateRequest events"
|
||
},
|
||
{
|
||
"title": "CrosswalkActivator Callback",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/CrosswalkActivator+Callback",
|
||
"content": "<PERSON> is the opposite of <ORGANIZATION>. There are 4 main processing branches (described in more detail in the "Algorithm" section):WhenOneKeyExistsAndActive - activate all crosswalks having:crosswalk type as in the configuration,crosswalk value same as an existing, active <ORGANIZATION> crosswalk in this profile.WhenAnyOneKeyExistsAndActive - activate all crosswalks of types same as in configuration, as long as there is at least one active <ORGANIZATION> crosswalk present in this profile.WhenAnyCrosswalksExistsAndActive - activate all crosswalks of types same as in configuration, as long as there is at least one active crosswalk present in this profile (crosswalk types in the except section of configuration are not considered as active crosswalks).ActivateOneKeyReferbackCrosswalkWhenRelatedOneKeyCrosswalkExistsAndActive - activate <ORGANIZATION> referback crosswalk (with lookupCode in configuration), as long as there is at least one active <ORGANIZATION> crosswalk present in this profileAlgorithmFor each event from ${env}-internal-callback-activator-in topic, do:filter by event country (configured),filter by event type (configured, usually only CHANGED events),Processing: WhenOneKeyExistsAndActivefind all active <ORGANIZATION> crosswalks (exact <ORGANIZATION> source name is fetched from configuration)for each crosswalk in the input event entity do:if crosswalk type is in the configured list (getWhenOneKeyExistsAndActive) and crosswalk value is the same as one of active <ORGANIZATION> crosswalks, send activator request to Manager,activator request contains entityType,activated crosswalk with empty string ("") in deleteDate,Country attribute rewritten from the input event,Manager processes the request as <URL>cessing: WhenAnyOneKeyExistsAndActivefind all active <ORGANIZATION> crosswalks (exact <ORGANIZATION> source name is fetched from configuration)for each crosswalk in the input event entity do:if crosswalk type is in the configured list (getWhenAnyOneKeyExistsAndActive) and active <ORGANIZATION> crosswalks list is not empty, send activator request to Manager,activator request contains entityType,activated crosswalk with empty string ("") in deleteDate,Country attribute rewritten from the input event,Manager processes the request as <URL>cessing: WhenAnyCrosswalksExistsAndActivefind all active crosswalks (sources in the configuration except list are filtered out)for each crosswalk in the input event entity do:if crosswalk type is in the configured list (getWhenAnyCrosswalksExistsAndActive) and active <ORGANIZATION> crosswalks list is not empty, send activator request to Manager,activator request contains entityType,activated crosswalk with empty string ("") in deleteDate,Country attribute rewritten from the input event,Manager processes the request as <URL>cessing: ActivateOneKeyReferbackCrosswalkWhenRelatedOneKeyCrosswalkExistsAndActivefind all <ORGANIZATION> crosswalks,check for active OneKey crosswalk with lookupCode included in the configured list oneKeyLookupCodes,check for related inactive <ORGANIZATION> referback crosswalk with lookupCode included in the configured list referbackLookupCodes,if above conditions are met, send activator request to Manager,activator request contains:entityType,activated <ORGANIZATION> referback crosswalk with empty string ("") in deleteDate,Country attribute rewritten from the input event,Manager processes the request as <URL>pendent componentsComponentUsageCallback ServiceMain component with flow implementationPublisherRoutes incoming eventsManagerAsync processing of generated activator requests"
|
||
},
|
||
{
|
||
"title": "CrosswalkCleaner Callback",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/CrosswalkCleaner+Callback",
|
||
"content": "DescriptionThis process removes using the hard delete or soft-delete operation crosswalks on Entity or Relation objects. There are the following sections in this process.Hard Delete Crosswalks - EntitiesBased on the input configuration removes the crosswalk from <ORGANIZATION> once all other crosswalks were removed or inactivated. Once the source decides to inactivated the crosswalk, associated attributes are removed from the Golden Profile (OV), and in that case Rank attributes delivered by the HUB have to be removed. The process is used to remove orphan HUB_CALLBACK crosswalks that are used in the PreCallbacks (Rankings/COMPANYGlobalCustomerId/Canada Micro-Bricks/HCPType) processHard Delete Crosswalks - RelationshipsThis is similar to the above. The only difference here is that the PreCallbacks (Rankings/COMPANYGlobalCustomerId/Canada Micro-Bricks/HCPType) process is adding new Rank attributes to the relationship between two objects. Once the relationship is deactivated by the <ORGANIZATION>, the orphan HUB_CALLBACK crosswalk is removed. Soft Delete Crosswalks This process does not remove the crosswalk from Reltio. It updates the existing providing additional deleteDate attribute on the soft-deleting crosswalk. In that case in Reltio the corresponding crosswalk becomes inactive. There are three types of soft-deletes:always - soft-delete crosswalks based on the configuration once all other crosswalks are removed or inactivated,whenOneKeyNotExists - soft-delete crosswalks based on the configuration once <ORGANIZATION> crosswalk is removed or inactivated. This process is similar to the "always" process by the activation is only based on the <ORGANIZATION> crosswalk inactivation,softDeleteOneKeyReferbackCrosswalkWhenOneKeyCrosswalkIsInactive - soft-delete <ORGANIZATION> referback crosswalk (lookupCode in configuration) once <ORGANIZATION> crosswalk is inactivated.Flow diagramStepsEvent publisher publishes full events to ${env}-internal-callback-cleaner-in including 'HCO_CHANGED', 'HCP_CHANGED', 'MCO_CHANGED', 'RELATIONSHIP_CHANGED' eventsOnly events with the correct event type are <URL>en the checks are activated checking if it is possible to: hard delete entity crosswalkshard delete relationship crosswalkssoft delete crosswalksIt is possible that for one event multiple checks are going to be activated, in that case, multiple output events will be generated. Once the criteria are successfully fulfilled, the events are generated to the "${env}-internal-async-all-cleaner-callbacks" topic to the next processing step in the Manager component. TriggersTrigger actionComponentActionDefault timeIN Events incoming mdm-callback-service:CrosswalkCleanerStream (callback package)Process events and calculate hard or soft-delete requests and publish to the next processing stage. realtime - events streamDependent componentsComponentUsageCallback ServiceMain component with flow implementationPublisherEvents publisher generates incoming eventsManagerAsynchronous process of generated events"
|
||
},
|
||
{
|
||
"title": "CrosswalkCleanerWithDelay Callback",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/CrosswalkCleanerWithDelay+Callback",
|
||
"content": "DescriptionCrosswalkCleanerWithDelay works similarly to <ORGANIZATION>. It is using the same <PERSON> topology, but events are trimmed (eliminateNeedlessData parameter - all the fields other than crosswalks are removed), and, which is most important, deduplication window is <URL>duplication window's parameters are configured, there are no default parameters. <ORGANIZATION> example:8 hour window (<ORGANIZATION> config: <URL>duplication.duration)1 <DATE_TIME> interval (<ORGANIZATION> config: <URL>duplication.pingInterval)This means, that the delay is equal to <DATE_TIME><URL><PERSON> more details on algorithm steps, see CrosswalkCleaner <URL>pendenciesComponentUsageCallback ServiceMain component with flow implementationPublisherRoutes incoming eventsManagerAsync processing of generated requests"
|
||
},
|
||
{
|
||
"title": "DanglingAffiliations Callback",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/DanglingAffiliations+Callback",
|
||
"content": "DescriptionDanglingAffiliation Callback consists of two sub-processes:DanglingAffiliations Based On Inactive Objects (legacy)DanglingAffiliations Based On Same Start And End Objects (added in <DATE_TIME>)"
|
||
},
|
||
{
|
||
"title": "DanglingAffiliations Based On Inactive Objects",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/DanglingAffiliations+Based+On+Inactive+Objects",
|
||
"content": "DescriptionThe process soft-deletes active relationships between inactivated start or end objects. Based on the configuration only REMOVED or INACTIVATE events are processed. It means that once the Start or End objects becomes inactive process checks the orphan relationship and sends the soft-delete request to the next processing stage. Flow diagramStepsEvent publisher publishes full events to ${env}-internal-callback-orphanClean-in including 'HCP_REMOVED', 'HCO_REMOVED', 'MCO_REMOVED', 'HCP_INACTIVATED', 'HCO_INACTIVATED', 'MCO_INACTIVATED' eventsOnly events with the correct event type are <URL> the next step, the <ORGANIZATION> is retrieved from the HUB by StartObjectURI or EndObjectURI.Once the relationship exists and is ACTIVE the Soft-Delete Request is generated to the "${env}-internal-async-all-cleaner-callbacks" topic to the next processing step in the Manager component. TriggersTrigger actionComponentActionDefault timeIN Events incoming mdm-callback-service:<NRP> (callback package)Process events for inactive entities and calculate soft-delete requests and publish to the next processing stage. realtime - events streamDependent componentsComponentUsageCallback ServiceMain component with flow implementationPublisherEvents publisher generates incoming eventsManagerAsynchronous process of generated eventsHub StoreRelationship Cache"
|
||
},
|
||
{
|
||
"title": "DanglingAffiliations Based On Same Start And End Objects",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/DanglingAffiliations+Based+On+Same+Start+And+End+Objects",
|
||
"content": "DescriptionThis process soft-deletes looping relations - active relations having the same startObject and <URL>ch loops can be created in one of two ways:merge-on-the-fly of two entities,manual merge of two entitiesboth of these create a RELATIONSHIP_CHANGED event, so the process is based off of <ORGANIZATION> and RELATIONSHIP_CHANGED events.Unlike the other DanglingAffiliations sub-process, this one does not query the cache for relations, because all the required information is in the processed event.Flow diagramStepsEvent publisher publishes full events to ${env}-internal-callback-orphanClean-in including <ORGANIZATION> and RELATIONSHIP_CHANGED eventsOnly events with the correct event type are processed.If there is a country list configured, the event country is also checked before <URL>rrent state of relation in the event is checked for the following:is startObject.objectURI the same as endObject.objectURI?is relation active (no endDate is set)?does the relation type match the configured list of relationTypes (only if configured list is not empty)?If all of the above are true, a soft-delete request is generated to the ${env}-internal-async-all-cleaner-callbacks topic to the next processing step in the Manager component. TriggersTrigger actionComponentActionDefault timeIN Events incoming mdm-callback-service:<NRP> (callback package)Process events for relations and calculate soft-delete requests and publish to the next processing stage. realtime - events streamDependent componentsComponentUsageCallback ServiceMain component with flow implementationPublisherEvents publisher generates incoming eventsManagerAsynchronous process of generated events"
|
||
},
|
||
{
|
||
"title": "Derived Addresses Callback",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Derived+Addresses+Callback",
|
||
"content": "DescriptionThe Callback is a tool for rewriting an Address from <ORGANIZATION> to <ORGANIZATION>, connected to each other with some type of <URL>quence DiagramFlowProcess is a callback. It operates on four <PERSON> topics:${env}-internal-callback-derived-addresses-in – input topic, containing simple events:HCP_CREATEDHCP_CHANGEDHCO_CREATEDHCO_CHANGEDHCO_REMOVEDHCO_INACTIVATEDRELATIONSHIP_CREATEDRELATIONSHIP_CHANGEDRELATIONSHIP_REMOVED${env}-internal-callback-derived-addresses-hcp4calc – internal topic, containing <ORGANIZATION> URIs${env}- internal-derived-addresses-hcp-create – Manager bundle topic, processes Addresses sent${env}-internal-async-all-cleaner-callbacks – Manager async topic, cleans orphaned crosswalksStepsAlgorithm has 3 stages: Stage I – Event PublisherEvent Publisher routes all above event types to ${env}-internal-callback-derived-addresses-in topic, optional filtering by country/source. Stage II – Callback Service – Preprocessing StageIf event subType ~ HCP_*:pass targetEntity URI to ${env}-internal-callback-derived-addresses-hcp4calcIf event subtype ~ HCO_*:Find all ACTIVE relations of types ${walkRelationType} ending at this <ORGANIZATION> in entityRelations collection.Extract URIs of all HCPs at starts of these relations and send them to topic ${env}-internal-callback-derived-addresses-hcp4calcIf event subtype ~ RELATIONSHIP_*:Find the relation by URI in entityRelations <URL>eck if relation type matches the configured ${walkRelationType}Extract URI of the startObject (<ORGANIZATION>) and send it to the topic ${env}-internal-callback-derived-addresses-hcp4calc Stage III – Callback Service – Main StageInput is <ORGANIZATION> HCP by URI in entityHistory collection. Check:If we cannot find entity in entityHistory, log error and skipIf found entity has other type than “configuration/entityTypes/<ORGANIZATION>”, log error and skipIf entity has status LOST_MERGE/DELETED/INACTIVE, skipIn entityHistory, find all relations of types ${walkRelationType} starting at this <ORGANIZATION>, extract <ORGANIZATION> at the end of <LOCATION> each extracted <ORGANIZATION>) do:Find HCO in entityHistory collectionWrap <PERSON> in a Create HCP Request:Rewrite all sub-attributes from each <ORGANIZATION> attributes from ${staticAddedFields}, according to strategy: overwrite or underwrite (add if missing)Add the required Country attribute (rewrite from <ORGANIZATION> two crosswalks:Data provider ${hubCrosswalk} with value: ${hcpId}_${hcoId}.Contributor provider Reltio type with HCP <URL>nd Create HPC Request to Manager through bundle topicIf <ORGANIZATION> has a crosswalk of type and sourceTable as below:type: ${hubCrosswalk.type}sourceTable: ${<URL>urceTable}value: ${hcpId}_${hcoId}but its <ORGANIZATION> does not match any <ORGANIZATION> found, send request to delete the crosswalk to MDM <URL><ORGANIZATION> configurations have to be made (examples are for GBL tenants).Callback <ORGANIZATION> and handle following section to <ORGANIZATION> application.yml in GBL:\ncallback:\n...\n derivedAddresses:\n enabled: true\n walkRelationType: \n - configuration/relationTypes/HasHealthCareRole\n hubCrosswalk:\n type: HUB_Callback\n sourceTable: DerivedAddresses\n staticAddedFields:\n - attributeName: AddressType\n attributeValue: TYS.P\n strategy: over\n inputTopic: ${env}-internal-callback-derived-addresses-in\n hcp4calcTopic: ${env}-internal-callback-derived-addresses-hcp4calc\n outputTopic: ${env}-internal-derived-addresses-hcp-create\n cleanerTopic: ${env}-internal-async-all-cleaner-callbacks\nSince we are adding a new crosswalk, cleaning of which will be handled by the Derived Addresses callback itself, we should exclude this crosswalk from the Crosswalk Cleaner config (similar to <ORGANIZATION> crosswalkCleaner:\n ...\n hardDeleteCrosswalkTypes:\n ...\n exclude:\n - type: configuration/sources/HUB_Callback\n sourceTable: DerivedAddresses\nManagerAdd below to the <ORGANIZATION> Manager bundle config:\nbundle:\n...\n inputs:\n...\n - topic: "${env}-internal-derived-addresses-hcp-create"\n username: "mdm_callback_service_user"\n defaultOperation: hcp-create\nCheck DQ Rules configuration.If there are any rules that may reject the HUB_Callback/DerivedAddresses HCP Create, an exception should be made. Example: Validation Status is required.If <PERSON> is configured to be surrogate, add an exception and new rule, adding MD5 crosswalk to the Address:\n- name: generate address relation and refEnity crosswalk\n preconditions:\n - type: sourceAndSourceTable\n values:\n - source: HUB_Callback\n sourceTable: "DerivedAddresses"\n action:\n type: addressDigest\n value: MD5\n skipRefEntityCreation: false\n skipRefRelationCreation: false\n\n- name: Make surrogate crosswalk on address\n preconditions:\n - type: not\n preconditions:\n - type: sourceAndSourceTable\n values:\n - source: <DATE_TIME>sourceTable: "DerivedAddresses"\n action:\n type: addressCrosswalkValue\n value: surrogate\nEvent PublisherRouting rule has to be added:\n- id: derived_addresses_callback\n destination: "${env}-internal-derived-addresses-in"\n selector: "(<URL>conciliationTarget==null)\n && <URL>.headers.eventType in ['simple']\n && <URL>untry in ['cn']\n && <URL>ubtype in ['HCP_CREATED', 'HCP_CHANGED', 'HCO_CREATED', 'HCO_CHANGED', 'HCO_REMOVED', 'HCO_INACTIVATED', 'RELATIONSHIP_CREATED', 'RELATIONSHIP_CHANGED', 'RELATIONSHIP_REMOVED']"\nDependent ComponentsComponentUsageCallback ServiceMain component with flow implementationManagerProcessing HCP Create, Crosswalk Delete operationsEvent PublisherGeneration of incoming events"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> for IQVIA model",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/HCONames+Callback+for+IQVIA+model",
|
||
"content": "DescriptionThe <ORGANIZATION> names callback is responsible for calculating <ORGANIZATION> Names. At first events are filtered, deduplicated and the list of impacted hcp is being evaluated. Then the new <ORGANIZATION> are calculated. And finally if there is a need for update, the updates are being send for asynchronous processing in HUB Callback SourceFlow diagramSteps1. Impacted HCP GeneratorListen for the events on the ${env}-internal-callback-hconame-in <URL>lter out against the list of predefined countries (<ORGANIZATION>, AN, <ORGANIZATION>, AR, AW, BS, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, BR, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, DO, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, HN, <ORGANIZATION>, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION>, <LOCATION>, PY, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, VE).Filter out against the list of predefined event types (HCO_CREATED, HCO_CHANGED, <LOCATION>, RELATIONSHIP_CHANGED).Split into two following branches. Results of both are then published on the ${env}-internal-callback-hconame-hcp4calc.<ORGANIZATION> extract the "Name" attribute from the target entity.2. reject the event if "Name" does not <ORGANIZATION>. check if there was already a record with the identical Key + Name pair (a duplicate)4. reject the <ORGANIZATION>. find the list of impacted HCPs based on the <PERSON>. return a flat stream of the key and the <ORGANIZATION>. key: entities/dL144Hk, impactedHCP: 1, <DATE_TIME>, 3 return (entities/dL144Hk, 1), (entities/dL144Hk, 2), (entities/dL144Hk, <ORGANIZATION>. map Event to RelationWrapper(type,uRI,country,startURI,endURI,active,<LOCATION>,endObjectTyp)2. reject if any of fields missing3. check if there was already a record with the identical Key + Name pair (a duplicate)4. reject the <ORGANIZATION>. find the list of impacted HCPs based on the <PERSON>. return a flat stream of the key and the <ORGANIZATION>. key: entities/dL144Hk, impactedHCP: 1, <DATE_TIME>, 3 return (entities/dL144Hk, 1), (entities/dL144Hk, 2), (entities/dL144Hk, 3)2. <ORGANIZATION> Names Update StreamListen for the events on the ${env}<URL>e incoming list of HCPs is passed to the calculator (described below).The HcoMainCalculatorResult contains hcpUri, a list of entityAddresses and the mainWorkplaceUri (to update)The result is being mapped to the RelationRequest The RelationRequest is generated to the "${env}-internal-hconames-rel-create" topic.3. <ORGANIZATION>: get <ORGANIZATION> from mongo where uri equals <ORGANIZATION> <URL>calculate MainHCONameget all target <ORGANIZATION> for relations (paremeter traverseRelationTypes) when start object id equals <ORGANIZATION> <URL>r each target <ORGANIZATION> (curHCO) doif target <ORGANIZATION> is last in hierarchy thenreturn <URL><LOCATION> if target <URL>tributes.<PERSON> is on the configured list defined by parameter mainHCOTypeCodes for selected countryreturn <URL><LOCATION> if target <URL><PERSON> is on the configured list defined by parameter mainHCOStructurTypeCodes for selected countryreturn <URL><LOCATION> if target <URL>assofTradeN.FacilityType.lookupCode is on the configured list defined by parameter mainHCOFacilityTypeCodes for selected countryreturn <URL><PERSON> all target <ORGANIZATION> when start object id is curHCO.uri (recursive call)update HCP addressesfind address in <URL>dress when <URL>fEntity.uri=<PERSON> found and address.HCOName<>calcHCOName or <URL><PERSON> thencreate/update <ORGANIZATION> relation using <ORGANIZATION> sourceTriggers*Filter whole tableHide columnsReset all filtersCopy the filter <ORGANIZATION> to <ORGANIZATION> to <ORGANIZATION> to WordPrintDocumentationWhat's newRate our appOops, it seems that you need to place a table or a macro generating a table within the <ORGANIZATION> <URL>igger actionComponentActionDefault timeIN Events incoming mdm-callback-service:HCONamesUpdateStream (callback package)Evaluates the list of affected HCPs. Based on that the <ORGANIZATION> updates being sent when <URL>altime - events stream\n\n\n\n\nDependent componentsComponentUsageCallback ServiceMain component with flow implementationPublisherEvents publisher generates incoming eventsManagerAsynchronous process of generated eventsHub StoreCache"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> for COMPANY model",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/HCONames+Callback+for+COMPANY+model",
|
||
"content": "DescriptionHCONames Callback for COMPANY data model differs from the one for IQVIA <URL>llback consists of two stages: preprocessing and main processing. Main processing stage takes in HCP URIs, so the preprocessing stage logic extracts such affected HCPs from <ORGANIZATION>, <ORGANIZATION>, RELATIONSHIP events.During main processing, Callback calculates trees, where nodes are HCOs (tree root is always the input <ORGANIZATION>) and edges are Relationships. HCOs and MainHCOs are extracted from this tree. MainHCOs are chosen following some business specification from the <ORGANIZATION> config. Direct Relationships from HCPs to MainHCOs are created (or cleaned if no longer applicable). If any of <ORGANIZATION>'s Addresses matches <ORGANIZATION>, adequate sub-attribute is added to this <URL>gorithmStage I - preprocessingInput topic: ${env}-internal-callback-hconame-inInput event types:HCO_CREATEDHCO_CHANGEDHCP_CREATEDHCP_CHANGEDRELATIONSHIP_CREATEDRELATIONSHIP_CHANGEDFor each <ORGANIZATION> event from the topic:Deduplicate events by key (deduplication window size is configurable),using MongoDB entityRelations collection, build maximum dependency tree (recursive algorithm) consisting of HCPs and HCOs connected with:relations of type equal to hcoHcoTraverseRelationTypes from configuration,relations of type equal to hcoHcpTraverseRelationTypes from configuration,return all HCPs from the dependency tree (all visited HCPs),generate events having key and value equal to HCP uri and send to the main processing topic (${env}-internal-callback-hconame-hcp4calc).For each RELATIONSHIP event from the topic:Deduplicate events by key (deduplication window size is configurable),if relation's startObject is <ORGANIZATION>:add <ORGANIZATION>'s entityURI to result list,if relation's startObject is <ORGANIZATION>: similarly to <ORGANIZATION> events preprocessing, build dependency tree and return all HCPs from the tree. HCP URIs are added to the result list,for each HCP on the result list, generate an event and send to the main processing topic (${env}-internal-callback-hconame-hcp4calc).For each <ORGANIZATION> event from the topic:Deduplicate events by key (deduplication window size is configurable),generate events having key and value equal to HCP uri and send to the main processing topic (${env}-internal-callback-hconame-hcp4calc).Stage II - main processingInput topic: ${env}-internal-callback-hconame-hcp4calcFor each HCP from the topic:Deduplicate by entity URI (deduplication window size is configurable),fetch current state of <ORGANIZATION> from MongoDB, entityHistory collection,traversing by <ORGANIZATION> relation type from config, find all affiliated HCOs with "CON" descriptors,traversing by <ORGANIZATION> relation type from config, find all affiliated HCOs with MainHCO: "<URL>I" or "REL.HIE" descriptors,from the "CON" <ORGANIZATION> list, find all MainHCO candidates - MainHCO candidate must pass the configured specification. Below is MainHCO spec in EMEA PROD:if not yet existing, create new <ORGANIZATION> relationship to MainHCO candidates by generating a request and sending to Manager async topic: ${env}-internal-hconames-rel-create,if existing, but not on candidates list, delete the relationship by generating a request and sending to Manager async topic: ${env}-internal-async-all-cleaner-callbacks,if one of input <ORGANIZATION>'s Addresses matches <PERSON> or MainHCO Address, generate a request adding "<ORGANIZATION>" or "MainHCO" sub-attribute to the Address and send to Manager async topic: ${env}<URL>cessing events1. Find Impacted HCPListen for the events on the ${env}-internal-callback-hconame-in <URL>lter out against the list of predefined countries (<LOCATION>, IE).Filter out against the list of predefined event types (HCO_CREATED, HCO_CHANGED, <LOCATION>, RELATIONSHIP_CHANGED).Split into two following branches. Results of both are then published on the ${env}-internal-callback-hconame-hcp4calc.<ORGANIZATION> extract the "Name" attribute from the target entity.2. reject the event if "Name" does not <ORGANIZATION>. check if there was already a record with the identical Key + Name pair (a duplicate)4. reject the <ORGANIZATION>. find the list of impacted HCPs based on the <PERSON>. return a flat stream of the key and the <ORGANIZATION>. key: entities/dL144Hk, impactedHCP: 1, <DATE_TIME>, 3 return (entities/dL144Hk, 1), (entities/dL144Hk, 2), (entities/dL144Hk, <ORGANIZATION>. map Event to RelationWrapper(type,uRI,country,startURI,endURI,active,<LOCATION>,endObjectTyp)2. reject if any of fields missing3. check if there was already a record with the identical Key + Name pair (a duplicate)4. reject the <ORGANIZATION>. find the list of impacted HCPs based on the <PERSON>. return a flat stream of the key and the <ORGANIZATION>. key: entities/dL144Hk, impactedHCP: 1, <DATE_TIME>, 3 return (entities/dL144Hk, 1), (entities/dL144Hk, 2), (entities/dL144Hk, 3)2. Select HCOs affiliated with <LOCATION> for incoming list of HCPs on the ${env}<URL>r each HCP a list of affiliated HCOs is retrieved from a database. <ORGANIZATION> relation is based on type:configuration/relationTypes/ContactAffiliationsand description:"CON"3. Find Main HCO traversing <ORGANIZATION> hierarchyFor each <ORGANIZATION> from the list of selected HCOs above a list of <ORGANIZATION> is retrieved from the database. <ORGANIZATION> relation is based on type:configuration/relationTypes/OtherHCOtoHCOAffiliationsand description:"<URL>I", "RLE.HIE"The step is being repeated recursively until there are no affiliated HCOs or the Subtype matches the one provided in <URL>bTypeCode (STOP condition)The result is being mapped to the RelationRequest The RelationRequest is generated to the "${env}-internal-hconames-rel-create" topic.4. <ORGANIZATION> in HCP addresses if required So far there are two <ORGANIZATION> lists: HCOs affiliated with <ORGANIZATION> and <ORGANIZATION> <URL>ere's a check if HCP fields HCOName and MainHCOName which are also two lists match the <ORGANIZATION> names.If not, then the <ORGANIZATION> update event is being <URL>dress is nested attribute in the model Matching by uri must be replaced by matching by the key on attribute values. The match key will include <ORGANIZATION>, AddressLine1, AddressLine2,City,<ORGANIZATION>, Zip5.The same key is configured in Reltio for address deduping. Changes the address key in Reltio must be consulted with HUB teamThe target attributes in addresses will be populated by creating new HCP address having the same match key + HCOName and MainHCOName by <ORGANIZATION> source. Reltio will match the new address with the existing based on the match key.Each HCP address will have own HUBCallback crosswalk {type=HUB_Callback, value={Address Attribute URI}, sourceTable=HCO_NAME}4. Create HCO -> <ORGANIZATION> affiliation if not exist Also there's a check if the HCP outgoing relations point to <ORGANIZATION> HCOs. Only relations with the type "configuration/relationTypes/ContactAffiliations"and description"MainHCO" are being <URL>ropriate relations need to be created and not appropriate removed.Data model DependenciesComponentUsageCallback ServiceMain component with flow implementationPublisherRoutes incoming eventsManagerAsync processing of generated requests"
|
||
},
|
||
{
|
||
"title": "NotMatch Callback",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/NotMatch+Callback",
|
||
"content": "DescriptionThe NotMatch callback was created to clear the potential match queue for the suspect matches when the <ORGANIZATION> has been created by the DerivedAffiliationsbatch process. During this batch process, affiliations are created between <ORGANIZATION> and <ORGANIZATION> objects. The potential match queue is not cleared and this impacts the <ORGANIZATION> process because DS does not know what matches have to be processed through the <ORGANIZATION>. Potential match queue is cleared during RELATIONSHIP events processing using the "NotMatch callback" process. The process invokes _notMatch operation in <ORGANIZATION> and removed these matches from Reltio. All "_notMatch" matches are visible in the <ORGANIZATION> in the "Potental Matches"."Not a Match" TAB. Flow diagramStepsEvent publisher publishes simple events to $env-internal-callback-potentialMatchCleaner-in including RELATIONSHIP_CHANGED and RELATIONSHIP_CREATED events with <ORGANIZATION> source (limit to only the one loaded through DA batch)Only events with the correct event type are processed: RELATIONSHIP_CHANGED and RELATIONSHIP_CREATEDOnly events with the correct relationship type are processed. Accepted relationship types:FlextoHCOSAffiliationsFlextoDDDAffiliationsFlextoDDDAffiliationsThe HUB AUTOLINK Store is searchedif <ORGANIZATION> match exists in the store _notMatch operation is executed in asynchronous modeelse event is skippedAll _notMatch operations are published to the $env-internal-async-all-notmatch-callbacks topic and the Manager process these operations in asynchronous mode. TriggersTrigger actionComponentActionDefault timeIN Events incoming mdm-callback-service:PotentialMatchLinkCleanerStreamprocess relationship events in streaming mode and sets _notMatch in MDMrealtime - events streamDependent componentsComponentUsageCallback ServiceMain component with flow implementationPublisherEvents publisher generates incoming eventsManagerReltio Adapter for _notMatch operation in asynchronous modeHub StoreMatches Store"
|
||
},
|
||
{
|
||
"title": "PotentialMatchLinkCleaner Callback",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/PotentialMatchLinkCleaner+Callback",
|
||
"content": "<ORGANIZATION> accepts relationship events - this is configurable, usually:RELATIONSHIP_CREATEDRELATIONSHIP_CHANGEDFor each event from inbound topic (${env}-internal-callback-potential-match-cleaner-in):event is filtered by eventType (acceptedRelationEventTypes list in configuration),event is filtered by relationship type (acceptedRelationObjectTypes list in configuration),extract startObjectURI and endObjectURI from event targetRelation,search MongoDB, collection entityMatchesHistory, for records having both URIs in matches and having same matchType (matchTypesInCache list in configuration),if found a record in cache, check if it has already been sent (boolean field in the document),if record has not been yet sent, generate a EntitiesNotMatchRequest containing two fields:sourceEntityURI,<DATE_TIME>,add the operation header and send the Request to <URL>pendenciesComponentUsageCallback ServiceMain component with flow implementationPublisherRoutes incoming eventsManagerAsync processing of generated requests"
|
||
},
|
||
{
|
||
"title": "PreCallbacks (Rankings/COMPANYGlobalCustomerId/Canada Micro-Bricks/HCPType)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "DescriptionThe main part of the process is responsible for setting up the <ORGANIZATION> attributes on the specific Attributes in Reltio. Based on the input JSON events, the difference between the RAW entity and the Ranked entity is calculated and changes shared through the asynchronous topic to Manager. Only events that contain no changes are published to the next processing stage, it limits the number of events sent to the external Clients. Only data that is ranked and contains the correct callback is shared further. During processing, if changes are detected main events are skipped and a callback is executed. This will cause the generation of new events in <ORGANIZATION> and the next calculation. The next calculation should detect 0 changes but that may occur that process will fall into an infinity loop. Due to this, the MD5 checksum is implemented on the Entity and AttributeUpdate request to percent such a situation. The <ORGANIZATION> is the setup with the chain of responsibility with the following steps:Enricher Processor Enrich object with <ORGANIZATION> serviceMultMergeProcessor - change the ID of the main entity to the loser Id when <ORGANIZATION> is different from <ORGANIZATION> - it means that the merge happened between timestamp when <ORGANIZATION> generated the EVENT and HUB retrieved the Entitty from Reltio. In that case the outcome entity contains 3 ID <New Winner, Old Winner as loser, loser><ORGANIZATION> rankings - transform entity with correct Ranks attributesBased on the calculated rank generate pre-callback events that will be sent to <ORGANIZATION> callback Generation of changes on COMPANYGlobalCustomerIDs <if required when there is a need to fix the ID><ORGANIZATION> Autofill <ORGANIZATION>-BricksHCPType Callback Calculate HCPType attribute based on <ORGANIZATION> and SubTypeCode canonical Reltio codes. <ORGANIZATION> reference attributes enriched in the first step (save in mongo only when cleanAdditionalRefAttributes is <ORGANIZATION> of inactivated events (for each changed event)OtherHCOtoHCOAffiliations Rankings Generation of the event to full-delay topic to process Ranking changes on relationships objects Flow diagramStepsEntity <PERSON> publishes full enriched events to ${env}-internal-reltio-full-eventsThe event is enriched with additional data required in the ranking process. More details in <ORGANIZATION> that require enrichment of the <ORGANIZATION> objects once ranking the <ORGANIZATION> on <ORGANIZATION>. Rankings are calculated based on the implemented <ORGANIZATION>. Based on the activation criteria and the environment configuration the following Rank Sorters are activated:Address RankSorterAddresses RankSorterAffiliation RankSorterEmail RankSorterPhone RankSorterSpecialty RankSorterIdentifier RankSorterBased on the changes between sorted Entity and input entity, Callback is published to the next processing stage. In that case, <ORGANIZATION> is skipped.If no new changes are detected, <ORGANIZATION> is forwarder to further <URL>e enriched data required in the <ORGANIZATION> ranking is cleaned. This last step check the incoming event and generates an additional *_INACTIVATED event type once <ORGANIZATION> object contains EndDate (is inactive) TriggersTrigger actionComponentActionDefault timeIN Events incoming mdm-callback-service:<ORGANIZATION> (precallback package)Process full events, execute ranking services, generates callbacks, and published calculated events to the <PERSON> componentrealtime - events streamDependent componentsComponentUsageCallback ServiceMain component with flow implementationEntity EnricherGenerates incoming events full eventsManagerProcess callbacks generated by this serviceHub <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Global COMPANY ID callback",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Global+COMPANY+ID+callback",
|
||
"content": "Proces provides a unique <ORGANIZATION> to each entity. The current solution on the <ORGANIZATION> side overwrites an entity's <ORGANIZATION> when it loses a merge. Global COMPANY ID pre-callback solution was created to contain Global COMPANY Id as a unique value for entity_<URL> fulfill the requirement a solution based on <ORGANIZATION> is prepared. It includes elements like below:Modification on Orchestrator/Manager side - during the entity creation processCreation of COMPANYGloballId Pre-callback Modification on entity history to enrich search processLogical ArchitectureModification on Orchestrator/Manager side - during the entity creation processProcess descriptionThe request is sent to the HUB Manager - it may come from each source allowed. Like <ORGANIZATION> loading or direct channel. getCOMPANYIdOrRegister service is call and entityURI with <ORGANIZATION> is stored in COMPANYIdRegistry From an external system point of view, the response to a client is modified. COMPANY Global Id is a part of the main attributes section in the JSON file (not in a nest). In response, there are information about <ORGANIZATION> true and false{ "uri": "entities/19EaDJ5L", "status": "created", "errorCode": null, "errorMessage": null, "COMPANYGlobalCustomerID": "<PHONE_NUMBER>", "crosswalk": { "type": "configuration/sources/RX_AUDIT", "value": "test1_104421022022_RX_AUDIT_1", "deleteDate": "" }}{ "uri": "entities/entityURI", "type": "configuration/entityTypes/<ORGANIZATION>", "createdBy": "username", "createdTime": <US_BANK_NUMBER>, "updatedBy": "username", "updatedTime": <US_BANK_NUMBER>,"attributes": <PERSON>"COMPANYGlobalCustomerID": [ { "type": "configuration/entityTypes/<ORGANIZATION>/attributes/COMPANYGlobalCustomerID", "ov": true, "value": "04-<US_BANK_NUMBER>", "uri": "entities/10FoKMrf/attributes/COMPANYGlobalCustomerID/1jVIrkG2D" }, { "type": "configuration/entityTypes/<ORGANIZATION>/attributes/COMPANYGlobalCustomerID", "ov": false, "value": "<PHONE_NUMBER>", "uri": "entities/10FoKMrf/attributes/COMPANYGlobalCustomerID/1jVIrosrm" }, { "type": "configuration/entityTypes/<ORGANIZATION>/attributes/COMPANYGlobalCustomerID", "ov": false, "value": "<PHONE_NUMBER>", "uri": "entities/10FoKMrf/attributes/COMPANYGlobalCustomerID/1jVIrhcNY" }, { "type": "configuration/entityTypes/<ORGANIZATION>/attributes/COMPANYGlobalCustomerID", "ov": false, "value": "<PHONE_NUMBER>", "uri": "entities/10FoKMrf/attributes/COMPANYGlobalCustomerID/1jVIrnM10" }, { "type": "configuration/entityTypes/<ORGANIZATION>/attributes/COMPANYGlobalCustomerID", "ov": false, "value": "<PHONE_NUMBER>", "uri": "entities/10FoKMrf/attributes/COMPANYGlobalCustomerID/1mrOsvf6P" }, { "type": "configuration/entityTypes/<ORGANIZATION>/attributes/COMPANYGlobalCustomerID", "ov": false, "value": "<PHONE_NUMBER>", "uri": "entities/10FoKMrf/attributes/COMPANYGlobalCustomerID/2ZNzEowk3" }, { "type": "configuration/entityTypes/<ORGANIZATION>/attributes/COMPANYGlobalCustomerID", "ov": false, "value": "04-<US_SSN>", "uri": "entities/10FoKMrf/attributes/COMPANYGlobalCustomerID/2LG7Grmul" } ],3. How to store GlobalCOMPANYId process diagram - business <URL>eation of COMPANYGlobalId Pre-callbackA publisher event model is extended with two new values:COMPANYGlobalCustomerIDs - list of ID. For some merge events, there is two entityURI ID. The order of the IDs must match the order of the IDs in entitiURI <URL>rentCOMPANYGlobalCustomerID - it has value only for the <LOCATION> event type. It contains winner entityURI.data class PublisherEvent(val eventType: <ORGANIZATION>?, val eventTime: Long? = null, val entityModificationTime: Long? = null, val countryCode: String? = null, val entitiesURIs: List<String> = emptyList(), val targetEntity: Entity? = null, val targetRelation: Relation? = null, val targetChangeRequest: <ORGANIZATION>? = null, val dictionaryItem: DictionaryItem? = null, val mdmSource: String?, val viewName: String? = <PERSON>, val matches: List<MatchItem>? = null, val COMPANYGlobalCustomerIDs: List<String> = emptyList(), val parentCOMPANYGlobalCustomerID: String? = null, @JsonIgnore val checksumChanged: <NRP> = false, @JsonIgnore val isPartialUpdate: <NRP> = false, @JsonIgnore val isReconciliation: <NRP> = falseThere are made changes in entityHistory collection on MongoDB sideFor each object in a collection, we store also COMPANYGlobalCustomerID:to have a relation between entityURI and COMPANYGLobalCustomerId to make a possible search for an entity that lost merge Additionally, new fields are stored in the Snowflake structure in %_<ORGANIZATION> and %_<ORGANIZATION> views in CUSTOMER_SL schema, like:COMPANY_GLOBAL_CUSTOMER_IDPARENT_COMPANY_GLOBAL_CUSTOMER_IDFrom an external system point of view, those internal changes are prepared to make a GlobalCOMPANYID filed <URL> case of overwriting GLobalCOMPANYID on <PERSON> side (lost merge) pre-callback main task is to search for an original value in <ORGANIZATION>. It will then insert this value into that entity in <PERSON> that has been overwritten due to lost <URL>cess diagram: Search LOST_MERGE entity with its first Global COMPANY IDProcess diagram:Process description:MDM HUB gets SEARCH calls from an external system. The search parameter is Global COMPANY <URL>rification entity status. If entity status is 'LOST_MERGE' then replace in search request PfiezrGlobalCustomerId to parentCOMPANYGlobalCustomerIdMake a search call in Reltio with enriched dataDependent components"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Canada+Micro-Bricks",
|
||
"content": "DescriptionThe process was designed to auto-fill the <ORGANIZATION> values on Addresses for <NRP> market entities. The process is based on the events streaming, the main event is recalculated based on the current state and during comparison, the current mapping file the changes are generated. The generated change (partial event) updates the <ORGANIZATION> which leads to another change. Only when the entity is fully updated the main event is published to the output topic and processed in the next stage in the event publisher. The process also registers the Changelog events on the topic. the Changelog events are saved only when the state of the entity is not partial. The Changelog events are required in the <ORGANIZATION> that is triggered by the Airflow DAG. Business users may change the mapping file, this triggers the reload process, changelog events are processed and the updates are generated in <URL>r <LOCATION>, we created a new brick type "Micro Brick" and implemented a new pre-callback service to populate the brick codes based on the postal code mapping file:95% of postal codes won't be in the file and the <ORGANIZATION> code should be set to the first characters of the postal codeThe mapping file will contain postal code - MicroBrick code pairsThe mapping file will be delivered <DATE_TIME>, usually with no change. However, 1-2 a year the Business will go thru a re-mapping exercise that could cause significant change. Also, a few minor changes may happen (e.g., add new pair, etc.). A <DATE_TIME> change process will be added to the <ORGANIZATION> scheduler as a DAG. This <ORGANIZATION> will be scheduled and will generate the export from the <ORGANIZATION>, when there will be mapping changes changelog events will trigger update to the existing <ORGANIZATION> codes in Reltio. A new <ORGANIZATION> code has been added for <ORGANIZATION> - "UGM"Flow diagramLogical ArchitecturePreCallback LogicReload LogicStepsOverview Reltio attributesBrick"uri": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Brick", Brick Type: RDM: A new <ORGANIZATION> code has been added for <ORGANIZATION> - "UGM" "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Brick/attributes/Type", "lookupCode": "rdm/lookupTypes/BrickType", Brick Value: "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Brick/attributes/Value", "lookupCode": "rdm/lookupTypes/BrickValue",PostalCode:"uri": "configuration/entityTypes/<ORGANIZATION>/attributes/Addresses/attributes/Zip5",Canada postal codes format:e.g: K1A 0B1PreCallback LogicFlow:Activation:Check if feature flag activation is true and the acceptedCountires list contains entity countryTake into account only the CHANGED and CREATED events in this pre-callback implementationSteps:For each address in the entity check:Check if the <PERSON> contains BrickType= microBrickType and BrickValue!=null and PostalCode!=nullCheck if <LOCATION> is in the <LOCATION> fileif true compareif different generate UPDATE_ATTRIBUTEif in sync add <ORGANIZATION> with all attributes to MicroBrickChangelogif false compare <ORGANIZATION> with “numberOfPostalCodeCharacters” from <ORGANIZATION> different generate UPDATE_ATTRIBUTEif in sync add <ORGANIZATION> with all attributes to MicroBrickChangelogCheck if Address does not contain BrickType= microBrickType and BrickValue==null and <LOCATION> !=nullcheck if <LOCATION> is in the <LOCATION> fileif true generate INSERT_ATTRIBUTEif false get “numberOfPostalCodeCharacters” from <LOCATION> and generate INSERT_ATTRIBUTEAfter the Addresses array is checked, the main event is blocked when partial. Only when there are 0 changes main event is forwardedif there are changes send partialUpdate and skip the main event depending on the forwardMainEventsDuringPartialUpdateif there are 0 changes send <ORGANIZATION> and push <PERSON> to the changelog topicNote: The service contains 2 roles – the main role is to check <LOCATION> for each address with a mapping file and generate MicroBrick Changes (INSERT (initial) UPDATE (changes)). The second role is to push <PERSON> events when we detected 0 changes. It means this flow should keep in sync the changelog topic with all changes that are happening in Reltio (address was added/removed/changed). Because <ORGANIZATION> will work on these changelog events and requires the exact URI to the <ORGANIZATION> this service needs to push all <PERSON> events with calculatedMicroBrickUri and calculatedMicroBrickValue and current value on postalCode for specific address represented by the address <URL>load Logic (Airflow DAG)Flow: <ORGANIZATION> users make changes on the <ORGANIZATION> side to micro bricks <URL>epsDAG is scheduled once a month and process changes made by the Business users, this triggers the Reload Logic on Callback-Service componentsGet changes from snowflake and generate the <LOCATION> fileIf there are 0 changes END the processIf there are change in the <LOCATION> file push the changes to the Consul. Load current Configuration to GIT and push micro-bricks-mapping.csv to <URL>igger API call on <ORGANIZATION> to reload Consul configuration - this will cause that Pre-Callback processors and the <ORGANIZATION> will now use new mapping files. Only after this operation is successful go to the next step:Copy events from current topic to reload topic using tmp fileCopy events from current topic to reload topic using temporary fileNote: the micro-brick process is divided into 2 steps Pre-Callback generated ChangeLog events to the $env-internal-microbricks-changelog-eventsReload service is reading the events from $env-internal-microbricks-changelog-reload-eventsThe main goal here is to copy events from one topic to another using <PERSON> Console Producer and Consumer. Copy is made by the <PERSON> Console Consumer, we are generating a temporary file with all events, <ORGANIZATION> has to poll all events, and wait <DATE_TIME> until no new events are in the topic. After this time <PERSON> Console Producer should send all events to the target <URL>ter events are in the target $env-internal-microbricks-changelog-reload-events topic the next step described below starts automatically. Reload Logic (Callback-Service)Flow:Activation:<ORGANIZATION> Exposes <ORGANIZATION> to reload Consul Configuration - because these changes are made once per month <PERSON>, there is no need to schedule this process in service internally. Reload is made by the <ORGANIZATION> and reloads mapping file inside <URL>y after Consul Configuration is reloaded the events are pushed from the $env-internal-microbricks-changelog-events to the $<URL>is triggers the MicroBrickReloadService because it is based on the Kafka-Streams – service is subscribing to events in real-timeSteps:New events to the $env-internal-microbricks-changelog-reload-events will trigger the following:<PERSON> consumer that will read the <LOCATION> each <PERSON> event check:for each address in addresses changes check:check if <LOCATION> is in the <LOCATION> fileif true and the current mapping value is different than calculatedMicroBrickValue → generate UPDATE_ATTRIBUTEif false and calculatedMicroBrickValue is different than “numberOfPostalCodeCharacters” from <LOCATION> → generate UPDATE_ATTRIBUTEGather all changes and push them to the $env-internal-async-all-bulk-callbacksThe reload is required because it may happen that:A new row was addedThen AddressChange.postalCode will be in the <LOCATION> which means that calculatedMicroBrickValue will be different than the one that we now have in the mapping file so we need to trigger UPDATE_<URL>e existing row was updatedThen AddressChange.postalCode will be in the <LOCATION> and the calculatedMicroBrickValue will be different than the one that we now have in the mapping file so we need to trigger UPDATE_ATTRIBUTEThe existing row was removedThen AddressChange.postalCode will be missing in the mapping file, then we are going to compare calculatedMicroBrickValue with “numberOfPostalCodeCharacters” from <LOCATION>, this will be a difference so UPDATE_ATTRIBUTE will be generatedNote: The data model requires the calculatedMicroBrickUri because we need to trigger UPDATE_ATTRIBUE on the specified BrickValue on a specific Address so an exact URI is required to work properly with the Reltio UPDATE_ATTRIBUTE operation. Only INSERT_ATTRIBUTE requires the <ORGANIZATION> only on the address attribute, and the body will contain <ORGANIZATION> and <ORGANIZATION> (this insert is handled in the pre-callback implementation). The changes made by <ORGANIZATION> will generate the next changes after the mapping file was updated. Once we trigger this event Reltio will generate the change, this change will be processed by the pre-callback service (MicroBrickProcessor). The result of this processor will be no-change-detected (entity and mapping file are in sync) and new CHANGELOG event generation. It may happen that during <ORGANIZATION> run new Changelog events will be constantly generated, but this will not impact the current process because events from the original topic to the target topic are triggered by the manual copy during reloading. Additionally, <DATE_TIME> compaction window on <PERSON> will overwrite old changes with new changes generated from pre-callback. So we will have only one newest key on kafka topic after this time, and these changes will be copied to reload process after the next business change (1-2 times a year)Attachment docs with more details:IMPL: TEST:<ORGANIZATION> and ConfigurationChangeLog Event\nCHANGELOG Event:\n\nKafka KEY: entityUri\n\nBody:\ndata class MicroBrickChangelog(\n val entityUri: <PERSON> addressesChanges: List<AddressChange>,\n)\ndata class AddressChange(\n val addressUri: <PERSON> postalCode: <PERSON> calculatedMicroBrickUri: <PERSON> calculatedMicroBrickValue: String,\n)\n\n\nTriggersTrigger actionComponentActionDefault timeIN Events incoming Callback Service: Pre-Callback:<ORGANIZATION> LogicFull events trigger pre-callback stream and during processing, partial events are processed with generated changes. If data is in sync partial event is not generated, and the main event is forwarded to external clientsrealtime - events streamUser - triggers a change in mappingAPI: Callback-service - sync consul <ORGANIZATION>:ReloadService - streamingThe business user changes the mapping file. Process refreshed Consul store, copies data to changelog topic and this triggers real-time processing on Reload serviceManual Trigger by <ORGANIZATION> - events streamDependent componentsComponentUsageCallback ServiceMain component of flow implementationEntity EnricherGenerates incoming events full eventsManagerProcess callbacks generated by this service"
|
||
},
|
||
{
|
||
"title": "RankSorters",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/RankSorters",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Address RankSorter",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Address+RankSorter",
|
||
"content": "GLOBAL - IQVIA modelThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. Address provided by source "Reltio" is higher in the hierarchy than the Address provided by "<ORGANIZATION>" source. Based on this configuration, each specialty will be sorted in the following order:addressSource: "Reltio": 1 "EVR": 2 "OK": 3 "AMPCO": 4 "<ORGANIZATION>": 5 "NUCLEUS": 6 "<ORGANIZATION>": 7 "MDE": 8 "LocalMDM": 9 "PFORCERX": 10 "VEEVA_NZ": 11 "VEEVA_AU": 12 "VEEVA_PHARMACY_AU": 13 "<ORGANIZATION>": 14 "FACE": 15 "KOL_OneView": 16 "<LOCATION>": 17 "GCP": 18 "<ORGANIZATION>": 19 "CN3RDPARTY": 20 "Rx_Audit": 21 "PCMS": 22 "CICR": <DATE_TIME>, Address Rank Sorting is based on the following configuration:Address will be sorted based on <ORGANIZATION> attribute in the following order:addressType: "[TYS.P]": 1 "[<URL>YS]": 2 "[TYS.S]": 3 "[TYS.L]": 4 "[TYS.M]": 5 "[Mailing]": 6 "[TYS.F]": 7 "[TYS.HEAD]": 8 "[<URL>AR]": 9 "[Unknown]": 10Address will be sorted based on <ORGANIZATION> attribute in the following order:addressValidationStatus: "[STA.3]": 1 "[validated]": 2 "[Y]": 3 "[STA.0]": 4 "[pending]": 5 "[NEW]": 6 "[RNEW]": 7 "[selfvalidated]": 8 "[SVALD]": 9 "[preregister]": 10 "[notapplicable]": 11 "[N]": 97 "[notvalidated]": 98 "[STA.9]": 99Address will be sorted based on Status attribute in the following order:addressStatus: "[VALD]": 1 "[<ORGANIZATION>]": 2 "[INAC]": 98 "[<ORGANIZATION>]": 99Address rank sort process operates under the following conditions:First, before address ranking the Affiliation RankSorter have to be executed. It is required to get the appropriate value on the <URL>imaryAffiliationIndicator attribute valueEach address is sorted with the following rules:sort by the PrimaryAffiliationIndicator value. The address with "true" values is ranked higher in the hierarchy. The attribute used in this step is taken from the <URL>imaryAffiliationIndicatorsort by Validation Status (lowest rank from the configuration on TOP) - attribute <URL>lidationStatussort by Status (lowest rank from the configuration on TOP) - attribute <URL>atussort by Source Name (lowest rank from the configuration on TOP) - this is calculated based on the <URL>osswalks, means that each address is associated with the appropriate crosswalk and based on the input configuration the order is <URL>rt by <ORGANIZATION> (true value wins against false value) - attribute <URL>imaryAffiliationsort by Address Type (lowest rank from the configuration on TOP) - attribute <URL><PERSON> by Rank (lowers rank on TOP) in descending order 1 -> 99 - attribute <URL><ORGANIZATION> by <ORGANIZATION> (highest <ORGANIZATION> date on TOP) in descending order 2017.07 -> 2017.06 - attribute <URL>osswalks.updateDatesort by Label value alphabetically in ascending order A -> Z - attribute <URL>belSorted addresses are recalculated for the new Rank – each Address Rank is reassigned with an appropriate number from lowest to <URL>ditionally:When <URL>leteDate exists, then the address is excluded from the sorting processWhen recalculated <PERSON> has a value equal to "1" then <ORGANIZATION> attribute is added with the value set to "true"Address rank sort process fallback operates under the following conditions:During Validation Status from configuration (, 1.b) sorting, when <ORGANIZATION> attribute is missing address, is placed on 90 position ( which means that empty validation status is higher in the ranking than e.g. STA.9 status)During Status from configuration (1.c) sorting when the <ORGANIZATION> attribute is missing address is placed on 90 position (which means that empty status is higher in the ranking than e.g. <ORGANIZATION> status)When Source system name (1.d) is missing address, address is placed on 99 positionWhen address Type (1.e) is empty, address is placed on 99 positionWhen Rank (1.f) is empty, address is placed on 99 positionFor multiple Address Types for the same relation – an address with a higher rank is takenBusiness requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*"
|
||
},
|
||
{
|
||
"title": "Addresses RankSorter",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Addresses+RankSorter",
|
||
"content": "GLOBAL USThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. Address provided by source "<ORGANIZATION>" is higher in the hierarchy than the Address provided by "COV" source. Configuration is divided by country and source lists, for which this order is applicable. Based on this configuration, each address will be sorted in the following order:addressesSource: - countries: - "ALL" sources: - "ALL" rankSortOrder: "Reltio" : 1 "ONEKEY" : 2 "IQVIA_RAWDEA" : 3 "IQVIA_DDD" : 4 "HCOS" : 5 "SAP" : 6 "SAPVENDOR" : 7 "COV" : 8 "DVA" : 9 "ENGAGE" : 10 "KOL_OneView" : 11 "ONEMED" : 11 "ICUE" : 12 "DDDV" : 13 "MMIT" : 14 "MILLIMAN_MCO" : 15 "SHS": 16 "COMPANY_ACCTS" : 17 "<NRP>" : 18 "SEAGEN": 19 "CENTRIS" : 20 "ASTELAS" : 21 "EMD_SERONO" : 22 "MAPP" : 23 "<ORGANIZATION>" : 24 "VALKRE" : 25 "THUB" : 26 "PTRS" : 27 "MEDISPEND" : 28 "PORZIO" : 29 Additionally, Addresses Rank Sorting is based on the following configuration:The address will be sorted based on <ORGANIZATION> attribute in the following order:addressType: "[OFFICE]": 1 "[PHYSICAL]": 2 "[MAIN]": 3 "[SHIPPING]": 4 "[MAILING]": 5 "[BILLING]": 6 "[SOLD_TO]": 7 "[HOME]": 8 "[PO_BOX]": 9Address rank sort process operates under the following conditions:Each address is sorted with the following rules:sort by address status (active addresses on top) - attribute Status (is Active)sort by the source order number from input source order configuration (lowest rank from the configuration on TOP) - source is taken from last updated crosswalk <URL>osswalks.updateDate once multiple from the same sourcesort by <ORGANIZATION> flag (<ORGANIZATION> only with <ORGANIZATION> flag set to true on top) - attribute DEAFlagsort by <PERSON> (true on top) - attribute SingleAddressIndsort by Source Rank (lowers rank on TOP) in descending order 1 -> 99 - for <ORGANIZATION> rank is calculated with minus sign - attribute <URL><ORGANIZATION> by address type of <ORGANIZATION> and <ORGANIZATION> only (lowest rank from the configuration on TOP) - attribute AddressTypesort by COMPANYAddressId (addresses with this attribute are on top) - attribute COMPANYAddressIDSorted addresses are recalculated for new Rank – each Address Rank is reassigned with an appropriate number from lowest to highest - attribute AddressRankAdditionally:When <URL>leteDate exists, then the address is excluded from the sorting <PERSON> explaining reverse rankings for <ORGANIZATION> Addresses:Here is the clarification:The minus rank can be related only to <ORGANIZATION> source and will be related to the lowest precedence <URL>l other sources, different than <ORGANIZATION>, contains the normal <ORGANIZATION> source precedence - it means that the SourceRank 1 will be on top. We will sort <ORGANIZATION> attribute in ascending order 1 -> 99 (lowest source rank on TOP), so SourceRank 1 will be first, SourceRank <DATE_TIME> and so on.Due to the <ORGANIZATION> data in <LOCATION> - That rank code is a number from 10 to -10 with the larger number (i.e., 10) being the top ranked. We have a logic that makes an opposite ranking on <ORGANIZATION> attribute. We are sorting in descending order …<DATE_TIME>, meaning that the rank 10 will be on TOP (highest source rank on <PERSON> have reverse the <ORGANIZATION> logic for <ORGANIZATION>, otherwise it led to -10 <ORGANIZATION> ranked on <URL> <LOCATION> <ORGANIZATION> contains minus sign and are ranked in descending order. (10,9,8…-1,-2..-10)I am sorry for the confusion that was made in previous <URL>is opposite logic for <ORGANIZATION> data is in:Addresses: <URL> feature requires the following configuration:Address SourceThis map contains sources with appropriate sort numbers, which means e.g. Configuration is divided by country and source lists, for which this order is applicable. Address provided by source "Reltio" is higher in the hierarchy than the Address provided by "<ORGANIZATION>" source. Based on this configuration, each address will be sorted in the following order:EMEAaddressesSource: - countries: - GB - IE - FK - FR - BL - GP - MF - MQ - NC - PF - PM - RE - TF - WF - ES - DE - IT - VA - SM - TR - RU rankSortOrder: Reltio: 1 ONEKEY: 2 SAP: 3 SAPVENDOR: 4 PFORCERX: 5 PFORCERX_ODS: 5 KOL_OneView: 6 ONEMED: 6 ENGAGE: 7 MAPP: 8 SEAGEN: 9 GRV: 10 GCP: 11 <ORGANIZATION>: 12 BIODOSE: 13 <ORGANIZATION>: 14 CH: 15 HCH: 16 CSL: 17 1CKOL: 18 VEEVALINK: 19 VALKRE: 201 THUB: 21 PTRS: 22 MEDISPEND: 23 PORZIO: 24 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 ONEKEY: 2 MEDPAGESHCP: 3 MEDPAGESHCO: 3 SAP: 4 SAPVENDOR: 5 ENGAGE: 6 MAPP: 7 PFORCERX: 8 PFORCERX_ODS: 8 KOL_OneView: 9 ONEMED: 9 SEAGEN: 10 GRV: 11 GCP: 12 <ORGANIZATION>: 13 <ORGANIZATION>: 14 PULSE_KAM: 15 WEBINAR: 16 DREAMWEAVER: 17 EVENTHUB: 18 SPRINKLR: 19 VEEVALINK: 20 VALKRE: 21 THUB: 22 PTRS: 23 MEDISPEND: 24 PORZIO: 25 sources: - ALLAMERaddressesSource: - countries: - ALL rankSortOrder: Reltio: 1 DCR_SYNC: 2 <ORGANIZATION>: 3 IMSO: 4 <ORGANIZATION>: 5 PFCA: 6 <ORGANIZATION>: 7 PFORCERX: 8 PFORCERX_ODS: 8 <ORGANIZATION>: 9 SAPVENDOR: 10 LEGACY_SFA_IDL: 11 ENGAGE: 12 <ORGANIZATION>: 13 <ORGANIZATION>: 14 <LOCATION>: 15 KOL_OneView: 16 ONEMED: 16 <ORGANIZATION>: 17 <ORGANIZATION>: 18 RX_AUDIT: 19 <ORGANIZATION>: 20 VALKRE: 21 THUB: 22 PTRS: 23 <PERSON>: 24 <ORGANIZATION>: 25 sources: - ALLAPACaddressesSource: - countries: - CN rankSortOrder: Reltio: 1 EVR: 2 <ORGANIZATION>: 3 FACE: 4 <LOCATION>: 5 CN3RDPARTY: 6 <ORGANIZATION>: 7 PFORCERX_ODS: 7 KOL_OneView: 8 ONEMED: 8 ENGAGE: 9 <ORGANIZATION>: 10 GCP: 11 <ORGANIZATION>: 12 <ORGANIZATION>: 13 <ORGANIZATION>: 14 PTRS: 15 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 <ORGANIZATION>: 2 <ORGANIZATION>: 3 <ORGANIZATION>: 4 <ORGANIZATION>: 5 PFORCERX_ODS: 5 SAP: 6 SAPVENDOR: 7 KOL_OneView: 8 ONEMED: 8 ENGAGE: 9 <ORGANIZATION>: 10 SEAGEN: 11 <LOCATION>: 12 <ORGANIZATION>: 13 <ORGANIZATION>: 14 PCMS: 15 WEBINAR: 16 DREAMWEAVER: 17 EVENTHUB: 18 <ORGANIZATION>: 19 <ORGANIZATION>: 20 VALKRE: 21 THUB: 22 PTRS: 23 <PERSON>: 24 <ORGANIZATION>: 25 sources: - ALLAddress Type attribute:This map contains <ORGANIZATION> attribute values with appropriate sort numbers, which means e.g. Address Type AT.OFF is higher in the hierarchy than <ORGANIZATION>. Based on this configuration, each address will be sorted in the following order:addressType: "[OFF]": 1 "[BUS]": 2 "[DEL]": 3 "[LGL]": 4 "[MAIL]": 5 "[BILL]": 6 "[HOM]": 7 "[UNSP]": 99 Address Status attributeThis map contains Address Status attribute values with appropriate sort numbers, which means e.g. Address Status VALID is higher in the hierarchy than the Address Status ACTV. Based on this configuration, each address will be sorted in the following order:addressStatus: "[AS.VLD]": 1 "[<URL>TV]": 1 NULL: 90 "[<URL>AC]": 99 "[<URL>VLD]": 99Address rank sort process operates under the following conditions:Each address is sorted with the following rules: sort by Primary affiliation indicator - address related to affiliation with primary usage tag on top, <ORGANIZATION> and <ORGANIZATION> addresses are compared by fields: <ORGANIZATION>, AddressLine1, <LOCATION>, StateProvince and Zip5sort by <URL>imary attribute - primary addresses on TOP - applicable only for <ORGANIZATION> entitiessort by address status <URL>atus (contains the <ORGANIZATION> configuration)sort by the source order number from input source order configuration (lowest rank from the configuration on TOP) - source is taken from the last updated crosswalk <URL>osswalks.updateDate once multiple from the same sourcesort by address type (lowest rank from the configuration on TOP) - attribute <URL>dressTypesort by Source Rank (lowers rank on TOP) in descending order 1 -> 99 - attribute <URL><ORGANIZATION> by COMPANYAddressId (addresses with this attribute are on top) - attribute <URL>PANYAddressIDsort by address label (alphabetically from A to Z)Sorted addresses are recalculated for new Rank – each Address Rank is reassigned with an appropriate number from lowest to highest - attribute AddressRankAdditionally:When <URL>leteDate exists, then the address is excluded from the sorting processBusiness requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*"
|
||
},
|
||
{
|
||
"title": "Affiliation RankSorter",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Affiliation+RankSorter",
|
||
"content": "GLOBAL - IQVIA modelThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. <ORGANIZATION> provided by source "Reltio" is higher in the hierarchy than the <ORGANIZATION> provided by "<ORGANIZATION>" source. Based on this configuration, each specialty will be sorted in the following order:affiliation: "Reltio": 1 "EVR": 2 "OK": 3 "AMPCO": 4 "<ORGANIZATION>": 5 "NUCLEUS": 6 "<ORGANIZATION>": 7 "MDE": 8 "LocalMDM": 9 "PFORCERX": 10 "VEEVA_NZ": 11 "VEEVA_AU": 12 "VEEVA_PHARMACY_AU": 13 "<ORGANIZATION>": 14 "FACE": 15 "KOL_OneView": 16 "<LOCATION>": 17 "GCP": 18 "<ORGANIZATION>": 19 "CN3RDPARTY": 20 "Rx_Audit": 21 "PCMS": 22 "CICR": 23The affiliation rank sort process operates under the following conditions:Each workplace is sorted with the following rules:sort by Source Name (lowest rank from the configuration on TOP) - this is calculated based on the <URL>osswalks, means that each address is associated with the appropriate crosswalk, and based on the input configuration the order is <URL>rt by <ORGANIZATION> (highest <ORGANIZATION> date on TOP) in descending order 2017.07 -> 2017.06 - attribute <URL>osswalks.updateDatesort by Label value alphabetically in ascending order A -> Z - attribute <URL>belSorted workplaces are recalculated for the new PrimaryAffiliationIndicator attribute – each <ORGANIZATION> is reassigned with an appropriate value. The winner gets the "true" on the PrimaryAffiliationIndicator. Any looser, if exists is reasigned to "false"Additionally:When <URL>leteDate exists, then the workplace is excluded from the sorting processGLOBAL USThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. <ORGANIZATION> with name "35" is higher in the hierarchy than <ORGANIZATION> with the name "27". Based on this configuration, each affiliation will be sorted in the following order:facilityType: "35": 1 "<ORGANIZATION>": 1 "34": 1 "27": 2Each affiliation before sorting is enriched with the <ORGANIZATION> attribute which contains information about <ORGANIZATION> because there are attributes that are needed during <URL>filiation rank sort process operates under the following conditions:Each affiliation is sorted with the following rulessort by facility type (the lower number is on top) - attribute ClassofTradeN.FacilityTypesort by affiliation confidence code DESC(the higher number or if exists it is on top) - attribute <URL>filiationConfidenceCodesort by staffed beds (if it exists it is higher and higher number on top) - attribute Bed.Type("StaffedBeds").Totalsort by total prescribers (if it exists it is higher and higher number on top) - attribute <ORGANIZATION> by org identifier (if it exists it is higher and if not it compares is as a string) - attribute Identifiers.Type("HCOS_ORG_ID").IDSorted affiliation are recalculated for new <ORGANIZATION> - each <ORGANIZATION> is reassigned with an appropriate number from lowest to highest - attribute RankAffiliation with Rank = "1" is enriched with the <ORGANIZATION> attribute with the "Primary" <URL>ditionally:If facility type is not found it is set to 99EMEA/<ORGANIZATION>/APACThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. <ORGANIZATION> provided by source "Reltio" is higher in the hierarchy than <ORGANIZATION> provided by "<ORGANIZATION>" source. Configuration is divided by country and source lists, for which this order is applicable. Based on this configuration, each specialty will be sorted in the following order:EMEAaffiliation: - countries: - GB - IE - FK - FR - BL - GP - MF - MQ - NC - PF - PM - RE - TF - WF - ES - DE - IT - VA - SM - TR - RU rankSortOrder: Reltio: 1 ONEKEY: 2 SAP: 3 SAPVENDOR: 4 PFORCERX: 5 PFORCERX_ODS: 5 KOL_OneView: 6 ONEMED: 6 ENGAGE: 7 MAPP: 8 SEAGEN: 9 VALKRE: 10 GRV: 11 GCP: 12 <ORGANIZATION>: 13 BIODOSE: 14 BUPA: 15 CH: 16 HCH: 17 CSL: 18 THUB: 19 PTRS: 20 1CKOL: 21 MEDISPEND: 22 VEEVALINK: 23 PORZIO: 24 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 ONEKEY: 2 MEDPAGESHCP: 3 MEDPAGESHCO: 3 SAP: 4 SAPVENDOR: 5 PFORCERX: 6 PFORCERX_ODS: 6 KOL_OneView: 7 ONEMED: 7 ENGAGE: 8 MAPP: 9 SEAGEN: 10 VALKRE: 11 GRV: 12 GCP: 13 <ORGANIZATION>: 14 <ORGANIZATION>: 15 PULSE_KAM: 16 WEBINAR: 17 DREAMWEAVER: 18 EVENTHUB: 19 SPRINKLR: 20 THUB: 21 PTRS: 22 VEEVALINK: 23 MEDISPEND: 24 PORZIO: 25 sources: - ALL AMERaffiliation: - countries: - ALL rankSortOrder: Reltio: 1 DCR_SYNC: 2 <ORGANIZATION>: 3 <ORGANIZATION>: 4 SAPVENDOR: 5 <ORGANIZATION>: 6 PFORCERX_ODS: 6 KOL_OneView: 7 ONEMED: 7 LEGACY_SFA_IDL: 8 ENGAGE: 9 <ORGANIZATION>: 10 SEAGEN: 11 VALKRE: 12 <LOCATION>: 13 <ORGANIZATION>: 14 <ORGANIZATION>: 15 IMSO: 16 <ORGANIZATION>: 17 PFCA: 18 <ORGANIZATION>: 19 THUB: 20 PTRS: 21 RX_AUDIT: 22 <ORGANIZATION>: 23 <PERSON>: 24 <ORGANIZATION>: 25 sources: - ALLAPACaffiliation: - countries: - CN rankSortOrder: Reltio: 1 EVR: 2 <ORGANIZATION>: 3 FACE: 4 <LOCATION>: 5 CN3RDPARTY: 6 GCP: 7 <ORGANIZATION>: 8 <ORGANIZATION>: 9 PFORCERX_ODS: 9 KOL_OneView: 10 ONEMED: 10 ENGAGE: 11 <ORGANIZATION>: 12 VALKRE: 13 <ORGANIZATION>: 14 PTRS: 15 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 <ORGANIZATION>: 2 <ORGANIZATION>: 3 <ORGANIZATION>: 4 <ORGANIZATION>: 5 SAPVENDOR: 6 <ORGANIZATION>: 7 PFORCERX_ODS: 7 KOL_OneView: 8 ONEMED: 8 ENGAGE: 9 <ORGANIZATION>: 10 SEAGEN: 11 VALKRE: 12 <LOCATION>: 13 <ORGANIZATION>: 14 <ORGANIZATION>: 15 <ORGANIZATION>: 16 WEBINAR: 17 DREAMWEAVER: 18 EVENTHUB: 19 <ORGANIZATION>: 20 THUB: 21 PTRS: 22 <ORGANIZATION>: 23 <PERSON>: 24 <ORGANIZATION>: 25 sources: - ALLThe affiliation rank sort process operates under the following conditions:Each contact affiliation is sorted with the following rules:sort by affiliation status - active on topsort by source prioritysort by source rank - attribute <URL><ORGANIZATION>, ascendingsort by confidence level - attribute <URL>filiationConfidenceCodesort by attribute last updated date - newest at the topsort by Label value alphabetically in ascending order A -> Z - attribute <URL>belSorted contact affiliations are recalculated for the new primary usage tag attribute – each contact affiliation is reassigned with an appropriate value. The winner gets the "true" on the primary usage <URL>ditionally:When <URL>leteDate exists, then the workplace is excluded from the sorting processBusiness requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*"
|
||
},
|
||
{
|
||
"title": "Email RankSorter",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Email+RankSorter",
|
||
"content": "GLOBAL - IQVIA modelThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. <PERSON> provided by source "1CKOL" is higher in the hierarchy than Email provided by any other source. Based on this configuration, each email address will be sorted in the following order:email: - countries: - "ALL" sources: - "ALL" rankSortOrder: "1CKOL": 1Email rank sort process operates under the following conditions:Each email is sorted with the following rulesGroup by the TypeIMS attribute and sort each group:sort by source rank (the lower number on top of the one with this attribute)sort by the validation status (VALID value is the winner) - attribute ValidationStatussort by <ORGANIZATION> (highest <ORGANIZATION> date on TOP) in descending order 2017.07 -> 2017.06 - attribute crosswalks.updateDatesort by email value alphabetically in ascending order A -> Z - attribute <URL>Sorted emails are recalculated for the new Rank - each Email Rank is reassigned with an appropriate numberGLOBAL USThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. <PERSON> provided by source "<LOCATION>" is higher in the hierarchy than Email provided by "<ORGANIZATION>" source. Configuration is divided by country and source lists, for which this order is applicable. Based on this configuration, each email address will be sorted in the following order:email: - countries: - "ALL" sources: - "ALL" rankSortOrder: "Reltio" : 1 "<LOCATION>" : 2 "ENGAGE" : 3 "KOL_OneView" : 4 "ONEMED" : 4 "ICUE" : 5 "MAPP" : 6 "ONEKEY" : 7 "SHS" : 8 "<ORGANIZATION>": 9 "SEAGEN": 10 "CENTRIS" : 11 "ASTELAS" : 12 "EMD_SERONO" : 13 "<NRP>" : 14 "IQVIA_RAWDEA" : 15 "COV" : 16 "THUB" : 17 "PTRS" : 18 "SAP" : 19 "SAPVENDOR": 20 "IQVIA_DDD" : 22 "VALKRE": 23 "MEDISPEND" : 24 "PORZIO" : 25Email rank sort process operates under the following conditions:Each email is sorted with the following rulessort by source order (the lower number on top)sort by source rank (the lower number on top of the one with this attribute)Sorted email are recalculated for new Rank - each Email Rank is reassigned with an appropriate numberEMEA/AMER/APACThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. <PERSON> provided by source "Reltio" is higher in the hierarchy than Email provided by "GCP" source. Configuration is divided by country and source lists, for which this order is applicable. Based on this configuration, each email address will be sorted in the following order:<ORGANIZATION>: - countries: - GB - IE - FK - FR - BL - GP - MF - MQ - NC - PF - PM - RE - TF - WF - ES - DE - IT - VA - SM - TR - RU rankSortOrder: Reltio: 1 1CKOL: 2 GCP: 3 GRV: 4 <ORGANIZATION>: 5 ENGAGE: 6 MAPP: 7 VEEVALINK: 8 SEAGEN: 9 KOL_OneView: 10 ONEMED: 10 PFORCERX: 11 PFORCERX_ODS: 11 THUB: 12 PTRS: 13 ONEKEY: 14 SAP: 15 SAPVENDOR: 16 <ORGANIZATION>: 17 BIODOSE: 18 BUPA: 19 CH: 20 HCH: 21 CSL: 22 MEDISPEND: 23 PORZIO: 24 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 GCP: 2 GRV: 3 <ORGANIZATION>: 4 ENGAGE: 5 MAPP: 6 VEEVALINK: 7 SEAGEN: 8 KOL_OneView: 9 ONEMED: 9 PULSE_KAM: 10 SPRINKLR: 11 WEBINAR: 12 DREAMWEAVER: 13 EVENTHUB: 14 PFORCERX: 15 PFORCERX_ODS: 15 THUB: 16 PTRS: 17 ONEKEY: 18 MEDPAGESHCP: 19 MEDPAGESHCO: 19 SAP: 20 SAPVENDOR: 21 <ORGANIZATION>: 22 MEDISPEND: 23 PORZIO: 24 sources: - ALLAMERemail: - countries: - ALL rankSortOrder: Reltio: 1 DCR_SYNC: 2 GCP: 3 <LOCATION>: 4 <ORGANIZATION>: 5 ENGAGE: 6 <ORGANIZATION>: 7 <ORGANIZATION>: 8 SEAGEN: 9 KOL_OneView: 10 ONEMED: 10 PFORCERX: 11 PFORCERX_ODS: 11 <ORGANIZATION>: 12 IMSO: 13 <ORGANIZATION>: 14 PFCA: 15 <ORGANIZATION>: 16 THUB: 17 PTRS: 18 <ORGANIZATION>: 19 SAPVENDOR: 20 LEGACY_SFA_IDL: 21 RX_AUDIT: 22 <PERSON>: 23 <ORGANIZATION>: 24 sources: - ALLAPACemail: - countries: - CN rankSortOrder: Reltio: 1 EVR: 2 <ORGANIZATION>: 3 FACE: 4 <LOCATION>: 5 CN3RDPARTY: 6 ENGAGE: 7 <NRP>: 8 <ORGANIZATION>: 9 KOL_OneView: 10 ONEMED: 10 PFORCERX: 11 PFORCERX_ODS: 11 THUB: 12 PTRS: 13 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 <ORGANIZATION>: 2 PCMS: 3 GCP: 4 <LOCATION>: 5 <ORGANIZATION>: 6 ENGAGE: 7 <NRP>: 8 <ORGANIZATION>: 9 SEAGEN: 10 KOL_OneView: 11 ONEMED: 11 <ORGANIZATION>: 12 WEBINAR: 13 <ORGANIZATION>: 14 EVENTHUB: 15 <ORGANIZATION>: 16 PFORCERX_ODS: 16 THUB: 17 PTRS: 18 <ORGANIZATION>: 19 <ORGANIZATION>: 20 <ORGANIZATION>: 21 SAPVENDOR: 22 <PERSON>: 23 <ORGANIZATION>: 24 sources: - <LOCATION> rank sort process operates under the following conditions:Each email is sorted with the following rules sort by cleanser status - valid/invalidsort by source order (the lower number on top)sort by source rank (the lower number on top of the one with this attribute)sort by last updated date - newest at the topsort by email value alphabetically in ascending order A -> Z - attribute <URL>belSorted email are recalculated for new Rank - each Email Rank is reassigned with an appropriate numberBusiness requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*"
|
||
},
|
||
{
|
||
"title": "Identifier RankSorter",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Identifier+RankSorter",
|
||
"content": "IQVIA Model (Global)AlgorithmThe identifier rank sort process operates under the following conditions:Each Identifier is grouped by Identifier Type: e.g GRV_ID / GCP ID / MI_ID / Physician_Code /. .. – each group is sorted separately.Each group is sorted with the following rules:By identifier "Source System order configuration" (lowest rank from the configuration on TOP)By identifier Order (lower ranks on TOP) in descending order 1 -> 99 - attribute OrderBy update date (<ORGANIZATION>) (highest <ORGANIZATION> date on TOP) in descending order 2017.07 -> 2017.06 - attribute crosswalks.updateDateBy Identifier value (alphabetically in ascending order A -> Z)Sorted identifiers are optionally deduplicated (by Identifier Type in each group) – from each group, the lowest in rank and the duplicated identifier is removed. Currently the ( isIgnoreAndRemoveDuplicates = False) is set to False, which means that groups are not deduplicated. Duplicates are removed by <URL>rted identifiers are recalculated for the new Rank – each Rank (for each sorted group) is reassigned with an appropriate number from lowest to highest. - attribute - OrderIdentifier rank sort process fallback operates under the following conditions:When Identifier Type is empty – each empty identifier is grouped together. Each identifier with an empty type is added to the "EMPTY" group and sorted and <ORGANIZATION> duplicated separately.During source system from configuration (2.a) sorting when Source system is missing identifier is placed on 99 positionDuring <ORGANIZATION> (, <DATE_TIME>) sorting when the Source system is missing identifier is placed on 99 positionSource Order Configuration This feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. Identifier provided by source "Reltio" is higher in the hierarchy than the Identifier provided by the "<ORGANIZATION>" source. Based on this configuration each identifier will be sorted in the following order:Updated: <DATE_TIME> (EX-US)Countries(in environment)CNOthersSource OrderReltio: 1EVR: 2MDE: 3MAPP: 4FACE: 5CRMMI: 6KOL_OneView: 7GRV: 8CN3RDPARTY: 9Reltio: 1EVR: 2OK: 3AMPCO: 4JPDWH: 5NUCLEUS: 6CMM: 7MDE: 8LocalMDM: 9PFORCERX: 10VEEVA_NZ: 11VEEVA_AU: 12VEEVA_PHARMACY_AU: 13CRMMI: 14FACE: 15KOL_OneView: 16GRV: 17GCP: 18MAPP: 19CN3RDPARTY: 20Rx_Audit: 21PCMS: 22CICR: 23COMPANY ModelAlgorithmIdentifier Rank sort algorithm slightly varies from the IQVIA model one:Identifiers are grouped by Type (Identifiers.Type field). Identifiers without a Type count as a separate group.Each group is sorted separately according to following rules:By Trust flag (<URL>ust field). "Yes" takes precedence over "No". If Trust flag is missing, it's as if it was equal to "No".By Source Order (table below). Lowest rank from configuration takes precedence. If a Source is missing in configuration, it gets the lowest possible order (99).By Status (<URL>atus). Valid/Active status takes precedence over Invalid/Inactive/missing status. List of status codes is configurable. Currently (<DATE_TIME>), the following codes are configured in all COMPANY environments:Valid codes: [HCPIS.VLD], [<URL>TV], [HCOIS.VLD], [<URL>TV]Invalid codes: [<URL>AC], [<URL>VLD], [<URL>AC], [<URL>VLD]By Source Rank (<URL><ORGANIZATION> field). Lowest rank takes <URL> <ORGANIZATION>. Latest <ORGANIZATION> takes precedence. <ORGANIZATION> is equal to the highest of 3 dates: providing crosswalk's createDateproviding crosswalk's updateDateproviding crosswalk's singleAttributeUpdateDate for this Identifier (if present)By ID alphabetically. This is a fallback <URL>rted identifiers are recalculated for the new Rank – each Rank (for each sorted group) is reassigned with an appropriate number from lowest to highest. - attribute - <URL>urce Order ConfigurationUpdated: <DATE_TIME> (in environment)ALLALLEU:GBIEFRBLGPMFMQNCPFPMRETFWFESDEITVASMTRRUOthers (AfME)CNOthersSource OrderReltio: 1ONEKEY: 2ICUE: 3ENGAGE: 4KOL_OneView: 5ONEMED: 5GRV: 6SHS: 7IQVIA_RX: 8IQVIA_RAWDEA: 9SEAGEN: 10CENTRIS: 11MAPP: 12ASTELAS: 13EMD_SERONO: 14COV: 15SAP: 16SAPVENDOR: 17IQVIA_DDD: 18PTRS: 19Reltio: 1ONEKEY: 2PFORCERX: 3PFORCERX_ODS: 3KOL_OneView: 4ONEMED: 4LEGACY_SFA_IDL: 5ENGAGE: 6MAPP: 7SEAGEN: 8GRV: 9GCP: 10SSE: 11IMSO: 12CS: 13PFCA: 14SAP: 15SAPVENDOR: 16PTRS: 17RX_AUDIT: 18Reltio: 1ONEKEY: 2PFORCERX: 3PFORCERX_ODS: 3KOL_ONEVIEW: 4ENGAGE: 5MAPP: 6SEAGEN: 7GRV: 8GCP: 9SSE: 101CKOL: 11SAP: 12SAPVENDOR: 13BIODOSE: 14BUPA: 15CH: 16HCH: 17CSL: 18Reltio: 1ONEKEY: 2MEDPAGES: 3MEDPAGESHCP: 3MEDPAGESHCO: 3PFORCERX: 4PFORCERX_ODS: 4KOL_ONEVIEW: 5ENGAGE: 6MAPP: 7SEAGEN: 8GRV: 9GCP: 10SSE: 11PULSE_KAM: 12WEBINAR: 13SAP: 14SAPVENDOR: 15SDM: 16PTRS: 17Reltio: 1EVR: 2MDE: 3FACE: 4GRV: 5CN3RDPARTY: 6GCP: 7PFORCERX: 8PFORCERX_ODS: 8KOL_OneView: 9ONEMED: 9ENGAGE: 10MAPP: 11PTRS: 12Reltio: 1ONEKEY: 2JPDWH: 3VOD: 4PFORCERX: 5PFORCERX_ODS: 5KOL_OneView: 6ONEMED: 6ENGAGE: 7MAPP: 8SEAGEN: 9GRV: 10GCP: 11SSE: 12PCMS: 13PTRS: 14SAP: 15SAPVENDOR: 16Business requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*"
|
||
},
|
||
{
|
||
"title": "OtherHCOtoHCOAffiliations <ORGANIZATION>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/OtherHCOtoHCOAffiliations+RankSorter",
|
||
"content": "<ORGANIZATION> (currently for <LOCATION> and NZ)Business requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*The functionality is configured in the callback delay service. Allows you to set different types of sorting for each country. The configuration for <LOCATION> and <LOCATION> is shown below.rankSortOrder: affiliation: - countries: - AU - NZ rankExecutionOrder: - type: ATTRIBUTE attributeName: <ORGANIZATION> lookupCode: true order: REL.HIE: 1 <URL>I: 2 REL.FPA: 3 <URL>G: 4 REL.BUY: 5 <URL>N: 6 <URL>R: 7 REL.MBR: 8 <URL>M: 9 <URL>SS: 10 REL.WPC: 11 REL.WPIC: 12 <URL>U: 13 - type: ACTIVE - type: SOURCE order: Reltio: 1 ONEKEY: 2 <ORGANIZATION>: 3 SAP: 4 PFORCERX: 5 PFORCERX_ODS: 5 KOL_OneView: 6 ONEMED: 6 ENGAGE: 7 MAPP: 8 GRV: 9 GCP: 10 <ORGANIZATION>: 11 PCMS: 12 PTRS: 13 - type: <LOCATION> are grouped by endObjectId, then the whole bundle is sorted and ranked. The relationship's position on the list (its rank) for <LOCATION> and <LOCATION> is calculated based on the following algorithm:sorting by RelationshipDescription attribute - relationship with REL.HIE value on topsorting by relationship activity - active at the topsort by source position - Reltio source on topsort by <ORGANIZATION> (newest on top)"
|
||
},
|
||
{
|
||
"title": "Phone RankSorter",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Phone+RankSorter",
|
||
"content": "GLOBAL - IQVIA modelThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. Phones provided by source "Reltio" is higher in the hierarchy than the Address provided by "EVR" source. Based on this configuration, each phonewill be sorted in the following order:phone: - countries: - "ALL" sources: - "ALL" rankSortOrder: "Reltio": 1 "EVR": 2 "OK": 3 "AMPCO": 4 "<ORGANIZATION>": 5 "NUCLEUS": 6 "CMM": 7 "MDE": 8 "LocalMDM": 9 "PFORCERX": 10 "VEEVA_NZ": 11 "VEEVA_AU": 12 "VEEVA_PHARMACY_AU": 13 "<ORGANIZATION>": 14 "FACE": 15 "KOL_OneView": 16 "<LOCATION>": 17 "GCP": 18 "<ORGANIZATION>": 19 "CN3RDPARTY": 20 "Rx_Audit": 21 "PCMS": 22 "CICR": 23Phone rank sort process operates under the following conditions:Each phone is sorted with the following rulesGroup by the TypeIMS attribute and sort each group:sort by "Source System order configuration" (lowest rank from the configuration on TOP)sort by source rank (the lower number on top of the one with this attribute)sort by the validation status (VALID value is the winner) - attribute ValidationStatussort by <ORGANIZATION> (highest <ORGANIZATION> date on TOP) in descending order 2017.07 -> 2017.06 - attribute crosswalks.updateDatesort by number value alphabetically in ascending order A -> Z - attribute <URL>mberSorted phones are recalculated for the new Rank - each <ORGANIZATION> is reassigned with an appropriate numberGLOBAL USThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. Phone provided by source "<ORGANIZATION>" is higher in the hierarchy than the Phone provided by "ENGAGE" source. Configuration is divided by country and source lists, for which this order is applicable. Based on this configuration, each phone number will be sorted in the following order:phone: - countries: - "ALL" sources: - "ALL" rankSortOrder: "Reltio" : 1 "ONEKEY" : 2 "ICUE" : 3 "<ORGANIZATION>" : 4 "ENGAGE" : 5 "KOL_OneView" : 6 "ONEMED" : 6 "<LOCATION>" : 7 "SHS" : 8 "IQVIA_RX" : 9 "IQVIA_RAWDEA" : 10 "SEAGEN": 11 "CENTRIS" : 12 "MAPP" : 13 "ASTELAS" : 14 "EMD_SERONO" : 15 "COV" : 16 "SAP" : 17 "SAPVENDOR": 18 "IQVIA_DDD" : 19 "VALKRE" : 20 "THUB" : 21 "PTRS" : 22 "MEDISPEND" : 23 "PORZIO" : 24Phone number rank sort process operates under the following conditions:Each phone number is sorted with the following rules, on top, it is grouped by <URL> by the Type attribute and sort each group sort by source order (the lower number on top) - source name is taken from the last updated crosswalk for this Phone attributesort by source rank (the lower number on top or the one with this attribute) - attribute <URL><ORGANIZATION> for this Phone attributeSorted phone numbers are recalculated for new Rank - each <ORGANIZATION> is reassigned with an appropriate number - attribute Rank for <ORGANIZATION>/APACThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. Phone provided by source "<ORGANIZATION>" is higher in the hierarchy than the Phone provided by "ENGAGE" source. Configuration is divided by country and source lists, for which this order is applicable. Based on this configuration, each phone number will be sorted in the following order:EMEAphone: - countries: - GB - IE - FK - FR - BL - GP - MF - MQ - NC - PF - PM - RE - TF - WF - ES - DE - IT - VA - SM - TR - RU rankSortOrder: Reltio: 1 ONEKEY: 2 PFORCERX: 3 PFORCERX_ODS: 3 VEEVALINK: 4 KOL_OneView: 5 ONEMED: 5 ENGAGE: 6 MAPP: 7 SEAGEN: 8 GRV: 9 GCP: 10 <ORGANIZATION>: 11 1CKOL: 12 THUB: 13 PTRS: 14 SAP: 15 SAPVENDOR: 16 BIODOSE: 17 <ORGANIZATION>: 18 CH: 19 HCH: 20 CSL: 21 MEDISPEND: 22 PORZIO: 23 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 ONEKEY: 2 MEDPAGESHCP: 3 MEDPAGESHCO: 3 PFORCERX: 4 PFORCERX_ODS: 4 VEEVALINK: 5 KOL_OneView: 6 ONEMED: 6 ENGAGE: 7 MAPP: 8 SEAGEN: 9 GRV: 10 GCP: 11 <ORGANIZATION>: 12 PULSE_KAM: 13 SPRINKLR: 14 WEBINAR: 15 DREAMWEAVER: 16 EVENTHUB: 17 SAP: 18 SAPVENDOR: 19 <ORGANIZATION>: 20 THUB: 21 PTRS: 22 MEDISPEND: 23 PORZIO: 24 sources: - ALLAMERphone: - countries: - ALL rankSortOrder: Reltio: 1 DCR_SYNC: 2 <ORGANIZATION>: 3 <ORGANIZATION>: 4 PFORCERX_ODS: 4 <ORGANIZATION>: 5 KOL_OneView: 6 ONEMED: 6 LEGACY_SFA_IDL: 7 ENGAGE: 8 <NRP>: 8 SEAGEN: 9 <LOCATION>: 10 GCP: 11 <ORGANIZATION>: 12 IMSO: 13 <ORGANIZATION>: 14 PFCA: 15 <ORGANIZATION>: 16 <ORGANIZATION>: 17 SAPVENDOR: 18 THUB: 19 PTRS: 20 RX_AUDIT: 21 <PERSON>: 22 PORZIO: 23 sources: - ALLAPACphone: - countries: - CN rankSortOrder: Reltio: 1 EVR: 2 <ORGANIZATION>: 3 FACE: 4 <LOCATION>: 5 CN3RDPARTY: 6 GCP: 7 PFORCERX: 8 PFORCERX_ODS: 8 <ORGANIZATION>: 9 KOL_OneView: 10 ONEMED: 10 ENGAGE: 11 <ORGANIZATION>: 12 PTRS: 13 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 <ORGANIZATION>: 2 <ORGANIZATION>: 3 <ORGANIZATION>: 4 <ORGANIZATION>: 5 PFORCERX_ODS: 5 <ORGANIZATION>: 6 KOL_OneView: 7 ONEMED: 7 ENGAGE: 8 <ORGANIZATION>: 9 SEAGEN: 10 <LOCATION>: 11 <ORGANIZATION>: 12 <ORGANIZATION>: 13 <ORGANIZATION>: 14 THUB: 15 PTRS: 16 <ORGANIZATION>: 17 SAPVENDOR: 18 <ORGANIZATION>: 19 WEBINAR: 20 DREAMWEAVER: 21 EVENTHUB: 22 <PERSON>: 23 <ORGANIZATION>: 24 sources: - ALLPhone number rank sort process operates under the following conditions:Each phone number is sorted with the following rules, on top, it is grouped by <URL> by the Type attribute and sort each group sort by cleanser status - valid/invalidsort by source order (the lower number on top) - source name is taken from the last updated crosswalk for this Phone attributesort by source rank (the lower number on top or the one with this attribute) - attribute <URL><ORGANIZATION> for this Phone attributelast update date - newest to oldestsort by label - alphabetical order A-ZSorted phone numbers are recalculated for new Rank - each <ORGANIZATION> is reassigned with an appropriate number - attribute Rank for Phone attributeBusiness requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*"
|
||
},
|
||
{
|
||
"title": "Speaker <PERSON>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Speaker+RankSorter",
|
||
"content": "DescriptionUnlike other <ORGANIZATION>, Speaker Rank is expressed not by a nested "Rank" or "Order" field, but by the "ignore" flag."Ignore" flag sets the attribute's "ov" to false. By operating this flag, we assure that only the most valuable attribute is visible and sent downstream from <URL>gorithmSort all Speaker nestsSort by source hierarchyIf same source, sort by <DATE_TIME> (higher of crosswalk.updateDate / <URL>ngleAttributeUpdateDates/{speaker attribute uri})If same source and <ORGANIZATION>, sort by attribute URI (fallback <PERSON> sorted groupIf first Speaker nest has ignored == true, set ignored := false for that nestIf every next Speaker nest does not have ignored == true, set ignored := true for that nestPost the list of changes to Manager's async interface using <PERSON> topicGlobal - IQVIA ModelSpeaker RankSorter is active only for <LOCATION>. Source hierarchy is as follows:speaker: "Reltio": 1 "<ORGANIZATION>": 2 "FACE": 3 "EVR": 4 "MDE": 5 "<ORGANIZATION>": 6 "KOL_OneView": 7 "<LOCATION>": 8 "CN3RDPARTY": 9Specific ConfigurationUnlike other <ORGANIZATION> flows, Speaker <PERSON> requires both <NRP>=true and ov=false attribute values to work <URL>is is why:Entity <PERSON> configuration must be altered, to enrich entities with ov&nonOv values of "Speaker" attribute:\nbundle:\n nonOv: false\n ov: false\n nonOvAttributesToInclude:\n - "Speaker"\nPreCallback Service configuration must be altered to assure that nonOv values are cleaned from the event before passing it further down to the Event Publisher\ncleanOvFalseAttributeValues:\n - "Speaker"\nBusiness requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*"
|
||
},
|
||
{
|
||
"title": "Specialty RankSorter",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Specialty+RankSorter",
|
||
"content": "GLOBAL - IQVIA modelThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. Specialty provided by source "Reltio" is higher in the hierarchy than the <ORGANIZATION> provided by the "<ORGANIZATION>" source. Additionally, for <ORGANIZATION>, there is a difference between countries. The configuration for RU and <ORGANIZATION> contains only 4 sources and is different than the base configuration. Based on this configuration each specialty will be sorted in the following order:specialities: - countries: - "RU" - "TR" sources: - "ALL" rankSortOrder: "<LOCATION>": 1 "GCP": 2 "OK": 3 "KOL_OneView": 4 - countries: - "ALL" sources: - "ALL" rankSortOrder: "Reltio": 1 "EVR": 2 "OK": 3 "AMPCO": 4 "<ORGANIZATION>": 5 "NUCLEUS": 6 "CMM": 7 "MDE": 8 "LocalMDM": 9 "PFORCERX": 10 "VEEVA_NZ": 11 "VEEVA_AU": 12 "VEEVA_PHARMACY_AU": 13 "<ORGANIZATION>": 14 "FACE": 15 "KOL_OneView": 16 "<LOCATION>": 17 "GCP": 18 "<ORGANIZATION>": 19 "CN3RDPARTY": 20 "Rx_Audit": 21 "PCMS": 22 "CICR": 23The specialty rank sort process operates under the following conditions:Each Specialty is grouped by <ORGANIZATION> SPEC/TEND/QUAL/EDUC – each group is sorted separately.Each group is sorted with the following rules:By specialty "Source System order configuration" (lowest rank from the configuration on TOP)By specialty Rank (lower ranks on TOP) in descending order 1 -> 99By update date (<ORGANIZATION>) (highest <ORGANIZATION> date on TOP) in descending order 2017.07 -> 2017.06 - attribute crosswalks.updateDateBy Specialty Value (alphabetically in ascending order A -> Z)Sorted specialties are optionally deduplicated (by <ORGANIZATION> in each group) – from each group, the lowest in rank and the duplicated specialty is removed. Currently the ( isIgnoreAndRemoveDuplicates = False) is set to False, which means that groups are not deduplicated. Duplicates are removed by <URL>rted specialties are recalculated for the new Ranks – each Rank (for each sorted group) is reassigned with an appropriate number from lowest to <URL>ditionally, for the <ORGANIZATION> = 1 the best record is set to true - attribute - PrimarySpecialtyFlagSpecialty rank sort process fallback operates under the following conditions:When Specialty Type is empty – each empty specialty is grouped together. Each specialty with an empty type is added to the "EMPTY" group and sorted and <ORGANIZATION> duplicated separately.During source system from configuration (2.a) sorting when Source system is missing specialty is placed on 99 positionDuring <ORGANIZATION> (, <DATE_TIME>) sorting when the Source system is missing specialty is placed on 99 <ORGANIZATION> feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. <ORGANIZATION> provided by source "<ORGANIZATION>" is higher in the hierarchy than the <ORGANIZATION> provided by the "ENGAGE" source. Configuration is divided by country and source lists, for which this order is applicable. Based on this configuration, each <ORGANIZATION> will be sorted in the following order:specialities: - countries: - "ALL" sources: - "ALL" rankSortOrder: "Reltio" : 1 "ONEKEY" : 2 "IQVIA_RAWDEA" : 3 "<ORGANIZATION>" : 4 "ENGAGE" : 5 "KOL_OneView" : 6 "ONEMED" : 6 "SPEAKER" : 7 "ICUE" : 8 "SHS" : 9 "IQVIA_RX" : 10 "SEAGEN": 11 "CENTRIS" : 12 "ASTELAS" : 13 "EMD_SERONO" : 14 "MAPP" : 15 "<LOCATION>" : 16 "THUB" : 17 "PTRS" : 18 "VALKRE" : 19 "MEDISPEND" : 20 "PORZIO" : 21The specialty rank sort process operates under the following conditions:Specialty is sorted with the following rules, but on the top, it is grouped by <ORGANIZATION>.SpecialityType attribute:Group by <ORGANIZATION>.SpecialityType attribute and sort each group: sort by specialty unspecified status value (higher value on the top) - attribute Specialty with value <ORGANIZATION> by source order number (the lower number on the top) - source name is taken from crosswalk that was last updatedsort by source rank (the lower on the top) - attribute <URL><ORGANIZATION> by <DATE_TIME> (the earliest on the top) - last update date is taken from lately updated crosswalksort by specialty attribute value (string comparison) - attribute SpecialtySorted specialties are recalculated for new Rank - each <ORGANIZATION> is reassigned with an appropriate number - attribute RankAdditionally:If the source is not found it is set to 99If specialty unspecified attribute name or value is not set it is set to 99EMEA/<ORGANIZATION>/APACThis feature requires the following configuration. This map contains sources with appropriate sort numbers, which means e.g. <ORGANIZATION> provided by source "<ORGANIZATION>" is higher in the hierarchy than the <ORGANIZATION> provided by the "ENGAGE" source. Configuration is divided by country and source lists, for which this order is applicable. Based on this configuration, each <ORGANIZATION> will be sorted in the following order:<NRP>: - countries: - GB - IE - FK - FR - BL - GP - MF - MQ - NC - PF - PM - RE - TF - WF - ES - DE - IT - VA - SM - TR - RU rankSortOrder: Reltio: 1 ONEKEY: 2 PFORCERX: 3 PFORCERX_ODS: 3 VEEVALINK: 4 KOL_OneView: 5 ONEMED: 5 ENGAGE: 6 MAPP: 7 SEAGEN: 8 GRV: 9 GCP: 10 <ORGANIZATION>: 11 THUB: 12 PTRS: 13 1CKOL: 14 MEDISPEND: 15 PORZIO: 16 sources: - ALL - countries: - ALL sources: - ALL rankSortOrder: Reltio: 1 ONEKEY: 2 MEDPAGESHCP: 3 MEDPAGESHCO: 3 PFORCERX: 4 PFORCERX_ODS: 4 VEEVALINK: 5 KOL_OneView: 6 ONEMED: 6 ENGAGE: 7 MAPP: 8 SEAGEN: 9 GRV: 10 GCP: 11 <ORGANIZATION>: 12 PULSE_KAM: 13 WEBINAR: 14 DREAMWEAVER: 15 EVENTHUB: 16 SPRINKLR: 17 THUB: 18 PTRS: 19 MEDISPEND: 20 PORZIO: 21AMERspecialities: - countries: - ALL rankSortOrder: Reltio: 1 DCR_SYNC: 2 <ORGANIZATION>: 3 <ORGANIZATION>: 4 PFORCERX_ODS: 4 <ORGANIZATION>: 5 KOL_OneView: 6 ONEMED: 6 LEGACY_SFA_IDL: 7 ENGAGE: 8 <ORGANIZATION>: 9 SEAGEN: 10 <LOCATION>: 11 <ORGANIZATION>: 12 <ORGANIZATION>: 13 <ORGANIZATION>: 14 PTRS: 15 RX_AUDIT: 16 PFCA: 17 <ORGANIZATION>: 18 <PERSON>: 19 <ORGANIZATION>: 20 sources: - ALLAPACspecialities: - countries: - CN rankSortOrder: Reltio: 1 EVR: 2 <ORGANIZATION>: 3 FACE: 4 <LOCATION>: 5 CN3RDPARTY: 6 GCP: 7 <ORGANIZATION>: 8 <ORGANIZATION>: 9 PFORCERX_ODS: 9 <ORGANIZATION>: 10 KOL_OneView: 11 ONEMED: 11 ENGAGE: 12 <ORGANIZATION>: 13 <ORGANIZATION>: 14 PTRS: 15 sources: - ALL - countries: - ALL rankSortOrder: Reltio: 1 <ORGANIZATION>: 2 <ORGANIZATION>: 3 <ORGANIZATION>: 4 <ORGANIZATION>: 5 PFORCERX_ODS: 5 <ORGANIZATION>: 6 KOL_OneView: 7 ONEMED: 7 ENGAGE: 8 <ORGANIZATION>: 9 SEAGEN: 10 <LOCATION>: 11 <ORGANIZATION>: 12 <ORGANIZATION>: 13 <ORGANIZATION>: 14 WEBINAR: 15 DREAMWEAVER: 16 EVENTHUB: 17 <ORGANIZATION>: 18 THUB: 19 PTRS: 20 <PERSON>: 21 <ORGANIZATION>: 22 sources: - ALLThe specialty rank sort process operates under the following conditions:Specialty is sorted with the following rules, but on the top, it is grouped by <ORGANIZATION>.SpecialityType attribute:Group by <ORGANIZATION>.SpecialityType attribute and sort each group: sort by specialty unspecified status value (higher value on the top) - attribute Specialty with value <ORGANIZATION> by source order number (the lower number on the top) - source name is taken from crosswalk that was last updatedsort by source rank (the lower on the top) - attribute <URL><ORGANIZATION> by <DATE_TIME> (the earliest on the top) - last update date is taken from lately updated crosswalksort by specialty attribute value (string comparison) - attribute SpecialtySorted specialties are recalculated for new Rank - each <ORGANIZATION> is reassigned with an appropriate number - attribute Rank. The primary flag is set for the top ranked <URL>ditionally:If the source is not found it is set to 99If specialty unspecified attribute name or value is not set it is set to 99Business requirements (provided by <ORGANIZATION> for MDM → Design Documents → MDM Hub → Global-MDM_DQ_*"
|
||
},
|
||
{
|
||
"title": "Enricher Processor",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Enricher+Processor",
|
||
"content": "<ORGANIZATION> is the first <ORGANIZATION> processor applied to incoming events. It enriches reference attributes with refEntity attributes, for the Rank calculation purposes. Usually, enriched attributes are removed after applying all <ORGANIZATION> - this is configurable using cleanAdditionalRefAttributes flag. The only exception is <ORGANIZATION> (EX-US), where attributes remain for CN. Removing "borrowed" attributes is carried out by the Cleaner <URL><PERSON> targetEntity:Find reference attributes matching configurationFor each such attribute:Walk the relation to get <NRP> entityFetch <PERSON> entity's current state through Manager (using cache)Rewrite entity's attributes to this reference attribute, inserting them in <Attribute><URL>tributes pathsteps a-b are applied recursively, according to configured <ORGANIZATION>.<ORGANIZATION> is <ORGANIZATION> config from <ORGANIZATION> Precallback Service:\nrefLookupConfig:\n - cleanAdditionalRefAttributes: true\n country:\n - AU\n - IN\n - JP\n - KR\n - NZ\n entities:\n - attributes:\n - ContactAffiliations\n type: HCP\n maxDepth: 2\nHow to read the config:for entities with Country: <LOCATION>, <LOCATION>, <LOCATION>, <LOCATION> or <LOCATION>,of entity type <ORGANIZATION>,enrich <ORGANIZATION>, so that it contains refEntity's attributes as sub-attributes,do that with depth 2 - so simply take <ORGANIZATION>'s attributes and insert them into <URL>tributes,after all calculations have finished, remove "borrowed" attributes, so that event passed to Event Publisher does not have them."
|
||
},
|
||
{
|
||
"title": "Cleaner Processor",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Cleaner+Processor",
|
||
"content": "Cleaner Processor removed attributes enriched by <ORGANIZATION>. It is one of the last processors in <ORGANIZATION> execution order. Processor checks the cleanAdditionalRefAttributes flag in <URL><PERSON> targetEntity:Find all refLookupConfig entries applicable for this <URL>r all attributes in found entries, remove <URL>tributes map."
|
||
},
|
||
{
|
||
"title": "Inactivation Generator",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Inactivation+Generator",
|
||
"content": "Inactivation Generator is one of <ORGANIZATION> event Processors. It checks input event's targetEntity and changes event type to INACTIVATED, if it detects one of below:for entities:targetEntity's endDate is set,for relations: targetRelation's endDate is set,targetRelation's startRefIgnored == true,targetRelation's endRefIgnored == <URL><PERSON> each event:If targetEntity not null and targetEntity.endDate is null, skip event,If targetRelation not null:If targetRelation.endDate is null or <URL>artRefIgnored is null or targetRelation.endRefIgnored is null, skip event,Search the mapping for adequate output event type, according to table below. If no match found, skip event,Inbound event typeOutbound event typeHCP_CREATEDHCP_INACTIVATEDHCP_CHANGEDHCO_CREATEDHCO_INACTIVATEDHCO_CHANGEDMCO_CREATEDMCO_INACTIVATEDMCO_CHANGEDRELATIONSHIP_CREATEDRELATIONSHIP_INACTIVATEDRELATIONSHIP_CHANGEDReturn same event with new event type, according to table above."
|
||
},
|
||
{
|
||
"title": "MultiMerge Processor",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/MultiMerge+Processor",
|
||
"content": "<ORGANIZATION> is one of <ORGANIZATION> event <URL>r MERGED events, it checks if targetEntity.uri is equal to first URI from entitiesURIs. If it is different, <ORGANIZATION> is adjusted, by inserting targetEntity.uri in the beginning. This is to assure, that targetEntity.uri[0] always contains a merge winner, even in cases of multiple <URL><PERSON> each event of type:HCP_MERGED,HCO_MERGED,MCO_MERGED,do:if targetEntity.uri is null, skip event,if entitiesURIs[0] and targetEntity.uri are equal, skip event,insert targetEntity.uri at the beginning of entitiesURIs and return the event."
|
||
},
|
||
{
|
||
"title": "OtherHCOtoHCOAffiliations Rankings",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/OtherHCOtoHCOAffiliations+Rankings",
|
||
"content": "DescriptionThe process was designed to rank OtherHCOtoHCOAffiliation with rules that are specific to the country. The current configuration contains Activator and Rankers available for <LOCATION> and <LOCATION> countries and the OtherHCOtoHCOAffiliationsType. The process (compared to the <ORGANIZATION>) was designed to process RELATIONSHIP_CHANGE events, which are single events that contain one piece of information about specific relation. The process builds the cache with the hierarchy of objects when the main object is <PERSON> (The direction that we check and implement the Rankins: (child)END_OBJECT -> START_OBJECT(parent). Change in the relation is not generating the HCO_CHANGE events so we need to check relations events. Relation change/create/remove events may change the hierarchy and ranking <URL>paring this to the <ORGANIZATION> ranking logic, change on <ORGANIZATION> object had whole information about the whole hierarchy in one event, this caused we could count and generate events based on <ORGANIZATION> <URL>is new logic builds this hierarchy based on RELATIONSHIP events, compact the changes in the time window, and generates events after aggregation to limit the number of changes in <ORGANIZATION> and <ORGANIZATION> calls. DATA VERIFICATION:Snowflake queries:\nSELECT COUNT(*) FROM (\n\nSELECT END_ENTITY_URI, COUNT(*) FROM COMM_APAC_MDM_DMART_PROD_<URL>STOMER_<URL>M_RELATIONS\n\nWHERE COUNTRY = 'AU' and RELATION_TYPE ='OtherHCOtoHCOAffiliations' and ACTIVE = TRUE\n\nGROUP BY END_ENTITY_URI\n\n)\n\n\n\n\nSELECT COUNT(*) FROM COMM_APAC_MDM_DMART_PROD_<URL>STOMER_<URL>M_ENTITIES\n\nWHERE ENTITY_TYPE='HCO' and COUNTRY ='AU' AND ACTIVE = TRUE\n\nSELECT COUNT(*) FROM (\n\nSELECT END_ENTITY_URI, COUNT(*) FROM COMM_APAC_MDM_DMART_PROD_<URL>STOMER_<URL>M_RELATIONS\n\nWHERE COUNTRY = '<LOCATION>' and RELATION_TYPE ='OtherHCOtoHCOAffiliations' and ACTIVE = TRUE\n\nGROUP BY END_ENTITY_URI\n\n)\nExample few cases from <ORGANIZATION> QA:010Xcxi <LOCATION> 200zxT2O <LOCATION> 2008NxIA <LOCATION> 21CVfmxOm <LOCATION> 2VCMuTvz <LOCATION> 2cvoyNhG <LOCATION> 2VCMnOvP <LOCATION> 200yZOis <LOCATION> 200JoRnN <LOCATION> 2\nSELECT END_ENTITY_URI, COUNTRY, COUNT(*) AS count FROM CUSTOMER_<URL>M_RELATIONS\n\nWHERE RELATION_TYPE ='OtherHCOtoHCOAffiliations' AND ACTIVE = TRUE\n\nAND COUNTRY IN ('AU','NZ')\n\nGROUP BY <ORGANIZATION>, COUNTRY\n\nORDER BY count DESC\nCq2pWio <LOCATION> 500KcdEA <LOCATION> 3T5NxyUa <LOCATION> 3ZsTdYcS <LOCATION> 3XhGoqwo <LOCATION> 300wMWdy <LOCATION> 3Cq1wjj8 <LOCATION> 3The direction that we should check and implement the Rankins:(child)END_OBJECT -> START_OBJECT(parent)We are starting with <PERSON> objects and checking if this child is connected to multiple parents and we are ranking. In most cases, 99% of these will be one relation that will auto-filled with rank=1 during load. If not we are going to rank this using below implementation:Example:<URL> diagramLogical ArchitecturePreDelayCallback LogicStepsOverview Reltio attributes\nATTRIBUTES TO UPDATE/INSERT\nRANK\n {\n "label": "Rank",\n "name": "Rank",\n "description": "Rank",\n "type": "Int",\n "hidden": false,\n "important": false,\n "system": false,\n "required": false,\n "faceted": true,\n "searchable": true,\n "attributeOrdering": {\n "orderType": "ASC",\n "orderingStrategy": "LUD"\n },\n "uri": "configuration/relationTypes/OtherHCOtoHCOAffiliations/attributes/Rank",\n "skipInDataAccess": false\n },\nPreCallback Logic - RANK ActivatorDelayRankActivationProcessor:The purpose of this activator is to pick specific events and push them to delay-events topics, events from this topic will be ranked using the algorithm described on this page (OtherHCOtoHCOAffiliations Rankings), the flow is also described below.Logic:Check the activation criteria, when true process the event to the delay topic, otherwise, push the main event as is to proc-events topic to next HUB processing phase (event publishing)When all activation criteria are met:acceptedEventTypes – events are RELATION types from the listacceptedRelationObjectTypes – the event is relation type and is the type specified – OtherHCOToHCOacceptedCountries – relation is from a specified countryDo:pick the eventscopy the main event to the delayedEventsclear the mainEvents (do not push events to next publishing phase)Before sending apply the additionalFunctions (specify the interface/process and run all selected)Here change the Kafka Key and put the relation.endObject.objectURI as a RELATION event key.Example configuration for <LOCATION> and <LOCATION>:delayRankActivationCallback: featureActivation: true activators: - description: "Delay OtherHCOtoHCOAffiliations RELATION events from <LOCATION> and <LOCATION> country to calculate Rank in delay service" acceptedEventTypes: - RELATIONSHIP_CHANGED - RELATIONSHIP_CREATED - RELATIONSHIP_REMOVED - RELATIONSHIP_INACTIVATED acceptedRelationObjectTypes: - configuration/relationTypes/OtherHCOtoHCOAffiliations acceptedCountries: - AU - NZ additionalFunctions: - RelationEndObjectAsKafkaKeyPreDelayCallback - RANK LogicThe purpose of this pre-delay-callback service is to Rank specific objects (currently available OtherHCOToHCO ranking for <LOCATION> and <LOCATION> - OtherHCOtoHCOAffiliations Rankings)CallbackWithDelay and <ORGANIZATION> advantages:The cache is build on the fly based on <PERSON> (one-time GET of each end Object) and enriched by events during a lifetime - logic is in <ORGANIZATION> and we are using <ORGANIZATION> store in KafkaStreams.(optional) Model change (re-ranking) will cause the cache removal and regeneration of events – cache will be rebuilt with a new model so in case of future changes we can re-rank based on new <URL>e cache contains only required attributes and is updated in real-timeIn most cases it will happen that the relations are in sync so no changes will be pushed to the delay-events topic – everything will be pushed in real-time to target systems (Snowflake)In case of any change in any relation, we will aggregate all relations by the EndObjectId. This allows us to emit an aggregation window one time for each <ORGANIZATION> so that changes are generated for one entity in one run. It may also happen that one new relation is re-ranking whole objects hierarchy. Using this logic one event goes to the Delay logic, one event triggers the difference comparison and generation of multiple updates. These updates (after <ORGANIZATION> publishing) will go to the <ORGANIZATION> state and we are going to check if the data is in sync and if we generated all events. In that case, all events should flow to proc-events and to <ORGANIZATION> set a 1h window to aggregate multiple changes (relationship updates) and emit windows in 1h <URL>owflake is refreshed on PROD in 2h windows - we fit into this so that all events are ready and do not contain the partial state in ate (but Snowflake it may happen in some edge cases) The advantage of this solution is that all RELATIONS will have Rank in Snowflake, so there will be no state without Rank.Logic: PreDelayPoll event from internal-reltio-full-delay-eventsFor each <ORGANIZATION> rank sorter (currently OtherHCOToHCO) execute the logicWe need a state store that will contain the <ORGANIZATION> cache of all relation <URL>e event key that will be moved here will be endObjectId so that all events related to the specific end object will be on one partition – so that we will ask to mongo one time (no parallelism by endObjectId)Check if “CurrentStateCache” contains the state for endObjectIdIf not – execute <ORGANIZATION> (This returns a list of relations)Transform the output to the <ORGANIZATION> modelIf exists – update (join) the current <ORGANIZATION> by <ORGANIZATION> and update relations <PERSON> if <ORGANIZATION> is in sync with <ORGANIZATION> and if true we are going to push such event to outputTopic (reltio-proc-events)execute function isRelationRankInSyncWithCurrentSortedState (<ORGANIZATION>, CurrentStateCache)If Relation.Rank ==null -> falseIf <ORGANIZATION>.Rank !=nullSort CurrentStateCacheCheck if RelatioID Rank is the same as <ORGANIZATION> (it means we need to check if the current <ORGANIZATION> is correct)If the function returns true – publish the Relationship event to OUTPUT TOPIC – Push events with <PERSON> equal to the relation (reverse logic of - RelationEndObjectAsKafkaKey)If the function returns false go to Delay stepPush event (end object id) to ${env}-internal-reltio-full-callback-delay-eventsDelayAggregate all events in the time window (configurable) by end object <ORGANIZATION> – check the closing window for a selected key after the inactivity period – extend the window for the selected key if a new event is in. To save space in the delay/suppress window store only endObjectIDsPostDelayWhen the aggregation window is closed do:Execute the activation <URL>rt(CurrentState) – check the whole hierarchy and sort the state to a desired stateThe result of this function is <ORGANIZATION> of <ORGANIZATION> related to the relations that have to be <URL> a result, push all events to bulk-callback topics that will cause an update in <ORGANIZATION>.<ORGANIZATION> and Configuration\nRelationData cache model:\n[\n Id: endObjectId\n relations:\n - relationUri: relations/13pTXPR0\n endObjectUri: endObjectId" \n country: AU \n crosswalks:\n - type: ONEKEY\n value: WSK123sdcF\n deleteDate: <US_BANK_NUMBER>\n <ORGANIZATION>: e.g. relations/13pTXPR0/attributes/Rank\n Rank: null\n \t Attributes:\n Status:\n \t - ACTIVE \n RelationType/RelationshipDescription:\n - <URL>I\n - <URL>N\n\n]\n\n\nTriggersRankActivationTrigger actionComponentActionDefault timeIN Events incoming Callback Service: Pre-Callback: DelayRankActivationProcessor$env-internal-reltio-full-eventsFull events trigger pre-callback stream and the activation logic that will route the events to next processing staterealtime - events streamOUT Activated events to be sortedCallback Service: Pre-Callback: DelayRankActivationProcessor $env-internal-reltio-full-delay-eventsOutput topicrealtime - events streamTrigger actionComponentActionDefault timeIN Events incoming mdm-callback-delay-service: Pre-Delay-Callback: PreCallbackDelayStream$env-internal-reltio-full-delay-eventsDELAY: ${env}-internal-reltio-full-callback-delay-eventsFull events trigger pre-delay-callback stream and the ranking logicrealtime - events streamOUT Sorted events with the correct state mdm-callback-delay-service: Pre-Delay-Callback: PreCallbackDelayStream$env-internal-reltio-proc-eventsOutput topic with correct eventsrealtime - events streamOUT Reltio Updatesmdm-callback-delay-service: Pre-Delay-Callback: PostCallbackStream$env-internal-async-all-bulk-callbacksOutput topic with Reltio updatesrealtime - events streamDependent componentsComponentUsageCallback ServiceRELATION ranking activator that push events to delay serviceCallback Delay ServiceMain Service with OtherHCOtoHCOAffiliations Rankings logicEntity EnricherGenerates incoming events full eventsManagerProcess callbacks generated by this serviceAttachment docs with more technical implementation details:example-reqeusts.json"
|
||
},
|
||
{
|
||
"title": "HCPType Callback",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/HCPType+Callback",
|
||
"content": "DescriptionThe process was designed to update HCPType RDM code in TypeCode attribute on <ORGANIZATION> profiles. The process is based on the events streaming, the main event is recalculated based on the current state and during comparison of existing TypeCode on <PERSON> and calculated value the callback is generated. This process (like all processes in <ORGANIZATION>) blocks the main event and will send the update to external clients only when the update is visible in <ORGANIZATION> and <PERSON> contains correct code. The process uses the <ORGANIZATION> as a internal cache and calculates the output value based on current mapping. To limit the number of requests to RDM we are using the internal <PERSON> and we refresh this cache <DATE_TIME> on PROD. Additionally we designed the in-memory cache to store 2 required codes (PRES/NON-PRESC) with HUB_CALLBACK source code <URL>is logic is related to these 2 values in Reltio HCP profiles:Type- Prescriber (<URL>ES)Type - Non-Prescriber (<URL>RS)Why this process was designed:With the addition of the <LOCATION> LOVs, we have hit the limit/issue where <ORGANIZATION>-Prescriber canonical codes no longer into <ORGANIZATION> is a size limit in <ORGANIZATION>’s underlying <ORGANIZATION> tech stack It is a GCP physical limitation and cannot be increased. We cannot add new RDM codes to <ORGANIZATION> codes and this will cause issues in <ORGANIZATION> <URL>e previous logic:In the ingestion service layer (all <ORGANIZATION> calls) there was a <ORGANIZATION> rule called “HCP TypeCode”. This logic adds the <ORGANIZATION> as a concatenation of SubTypeCode and <ORGANIZATION> Ranked 1. Logic get source code and puts the concatenation in TypeCode attribute. The number of combination on source codes is reaching the limit so we are building new <URL>r future reference adding old <ORGANIZATION> rules that will be removed after we deploy the new process.<ORGANIZATION> rules (sort rank):- name: Sort specialities by source rank category: OTHER createdDate: <DATE_TIME> modifiedDate: <DATE_TIME> preconditions: - type: operationType values: - create - update - type: not preconditions: - type: source values: - HUB_CALLBACK - NUCLEUS - LEGACYMDM - PFORCERX_ID - type: not preconditions: - type: match attribute: TypeCode values: - "^.+$" action: type: sort key: Specialities sorter: SourceRankSorterDQ rules (add sub type code):- name: Autofill sub type code when sub type is null/empty category: AUTOFILL_BASE createdDate: <DATE_TIME> modifiedDate: <DATE_TIME> preconditions: - type: operationType values: - create - update - type: not preconditions: - type: source values: - HUB_CALLBACK - NUCLEUS - LEGACYMDM - PFORCERX_ID - KOL_OneView action: type: modify attributes: - TypeCode value: "{<DATE_TIME>.Specialty}" replaceNulls: true when: - "" - "NULL"Example of previous input values:attributes: "TypeCode": [ { "value": "TYP.M-SP.WDE.04" } ]TYP.M is a <ORGANIZATION> is a <NRP> value - PRESC:As we can see on this screenshot on <ORGANIZATION> there are 2920 combinations for one <ORGANIZATION> source that generates PRESC value. The new logic:The new logic was designed in pre callback service in hybrid mode. The logic uses the same assumptions like are made in previous version, but instead we are using Reltio Canonical codes, and this limits the number of combinations. We are providing this value using only one Source HUB_CALLBACK so there is no need to configure <ORGANIZATION>,<LOCATION> and all other sources that provides multiple <URL>vantages:Service populates <ORGANIZATION> with <ORGANIZATION> canonical codesHCP Type LOVs reduced to single source (HUB_CALLBACK) and canonical codesThe change in HCP Type RDM will be processed using standard reindex <URL>is change is impacting the Historical Inactive flow – change described <ORGANIZATION>: HI HCPType enrichment. Key features in new logic and what you should know:The change in HCP Type RDM will be processed using standard reindex <URL>lculate the HCP TypeCode is based on the <ORGANIZATION> profile and Reltio canonical codesPreviously each source delivered data and the ingestion service calculated TypeCode based on <ORGANIZATION> data delivered by the <URL> we calculate on <ORGANIZATION>, not on the source level.We deliver only one value using HUB_CALLBACK <URL> once we receive the event we have access to ov:true – golden profileSpecialties, this is the list, each source has the <ORGANIZATION> and <ORGANIZATION>, so we pick with Rank 1 for selected <URL>bTypeCode is a single attribute, and can pick only ov:true value.2 canonical cocdes are mapped to TypeCode attribute like on the below example Activation/Deactivation profiles in <ORGANIZATION> and Historical Inactive flowSnowflake: HI HCPType enrichmentSnowflake: History Inactive When the whole profile is deactivated HUB_CALLBACK technical crosswalks are hard-deleted, <PERSON> will be hard-deletedThis is impact HI Views because the HUB_CALLBACK value will be droppedWe implemented a logic in HI view that will rebuild TypeCode attribute and put this PRES/NON-PRESC in JSON file visible in HI view. Reltio contains the checksum logic and is not generating the event when the sourceCode changes but is mapped to the same canonical codeWe implemented a delta detection logic and we are sending an update only when change is detected Lookup to RDM, requeiers the logic to resolve HUB_CALLBACK code to canonical code. Change only when Type does not exists Type changes from PRESC to NON-PRESC Type changes from NON-PRESC to <ORGANIZATION> of new input values:attributes: "TypeCode": [ { "value": <URL> } ]TYP.M is a SubTypeCode source code mapped to <URL>P.WDE.04 is a <ORGANIZATION> source code mapped to <URL>rdm/lookupTypes/HCPSubTypeCode:<URL>dm/lookupTypes/HCPSpecialty:<URL>Flow diagramLogical ArchitectureHCPType <ORGANIZATION> attributes and RDM { "label": "Type", "name": "TypeCode", "description": "HCP Type Code", "type": "String", "hidden": false, "important": false, "system": false, "required": false, "faceted": true, "searchable": true, "attributeOrdering": { "orderType": "ASC", "orderingStrategy": "LUD" }, "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/TypeCode", "lookupCode": "rdm/lookupTypes/HCPType", "skipInDataAccess": false },Based on:SubTypeCode: { "label": "Sub Type", "name": "SubTypeCode", "description": "HCP SubType Code", "type": "String", "hidden": false, "important": false, "system": false, "required": false, "faceted": true, "searchable": true, "attributeOrdering": { "orderType": "ASC", "orderingStrategy": "LUD" }, "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/SubTypeCode", "lookupCode": "rdm/lookupTypes/HCPSubTypeCode", "skipInDataAccess": false },Speciality: { "label": "Specialty", "name": "Specialty", "description": "Specialty of the entity, e.g., Adult Congenital Heart Disease", "type": "String", "hidden": false, "important": false, "system": false, "required": false, "faceted": true, "searchable": true, "attributeOrdering": { "orderingStrategy": "LUD" }, "cardinality": { "minValue": 0, "maxValue": 1 }, "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialty", "lookupCode": "rdm/lookupTypes/HCPSpecialty", "skipInDataAccess": false },RDMCodes:rdm/lookupTypes/HCPType:<URL>RSrdm/lookupTypes/HCPType:<URL>ESHCPType <ORGANIZATION> LogicFlow:Component Startupduring the Pre-Callback component startup we are initializing in memory cache to store 2 PRESC and <ORGANIZATION> values for HUB_CALLBACK soruceThis implementation limits number of requests to <ORGANIZATION> through managerAlso this limit number of <ORGANIZATION> call manager service from pre-callback serviceThe Cache contains <ORGANIZATION> configuration and is invalidated after TTLActivationCheck if feature flag activation is trueTake into account only the CHANGED and CREATED events in this pre-callback implementation limited to <ORGANIZATION> objectsTake into account only profiles that crosswalks are not on the following list. When <PERSON> contains the crosswalks that are related to this configuration list skip the TypeCode generation. When the <PERSON> contains the following crosswalk and additionally valid crosswalk like <ORGANIZATION> generate a TypeCode.- type: not preconditions: - type: source values: - HUB_CALLBACK - NUCLEUS - LEGACYMDM - PFORCERX_IDStepsEach CHANGE or CREATE event triggers the following logic:Get the canonical code from <ORGANIZATION>/attributes/SubTypeCode pick a lookupCode<fallback 1> if lookupCode is missing and lookupError exists pick a value<fallback 2> if the SupTypeCode does not exists put an empty value = ""Get the canonical code from <ORGANIZATION>/attributes/Specialities/attributes/Specialty arraypick a speciality with Rank equal to 1pick a lookupCode <fallback 1> if lookupCode is missing and lookupError exists pick a value<fallback 2> if the <ORGANIZATION> does not exists put an empty value = ""Combine to canonical codes, using "-" hyphen character as a concatenation.possible values:<subtypecode_canonicalCode>-<speciality_canonicalCode><subtypecode_canonicalCode>-""""-<speciality_canonicalCode>""-""Execute delta detection logic:<transformation function>: using the <ORGANIZATION> cache translate the generated value to PRESC or NPRES codeCompare the generated value with <ORGANIZATION>/attributes/TypeCodepick a lookupCode and compare to generated and translated value<fallback 1> if lookupCode is missing and lookupError exists pick a value and compare to generated and not translated valueGenerate:INSERT_ATTRIBUTE: when <PERSON> does not exitsUPDATE_ATTRIBUTE: when value is differentForward main event to next processing topic when there are 0 <URL>iggersTrigger actionComponentActionDefault timeIN Events incoming Callback Service: Pre-Callback:HCP Type Callback logicFull events trigger pre-callback stream and during processing, partial events are processed with generated changes. If data is in sync partial event is not generated, and the main event is forwarded to external clientsrealtime - events streamDependent componentsComponentUsageCallback ServiceMain component of flow implementationEntity EnricherGenerates incoming events full eventsManagerProcess callbacks generated by this serviceHub StoreHUB Mongo CacheLOV readLookup RDM values flow"
|
||
},
|
||
{
|
||
"title": "<LOCATION> IQVIA<->COMPANY",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/China+IQVIA%3C-%3ECOMPANY",
|
||
"content": "DescriptionThe section and all subpages describe HUB adjustments for <LOCATION> clients with transformation to the COMPANY model. HUB created a logic to allow <LOCATION> clients to make a transparent transition between IQVIA and COMPANY Models. Additionally, the <ORGANIZATION> process will be adjusted to the new COMPANY model. The New <ORGANIZATION> process will eliminate a lot of DCRs that are currently created in the IQVIA tenant. The description of changes and all flows are described in this section and the subpages, links are displayed below. HUB processed all the changes in MR-4191 – the <ORGANIZATION> task, To verify and track please check <URL><LOCATION> Changes:<LOCATION> is now using the IQVIA model (createHCP operation)The goal realized in these changes is to have the same features as COMPANY model but <LOCATION> will use the IQVIA model (for <LOCATION> change should be transparent)current IQVIA PROD - <URL> (<ORGANIZATION> PROD)new COMPANY PROD - <URL> (<ORGANIZATION> in <ORGANIZATION>) (input IQVIA model -> output COMPANY model transformation)Changes in Events Streaming (events) (input COMPANY model -> output IQVIA model transformation)Changes in map-channel. <LOCATION> data in IQVIA model loaded to COMPANY modelCreate a <NRP> common transformation class:transformIqviaToCOMPANYtransformCOMPANYToIqviaDCR <LOCATION> adjustments to the COMPANY modelFlowsChina IQVIA - current flow and user properties + COMPANY changesOn this page, the current IQVIA flow for <LOCATION> users is <URL>er properties for <LOCATION> users, the <ORGANIZATION> activation <URL>B components and <LOCATION> configuration used in HUBThe page contains also COMPANY changes and affected components that will be changedCreate <ORGANIZATION> complex methods - IQVIA model (legacy)This page describes the <ORGANIZATION> create <ORGANIZATION> operations used in IQVIA, based on this logic new COMPANY logic was adjusted.Old logic is complicated and will be deprecated in the <URL> logic contains the new solutions and was written in a more readable format. In the new logic, the <ORGANIZATION> process is moved outside of the <ORGANIZATION> to the external dcr-service-2 <URL>eate <ORGANIZATION> complex <US_DRIVER_LICENSE> methods - COMPANY modelNew COMPANY logic for the creation of the <ORGANIZATION> and <ORGANIZATION> objects.Logic is divided into two sectionssimple - create an <ORGANIZATION> object without affiliationscomplex - create an <ORGANIZATION> object with affiliations Logic also triggers the <ORGANIZATION> process if <URL>e new COMPANY code changes add the <US_DRIVER_LICENSE> and <US_DRIVER_LICENSE> prefixes to the API.Existing COMPANY model operations will be switched to <US_DRIVER_LICENSE> APIsIQVIA users will use <US_DRIVER_LICENSE> <ORGANIZATION> - this is required to keep the old logic, in the future old <US_DRIVER_LICENSE> <ORGANIZATION> will be deprecated and removed.<US_DRIVER_LICENSE>/<US_DRIVER_LICENSE> APIs are transparent for the external clients, this is handled on the HUB sideDCR IQVIA flowOLD <ORGANIZATION> IQVIA model logicDCR <ORGANIZATION> model logicChina <ORGANIZATION> - model transformation flowAdditionall, microservice used to transform COMPANY model events to IQVIA modelThe microservice used the predefined mapping and transforms the output events to the <LOCATION> target output topicThe logic contains also the Reference Attributes lookup like:<US_DRIVER_LICENSE> - get HCP → <ORGANIZATION> (Workplaces using COMPANY ContactAffiliations)<US_DRIVER_LICENSE> - get <ORGANIZATION> (MainHCO using COMPANY OtherHCOtoHCOAffiliations)The output <ORGANIZATION> is combined and contains full information about all <US_DRIVER_LICENSE> and <US_DRIVER_LICENSE> objects (same as on IQVIA)Model Mapping (IQVIA<->COMPANY)Model mapping documentTransformation used during <ORGANIZATION> calls or events streaming processing User Profile (<LOCATION> user)User Profile for <LOCATION> usercontains all details and configuration properties in one <URL>l <ORGANIZATION>/CrosswalkGeneratrs are configured in one file and are shared across all HUB microservices. TriggersDescribed in the separated sub-pages for each <URL>pendent componentsDescribed in the separated sub-pages for each <URL>cuments with HUB detailsmapping China_attributes.xlsxAPI: China_HUB_<URL>cxdcr: China_HUB_DCR_<URL>cx"
|
||
},
|
||
{
|
||
"title": "<LOCATION> IQVIA - current flow and user properties + COMPANY changes",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "<PERSON> this page, the current IQVIA flow is described. Contains the full <ORGANIZATION> description, and complex <ORGANIZATION> on IQVIA end with all details about HUB configuration and properties used for the <LOCATION> IQVIA <URL> the next section of this page, the COMPANY changes are described in a generic way. More details of the new COMPANY complex model and <ORGANIZATION> adjustments were described in other subpages. IQVIACurrent process notes:<LOCATION> uses the createHCP operation (the object with affiliation to HCO(Workplace) and <PERSON> source is the only source that creates DCRsCurrent operations used by <PERSON> details: <PERSON> (only used by event hub user)CreateHCORoute (china_apps)CreateHCPRoute (china_apps and <PERSON> (as a part of a createHCP route where <ORGANIZATION> is executed)UpdateHCPRoute (china_apps)Users:eventhubchina_appsmap_channelSources:GRVEVRMDEFACECN3RDPARTYMap_ChannelGRV source is there with CN countryManagerManager affiliations activation and configuration\naffiliationConfig:\n hcpToL1HcoRefAttributeName:\n Workplace:\n - country: "CN"\n hcpToL2HcoRefAttributeName:\n MainWorkplace:\n - country: "CN"\n hcoToHcoRefAttributeName:\n MainHCO:\n - country: "CN"\n waitForNewHcoDCRApprove:\n - country: "CN"\n\n\nDCRs current legacy config\ndcrConfig:\n dcrProcessing: <LOCATION> routeEnableOnStartup: <LOCATION> deadLetterEndpoint: "file:///opt/app/log/rejected/"\n externalLogActive: <LOCATION> activationCriteria:\n NEW_HCO:\n - country: "CN"\n sources:\n - "CN3RDPARTY"\n - "FACE"\n - "GRV"\n NEW_HCP:\n - country: "CN"\n sources:\n - "GRV"\n NEW_WORKPLACE:\n - country: "CN"\n sources:\n - "GRV"\n - "MDE"\n - "FACE"\n - "CN3RDPARTY"\n - "EVR"\n\n externalDCRActivationCriteria:\n - country: "CN"\n sources:\n - "CN3RDPARTY"\n - "FACE"\n - "GRV"\n\n continueOnHCONotFoundActivationCriteria:\n - country: "CN"\n sources:\n - "GCP"\n - countries:\n - AD\n - BL\n - BR\n - DE\n - ES\n - FR\n - FR\n - GF\n - GP\n - IT\n - MC\n - MF\n - MQ\n - MU\n - MX\n - NC\n - NL\n - PF\n - PM\n - RE\n - RU\n - TR\n - WF\n - YT\n sources:\n - GRV\n - GCP\n validationStatusesMap:\n VALID: validated\n NOT_VALID: notvalidated\n PENDING: pending\n\n delayPrcInSeconds: 3600\n <PERSON>: "{{env_name}}-gw-dcr-requests"\n\n\nUsers that use <NRP> country in HUB:china_apps\n- name: "china_apps"\n description: "<LOCATION> applications access user"\n defaultClient: "ReltioAll"\n roles:\n - "CREATE_HCP"\n - "CREATE_HCO"\n - "UPDATE_HCO"\n - "UPDATE_HCP"\n - "GET_ENTITIES"\n - "RESPONSE_DCR"\n - "LOOKUPS"\n countries:\n - "CN"\n sources:\n - "CN3RDPARTY"\n - "MDE"\n - "FACE"\n - "EVR"\n\n\n\nmap_channel\n- name: "map_channel"\n description: "Map Channel (Handler) account"\n defaultClient: "ReltioAll"\n roles:\n - "UPDATE_HCP"\n - "CREATE_HCP"\n - "CREATE_HCO"\n - "DELETE_CROSSWALK"\n countries:\n - "CN"\n - "AD"\n…\n sources:\n - "GRV"\n - "GCP"\n\n\nCallback-Service:refLookupConfig\nrefLookupConfig:\n - country: CN\n maxDepth: 2\n useCache: true\n entities:\n - type: HCP\n attributes:\n - Workplace\n - type: HCO\n attributes:\n - MainHCO\nThe callback service is adding enrichment to <ORGANIZATION>. Workplace and <URL>inHCO objects – In mongo and in published events we are storing more information than the Reltio. The result is that we have the <ORGANIZATION> full data and <ORGANIZATION> and full data and <URL>inHCO full data. The MainHCO Workplace is enriched by <ORGANIZATION> references. The <PERSON> and Publisher move to <LOCATION> data that contains full information in these <URL>lished events and <PERSON> are enriched with this data.Event publisher:\n- id: hcp-china\n selector: "(<URL>conciliationTarget==null)\n && <URL>.headers.eventType in ['<ORGANIZATION> in ['cn']\n && ['CN3RDPARTY', '<ORGANIZATION>', 'FACE', 'EVR', '<LOCATION>', 'GCP', '<ORGANIZATION> destination: "prod-out-full-mde-cn"\nPublishing of <LOCATION> events and sources <ORGANIZATION> entities, full events (data is trimmed)COMPANYThe key concepts and general description of COMPANY adjustments:Current IQVIA flow should work only on old <ORGANIZATION> and will be deprecated in the futureOn the new COMPANY model there will be <US_DRIVER_LICENSE> and <US_DRIVER_LICENSE> APIs versions transparent for the external client, the <ORGANIZATION> is a new logic that will be used by all clients and also a <LOCATION> client with the IQVIA modelOptimization of /batch/hcp method is made as a part of these changes because now all APIs allow to the provision of the list of entities. Created methods:New Service <US_DRIVER_LICENSE> ( input bulk or single entity)- <ORGANIZATION> (simple method without affiliated <ORGANIZATION>) (array of entities)- <ORGANIZATION> (complex method with affiliated <ORGANIZATION>) (array of entities)- <ORGANIZATION> (array of entities)- <ORGANIZATION> (array of entities)Transformation executed if:Source: IQVIA (user profile configuration)Target: COMPANY (user profile configuration)Then execute the transformation and complex with affiliated <ORGANIZATION>-router service will be used to make a transparent transition between <US_DRIVER_LICENSE> and <US_DRIVER_LICENSE> APIs2 methods <US_DRIVER_LICENSE> and v2All COMPANY clients using the COMPANY model will be switched to V2V1 will be removed in the future after IQVIA will be deprecatedTransformation LIB (full description on the different subpage):transformIqviaToCOMPANYtransformCOMPANYToIqviaUser Profile - Feature switchIQVIA vs COMPANY model on user configuration:User Profile objects will be provided. In one file whole configuration shared across all components will be present. Publishing changes:<LOCATION> Selective Router - new microservice – translates <LOCATION> events from the IQVIA model to the COMPANY modelInput: <LOCATION> COMPANY model topicEnrich <ORGANIZATION> with <ORGANIZATION> data (workplace/mainHCO)Output: target COMPANY modelOpen API Documentation on <ORGANIZATION> contains the whole <ORGANIZATION> description, and <ORGANIZATION> documentation is managed in code and automatically generated. <ORGANIZATION> processIntegrate manager complex method with dcr-service-2 (using triggers) Create requests that have the model in dcr-service-2K8s separated environmentAPAC-China-DEV is a separate environment used for the <LOCATION> testing. The environment is set up dynamically on K8sThe component changes related to this adjustment:Reltio-Subscriber component is working on DEV as an events router:There is only one <ORGANIZATION> queue, but 2 output topics in the subscriber publisher. The event router makes a decision if we need to move this event to <ORGANIZATION>-DEV or <LOCATION>-DEV (e.g. <LOCATION> profiles tagged with <LOCATION>-test-cases). Reltio-subscriber reads the tag name and pushes this event to topic {tag-name} – specified number of tag names allowed in publishing to output topic 2 profiles – test mode. PROD – normal mode by default normal PROD mode Manager Changes Create HCP/<ORGANIZATION> operations used by HUB automated integration tests adding the <LOCATION>-TEST tag that is routed only to <LOCATION>-DEV environment <ORGANIZATION> (<ORGANIZATION>) <US_DRIVER_LICENSE> Key concepts and changesCrosswalk Generator - configured in User Profile -allows to automatically generate a crosswalk when missing:(common) CrosswalkGenerator – first type (implementation) UUID generator (autofill: Type <>, Value: <UUID generator>, SourceTable:)associated with the <ORGANIZATION> and User (when the user does not provide the crosswalk we can generate an <ORGANIZATION> or <ORGANIZATION> crosswalk)For example – if the missing <URL>filaitedHCO crosswalk then we will generate a new oneFind Service - configured in User Profile - contains the implementation of multiple search cases. User can be configured to use a specific set of searches. Used for example to find <ORGANIZATION> related to the HCP in Complex <US_DRIVER_LICENSE> <URL>nd Object Method (_findObject (getByUri/getByCrosswalk/getByName e.t.c.):UserProfile configuration drivenInput entity objectSearch <ORGANIZATION> ObjectURICrosswalkSearch method (Reltio (?filter) ) – getByName (search by Reltio Name attribute - configurable)<URL>ere is a possibility to add multiple different searches or configure current searches by defining the attributes namesTrigger - configured in User Profile. Contains the <ORGANIZATION> mode implementation. The trigger is executed in the following situation:Find Service execution → result → decision to be madeDecisionFoundCreate <ORGANIZATION> with <ORGANIZATION> and <ORGANIZATION> ( create <ORGANIZATION>) -> HCPNotFoundUserProfile: TriggerType configurationFunction result – (ACCEPT OR REJECT + ObjectToCreate)TriggerTypeCREATE (ACCEPT , object)IGNORE (ACCEPT , nullObject)REJECT (REJECT , nullObject)DCR (ACCEPT, DCRObject)(custom function – can be Lookup) (customFunction(Object) (return CREATE/IGNORE/REJECT)) - for example used in <LOCATION> to lookup to the STD_DPT name in <ORGANIZATION> and make a decision based on <ORGANIZATION> lookup result. "
|
||
},
|
||
{
|
||
"title": "China Selective Router - model transformation flow",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/China+Selective+Router+-+model+transformation+flow",
|
||
"content": "<ORGANIZATION> selective router was created to enrich and transform event from COMPANY model to IQIVIA model. Component is also able to connect related mainHco with <ORGANIZATION>, based on reltio connections <ORGANIZATION>, in <NRP> model its reflected as <ORGANIZATION> in <ORGANIZATION> attribute.Flow diagramStepsCollect event from input topicEnrich event - based on configuration collect <ORGANIZATION> and main <ORGANIZATION> entitiesfind attribute with refEntity uri call reltio thrue mdm-manager to collect all related <ORGANIZATION> and mainHco entities return event with list of <ORGANIZATION>, and list of <ORGANIZATION> with mainHco based on reltio connections and put mainHco attribute to hcoiterate by list of <ORGANIZATION> and call reltio to list of connection for current hcoif connection list is not empty and contains entity uri from list of mainHcoput exisitng mainhco to <ORGANIZATION> in 'OherHcoToHco' attribure (Name of attibute can be changed in configuration)Transform event from COMPANY model to <NRP> modelinvoke HCPModelConverter wiht base evnet, list of <ORGANIZATION> and list of mainHcoresult of converter will be entity in <NRP> modelput entity in output <ORGANIZATION> event to output topicTriggersTrigger actionComponentActionDefault timekafka messageeventTransformerTopologytransform event to <NRP> modelrealtimeDependent componentsComponentUsageMdm managergetEntitisByUrigetEntityConnectionsByUriHCPModelConvertertoIqviaModel"
|
||
},
|
||
{
|
||
"title": "Create HCP/HCO complex methods - IQVIA model (legacy)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "DescriptionThe IQVIA <LOCATION> user uses the following methods to create the HCP HCO objects - Create/Update <ORGANIZATION><ORGANIZATION>. On this linked page the <ORGANIZATION> calls flow is described. The most complex and important thing is the following sections for <LOCATION> users:Additional logic that is activated in the following cases:3 - during <ORGANIZATION> update parentHCO attribute is delivered in the request4 - during <ORGANIZATION> create/update affiliations are delivered in the request5 - during <ORGANIZATION> creation based on the configuration-specific sources are enriched with cached Relation objects and this object is injected into the main Entity as the reference attributeIQVIA <LOCATION> user also activates the <ORGANIZATION> logic using this Create HCP method. The complex description of this flow is here <ORGANIZATION> IQVIA flowCurrently, the <ORGANIZATION> activation process from the IQVIA flow is described here - <ORGANIZATION> generation process (<ORGANIZATION> flow is described here: <ORGANIZATION> COMPANY flowThe below flow diagram and steps description contain the detailed description of all cases used in <ORGANIZATION> and <ORGANIZATION> methods in legacy code.<ORGANIZATION> = <LOCATION> logic / STEPS:<ORGANIZATION>The following files contain the <ORGANIZATION> rules in IQVIA - executed once HUB receives the JSON from the Client.<ORGANIZATION> rules are self-documented, details can be found in the following files: affiliatedHCO : affiliatedhco-country-<LOCATION>-quality-rules.yamlHCP:hcp-country-<LOCATION>-quality-rules.yaml(common) qualityServicePipelineProvider – execute <ORGANIZATION> rules file(common) dataProviderCrosswalkGuardrail – execute GuardRailsAffiliatedHCO LOGIC (affiliatedHCOs attribute):DQ Rules check and validation on affiliatedHCOIf empty -> add only Country from <ORGANIZATION> and Crosswalk from HCPIf not empty -> affiliatedHCOsEntity is combined as one entity from all attributes from all arrays with <ORGANIZATION> from <ORGANIZATION> and Crosswalk from HCPCreating affiliation logic is activated when affiliatedHCOs exist and is not emptyCreate <ORGANIZATION>:Update (true/false) (PATCH/POST)autoCreateHCO is used in isAutoCreateHCO method below. It activates create <ORGANIZATION> operation for <ORGANIZATION> and <ORGANIZATION> for all countries when affiliatedHCO is not found. \naffiliationConfig:\n autoCreateHCO:\n - country: "ALL"\n sources:\n - "MAPP"\n - "CRMMI"\n\n\nRUN <URL>pAndReplaceHospitalThe logic was designed to get MainHCO from affiliatedHCO and find this in Reltio. Only 1 element of MainHCO can <URL>en executes the SEARCH LOGIC (by uri/crosswalk/attributes) and gets AUTO rules <URL>e result is set the MainHCO.objectUri=Reltio found URI (object from the request is assigned and exists <ORGANIZATION> id)Then in the next methods, MainHCO contains the copy of all attributes from Reltio (the object is different than received from the client)For each affiliatedHCOs do:extractL2HCO [MainHCO] from affiliatedHCOs: (it means get MainHCO - Hospital - from <ORGANIZATION> > 1 -> Exception HCPMappingException(<URL>rmat("HCO has more than 1 affiliated HCO")when =1 – assign to new Entity object:attributes (copy <URL>tributes)crosswalk = <URL>osswalkuri = MainHCO. refEntity.<ORGANIZATION> on returned Hospiatl do:[SEARCH LOGIC] <URL>ltioMDMClient#findEntity[SEARCH LOGIC] shared across all <LOCATION> searches on <ORGANIZATION> and <ORGANIZATION> servicesFind by ObjectURIOrFind by CrosswalkOrFind by Match API (entities/_matches) where JSON body in MainHCO entity:Verify matches resultCheck only .*Auto.* rulesresultSize > 1 - return nullif there are more than 2 entities with different uris - return return nullif 1 match – returns entityIf Search result == null -> EntityNotFoundxception – hospital not found If found result then: set <ORGANIZATION> in <URL>fEntity.objectUri, and copy all attributes from <ORGANIZATION> to MainHCO(replace MainHCO + trim)Hospital is found and have the Reltio URIRUN <URL>pAndCreateHCO – returns the mappedHCOs arrayThe main logic of this method is to create a <ORGANIZATION> with MainHCO in <ORGANIZATION> and assign the <ORGANIZATION> received from <ORGANIZATION> (<LOCATION>) or Create affilaitedHCO object (<ORGANIZATION> and <PERSON> each affiliatedHCOs doFirst Check - "<LOCATION> map dict is set, map and create standardized HCO"if (<URL>tHCORDMMDict() ( means if CN then return LKUP_STD_DEPARTMENTS )logic:add do mappedHCOs (mapAndCreateStandardizedHCO)The result of this function is to set the AffilaitedHCO(Workplace).URI based on the <ORGANIZATION> search.We translate <URL> using <ORGANIZATION> LKUP_STD_DEPARTMENTS code and then make a search in <ORGANIZATION>.If found set URI from <ORGANIZATION> not found execute CreateHCO method and assign URI from <ORGANIZATION> based on created objects.IF <URL> is null, <LOCATION> – translate the <URL> using the lookup function to Reltio with <ORGANIZATION> LKUP_STD_DEPARTMENTS and Source=<URL>osswalkIf OK and the code exitsSet Department <ORGANIZATION> name to response code (<URL> <ORGANIZATION> is not found in RDM break and exit. This may cause that the <ORGANIZATION> will be not found and you will receive the error - HCO Entity no foundFind <US_DRIVER_LICENSE> entity (affiliatedHCO) (logic same as [SEARCH LOGIC]) (here we search affiliatedHCO with MainHCO attribute)If found set affiliateHCO.uri = <ORGANIZATION> (<US_DRIVER_LICENSE> <ORGANIZATION>) automatically” for <ORGANIZATION> <URL>inHCO object and assing to <URL>inHCO- NULL/CLEARThis clear/null on <URL>inHCO is required because we are executing the CREATE_HCO operation with 2 objects. 1. affiliatedHCO 2. MainHCO (parentHCO in <ORGANIZATION> operation)This will create an <ORGANIZATION> object with MainHCO in <URL>inHCO- SET crosswalk to EVR with Random UUIDExecute logic – [<ORGANIZATION> = <LOCATION> logic / STEPS (check below)] (parameters 1= procEntity(affiliatedHCO), 2=MainHCO)check creation result:notFound -> NotFoundExceptionfailed -> RuntimeExceptionOK, -> set affiliateHCO.uri = reltioFoundUriSecond Check – “Create or update affiliated HCO”FOR <ORGANIZATION> and <ORGANIZATION> for affiliatedHCOs create the <ORGANIZATION> in <ORGANIZATION> and assign the Reltio URI to affilaitedHCOs <ORGANIZATION> automatically without search and DPT <URL>AutoCreateHCO logic based on <ORGANIZATION> param – currently PROD activated for <ORGANIZATION> and <ORGANIZATION> for all countrieslogic:Execute logic – [<ORGANIZATION> = <LOCATION> logic / STEPS (check below)] (parameters 1= procEntity(affiliatedHCO), 2=null) - send only <ORGANIZATION> without HospitalHere we are adding parentHCO to the <ORGANIZATION> request. <ORGANIZATION> is affiliatedHCO <URL>eck creation result:failed -> RuntimeOK -> set affiliateHCO.uri = reltioFoundUriThird Check – “<ORGANIZATION> auto-creation is disabled”just return the affiliatedHCO without the Reltio URI assingRUN createHCOAffiliations (Create affiliation to <US_DRIVER_LICENSE> and <ORGANIZATION>) creating affiliation <ORGANIZATION> to HCOExtends HCP object with <ORGANIZATION>) and Workplace(affiliatedHCO) referenced <ORGANIZATION> each affiliatedHCOs doExtract MainHCO object (this will be <ORGANIZATION> on HCP)If empty throw RuntimeExceptionIf existsRUN createAffilationAsRef - l2HCORefName = <ORGANIZATION> ----------- Creating MainWorkplace relation from <ORGANIZATION> to MainHCOLogic that creates <ORGANIZATION> affiliation between <ORGANIZATION> and MainHCO or <ORGANIZATION> affiliation between <ORGANIZATION> and affiliatedHCO (used here and below)Below we add 2 more attributes to <ORGANIZATION><URL><ORGANIZATION> and <URL>lidationChangeDateIf MainHCO.objectURi exits. OKELSE search - (here objectUri will be, this search is used in CREATE_HCO method)If still not found throw NotFoundExceptionElse assign <ORGANIZATION> and <ORGANIZATION> attributeson MainWorkplaceRefEntity – MainHCO.ObjectURIRefRelation – Crosswalk (sourceTable=<ORGANIZATION>,type=<URL>osswalk.type,value=HASH)Attributes - emptyThen check if the same relation on <ORGANIZATION> already exists comparing the <ORGANIZATION> attribute with generated crosswalkIf this is a new <ORGANIZATION> add to <ORGANIZATION> a new attribute that is MainWorkplaceRewriting validation status from main entity or set from <ORGANIZATION> entity – preprare reference attributes on WorkplaceRefEntity attributes set from:<ORGANIZATION> or <URL>lidationStatusValidationChangeDate or <URL>lidationChangeDateRUN createAffilationAsRef - l2HCORefName = WorkplaceSame logic as above but:----------- Creating Workplace relation from <ORGANIZATION> to affiliatedHCOResult – <ORGANIZATION> contains <ORGANIZATION> and <ORGANIZATION> refRelation attributesAffiliatedHCO LOGIC throws in some places EntityNotFoundException - process this exception here:activate <ORGANIZATION> LOGICCreate NEW_HCO("NewHCO") <ORGANIZATION> with <ORGANIZATION> entity and affiliatedHCOs Check if <ORGANIZATION> is in activationCriteria for <LOCATION> (<LOCATION>/FACE/CN3RDPARTY) Then check continueOnHCONotFoundActivationCriteria for <LOCATION> only GCP – this will create <ORGANIZATION> (continue) without affiliation(common) Reference Relation Attributes <PERSON> for <ORGANIZATION> (relations taken from <ORGANIZATION> method - Main HCP create an object in ReltioCheck response:(common) <ORGANIZATION> COMPANYGlobalCustomerIdactivate <ORGANIZATION> LOGIC If NEW_HCO <ORGANIZATION> – send <ORGANIZATION> Request related to affiliatedHCOs and put this <ORGANIZATION> to dcrRequestIf <ORGANIZATION> does not contains NEW_HCO <ORGANIZATION> NEW_HCP <ORGANIZATION> Request with affiliatedHCO and send <ORGANIZATION> RequestIf <ORGANIZATION> does not contains NEW_HCO <ORGANIZATION> and send <ORGANIZATION> REQUEST(common) resolve status – set created/update/failed/e.t.c(common) ValidationException/EntityNotFoundException/HCPMappingException/ExceptionEND <ORGANIZATION> = <LOCATION> logic / STEPS:<ORGANIZATION>The following files contain the <ORGANIZATION> rules in IQVIA - executed once HUB receives the JSON from the Client.<ORGANIZATION> rules are self-documented, details can be found in the following files: <ORGANIZATION>: hco-country-<LOCATION>-quality-rules.yaml(common) qualityServicePipelineProvider – execute DQ rules(common) dataProviderCrosswalkGuardrail – execute GuardRailsParentHCO ↔ AffiliatedHCO LOGIC (parentHCO attribute processing):RUN createAffilationAsRef - = MainHCO ----------- Creating MainHCO relation from <ORGANIZATION> to parentHCOIf parentHCO.objectURi exits, ok. (the objectURi can be from <ORGANIZATION> create methods but can be also emptu)ELSE -> [SEARCH LOGIC]<URL>ltioMDMClient#findEntity (described in <ORGANIZATION> still not found throw NotFoundException -> Parent <ORGANIZATION> not foundElse if found in <ORGANIZATION> object and put MainHCO ref attribute: <ORGANIZATION> – parentHCO.ObjectURIRefRelation – Crosswalk (sourceTable=MainHCO,type=<URL>osswalk.type,value=HASH)Attributes - emptyThen check if the same relation on <ORGANIZATION> already exists comparing the MainHCO attribute with generated crosswalkIf this is a new <ORGANIZATION> add to <ORGANIZATION> a new attribute that is MainHCO(common) Reference Attributes <PERSON> for <ORGANIZATION> method - <ORGANIZATION> create an object in ReltioCheck response:(common) Register COMPANYGlobalCustomerId(common) resolve status – set created/update/failed/e.t.c(common) ValidationException/EntityNotFoundException/HCPMappingException/ExceptionENDTriggersTrigger actionComponentActionDefault timeoperation linkREST callManager: <ORGANIZATION> /hco /hcp /mcocreate specific objects in MDM systemAPI synchronous requests - realtimeCreate/Update <ORGANIZATION> callManager: GET /lookupget lookup Code from ReltioAPI synchronous requests - realtimeLOV readREST callManager: GET /entity?filter=(criteria)search the specific objects in the <ORGANIZATION> systemAPI synchronous requests - realtimeSearch EntityREST callManager: GET /entityget Object from RetlioAPI synchronous requests - realtimeGet EntityKafka Request DCRManager: <PERSON> DCR eventpush Kafka DCR EventKafka asynchronous event - realtimeDCR IQVIA flowDependent componentsComponentUsageManagersearch entities in MDM systemsAPI <PERSON> REST and secure accessReltioReltio MDM systemDCR <ORGANIZATION> legacy <ORGANIZATION> processor"
|
||
},
|
||
{
|
||
"title": "Create <ORGANIZATION> complex <US_DRIVER_LICENSE> methods - COMPANY model",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "DescriptionThis <ORGANIZATION> is used to process complex <ORGANIZATION> requests. It supports the management of <ORGANIZATION> entities with the relationships between them. The user can provide data in the IQVIA or COMPANY model.Flow diagramFlow diagram <ORGANIZATION> (overview)(details on main diagram)Steps HCP Map HCP to COMPANY modelExtract parent <ORGANIZATION> - MainHCO attribute of affiliated <ORGANIZATION> entityExecute search service for affiliated <ORGANIZATION> and parent HCOIf affiliated <ORGANIZATION> or parent <ORGANIZATION> not found in MDM system: execute trigger serviceOtherwise set entity URI for found objectsExecute <ORGANIZATION> complex service for <ORGANIZATION> request - affiliated <ORGANIZATION> and parent <ORGANIZATION> entitiesMap <ORGANIZATION> response to contact affiliations <ORGANIZATION> attributecreate relation between <ORGANIZATION> and affiliated <ORGANIZATION> relation between <ORGANIZATION> and parent HCOExecute HCP simple serviceHCP <ORGANIZATION> search entity serviceSearch entity service is used to search for existing entities in the <ORGANIZATION> system. This feature is configured for user via searchConfigHcpApi attribute. This configuration is divided for <ORGANIZATION> and affiliated <ORGANIZATION> entities and contains a list of searcher implementations - searcher <URL>tributedescriptionHCOsearch configuration for affiliated <ORGANIZATION> entityMAIN_HCO search configuration for parent <ORGANIZATION> entitysearcherTypetype of searcher implementationattributesattributes used for attribute search implementationHCP trigger serviceTrigger service is used to execute action when entities are missing in MDM system. This feature is configured for user via triggerType <URL>igger typedescriptionCREATEcreate missing <ORGANIZATION> or parent <ORGANIZATION> via <ORGANIZATION> complex <ORGANIZATION> request for missing objectsIGNOREignore missing objects, flow will continue, missing objects and relations will not be createdREJECTreject request, stop processing and return response to clientFlow diagram <ORGANIZATION> (overview)(details on main diagram)Steps HCOMap <ORGANIZATION> request to COMPANY modelIf hco.uri attribute is null then create <ORGANIZATION> entityCreate relationif <ORGANIZATION> is not null then use to create other affiliationsif parentHCO.uri is null then use search service to find entityif entity is found then use is to create other affiliationsif entity is not found then create parentHCO and use to create other affiliationsif Relation exists then do nothingif <ORGANIZATION> doesn't exist then create relationTriggersTrigger actionComponentActionDefault timeREST callmanager <ORGANIZATION>hcp/complexcreate <ORGANIZATION>, <ORGANIZATION> objects and relationsAPI synchronous requests - realtimeREST callmanager <ORGANIZATION>complexcreate <ORGANIZATION> objects and relationsAPI synchronous requests - realtimeDependent componentsComponentUsageEntity search servicesearch entity HCP API opertaionTrigger serviceget trigger result opertaionEntity management serviceget entity connections"
|
||
},
|
||
{
|
||
"title": "Create HCP/HCO simple <US_DRIVER_LICENSE> methods - COMPANY model",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "DescriptionV2 API simple methods are used to manage the <ORGANIZATION> entities - HCP/HCO/<URL>ey support basic <ORGANIZATION><ORGANIZATION> request with COMPANY model.Flow diagramSteps Crosswalk generator - auto-create crosswalk - if not exists Entity validationAuthorize request - check if user has appropriate permission, country, sourceGetEntityByCrosswalk operaion- check if entity exists in reltio, applicable for PATCH operationQuality service - checks entity attributes against validation pipelineDataProviderCrosswalkCheck - check if entity contributor provider exists in reltioExecute HTTP request - post entities Reltio operationExecute GetOrRegister COMPANYGlobalCustomerID operation Crosswalk generator serviceCrosswalk generator service is used for creating crosswalk when entity crosswalk is missing. This feature is configured for user via crosswalkGeneratorConfig <URL>tributedescriptioncrosswalkGeneratorTypecrosswalk generator implementation typecrosswalk type valuesourceTablecrosswalk source table valueTriggersTrigger actionComponentActionDefault timeREST callManager: <ORGANIZATION>/hcpcreate HCP objects in MDM systemAPI synchronous requests - realtimeREST callManager: <ORGANIZATION>/hcocreate <ORGANIZATION> objects in MDM systemAPI synchronous requests - realtimeREST callManager: <ORGANIZATION>/mcocreate <ORGANIZATION> objects in MDM systemAPI synchronous requests - realtimeDependent componentsComponentUsageCOMPANY <ORGANIZATION> RegistrygetOrRegister operationCrosswalk generator servicegenerate crosswalk opertaion"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> IQVIA flow",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/DCR+IQVIA+flow",
|
||
"content": "DescriptionThe following page contains a detailed description of <ORGANIZATION> flow for <LOCATION> clients. The logic is complicated and contains multiple <URL>rrently, it contains the following:Complex business rules for generating DCRs,Limited flexibility with IQVIA tenants,<ORGANIZATION> end-to-end technical processes (e.g., hand-offs, transfers, etc.)The flow is related to numerous file transfers & <URL>e idea is to make a simplified flow in the COMPANY model - details described here - <ORGANIZATION> COMPANY flowThe below diagrams and description contain the current state that will be deprecated in the future.Flow diagram - Overview - high levelFlow diagram - Overview - simplified viewStepsHUB LOGICHUB Configuration overview:<ORGANIZATION> CONFIG AND CLASSES:Logic is in the MDM-MANAGERNewHCODCRService - related to NEW_HCO, NEW_HCO_L1, NEW_HCO_L2NewHCPDCRService - related to NEW_HCPNewWorkplaceDCRService - related to <ORGANIZATION> Config:\ndcrConfig: \n dcrProcessing: <LOCATION> routeEnableOnStartup: <LOCATION> deadLetterEndpoint: "file:///opt/app/log/rejected/"\n externalLogActive: <LOCATION> activationCriteria:\n <ORGANIZATION> - country: "CN"\n sources:\n - "CN3RDPARTY"\n - "FACE"\n - "GRV"\n NEW_HCP:\n - country: "CN"\n sources:\n - "GRV"\n NEW_WORKPLACE:\n - country: "CN"\n sources:\n - "GRV"\n - "MDE"\n - "FACE"\n - "CN3RDPARTY"\n - "EVR"\n\n continueOnHCONotFoundActivationCriteria:\n - country: "CN"\n sources:\n - "GCP"\n - countries:\n - AD\n - BL\n - BR\n - DE\n - ES\n - FR\n - FR\n - GF\n - GP\n - IT\n - MC\n - MF\n - MQ\n - MU\n - MX\n - NC\n - NL\n - PF\n - PM\n - RE\n - RU\n - TR\n - WF\n - YT\n sources:\n - GRV\n - GCP\n validationStatusesMap:\n VALID: validated\n NOT_VALID: <ORGANIZATION>: pending\nFlow diagram - DCR ActivationStepsIQVIA/<LOCATION> ACTIVATION LOGIC/ACTIVATION CRITERIA:<URL>HCPDCRService#isActive :(common) on IQVIA the first check is on the source and country(common) <ORGANIZATION> is activated for CN for <LOCATION> source (TRUE – ACTIVATE)(common) NEW_HCO is activated for CN for CN3RDPARTY, FACE, <LOCATION> source (TRUE – ACTIVATE)(common) <ORGANIZATION> is activated for CN for <LOCATION>, <ORGANIZATION>, CN3RDPARTY, FACE, <ORGANIZATION> source (TRUE – ACTIVATE)The first 3 isActive checks are related to common checks, here we are checking the country and source of the <ORGANIZATION> and then we can verify more details.(REVALIDATION LOGIC) Then we check if the flag on <ORGANIZATION> is revalidated=trueIf trueGet From Reltio the current <ORGANIZATION> state by entityUri( Reltio Change requests connected to the <ORGANIZATION> all AWAITING_REVIEW with type NEW_HCPCheck HCP validation statusesConfigured statuses: "pending", "partial-validated", "partialValidated"From Entity get <ORGANIZATION> attributeCompare valuesIf match foundGet EVR crosswalksPatch entity using EVR crosswalk set <ORGANIZATION> to pending(NEW HCP isActive LOGIC) activation logic check (detailed):NEW_HCP detailed ACTIVATORCheck if <ORGANIZATION> is pendingIf False: <ORGANIZATION> is NOT pending:Check current <ORGANIZATION> valueIf OV ValidationStatus is "notvalidated" or "partialValidated" do further checks:Get <LOCATION> LUD CrosswalkGet (EVR)DCR LUD Crosswalk(Check) if EVR changes are fresher then the <LOCATION> changes on <ORGANIZATION> return FALSEGet <ORGANIZATION> current valueIf pending or partialValidated go to “If true, next”else return <ORGANIZATION> reject return FALSEIf true, next(Check) SpeakerStatus value and check if not "actv","enabled" then return FALSE(Check)Get Change Requests from Reltio with AWAITING_REVIEW if found return <ORGANIZATION> from <ORGANIZATION>, if null return FALSE(Check) Get For <LOCATION> the <LOCATION> and check if exists, if null return <ORGANIZATION> if above checks were not fulfilled return (TRUE – ACTIVATE)(NEW <ORGANIZATION> isActive LOGIC) activation logic check cd:<NRP> detailed ACTIVATORGet ValidationStatus value from source HCP entityCheck if <ORGANIZATION> is equal to "enabled","validated","pending","<URL>A.3", "partial-validated", "partialValidated"If true return FALSE – <ORGANIZATION> is not activated for these statusesNext go to next Check(Check) SpeakerStatus value and check if not "actv","enabled" then return FALSEGET <URL> attributeGet <URL> attributeNow once we have <ORGANIZATION> Name we need to:Get <ORGANIZATION> details from Reltio related to this specific <ORGANIZATION> if any info in <ORGANIZATION> containsHospital nameOr <ORGANIZATION> nameIf true it means that there are already some DCRs created in <ORGANIZATION> for this HCP in relation to this Department/WorkplaceReturn REQUST_ALREADY_EXISTS and return FALSE (not activated)Finally, if above checks were not fulfilled return (TRUE – ACTIVATE)(NEW WORKPLACE isActive LOGIC) activation logic check cd:<ORGANIZATION> detailed ACTIVATORGet ValidationStatus value from source HCP entityCheck if <ORGANIZATION> is equal to "enabled","validated", "<DATE_TIME> true return FALSE – <ORGANIZATION> is not activated for these statusesNext go to next Check(Check) SpeakerStatus value and check if not "actv","enabled" then return FALSE(Check) Verify <URL>places – if null - return FALSE (not activate)Next check <URL>places, check all elements andRemove duplicated refEntity.objectUrisRemove Workplaces with "enabled","validated","pending" ValidationStatusesCheck the output list – if there are 0 Workplaces or <URL>ze() <2 then return FALSE, there are less than 2 workplaces so rejectNow filter Workplaces and find <ORGANIZATION>, check all elements andIf there are any workplaces related to (EMPTY) crosswalk name then filter them out, currently make <ORGANIZATION> for all because the condition is not metCheck ChangeRequests connected with the current HCPGet <ORGANIZATION> details from Reltio related to this specific <ORGANIZATION> if any info in <ORGANIZATION> contains <ORGANIZATION> created for the current <ORGANIZATION> for which we are trying to create <ORGANIZATION> true it means that there are already some DCRs created in <ORGANIZATION> for this HCP in relation to this <ORGANIZATION> REQUST_ALREADY_EXISTS and return FALSE (not activated)Finally, if the above checks were not fulfilled return (TRUE – ACTIVATE)Kafka <ORGANIZATION> sender - produce event to <PERSON> <URL>rvice.dcr.AbstractDCRService#sendDCRRequest <PERSON> EVENT DCR SENDSend a request from <ORGANIZATION>:<ORGANIZATION> class published to <PERSON> topic prod-gw-dcr-requestsFlow <ORGANIZATION> (<ORGANIZATION> processor)StepsReceiver (<ORGANIZATION> processor) (Camel) - <URL>ute.DCRServiceRoute LOGIC:DCRServiceRouteReceive <ORGANIZATION> request: ${body} – log input <ORGANIZATION> bodyCheck Delay time and postpone the <ORGANIZATION> to next runtimeDelay = Current Time – DCR Create Time (in <ORGANIZATION> new object initialization time)if timeDelay < 240 minDelay based on <PERSON> session or delayTime (depending what is lower value)Thread SleepNote: current sessionTimeout on PROD is 30 secondsElse Proceed the <LOCATION> <URL>rvice.dcr.AbstractDCRService#processDCRRequest LOGIC:(common) Get From Reltio current <PERSON>) Check Activation (only abstract, by source and country) criteria, if active true:(common) Start processing <ORGANIZATION> request(common) Create Change Request in Reltio (empty container)(common) Add External InfoHCPWithHCOExternalInfo objectSet NEW_HCP/<ORGANIZATION> typeSet Reltio HCP RUISet Source entity crosswalkProcess DCR Custom Logic (NEW_HCP/NEW_HCO/NEW_WORKPALCE),Description belowUpdate in <ORGANIZATION> with created <ORGANIZATION> PfDataChangeRequest objectPfDataChangeRequest object is used by IQVIA and this is exported in excel file to <ORGANIZATION> = CreatedCrosswalk EVRIn case of error delete Reltio ChangeRequest (container) and throw ExceptionIf ok set the status to ACCEPTEDOtherwise REJECTEDNewHCPDCRService - STEPS - Process DCR Custom Logic (NEW_HCP)NEW_HCP custom logicCreate a new <ORGANIZATION> type Entity (java object) <ORGANIZATION> to validatedSet Crosswalk = EVR – get existing or create newPATCH Entity HCP Object to Reltio using change request id (update existing container only)In ExternalInfo set affilaitedHCOs objectNewHCODCRService - STEPS - Process DCR Custom Logic (NEW_HCO, <ORGANIZATION> custom logicCreate a new <ORGANIZATION> type Entity (java object)Set crosswalks from the <ORGANIZATION> entitySet ExternalInfo department and hospital names Get department name from <ORGANIZATION> Request form <ORGANIZATION> hospital name from <ORGANIZATION> Request from <ORGANIZATION><URL>inHCOExecute <URL>HCODCRService#processAffiliations (method return status: 1 – NEW_HCO_L1(Workplace) or 2 – <LOCATION>), logic:Get affiliatedHCOs, for each element doFind L2HCO entity:Get MainHCO element from affiliatedHCO objectIf is null, return nullIf not nullFind object in <ORGANIZATION> using <ORGANIZATION> operationIf not foundSet EVR crosswalk on MainHCOPOST Entity HCO(MainHCO) Object to Reltio using change request id (update existing container only)And return object/entityURIIf found return object/entityURIFind L1HCO entity:Check if L2HCO is not null, then replace MainHCO attributes using the one found from <ORGANIZATION> and set refEntity uriFind Entity using standard search <PERSON>/crosswalk/match)If not foundSet EVR crosswalkRemove MainHCO(<US_DRIVER_LICENSE>) from <US_DRIVER_LICENSE> objectsetup affiliation l1HCO -l2HCO (using reference attributes add to Workplace MainHCO reference attribute to create a relation between these 2 objectsPOST Entity HCO(Workplace with MainHCO) Object to Reltio using change request id (update existing container only)And return object/entityURIIf found return object/entityURISet <PERSON> enrich with:affliatedHCO that contains <US_DRIVER_LICENSE>+<US_DRIVER_LICENSE> objectsSet status:2 - If L2HCO URI is null1 – if <PERSON> is nullclear MainHCO to avoid Reltio errorif L2HCO existsadd <ORGANIZATION> reference attribute to HCP with reference to <US_DRIVER_LICENSE> object (MainHCO)add Workplace reference attribute to HCP with reference to <US_DRIVER_LICENSE> object (affiliatedHCO)PATCH Entity HCP Object to Reltio using change request id (update existing container <DATE_TIME> 2 If status = 1 – set NEW_HCO_L1 <ORGANIZATION> type in externalInfoIf status =2 – set NEW_HCO_L2 <ORGANIZATION> type in externalInfoOtherwise, <ORGANIZATION> is not valid, all affiliations found, create affiliation without <ORGANIZATION> an <ORGANIZATION> entity in <ORGANIZATION> (<ORGANIZATION> is not valid in that case)NewWorkplaceDCRService - STEPS - Process DCR Custom Logic (NEW_WORKPLACE)Get <ORGANIZATION> entity from <ORGANIZATION> objectGet Workplace attributesRemove duplicated <ORGANIZATION> entityUris objectsFind <ORGANIZATION> workplaces in <ORGANIZATION> using GET operation and save EntityURisExecute the <URL>WorkplaceDCRService#updateAffiliationsLogic (response = false)The method input is HCPDCR IDList of AffiliatedHCOs(Workplaces) found in <ORGANIZATION> by GET operationThe result is HCP+HCO created in the Change requestFlowGet the Change request parameterGet <ORGANIZATION> source Entity from ReltioRemove changes from Change RequestCreate HCP Object new <ORGANIZATION> empty elementSet crosswalk to <ORGANIZATION> acceptedWorkplaces(SET) and add all Workplaces found in <ORGANIZATION> Workplaces from HCP object from <NRP> workpalcesURIS toIf response=true – get from <ORGANIZATION> from affiiatedHCOs URISIf response-false – get from Workpalces from <ORGANIZATION> object from <LOCATION> each WrokplaceURI do:Get Entity HCO from Reltio ObjectPATCH Entity HCP Object to Reltio using change request id (update existing container only) – the input request is HCP object + affilaitedHCOs object found from <ORGANIZATION> the <ORGANIZATION> affiliatedHCOsUris with new ids created in ReltioIn the <ORGANIZATION> set the affilaitedHCOs array to EntityURIS found in <ORGANIZATION> diagram - <ORGANIZATION> Response - process <ORGANIZATION> Response from <ORGANIZATION> DCRResponseRoute:<ORGANIZATION> response processing:REST apiActivated by china_apps user based on the IQVIA EVRs export Used by <ORGANIZATION> to accept/reject(Action) <ORGANIZATION> in ReltioDCRResponse (<ORGANIZATION>) route, possible operations:POST (dcr_id,action)Dcr_id – Reltio Change Request IdAction – accept/updateHCP/updateHCO/ updateAffiliations/reject/merge/mergeUpdateAuthentication service, check user and roleCheck headersDcr_id is mandatorymergeUris structure is winner,looser with 2 idsCheck if <ORGANIZATION> in <ORGANIZATION> exists, otherwise throw NotFoundException and update the PfDataChangeRequest object in <ORGANIZATION> to closedLogic:If <ORGANIZATION> in <ORGANIZATION> is other than AWAITING_REVIEW throw BadRequestException with details that <ORGANIZATION> is already closed (because it means it is now ACCEPTED or <PERSON> the PfDataChangeRequest object in <ORGANIZATION> to completedCheck Action and do (FOR NEW_HCP):Accept: NEW_HCP acceptDCRCompose Entity and setValidationStatus = partialValidated (if partial flag in <ORGANIZATION> method)ValidationStatus = validated (if not partial)Set ValidationChangeDate to current dateGet <ORGANIZATION> From Reltio with <ORGANIZATION> id from <ORGANIZATION> current <NRP> state from <ORGANIZATION> from current <ORGANIZATION> data from <ORGANIZATION> entity and enrich the Workplaces <ORGANIZATION> objects from <ORGANIZATION> using GET operation – retrieve <LOCATION> method inputHCP with ValidationStatus/ValidationChangeDate/CountryAffiliatedHCOs from Reltio (Workplaces that were get from <ORGANIZATION> info)Exectue NewHCPDCRService#updateHCP LOGIC:Common updateHCP object method that updates <ORGANIZATION> in <ORGANIZATION> and closes the DCRUsed in NEW_<URL>ceptDCR/rejectDCR/updateHCO method andGet <ORGANIZATION> From Reltio with <ORGANIZATION> id from <ORGANIZATION> the current <NRP> state from <ORGANIZATION> from current EntitySet EVR crosswalkSet <ORGANIZATION> (validated) and <ORGANIZATION> (current date) if missing / If not get from requestIf input <PERSON> exists (only when Workplaces are in request)mapAndCreateHCO (create HCOs in Reltio)execute modifyAffiliationStatusThis method checks if in <ORGANIZATION> all Workplaces were created and compares it to the list of Workplaces in <ORGANIZATION> input objectset validated or notvalidated statuses on <ORGANIZATION> depending on found in ReltioThe result of these 2 methods are Workplaces created in <ORGANIZATION> with <ORGANIZATION> parameterCreate HCP with affiliated Workplaces(optionally) in <ORGANIZATION> – execute complex updateHCP method -> now data is created in ReltioRemove changes from <ORGANIZATION> from <ORGANIZATION> – because changes were applied manually and <ORGANIZATION> had only a container for changes, we need to clear this to not apply it one more <URL>ly <ORGANIZATION> in <ORGANIZATION> – CLOSEDCheck the merge entities parameter and merge <URL>ject: NEW_HCP rejectDCRCompose Entity and setValidationStatus = notvalidatedSet <ORGANIZATION> to the current dateupdateHCP method inputHCP with ValidationStatus/ValidationChangeDate/CountryExecute NewHCPDCRService#updateHCPUpdateAffiliation: NEW_HCP updateAffilations logic:(input Entity object from Client)N/A for <PERSON>: <ORGANIZATION> updateHCO logic:(input Entity object from Client)N/A for NEW_HCPUpdateHCP: NEW_HCP updateHCP:What is the difference between acceptDCR and updateHCP ?In accept we can set <ORGANIZATION> to validated or partialValidate and we get all Workplaces from ReltioIn updateHCP we receive the <LOCATION> from client together with <ORGANIZATION> Id. We can apply changes generated by the Client, not related to the <ORGANIZATION> object that is currently in <ORGANIZATION> the end in both cases we close and accept the ChangeRequest(input Entity object from Client)Execute NewHCPDCRService#updateHCP method (described above)Check Action and do (FOR NEW_HCO):Accept: NEW_ HCO acceptDCRN/A – only user can use this by <ORGANIZATION> (updateHCP operation)Reject: NEW_HCO rejectDCRExecute _reject <ORGANIZATION> – Change Request is REJECTED in ReltioUpdateAffiliation: NEW_HCO updateAffilations logic:N/A for this requestUpdateHCO: <ORGANIZATION> updateHCO logic:Get <ORGANIZATION> From Reltio with <ORGANIZATION> id from <ORGANIZATION> current <NRP> state from <ORGANIZATION> from current EntityGet List of Entities from Client request and execute the:<URL>WorkplaceDCRService#updateAffiliationsLogic: (response = true)logic described aboveTrue logic activates the following:Create HCO 1 outside of <ORGANIZATION> – object created in <ORGANIZATION> outside of <ORGANIZATION> - object create in <ORGANIZATION> affiliations are made and an object created in Reltio (<ORGANIZATION> with <ORGANIZATION> id in Reltio with affiliations to already created objects in <ORGANIZATION> (<LOCATION> and <LOCATION>) but the <ORGANIZATION> still in DCR)UpdateHCP: NEW_HCO updateHCP logic:N/A for <ORGANIZATION> and do (FOR NEW_WORKPLACE):Accept: <ORGANIZATION> acceptDCRGet <ORGANIZATION> From Reltio with <ORGANIZATION> id from <ORGANIZATION> current <NRP> state from <ORGANIZATION> from current EntityGet List of Workplaces from the Change Request HCP <URL>WorkplaceDCRService#updateAffiliationsLogic: (response = true)logic described aboveTrue logic activates the following:Create HCO 1 outside of <ORGANIZATION> – object created in <ORGANIZATION> outside of <ORGANIZATION> - object create in ReltioThen affilaitions are made and object created in Reltio (<ORGANIZATION> with <ORGANIZATION> id in Reltio with affilaitions to already created objects in <ORGANIZATION> (<LOCATION> and <LOCATION>) but the <ORGANIZATION> still in DCR)Apply ChanteRequest in Reltio - ACCEPTEDReject: NEW_WORKPLACE rejectDCRApply Reltio Change Request with creation only <ORGANIZATION> object in ReltioUpdateAffiliation: NEW_WORKPLACE updateAffilations logic:Same as acceptDCR but the Workplaces list is received from The Client requestUpdateHCO: NEW_WORKPLACE updateHCO logicN/AUpdateHCP: NEW_WORKPLACE updateHCP logic:<ORGANIZATION> the PfDataChangeRequest object in <ORGANIZATION> to closedTriggersTrigger actionComponentActionDefault timeOperation linkDetailsREST callManager: <ORGANIZATION> /hcpcreate specific objects in MDM systemAPI synchronous requests - realtimeCreate/Update <ORGANIZATION> the <ORGANIZATION> requestKafka Request DCRManager: <PERSON> DCR eventpush Kafka DCR EventKafka asynchronous event - realtimeDCR IQVIA flowPush <ORGANIZATION> event to <ORGANIZATION> processorKafka Request DCRDCRServiceRoute: Poll Kafka <ORGANIZATION> evenConsumes <ORGANIZATION> eventsKafka asynchronous event - realtimeDCR IQVIA flowPoll/Consumes <ORGANIZATION> events and process itRest call - <ORGANIZATION> responseManager:DCRResponseRoute <ORGANIZATION> /dcrResponse/{id}/acceptupdates <ORGANIZATION> by <ORGANIZATION> (accept/reject <URL>.)API synchronous requests - realtimeDCR IQVIA flowAPI to accept DCRRest call - DCR responseManager:DCRResponseRoute <ORGANIZATION> /dcrResponse/{id}/updateHCPupdates <ORGANIZATION> by <ORGANIZATION> (accept/reject <URL>.)API synchronous requests - realtimeDCR IQVIA flowAPI to update HCP through DCRRest call - DCR responseManager:DCRResponseRoute <ORGANIZATION> /dcrResponse/{id}/updateHCOupdates <ORGANIZATION> by <ORGANIZATION> (accept/reject <URL>.)API synchronous requests - realtimeDCR IQVIA flowAPI to update <ORGANIZATION> through DCRRest call - DCR responseManager:DCRResponseRoute POST /dcrResponse/{id}/updateAffiliationsupdates <ORGANIZATION> by <ORGANIZATION> (accept/reject <URL>.)API synchronous requests - realtimeDCR IQVIA flowAPI to update <ORGANIZATION> to <ORGANIZATION> affiliations through DCRRest call - DCR responseManager:DCRResponseRoute <ORGANIZATION> /dcrResponse/{id}/rejectupdates <ORGANIZATION> by <ORGANIZATION> (accept/reject <URL>.)API synchronous requests - realtimeDCR IQVIA flowAPI to reject DCRRest call - DCR responseManager:DCRResponseRoute <ORGANIZATION> /dcrResponse/{id}/mergeupdates <ORGANIZATION> by <ORGANIZATION> (accept/reject <URL>.)API synchronous requests - realtimeDCR IQVIA flowAPI to merge <ORGANIZATION> HCP entitiesDependent componentsComponentUsageManagersearch entities in MDM systemsAPI <PERSON> REST and secure accessReltioReltio <PERSON> legacy <ORGANIZATION> processor"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> COMPANY flow",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/DCR+COMPANY+flow",
|
||
"content": "DescriptionTBD Flow diagram (drafts)StepsTBDTriggersTrigger actionComponentActionDefault timeDependent componentsComponentUsage"
|
||
},
|
||
{
|
||
"title": "Model Mapping (IQVIA<->COMPANY)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "DescriptionThe interface is used to map <ORGANIZATION> between IQIVIA and COMPANY model.Flow diagram-MappingAddress ↔ Addresses attribute mappingIQIVIA MODEL ATTRIBUTE [Address]COMPANY MODEL ATTRIBUTE [Addresses]AddressPremiseAddressesPremiseAddressBuildingAddressesBuildingAddressVerificationStatusAddressesVerificationStatusAddressStateProvinceAddressesStateProvinceAddressCountryAddressesCountryAddressAddressLine1AddressesAddressLine1AddressAddressLine2AddressesAddressLine2AddressAVCAddressesAVCAddressCityAddressesCityAddressNeighborhoodAddressesNeighborhoodAddressStreetAddressesStreetAddressGeolocationLatitudeAddressesLatitudeAddressGeolocationLongitudeAddressesLongitudeAddressGeolocationGeoAccuracyAddressesGeoAccuracyAddressZipZip4AddressesZip4AddressZipZip5AddressesZip5AddressZipPostalCodeAddressesPOBoxPhone attribute mappingsIQIVIA MODEL ATTRIBUTECOMPANY MODEL ATTRIBUTEPhoneLineTypePhoneLineTypePhoneLocalNumberPhoneLocalNumberPhoneNumberPhoneNumberPhoneFormatMaskPhoneFormatMaskPhoneGeoCountryPhoneGeoCountryPhoneDigitCountPhoneDigitCountPhoneCountryCodePhoneCountryCodePhoneGeoAreaPhoneGeoAreaPhoneFormattedNumberPhoneFormattedNumberPhoneAreaCodePhoneAreaCodePhoneValidationStatusPhoneValidationStatusPhoneTypeIMSPhoneTypePhoneActivePhonePrivacyOptOutEmail attribute mappingsIQIVIA MODEL ATTRIBUTECOMPANY MODEL ATTRIBUTEEmailEmailEmailDomainEmailDomainEmailDomainTypeEmailDomainTypeEmailValidationStatusEmailValidationStatusEmailTypeIMSEmailTypeEmailActiveEmailPrivacyOptOutEmailUsernameEmailSourceSourceNameHCO mappingsIQIVIA MODEL ATTRIBUTECOMPANY MODEL ATTRIBUTECountryCountryNameNameTypeCodeTypeCodeSubTypeCodeSubTypeCodeCMSCoveredForTeachingCMSCoveredForTeachingCommentersCommentersCommHospCommHospDescriptionDescriptionFiscalFiscalGPOMembershipGPOMembershipHealthSystemNameHealthSystemNameNumInPatientsNumInPatientsResidentProgramResidentProgramTotalLicenseBedsTotalLicenseBedsTotalSurgeriesTotalSurgeriesVADODVADODAcademicAcademicKeyFinancialFiguresOverviewSalesRevenueUnitOfSizeKeyFinancialFiguresOverviewSalesRevenueUnitOfSizeClassofTradeNSpecialtyClassofTradeNSpecialtyClassofTradeNClassificationClassofTradeNClassificationIdentifiersIDIdentifiersIDIdentifiersTypeIdentifiersTypeSourceNameOriginalSourceNameNumOutPatientsOutPatientsNumbersStatusValidationStatusUpdateDateSourceUpdateDateWebsiteURLWebsiteWebsiteURLOtherNames-OtherNamesName-Type (constant: OTHER_NAMES)OfficialName-OtherNamesName-Type (constant: OFFICIAL_NAME)Address*Addresses*Phone*Phone*HCP mappingsIQIVIA MODEL ATTRIBUTECOMPANY MODEL ATTRIBUTEDESCRIPTIONCountryCountryDoBDoBFirstNameFirstNamecase: (IQVIA -> COMPANY), if IQIVIA(FirstName) is empty then IQIVIA(Name) is used as COMPANY(FirstName) mapping resultLastNameLastNamecase: (IQVIA -> COMPANY), if IQIVIA(LastName) is empty then IQIVIA(Name) is used as COMPANY(LastName) mapping resultNameNameNickNameNickNameGenderGenderPrefferedLanguagePrefferedLanguagePrefixPrefixSubTypeCodeSubTypeCodeTitleTitleTypeCodeTypeCodePresentEmploymentPresentEmploymentCertificatesCertificatesLicenseLicenseIdentifiersIDIdentifiersIDIdentifiersTypeIdentifiersTypeUpdateDateSourceUpdateDateSourceNameSourceValidationSourceNameValidationChangeDateSourceValidationChangeDateValidationStatusSourceValidationStatusSpeakerSpeakerLevelSpeakerLevelSpeakerSpeakerTypeSpeakerTypeSpeakerSpeakerStatusSpeakerStatusSpeakerIsSpeakerIsSpeakerDPPresenceChannelCodeDigitalPresenceChannelCodeMETHOD PARAM<Workplaces>ContactAffiliationscase: (IQVIA -> COMPANY), param workplaces is converted to <ORGANIZATION> and added to ContactAffiliationsMETHOD PARAM<MainWorkplaces>ContactAffiliationscase: (IQVIA -> COMPANY), param main workplaces are converted to <ORGANIZATION> and added to ContactAffiliationsWorkplaceMETHOD PARAM<Workplaces>case: (COMPANY → IQIVIA), param workplaces is converted to <ORGANIZATION> and assigned to WorkplaceMainWorkplaceMETHOD PARAM<MainWorkplaces>case: (COMPANY → IQIVIA), param main workplaces are converted to <ORGANIZATION> and assigned to MainWorkplaceAddress*Addresses*Phone*Phone*Email*Email*TriggersTrigger actionComponentActionDefault timeMethod <ORGANIZATION>, List<EntityKt> workplaces, List<EntityKt> mainWorkplaces, List<AttributeValueKt> addresses)realtimeMethod <URL>asstoCOMPANYModel(EntityKt iqiviaModel, List<EntityKt> workplaces, List<EntityKt> mainWorkplaces)realtimeMethod <URL>asstoIqiviaModel(EntityKt <ORGANIZATION>, List<EntityKt> workplaces, List<EntityKt> mainWorkplaces)realtimeMethod <URL>asstoCOMPANYModel(EntityKt iqiviaModel)realtimeMethod <URL>asstoIqiviaModel(EntityKt COMPANYModel)realtimeDependent componentsComponentUsagedata-modelMapper uses models to convert between them"
|
||
},
|
||
{
|
||
"title": "User Profile (<LOCATION> user)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "DescriptionUser profile got new attributes used in <ORGANIZATION> <URL>tributeDescriptionsearchConfigHcpApiconfig search entity service for <ORGANIZATION> contains <ORGANIZATION>/MAIN_HCO search entity type configurationsearchConfigHcoApiconfig search entity service for <ORGANIZATION> APIsearcherTypetype of searcher implementationavailable values: [UriEntitySearch/CrosswalkEntitySearch/AttributesEntitySearch]attributesattribute names used in AttributesEntitySearchtriggerTypeV2 <ORGANIZATION> complex <ORGANIZATION> trigger configuration - action executed when there are missing entities in requestavailable values: [REJECT/IGNORE/<ORGANIZATION>/CREATE]crosswalkGeneratorConfigauto-create entity crosswalk - if missing in requestcrosswalkGeneratorTypetype of crosswalk generator, available values: [UUID]typeauto-generated crosswalk type valuesoruceTableauto-generated crosswalk source table valuesourceModelsource model of entity provided by user for <US_DRIVER_LICENSE> HCP/HCO complex,available values: [COMPANY,IQIVIA] Flow diagramTBDStepsTBDTriggersTrigger actionComponentActionDefault timeDependent componentsComponentUsage"
|
||
},
|
||
{
|
||
"title": "User",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/User",
|
||
"content": "The user is configured with a profile that is shared between all <ORGANIZATION> services. Configuration is provided via yaml files and loaded at boot time. To use the profile in any application, import the <URL>erConfiguration configuration from the mdm-user module. This operation will allow you to use the <ORGANIZATION> class, which is used to retrieve <URL>er profile <ORGANIZATION> used for authenticationgetEntityUsesMongoCacheretrive entity from mongo cache in get entity operationlookupsUseMongoCacheretrive lookups from mongo cache in <ORGANIZATION> entities/relationships in response to the clientguardrailsEnabledcheck if contributor provider crosswalk exists with data provider crosswalkrolesuser permissionscountriesuser allowed countriessourcesuser allowed crosswalksdefaultClientdefault mdm client namevalidationRulesForValidateEntityServicevalidation rules configurationbatchesuser allowed batches configurationdefaultCountryuser default country, used in api-router, when country is not provided in requestoverrideZonesuser country-zone configuration that overwrites default api-router behaviorkafkauser kafka configuration, used in kafka management servicereconciliationTargetsreconciliation targets, used in event resend service"
|
||
},
|
||
{
|
||
"title": "Country Cluster",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/Country+Cluster",
|
||
"content": "General assumptionsMDM HUB will be populating country cluster <URL>itially, only default cluster country will be sent. In future, other clusters can be calculated and distributed to downstream <URL> the current phase, the default clustering model is based on <ORGANIZATION> country <URL>anges are backward compatible for downstream systems if they are not interested in consuming the cluster <URL>faultCountrycluster is an optional attribute. In case of lack of mapping, it will not be included in <LOCATION> .Example of mapping: CountrycountryClusterAndorra (AD)France (FR)Maroco (MC)France (<ORGANIZATION> in <ORGANIZATION>. Enrichment of <PERSON> events with extra parameter defaultClusterCoutryIt will be calculated based on a new config table that maps countries to cluster countriesconfiguration table must be implemented on <ORGANIZATION> sideIt can be used in routing rules in filtering events based on defaultCountryCluster2. Add a new column COUNTRY_CLUSTER representing the default country cluster in views:ENTITIES, <ORGANIZATION>, <ORGANIZATION>, ENTITY_UPDATE_DATES, MDM_ENTITY_CROSSWALKSAdd country cluster config table 3. Handling cluster country sent by PforceRx in <ORGANIZATION> process in a transparent wayIf a new entity then the country will be set based on the address country.If an entity exists then the country will be set based on the existing country in <ORGANIZATION> in the event model{ "eventType": "HCP_CHANGED", "eventTime": <US_BANK_NUMBER>, "countryCode": "MC", “defaultCountryCluster": "FR", "entitiesURIs": ["entities/ysCkGNx“ ] , "targetEntity": { "uri": "entities/ytY3wd9", "type": "configuration/entityTypes/HCP",Changes on client-sideMULEMULE must map defaultCountryCluster to country sent to PforceRx in the <LOCATION> pipeline.ODSODS ETL process must use column cluster_country instead of country while reading data from <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Create/Update <ORGANIZATION><ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "DescriptionThe REST interfaces exposed through the <ORGANIZATION> Manager component used by clients to update or create <ORGANIZATION><ORGANIZATION> objects. The update process is supported by all connected MDMs – Reltio and Nucleus360 with some limitations. At this moment <PERSON> is fully supported for entity types: <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>. The <ORGANIZATION> supports only the <ORGANIZATION> update process. The decision which <ORGANIZATION> should be selected to process the update request is controlled by configuration. Configuration map defines country assignment to <ORGANIZATION> which stores country's data. Based on this map, <ORGANIZATION> selects the correct MDM system to forward the update <URL>e difference between Create and Update operations is the additional <ORGANIZATION> request during the update operation. During the update, an entity is retrieved from the <ORGANIZATION> by the crosswalk value for validation purposes. Diagrams 1 and 2 presents standard flow. On diagrams 3, <DATE_TIME>, <DATE_TIME>, 6 additional logic is optional and activated once the specific condition or attribute is provided. The diagrams below present a sequence of steps in processing client calls.Update <DATE_TIME>:To increase Update <ORGANIZATION>/<ORGANIZATION> performance, the logic was slightly altered:ContributorProvider crosswalk is now looked up in <ORGANIZATION> entity not found by this crosswalk, fallback lookup using <PERSON> confirming that the ContributorProvider crosswalk exists in <ORGANIZATION>, add "partialOverride" to the request and continue processing with <ORGANIZATION>/<ORGANIZATION> logicFlow diagram1Create HCP/HCO/MCO2 Update <ORGANIZATION> (additional optional logic) Create/Update HCO with ParentHCO 4 (additional optional logic) Create/Update HCP with AffiliatedHCO&Relation5 (additional optional logic) Create/Update HCO with ParentHCO 6 (additional optional logic) Create/Update HCP with source crosswalk replace <ORGANIZATION> client sends HTTP request to MDM Manager endpoint.Kong API Gateway receives requests and handles authentication.If the authentication succeeds, the request is forwarded to MDM Manager <URL>M Manager checks user permissions to call createEntity (<ORGANIZATION><ORGANIZATION>) operation and the correctness of the request.If the user's permissions are correct, MDM Manager proceeds with creating the specific object and returns created object in <ORGANIZATION> to the Client.During partialUpdate before update entity is retrieved from <ORGANIZATION> logic will be activated in the following cases:3 - during <ORGANIZATION> update parentHCO attribute is delivered in the request4 - during <ORGANIZATION> create/update affiliations are delivered in the request5 - during <ORGANIZATION> creation based on the configuration-specific sources are enriched with cached Relation objects and this object is injected to the main Entity as the reference attribute6 - during <ORGANIZATION> create/update when conditions are met, source crosswalk is replaced from <ORGANIZATION> to MAPP_ATTENDEETriggersTrigger actionComponentActionDefault timeREST callManager: <ORGANIZATION> /hco /hcp /mcocreate specific objects in MDM systemAPI synchronous requests - realtimeDependent componentsComponentUsageManagercreate update Entities in MDM systemsAPI <PERSON> REST and secure accessReltioReltio MDM systemNucleusNucleus MDM system"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "DescriptionThe operation creates or updates the Relation of MDM Manager manages the relations in the <ORGANIZATION> MDM system. User can update the specific relation using a crosswalk to match or create a new object using unique crosswalks and information about start and end objectThe detailed process flow is shown below.Flow diagramCreate/Update RelationStepsThe client sends <ORGANIZATION> requests to the MDM Manager endpoint.<LOCATION> receives requests and handles authentication.If the authentication succeeds, the request is forwarded to the <ORGANIZATION> Manager <URL><ORGANIZATION> Manager checks user permissions to call createRelation/updateRelation operation and the correctness of the request.If the user's permissions are correct, <ORGANIZATION> proceeds with the create/update operation.<ORGANIZATION>: after successfully update (<ORGANIZATION> != failed), relations are cached in the MongoDB, the relations are then reused in <ORGANIZATION> (currently configured for the GBLUS <ORGANIZATION>). This is required to enrich these relations to the <ORGANIZATION> objects during the update, this prevents losing reference attributes duringHCP create operation.OPTIONALLY: PATCH operation adds the PARTIAL_OVERRIDE header to <ORGANIZATION> switching the request to the partial update <URL>iggersTrigger actionComponentActionDefault timeREST callManager: <ORGANIZATION> or updates the <ORGANIZATION> in MDM systemAPI synchronous requests - realtimeDependent componentsComponentUsageManagercreate or updates the <ORGANIZATION> in MDM system"
|
||
},
|
||
{
|
||
"title": "Create/Update/Delete tags",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "The REST interfaces exposed through the <ORGANIZATION> Manager component used by clients to update, delete or create tags assigned to entity objects. Difference between create and update is that tags are added and if the option returnObjects is set to true all previously added and new tags will be returned. Delete action removes one <URL>e diagrams below present a sequence of steps in processing client calls.Flow diagramCreate tagUpdate tagDelete tagStepsThe client sends HTTP request to MDM Manager endpoint.Kong API Gateway receives requests and handles authentication.If the authentication succeeds, the request is forwarded to MDM Manager <URL>M Manager checks user permissions to call createEntityTags operation and the correctness of the request.If the user's permissions are correct, MDM Manager proceeds with creating tags for entity and returns created tags in <ORGANIZATION> to the <URL>iggersTrigger actionComponentActionDefault timeREST callManager: <ORGANIZATION>/DELETE /entityTagscreate specific objects in MDM systemAPI synchronous requests - realtimeDependent componentsComponentUsageManagercreate update delete Entity Tags in MDM systemsAPI <PERSON> REST and secure accessReltioReltio MDM system"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> flows",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/DCR+flows",
|
||
"content": "\n\n\n\nOverviewDCR (Data Change Request) process helps to improve existing data in source systems. Proposal for change is being created by source systems a as <ORGANIZATION> object (sometimes also called VR - Validation Request) which is usually being routed by <ORGANIZATION> to DS (<ORGANIZATION>) either in <ORGANIZATION> or in Third party validators (<ORGANIZATION>, <PERSON>). Response is provided twofold:response for specific <ORGANIZATION> - metadataprofile data update as a direct effect of a <ORGANIZATION> processing - payloadGeneral <ORGANIZATION> process flow High level solution architecture for <ORGANIZATION> flowSource: Lucid\n\n\n\n\n\nSolution for OneKey (OK)\n\n\n\nSolution for Veeva OpenData (VOD)\n\n\n\n\n\nArchitecture highlightsActors involved: PforceRX, Reltio, HUB, OneKeyKey components: <ORGANIZATION> (second version) for <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION> tenantsProcess details:DCRs are created directly by <ORGANIZATION> using <ORGANIZATION>'s HUB APIPforceRx checks for <ORGANIZATION> status updates every 24h → finds out which DCRs has been updated (since last check <DATE_TIME>) and the pulls details from each one with <ORGANIZATION> with <ORGANIZATION> is realized by APIs - DCRs are created with /vr/submit and their status is verified every 8h with /vr/traceData profile updates (payload) are being delivered via CSV and <ORGANIZATION> and <ORGANIZATION> (<ORGANIZATION> batch) to <ORGANIZATION> with COMPANY's <ORGANIZATION> DCRRegistryVeeva collections are used in <PERSON> for tracking purposes\n\n\n\nArchitecture highlightsActors involved: <ORGANIZATION> in <LOCATION>, HUB, <PERSON> (VOD)Key components: <ORGANIZATION> (second version) for <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <LOCATION> tenantsProcess details:DCRs are created by <ORGANIZATION> (DSRs) in Reltio via <ORGANIZATION> 3rd Party Validation - input for DSRs is being provided by reports from PforceRxCommunication with <PERSON> via <US_DRIVER_LICENSE><>SFTP and synchronization <ORGANIZATION> jobs. DCRs are sent and received in batches every 24h DCRs metadata is being exchanged via multiple CSV files ZIPedData profile updates (payload) are being delivered via CSV and <ORGANIZATION> and <ORGANIZATION> (<ORGANIZATION> batch) to <ORGANIZATION> with COMPANY's help <ORGANIZATION> collections are used in <LOCATION> tracking purposes\n\n\n\n\n\nSolution for <ORGANIZATION> (HL) \n\n\n\nSolution for <ORGANIZATION> on GBLUS - sources ICEU, <ORGANIZATION> GRV\n\n\n\n\n\nArchitecture highlightsActors involved: <PERSON> on behalf of PforceRX, Reltio, HUB, IQVIA wrapperKey components: <ORGANIZATION> (first version) for GBLUS tenantProcess details:DCRs are created by sending <ORGANIZATION> requests by <LOCATION> - based on information acquired from PforceRxIntegration HUB <> <PERSON> → via files and <US_DRIVER_LICENSE><>SFTP. HUB confirms <ORGANIZATION> creation by returning file reports back to VeevaIntegration HUB <> IQVIA wrapper → via files and <ORGANIZATION> is responsible for translation of Veeva DCR CSV format to IQVIA CSV wrapper which then creates <ORGANIZATION> in <ORGANIZATION> approve or reject the DCRs in <ORGANIZATION> which updates data profiles accordingly. PforceRx receives update about changes in ReltioDCRRequest collection is used in <PERSON> for tracking purposes\n\n\n\nArchitecture highlights (draft)Actors involved: HUB, IQVIA wrapperKey components: <ORGANIZATION> (first version) for GBLUS tenantProcess details:POST events from sources are captured - some of them are translated to direct DCRs, some of them are gathered and then pushed via flat files to be transformed into DCRs to <ORGANIZATION> \n\n\n"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> generation process (<LOCATION> <ORGANIZATION>)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "The gateway supports following <ORGANIZATION> types:<PERSON> – created when new <ORGANIZATION> is registered in <ORGANIZATION> and requires external validationNewHCOL1 – created when <ORGANIZATION> not found in ReltioNewHCOL2 – created when <ORGANIZATION> not found in <ORGANIZATION> – created when a profile has multiple affiliations <ORGANIZATION> generation processes are handled in two steps:During <ORGANIZATION> modification – if initial activation criteria are met, then a <ORGANIZATION> request is generated and published to <PERSON> <env>-gw-dcr-requests <URL> the next step, the internal <ORGANIZATION> route DCRServiceRoute reads requests generated from the topic and processes as follows:checks if the time specified by delayPrcInSeconds elapsed since request generation – it makes sure that <ORGANIZATION> batch match process has finished and newly inserted profiles merge with the existing <URL>ecks if an entity, that caused <ORGANIZATION> generation, still exists;checks full activation criteria (table below) on the latest state of the target entity, if criteria are not met then the request is <ORGANIZATION> in <NRP> external infocreates COMPANYDataChangeRequest entity in Reltio for tracking and exporting <URL>eated DCRs are exported by the <ORGANIZATION> ETL process managed by <ORGANIZATION> applying process (reject/approve actions) are executed through <ORGANIZATION> response <ORGANIZATION> executed by the external app manged by <ORGANIZATION> <URL>e table below presents <ORGANIZATION> activation criteria handled by system.Table 9. <ORGANIZATION> activation <ORGANIZATION> inCNCNCNCNSource <ORGANIZATION>, <ORGANIZATION>, FACE, <ORGANIZATION>, <LOCATION>, FACE, <LOCATION>, FACE, CN3RDPARTYValidationStatus inpending, partial-validatedor, if merged:OV: notvalidated, <LOCATION> nonOV: pending/partial-validatedvalidated, pendingvalidated, pendingvalidated, pendingSpeakerStatus inenabled, nullenabled, nullenabled, nullenabled, nullWorkplaces <PERSON> foundtruetruefalsetrueDepartment foundtruetruefalseSimilar <ORGANIZATION> created in the pastfalsefalsefalsefalseUpdate: <DATE_TIME> <ORGANIZATION> is now created if <ORGANIZATION> is pending or partial-validatedNewHCP <ORGANIZATION> is also created if <ORGANIZATION> is notvalidated, but most-recently updated <LOCATION> crosswalk provides non-ov ValidationStatus as pending or partial-validated - in case <ORGANIZATION> gets merged into another entity upon creation/modification:<ORGANIZATION> request processing history is now available in <ORGANIZATION> via Transaction Log - dashboard <ORGANIZATION>, transaction type "CreateDCRRoute"DCR response processing history (<ORGANIZATION> approve/reject flow) is now available in <ORGANIZATION> via Transaction Log - dashboard <ORGANIZATION>, transaction type "<ORGANIZATION>""
|
||
},
|
||
{
|
||
"title": "HL <ORGANIZATION> [Decommissioned <DATE_TIME>]",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsVendorContactPforceRXDL-PForceRx-SUPPORT@<URL>IQVIA (<ORGANIZATION> Wrapper)<EMAIL_ADDRESS> As a part of <ORGANIZATION> project, the <ORGANIZATION> processing flow was created which realizes following scenarios:Update HCP account details i.e. specialty, address, name (different sources of <ORGANIZATION> new <ORGANIZATION> account with primary affiliation to an existing organization,Add new <ORGANIZATION> account with a new business account,Update <ORGANIZATION> and add affiliation to a new <ORGANIZATION>,Update HCP account details and remove existing details i.e. birth date, national id, …,Update HCP account and add new non primary affiliation to an existing organization,Update HCP account and add new primary affiliation to an existing organization,Update HCP account inactivate primary affiliation. Person account has more than 1 affiliation,Update HCP account inactivate non primary affiliation. Person account has more than 1 affiliation,Inactivate HCP account,Update <ORGANIZATION> and add a private address,Update <ORGANIZATION> and update existing private address,Update HCP and inactivate a private address,<PERSON> details i.e. address, name (different sources of <ORGANIZATION> account,Update <ORGANIZATION> and remove details,Inactivate <ORGANIZATION> account,Update <ORGANIZATION> address,Update <ORGANIZATION> and add new address,Update <ORGANIZATION> and inactivate address,Update <ORGANIZATION>'s existing affiliation.Above cases has been aggregated into six generic types in internal HUB model:NEW_HCP_GENERIC - represents cases when the new HCP object is created with or without affiliation to <ORGANIZATION>,UPDATE_HCP_GENERIC - aggregates cases when the existing HCP object is changed,DELETE_HCP_GENERIC - represents the case when <ORGANIZATION> is deactivating,NEW_HCO_GENERIC - aggregates scenarios when new <ORGANIZATION> object is created with or without affiliations to parent <ORGANIZATION>,UPDATE_HCO_GENERIC - represents cases when existing <ORGANIZATION> object is changing,DELETE_HCO_GENERIC - represents the case when <ORGANIZATION> is <URL>neral Process OverviewProcess steps:<LOCATION> uploads <ORGANIZATION> request file to FTP location,PforceRx Channel component downloads the <ORGANIZATION> request file,<ORGANIZATION> validates and maps each <ORGANIZATION> requests to internal model,<ORGANIZATION> sends the request to <ORGANIZATION>,<ORGANIZATION> process the request: validating, enriching and mapping to <ORGANIZATION>,<ORGANIZATION> prepares the report file containing technical status of <ORGANIZATION> processing - at this time, report will contain only requests which don't pass the validation,Scheduled process in <ORGANIZATION>, prepares the <ORGANIZATION> requests file and uploads this to <ORGANIZATION> location.<ORGANIZATION> processes the file: creating DCRs in <ORGANIZATION> or rejecting the request due to errors. After that the response file is published to <US_DRIVER_LICENSE> location,<ORGANIZATION> downloads the response and updates DCRs status,Scheduled process in <ORGANIZATION> gets <ORGANIZATION> requests and prepares next technical report - at this time the report has technical status which comes from DCR Wrappper,DCRs that was created by <ORGANIZATION> are reviewed by <ORGANIZATION>. <ORGANIZATION> can be accepted or rejected,After accepting or rejecting <ORGANIZATION>, <ORGANIZATION> publishes the message about this event,<ORGANIZATION> consumes the message and updates <ORGANIZATION> status,<ORGANIZATION> gets <ORGANIZATION> data to prepare a response file. The response file contains the final status of DCRs processing in <URL><ORGANIZATION> request file specificationThe specification is available at following location:<URL> Wrapper request file specificationThe specification is available at following link:<URL>"
|
||
},
|
||
{
|
||
"title": "OK <ORGANIZATION> flows (GBLUS)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "DescriptionThe process is responsible for creating DCRs in <ORGANIZATION> and starting Change Requests Workflow for singleton entities created in Reltio. During this process, the communication to IQVIA OneKey VR API is established. SubmitVR operation is executed to create a new Validation Request. The TraceVR operation is executed to check the status of the VR in <ORGANIZATION>. All DCRs are saved in the dedicated collection in HUB Mongo DB, required to gather metadata and trace the changes for each <ORGANIZATION> request. Some changes can be suggested by the DS using "Suggest" operation in <ORGANIZATION> and "Send to Third Party Validation" button, the process "<PERSON> OK Validation Request" is processing these changes and sends them to the <ORGANIZATION> service. The process is divided into 4 sections:Submit Validation RequestTrace Validation RequestData Steward ResponseData Steward OK Validation RequestThe below diagram presents an overview of the entire process. Detailed descriptions are available in the separated subpages.Flow diagramModel diagramStepsSubmitVRThe process of submitting <ORGANIZATION> is triggered by the <ORGANIZATION> events. The process aggregates events in a time window and once the window is closed the processing is started.During SubmitVR process checks are executed, getMatches operation in <LOCATION> is invoked to verify potential matches for the singleton entities. Once all checks are correct new submitVR request is created in <ORGANIZATION> and <ORGANIZATION> is saved in <ORGANIZATION> and in <PERSON><URL>aceVRThe process of tracing <ORGANIZATION> is triggered each <T> hours on <PERSON> cache <URL>r each <ORGANIZATION> the <NRP> operation is executed in <ORGANIZATION> to verify the current status for the specific validation request.Once the checks are correct the <ORGANIZATION> is updated in <ORGANIZATION> and in <ORGANIZATION>.<PERSON> ResponseThe process is responsible for gathering changes on Change Requests objects from <ORGANIZATION>, the process is only accepting events without the ThirdPartyValidation flagBased on the received change invoked by the <ORGANIZATION> is updated in <ORGANIZATION> and in <PERSON> OK Validation RequestThe process is responsible for processing changes on Change Requests objects from <ORGANIZATION>, the process is only accepting events with the ThirdPartyValidation flag. This event is generated after DS clicks the "Send to Third Party Validation" button in Reltio. The DS is "Suggesting" changes on the specified profile, these changes are next sent to HUB with the <ORGANIZATION> event. The changes are not visible in Retlio, it is just a container that keeps the <URL>B is retrieving the "Preview" state from <ORGANIZATION> and calculating the changes that will send to <ORGANIZATION> using <ORGANIZATION> operationAfter successful <ORGANIZATION> response HUB is closing/rejecting the existing <ORGANIZATION> in <ORGANIZATION>. The _reject operation has to be invoked on the current <ORGANIZATION> in <ORGANIZATION> because the changes should no be applied to the profile. Changes are now validating in the <ORGANIZATION> system, and appropriate steps will be taken in the next phase (export changed data to <ORGANIZATION> or reject suggestion).TriggersDescribed in the separated sub-pages for each <URL>pendent componentsDescribed in the separated sub-pages for each process."
|
||
},
|
||
{
|
||
"title": "<PERSON> OK Validation Request",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "DescriptionThe process the DS suggested changes based on the Change Request events received from Reltio(publishing) that are marked with the ThirdPartyValidation flag. The "suggested" changes are retrieved using the "preview" method and send to IQVIA OneKey or <PERSON> for validation. After successful submitVR response HUB is closing/rejecting the existing <ORGANIZATION> in <ORGANIZATION> and additionally creates a new <ORGANIZATION> object with relation to the entity in Reltio for tracking and status purposes. Because of the <ORGANIZATION> interface limitation, removal of attributes is send to IQVIA as a comment.Flow diagramStepsEvent publisher publishes full enriched events to $env-internal-[onekeyvr|thirdparty]-ds-requests-in: DCR_CHANGED("CHANGE_REQUEST_CHANGED") and DCR_CREATED("CHANGE_REQUEST_CREATED")Only events with <ORGANIZATION> and ThirdPartyValidation flag set to true and the Change Requests status equal to AWAITING_REVIEW are accepted in this process, otherwise, the event is rejected and processing <URL>B DCR Cache is verified if any ReltioDCR requests exist and are not in a FAILED status, then processing goes to the next step.<ORGANIZATION> request that contains targetChangeRequest is enriched with the current Entity data using HUB CacheVeeva specific: The entity is checked, If no <ORGANIZATION> crosswalk exists, then "golden profile" parameters should be used with below logicThe entity is checked, If active [ONEKEY|VOD] crosswalk exists the following steps are executed:The suggested state of the entity is retrieved from <ORGANIZATION> using the getEntityWithChangeRequests operation (parameters - entityUri and the <PERSON> from the <ORGANIZATION> event). <ORGANIZATION> and <ORGANIZATION> are compared using the following rules: (full attributes that are part of comparing process are described here)Simple attributes (like FirstName/LastName):Values are compared using the equals method. if differences are found the suggested value is taken. If no differences are found for mandatory, the current value is takenfor optional, the none value is taken (<NRP> attributes (like Specialties/Addresses):Whole nested attributes are matched using Reltio "uri" attributes key.If there is a new <ORGANIZATION>, the new suggested nested attribute is takenVeeva specific: If there is a new <ORGANIZATION> degree*/HCP Focus area*, the new suggested nested attribute is taken. Since <LOCATION> uses flat structure for these attributes, we need to calculate specialty attribute number (like specialty_5__v) to use when sending request. Attribute number = count of existing attributes +1.If there is no new <ORGANIZATION> and there is a change in the existing attribute, the suggested nested change is taken. If there are multiple suggested changes, the one with the highest <ORGANIZATION> is taken.If there are no changesfor mandatory, the current nested attribute that is connected with the <ORGANIZATION> crosswalk is <URL>r optional, the none nested attribute is taken (no need to <ORGANIZATION> / OtherHCOtoHCOAffiliation:If there are no changes, return current listIf there is new <ORGANIZATION> with <ORGANIZATION> crosswalk, add it to current listAdditional checks:If there are changes associated with the other source (different than the [ONEKEY|VOD]), then these changes are ignored and the <ORGANIZATION> is saved in <ORGANIZATION> with comment listing what attributes were ignored e.g.: "Attributes: [YoB: <DATE_TIME>], [Email: <EMAIL_ADDRESS>] ignored due to update on non-[onekey|VOD] attribute."If attribute associated with [ONEKY|VOD] source is removed, a comment specifying what should be removed on [ONEKY|VOD] side is generated and sent to [ONEKY|VOD], e.g.: "Please remove attributes: [Address: 10648 Savannah Plantation Ct, <DATE_TIME>, <LOCATION>, <ORGANIZATION> object is created in <PERSON> for the flow state recording and generation of the new unique <ORGANIZATION> ID for validation requests and data tracing.<ORGANIZATION> cache attributesValues for <ORGANIZATION> for <LOCATION> for <LOCATION> (<US_DRIVER_LICENSE>)typeOK_VRPFORCERX_DCRRELTIO_SUGGESTstatusDCRRequestStatusDetails (<URL>, currentDate)createdByonekey-dcr-serviceUser which creates <ORGANIZATION> via Suggest button in <ORGANIZATION> which creates <ORGANIZATION> via Suggest button in ReltiodatenowSendTo3PartyValidationtrue (flag that indicates the <ORGANIZATION> objects created by this process)Calculated changes are mapped to the <ORGANIZATION> submitVR Request and it's submitted using <ORGANIZATION> REST method <ORGANIZATION> /vr/<URL><PERSON> specific: submitting <ORGANIZATION> request to <LOCATION> requires creation of <ORGANIZATION> CSV files with agreed structure and placed on <ORGANIZATION> bucketIf the submission is successful then:<URL>atus is updated to SENT with [OK|VOD] request and response details <ORGANIZATION> entity is created in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entityReltio source name (crosswalk.type): <NRP> relation type: HCPtoDCR or HCOtoDCR (depending on the object type)DCR entity attributes:<ORGANIZATION> entity attributesMapping for OneKeyMapping for VeevaDCRIDOK VR Reqeust Id (cegedimRequestEid)ID assigned by <ORGANIZATION> EntityURIthe processed entity URIVRStatus"OPEN"VRStatusDetail"SENT"Commentsoptionally commentsSentDatecurrent timeSendTo3PartyValidationtrueOtherwise (FAILED)<URL>atus is updated to FAILED with OK request and exception response details <ORGANIZATION> entity is created in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entityReltio source name (crosswalk.type): <NRP> relation type: HCPtoDCR or HCOtoDCR (depending on the object type)DCR entity attributes:<ORGANIZATION> entity attributesMappingDCRIDOK VR Reqeust Id (cegedimRequestEid)EntityURIthe processed entity URIVRStatus"CLOSED"VRStatusDetail"FAILED"CommentsONEKEY service failed [exception details]SentDatecurrent timeSendTo3PartyValidationtrueThe current <ORGANIZATION> object in <ORGANIZATION> is closed using the _reject operation - POST - /changeRequests/<id>/_rejectOtherwise, If <ORGANIZATION> crosswalk does not exist, or the <ORGANIZATION> crosswalk is soft-deleted, or entity is <ORGANIZATION>: the following steps are executed:<ORGANIZATION> object is created in <PERSON> for the flow state recording and generation of the new unique <ORGANIZATION> ID for validation requests and data tracing.<ORGANIZATION> cache attributesvaluestypeDCRType.OK_VRstatusDCRRequestStatusDetails (<URL>, currentDate)created byonekey-dcr-servicedatenowSendTo3PartyValidationtrue (flag that indicates the <ORGANIZATION> objects created by this process)<URL>atus is updated to FAILED and comment "No OK crosswalk available"DCR entity is created in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entityReltio source name (crosswalk.type): <NRP> relation type: HCPtoDCR or HCOtoDCR (depending on the object type)DCR entity attributes:<ORGANIZATION> entity attributesMappingDCRIDOK VR Reqeust Id (cegedimRequestEid)EntityURIthe processed entity URIVRStatus"CLOSED"VRStatusDetail"REJECTED"CommentsNo <ORGANIZATION> crosswalk availableCreatedByMDM HUBSentDatecurrent timeSendTo3PartyValidationtrueThe current <ORGANIZATION> object in <ORGANIZATION> is closed using the _reject operation - POST - /changeRequests/<id>/_rejectEND <ORGANIZATION> (suggested changes)HCPReltio AttributeONEKEY attributemandatory <ORGANIZATION> valueCountryisoCod2mandatorysimple <URL>nderCodeoptionalsimple <URL>efixNameCodeoptionalsimple lookupTitleindividual.titleCodeoptionalsimple lookupMiddleNameindividual.middleNameoptionalsimple <URL>rthYearoptionalsimple <URL>rthDayoptionalsimple valueTypeCodeindividual.typeCodeoptionalsimple <URL>nguageEidoptionalsimple <URL>optionalsimple valueIdentifier value 1individial.externalId1optionalsimple valueIdentifier value <DATE_TIME>.<PERSON> (nested)Specialities[]individual.speciality1 / 2 / 3optionalcomplex (nested)Phone[]<URL>oneoptionalcomplex (nested)Email[]<URL>optionalcomplex (nested)Contact Affiliations[]<URL>placeEidoptionalContact AffiliationONEKEY <URL>dividualEidmandatoryIDHCOReltio AttributeONEKEY attributemandatory typeattribute <URL>ualNameworkplace.officialNameoptionalsimple valueCountryisoCod2mandatorysimple <URL>ualName2optionalcomplex (<ORGANIZATION> <URL>optionalcomplex (nested)Addresses[]<URL>dressLine2address.<PERSON> (nested)Specialities[]workplace.speciality1 / 2 / 3optionalcomplex (nested)Phone[] (!FAX)<URL>ephoneoptionalcomplex (nested)Phone[] (FAX)workplace.faxoptionalcomplex (nested)Email[]<URL>optionalcomplex (<ORGANIZATION> Events incoming mdm-onekey-dcr-service:ChangeRequestStreamprocess publisher full change request events in the stream that contain ThirdPartyValidation flagrealtime: events stream processing Dependent componentsComponentUsageOK <ORGANIZATION> ServiceMain component with flow implementationVeeva <ORGANIZATION> ServiceMain component with flow implementationPublisherEvents publisher generates incoming eventsHub <ORGANIZATION> and Entities Cache "
|
||
},
|
||
{
|
||
"title": "Data Steward Response",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Data+Steward+Response",
|
||
"content": "DescriptionThe process updates the <ORGANIZATION>'s based on the Change Request events received from Reltio(publishing). Based on the <ORGANIZATION> decision the state attribute contains relevant information to update <ORGANIZATION> status.Flow diagramStepsEvent publisher publishes simple events to $env-internal-[onekeyvr|veeva]-change-requests-in: DCR_CHANGED("CHANGE_REQUEST_CHANGED") and DCR_REMOVED("CHANGE_REQUEST_REMOVED")Only the events without the ThirdPartyValidation flag are accepted, otherwise, the event is Rejected and the process is <URL> are processed in the <LOCATION> and based on the <URL>ate attribute decision is madeIf the state is APPLIED or REJECTS, <ORGANIZATION> is retrieved from the cache based on the changeRequestURIIf <ORGANIZATION> exists in Cache The status in <ORGANIZATION> is updatedDCR entity attributesMappingVRStatusCLOSEDVRStatusDetailstate: APPLIED → ACCEPTEDstate: REJECTED → <LOCATION>, the events are rejected and the transaction is endedOtherwise, the events are rejected and the transition is <URL>iggersTrigger actionComponentActionDefault timeIN Events incoming mdm-onekey-dcr-service:OneKeyResponseStreammdm-veeva-dcr-service:veevaResponseStreamprocess publisher full change request events in streamrealtime: events stream processing Dependent componentsComponentUsageOK <ORGANIZATION> ServiceMain component with flow implementationVeeva <ORGANIZATION> ServiceMain component with flow implementationPublisherEvents publisher generates incoming eventsHub <ORGANIZATION> and Entities Cache "
|
||
},
|
||
{
|
||
"title": "Submit Validation Request",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Submit+Validation+Request",
|
||
"content": "DescriptionThe process of submitting new validation requests to the <ORGANIZATION> service based on the <ORGANIZATION> change events aggregated in time windows. During this process, new DCRs are created in Reltio.Flow diagramStepsEvent publisher publishes simple events to $env-internal-onekeyvr-in including HCP_*, <ORGANIZATION>_*, ENTITY_MATCHES_CHANGED Events are aggregated in a time window (recommended the window length <DATE_TIME>) and the last event is returned to the process after the window is <URL>mple events are enriched with the <ORGANIZATION> data using HUB CacheThen, the following checks are executedcheck if at least one crosswalk create date is equal or above for a given source name and cut off date specified in configuration - section submitVR/crosswalkDecisionTablescheck if entity attribute values match specified in configurationcheck if there is no valid <ORGANIZATION> created for the entity check if the entity is activecheck if the OK crosswalk doesn't exist after the full entity retrieval from the HUB cachematch category is not 99GetMatches operation from <ORGANIZATION> returns 0 potential matchesIf any check is negative then the process is aborted.<ORGANIZATION> object is created in <PERSON> for the flow state recording and generation of the new unique <ORGANIZATION> ID for validation request and data <URL>e entity is mapped to OK VR Request and it's submitted using <ORGANIZATION> REST method <ORGANIZATION> /vr/submit.If the submission is successful then:<URL>atus is updated to SENT with OK request and response details <ORGANIZATION> entity is created in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entityReltio source name (crosswalk.type): <NRP> relation type: HCPtoDCR or HCOtoDCR (depending on the object type)DCR entity attributes:<ORGANIZATION> entity attributesMappingDCRIDOK VR Reqeust Id (cegedimRequestEid)EntityURIthe processed entity URIVRStatus""OPEN"VRStatusDetail"SENT"CreatedByMDM HUBSentDatecurrent timeOtherwise FAILED status is recorded in <ORGANIZATION> with an OK error <URL>atus is updated to FAILED with OK request and exception response details <ORGANIZATION> entity is created in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entityReltio source name (crosswalk.type): <NRP> relation type: HCPtoDCR or HCOtoDCR (depending on the object type)DCR entity attributes:<ORGANIZATION> entity attributesMappingDCRIDOK VR Reqeust Id (cegedimRequestEid)EntityURIthe processed entity URIVRStatus"CLOSED"VRStatusDetail"FAILED"CommentsONEKEY service failed [exception <PERSON> HUBSentDatecurrent timeTriggersTrigger actionComponentActionDefault timeIN Events incoming mdm-onekey-dcr-service:OneKeyStreamprocess publisher simple events in streamevents stream processing with 4h time window events aggregationOUT <ORGANIZATION> requestone-key-client:<URL>bmitValidationsubmit VR request to <ORGANIZATION> request for each accepted eventDependent componentsComponentUsageOK <ORGANIZATION> component with flow implementationPublisherEvents publisher generates incoming eventsManagerReltio Adapter for <ORGANIZATION> and created operationsOneKey AdapterSubmits Validation RequestHub StoreDCR and <ORGANIZATION> → OK mapping file: onkey_mappings.xlsxOK mandatory / required fields: VR - Business Fields Requirements(COMPANY).xlsxOneKey Documentation"
|
||
},
|
||
{
|
||
"title": "Trace Validation Request",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Trace+Validation+Request",
|
||
"content": "DescriptionThe process of tracing the <ORGANIZATION> changes based on the OneKey VR changes. During this process HUB, <ORGANIZATION> is triggered every <T> hour for SENT <ORGANIZATION>'s and check VR status using <ORGANIZATION> web service. After verification <ORGANIZATION> is updated in <ORGANIZATION> or a new <ORGANIZATION> is started in <ORGANIZATION> for the <ORGANIZATION> manual validation. <ORGANIZATION> hours OK VR requests with status SENT are queried in <NRP> <URL>r each open requests, its status is checked it OK using REST <ORGANIZATION> method /vr/traceThe first check is the <URL>atus attribute, checking if the status is SUCCESSNext, if the process status (<URL>cessStatus) is REQUEST_PENDING_OKE | REQUEST_PENDING_JMS | REQUEST_PROCESSED or OK data export date (<PERSON>) is <DATE_TIME> then the processing of the request is postponed to the next checkexportDate or processStatus are optional and can be <URL>e process goes to the next step only if processStatus is REQUEST_RESPONDED | RESPONSE_SENTThe process is blocked to next check only if trace6CegedimOkcExportDate is not null and is earlier than 24hIf the processStatus is validated and <ORGANIZATION> is VAS_NOT_FOUND | VAS_INCOHERENT_REQUEST | VAS_DUPLICATE_PROCESS then <ORGANIZATION> is being closed with status REJECTEDDCR entity attributesMappingVRStatus""CLOSED"VRStatusDetail"REJECTED"ReceivedDatecurrent <URL>sponseCommentBefore these 2 next steps, the current Entity status is retrieved from <ORGANIZATION>. This is required to check if the entity was merged with OK entity. if responseStatus is VAS_FOUND | <ORGANIZATION> and OK crosswalk exists in <ORGANIZATION> entity which value equals to OK validated id (individualEidValidated or workplaceEidValidated) then <ORGANIZATION> is closed with status ACCEPTED.DCR entity attributesMappingVRStatus""CLOSED"VRStatusDetail"ACCEPTED"ReceivedDatecurrent <URL>sponseComment if responseStatus is VAS_FOUND | <ORGANIZATION> but OK crosswalk doesn't exist in <ORGANIZATION> then <ORGANIZATION> is created and workflow task is triggered for <ORGANIZATION> review. <ORGANIZATION> status entity is updated with <ORGANIZATION> status. <ORGANIZATION> entity attributesMappingVRStatus""OPEN"VRStatusDetail"DS_ACTION_REQUIRED "ReceivedDatecurrent <URL>sponseCommentGET /changeRequests operation is invoked to get a new change request ID and start a new workflowPOST /workflow/_initiate operation is invoked to init new <ORGANIZATION> in <ORGANIZATION> attributesMappingchangeRequest.uriChangeRequest Reltio <URL>angesEntity URIcommentindividualEidValidated or workplaceEidValidatedPOST /entities?changeRequestId=<id> - operation is invoked to update change request Entity container with <ORGANIZATION> Status to Closed, this change is only visible in <ORGANIZATION> once <ORGANIZATION> accepts the <ORGANIZATION>. Body attributesMappingattributes"DCRRequests": [ { "value": { "<ORGANIZATION>": [ { "value": "CLOSED" } ] }, "refEntity": { "crosswalks": [ { "type": "configuration/sources/<ORGANIZATION>", "value": "$requestId", "dataProvider": false, "contributorProvider": true }, { "type": "configuration/sources/<ORGANIZATION>", "value": "$requestId_REF", "dataProvider": true, "contributorProvider": false } ] }, "refRelation": { "crosswalks": [ { "type": "configuration/sources/<ORGANIZATION>", "value": "$requestId_REF" } ] } }]crosswalks"crosswalks": [ { "type": "configuration/sources/<source crosswalk>", "value": "<source value>", "dataProvider": false, "contributorProvider": true, "deleteDate": "" }, { "type": "configuration/sources/<ORGANIZATION>", "value": "$requestId_CR", "dataProvider": true, "contributorProvider": false, "deleteDate": "" }]TriggersTrigger actionComponentActionDefault timeIN Timer (cron)mdm-onekey-dcr-service:TraceVRServicequery mongo to get all SENT <ORGANIZATION>'s related to OK_VR processevery <T> hourOUT <ORGANIZATION> requestone-key-client:<URL>aceValidationtrace VR request to <ORGANIZATION> request for each <NRP> componentsComponentUsageOK <ORGANIZATION> component with flow implementationManagerReltio Adapter for GET /changeRequests and POST /workflow/_initiate operations OneKey AdapterTraceValidation RequestHub StoreDCR and <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "PforceRx DCR flows",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/PforceRx+DCR+flows",
|
||
"content": "DescriptionMDM HUB exposes Rest <ORGANIZATION> to create and check the status of <ORGANIZATION>. The process is responsible for creating DCRs in <ORGANIZATION> and starting Change Requests Workflow DCRs created in <ORGANIZATION> or creating the DCRs (submitVR operation) in <ORGANIZATION>. <ORGANIZATION> requests can be routed to an external <ORGANIZATION> instance handling the requested country. The action is transparent to the caller. During this process, the communication to IQVIA OneKey VR API / Reltio API is established. The routing decision depends on the market, operation type, or changed profile <URL>ltio API: createEntity (with <ORGANIZATION>) operation is executed to create a completely new entity in the new Change Request in Reltio. <PERSON> (with <ORGANIZATION>) operation is executed after calculation of the specific changes on complex or simple attributes on existing entity - this also creates a new Change Request. Start Workflow operation is requested at the end, this starts the <PERSON> for the <ORGANIZATION> in <ORGANIZATION> so the change requests are started in the Reltio Inbox for <ORGANIZATION> <URL>VIA API: SubmitVR operation is executed to create a new Validation Request. The TraceVR operation is executed to check the status of the VR in <URL>l DCRs are saved in the dedicated collection in HUB Mongo DB, required to gather metadata and trace the changes for each <ORGANIZATION> request. The <ORGANIZATION> statuses are updated by consuming events generated by Reltio or periodic query action of open DCRs in <ORGANIZATION> can decide to route a <ORGANIZATION> to IQVIA as well - some changes can be suggested by the DS using the "Suggest" operation in <ORGANIZATION> and "Send to Third Party Validation" button, the process "<PERSON> OK Validation Request" is processing these changes and sends them to the <ORGANIZATION> service. The below diagram presents an overview of the entire process. Detailed descriptions are available in the separated subpages.<ORGANIZATION> doc URL: <URL> diagramDCR Service High-Level ArchitectureDCR HUB Logical ArchitectureModel diagramFlows:Create DCRThe client call <ORGANIZATION> /dcr method and pass the request in <ORGANIZATION> format to <ORGANIZATION> request is validated against the following rules:mandatory fields are setreference object <ORGANIZATION>,<ORGANIZATION> are available in <PERSON> attributes like specialties, addresses are in the changed objectThe service evaluates the target system based on country, operation type (create, update), changed attributes. The process is controlled by the decision table stored in the <URL>e <ORGANIZATION> is created in the target system through the APIThe result is stored in the registry. <ORGANIZATION> information entity is created in Reltio for <URL>e status with created <ORGANIZATION> object ids are returned in response to the <ORGANIZATION> statusThe client calls GET <ORGANIZATION> methodThe <ORGANIZATION> service queries <ORGANIZATION> registry in <PERSON> and returns the status to the <URL>ere are processes updating dcr status in the registry:<ORGANIZATION> change events are generated by <ORGANIZATION> when <ORGANIZATION> is accepted or rejected by DS. Events are processed by the <URL>ltio: process DCR Change EventsDCR change events are generated by <ORGANIZATION> when <ORGANIZATION> is accepted or rejected by DS. Events are processed by the <URL>Key: process DCR Change EventsDCR change events are generated by the <ORGANIZATION> service when <ORGANIZATION> is accepted or rejected by DS. Events are processed by the <URL>Key: generate DCR Change Events (traceVR)Every x configured <DATE_TIME> the <ORGANIZATION> status method is queried to get status for open validation <URL>ltio: create <ORGANIZATION> method - directdirect <ORGANIZATION> method that creates <ORGANIZATION> in <ORGANIZATION> (contains mapping and logic description)OneKey: create <ORGANIZATION> method (submitVR) - directdirect <ORGANIZATION> method that creates <ORGANIZATION> in <ORGANIZATION> - executes the submitVR operation (contains mapping and logic description)TriggersDescribed in the separated sub-pages for each <URL>pendent componentsDescribed in the separated sub-pages for each process."
|
||
},
|
||
{
|
||
"title": "Create DCR",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/Create+DCR",
|
||
"content": "DescriptionThe process creates change requests received from <ORGANIZATION> and sends the <ORGANIZATION> to the specified target service - Reltio, <ORGANIZATION> or <ORGANIZATION> (<ORGANIZATION>). <ORGANIZATION> is created in the system and then processed by the data stewards. The status is asynchronously updated by the HUB processes, Client represents the <ORGANIZATION> using a unique extDCRRequestId value. Using this value Client can check the status of the <ORGANIZATION> (Get <ORGANIZATION> status). Flow diagramSource: <ORGANIZATION>: <ORGANIZATION> component perspective StepsClients execute <ORGANIZATION> requestKong receives requests and handles authenticationIf the authentication succeeds the request is forwarded to the dcr-service-2 component,<ORGANIZATION> checks permissions to call this operation and the correctness of the request, then the flow is started and the following steps are executed:Parse and validate the <ORGANIZATION> request. The validation logic checks the following: Check if the list of <ORGANIZATION> contains unique <URL>quests that are duplicate will be rejected with the error message - "Found duplicated request(s)"For each <ORGANIZATION> in the input list execute the following checks:Users can define the following number of entities in the Request:at least one entity has to be defined, otherwise, the request will be rejected with an error message - "No entities found in the request"single HCPsinge HCOsinge HCP with single <ORGANIZATION> HCOsCheck if the main reference objects exist in <ORGANIZATION> for update and delete <URL>fId or <URL>fId, user have to specify one of:CrosswalkTargetObjectId - then the entity is retrieved from <ORGANIZATION> using get entity by crosswalk operationEntityURITargetObjectId - then the entity is retrieved from <ORGANIZATION> using get entity by uri operationCOMPANYCustomerIdTargetObjectId - then the entity is retrieved from <ORGANIZATION> using search operation by the COMPANYGlobalCustomerIDAttributes validation:Simple attributes - like firstName/lastName <URL>or update action on the main object:if the input parameter is defined with an empty value - "" - this will result in the removal of the target attributeif the input parameter is defined with a non-empty value - this will result in the update of the target attributeNested attributes - like Specialties/Addresses <URL>or each attribute, the user has to define the refId to uniquely identify the attributeFor action "update" - if the refId is not found in the target object request will be rejected with a detailed error message For action "insert" - the refId is not required - new reference attribute will be added to the target objectChanges validation:If the validation detected 0 changes (during comparison of applying changes and the target entity) - the request is rejected with an error message - "No changes detected"Evaluate dcr service (based on the decision table config)The following decision table is defined to choose the target serviceLIST OF the following combination of attributes:attributedescriptionuserName the user name that executes the requestsourceNamethe source name of the Main objectcountrythe county defined in the requestoperationTypethe operation type for the <ORGANIZATION> object{ insert, update, delete }affectedAttributesthe list of attributes that the user is changingaffectedObjects{ <ORGANIZATION>, <ORGANIZATION>, HCP_HCO }RESULT → <ORGANIZATION> {Reltio, <ORGANIZATION>, <ORGANIZATION> attribute in the configuration is optional. The decision table is making the validation based on the input request and the main object- the main object is <ORGANIZATION>, if the <ORGANIZATION> is empty then the decision table is checking <ORGANIZATION>. The result of the decision table is the <ORGANIZATION>, the routing to the Reltio MDM system, <ORGANIZATION> or <LOCATION> service. Execute target service (reltio/onekey/veeva)Reltio: create <ORGANIZATION> method - directOneKey: create <ORGANIZATION> method (submitVR) - directVeeva: create <ORGANIZATION> method (storeVR)Create <ORGANIZATION> in <ORGANIZATION> and save <ORGANIZATION> in <ORGANIZATION> If the submission is successful then: <ORGANIZATION> entity is created in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entityReltio source name (crosswalk.type): <NRP> relation type: HCPtoDCR or HCOtoDCR (depending on the object type)for "create" and "delete" operation the <ORGANIZATION> have to be created between objectsif this is just the "insert" operation the <ORGANIZATION> will be created after the acceptance of the Change Request in Reltio - Reltio: process DCR Change EventsDCR entity attributes once sent to OneKeyDCR entity attributesMappingDCRIDextDCRRequestIdEntityURIthe processed entity URIVRStatus"OPEN"VRStatusDetail"SENT_TO_OK"CreatedByMDM HUBSentDatecurrent timeCreateDatecurrent timeCloseDateif REJECTED | ACCEPTED -> current timedcrTypeevaluate based on config:dcrTypeRules: - type: CR0 size: 1 action: insert entity: <URL>m.api.dcr2.HCPDCR entity attributes once sent to VeevaDCR entity attributesMappingDCRIDextDCRRequestIdEntityURIthe processed entity URIVRStatus"OPEN"VRStatusDetail"SENT_TO_VEEVA"CreatedByMDM HUBSentDatecurrent timeCreateDatecurrent timeCloseDateif REJECTED | ACCEPTED -> current timedcrTypeevaluate based on config:dcrTypeRules: - type: CR0 size: 1 action: insert entity: <URL>m.api.dcr2.HCPDCR entity attributes once sent to Reltio → action is passed to DS and workflow is started. <ORGANIZATION> entity attributesMappingDCRIDextDCRRequestIdEntityURIthe processed entity URIVRStatus"OPEN"VRStatusDetail"DS_ACTION_REQUIRED "CreatedByMDM HUBSentDatecurrent timeCreateDatecurrent timeCloseDateif REJECTED | ACCEPTED -> current timedcrTypeevaluate based on config:dcrTypeRules: - type: CR0 size: 1 action: insert entity: <URL>m.api.dcr2.HCPMongo Update: <URL>atus is updated to SENT with <ORGANIZATION> or <ORGANIZATION> request and response details or DS_ACTION_REQURIED with all Reltio detailsOtherwise FAILED status is recorded in <ORGANIZATION> with a detailed error <URL>ngo Update: <URL>atus is updated to FAILED with all required attributes, request, and exception response details <PERSON> in Reltio (only requests that <ORGANIZATION> is <ORGANIZATION> /workflow/_initiate operation is invoked to init new <ORGANIZATION> in <ORGANIZATION> attributesMappingchangeRequest.uriChangeRequest Reltio <URL>angesEntity URIThen Auto close logic is invoked to evaluate whether <ORGANIZATION> request meets conditions to be auto accepted or auto rejected. Logic is based on decision table PreCloseConfig. If <URL>untry is contained in <URL>ceptCountries or <URL>jectCountries then <ORGANIZATION> is accepted or rejected respectively. return <ORGANIZATION> to Client - During the flow, <LOCATION> may be returned to Client with the specific errorCode or requestStatus. The description for all response codes is presented on this page: Get <ORGANIZATION> statusTriggersTrigger actionComponentActionDefault timeREST callDCR Service: POST /dcrcreate DCRs in the <ORGANIZATION>, <ORGANIZATION> or <LOCATION> systemAPI synchronous requests - realtimeDependent componentsComponentUsageDCR ServiceMain component with flow <PERSON> ServiceOneKey <ORGANIZATION> operationsVeeva <ORGANIZATION> operations and <ORGANIZATION>/SFTP communication ManagerReltio Adapter - API operationsHub <ORGANIZATION> and Entities Cache "
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> state change",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/DCR+state+change",
|
||
"content": "DescriptionThe following diagram represents the <ORGANIZATION> state changes. <ORGANIZATION> object stat is saved in HUB and in Reltio DCR entity object. The state of the <ORGANIZATION> is changed based on the Reltio/IQVIA/Veeva Data Steward action.<ORGANIZATION> is created (OPEN) - Create DCRDCR is sent to <ORGANIZATION>, <ORGANIZATION> or VeevaWhen sent to <PERSON> logic is invoked to auto accept (PRE_ACCEPT) or auto reject (PRE_REJECT) <ORGANIZATION> Data Steward process the <ORGANIZATION>: process <ORGANIZATION> Change EventsOneKey <PERSON> process the <ORGANIZATION> - OneKey: process <ORGANIZATION> Change EventsVeeva Data Steward process the <ORGANIZATION> - Veeva: process <ORGANIZATION> Change EventsData Steward <ORGANIZATION> status change perspectiveTransaction <ORGANIZATION> are the following main assumptions regarding the transaction log in <ORGANIZATION> service: Main transaction The user sends to the <ORGANIZATION> service list of the <ORGANIZATION> Requests and receives the list of the DCR ResponsesTransaction service generates the transaction ID for the input request - this is used as the correlation ID for each separated <ORGANIZATION> Request in the listTransaction service save:<ORGANIZATION> (list of all) BODYthe <ORGANIZATION> Requests list and the <ORGANIZATION> Response <PERSON> change transactionDCR object state may change depending on the DS decision, for each state change (represented as a green box in the above diagram) the transaction is saved with the following attributes:Transaction METADATAmain transaction IDextDCRRequestIddcrRequestIdReltio:VRStatusVRStatusDetailHUB:DCRRequestStatusDetailsoptionally:errorMessageerrorCodeTransaction BODY:Input EventLog appenders:<PERSON> Transaction appender - saves whole events(metadata+body) to <PERSON> - data presented in the Kibana Dashboard <link <ORGANIZATION>>Simple Transaction logger - saves the transactions details to the file in the following format:{ID} {extDCRRequestId} {dcrRequestId} {<ORGANIZATION>} {VRStatusDetail} {DCRRequestStatusDetails} {errorCode} {errorMessage}TriggersTrigger <ORGANIZATION> Service: POST /dcrcreate DCRs in the <ORGANIZATION> system or in OneKeyAPI synchronous requests - realtimeIN Events incoming dcr-service-2:DCRReltioResponseStreamprocess publisher full change request events in the streamrealtime: events stream processing IN Events incoming dcr-service-2:DCROneKeyResponseStreamprocess publisher full change request events in the streamrealtime: events stream processing IN Events incoming dcr-service-2:DCRVeevaResponseStreamprocess publisher full change request events in the streamrealtime: events stream processing Dependent componentsComponentUsageDCR ServiceMain component with flow <PERSON> ServiceOneKey <ORGANIZATION> - <ORGANIZATION> operationsVeeva <ORGANIZATION> - API operationsManagerReltio <ORGANIZATION> operationsHub <ORGANIZATION> and Entities Cache "
|
||
},
|
||
{
|
||
"title": "Get <ORGANIZATION> status",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Get+DCR+status",
|
||
"content": "DescriptionThe client creates DCRs in <ORGANIZATION>, <ORGANIZATION> or Veeva OpenData using the Create DCR operation. The status is then asynchronously updated in <ORGANIZATION>. The operation retrieves the current status of the DCRs that the updated date is between 'updateFrom' and 'updateTo' input parameters. PforceRx first asks what DCRs have been changed since last time they checked (usually <DATE_TIME>) and then iterate for each <ORGANIZATION> they get detailed info.Flow diagram,Source: LucidDependent flows:The DCRRegistry is enriched by the <ORGANIZATION> events that are generated by Reltio - the flow description is here - Reltio: process DCR Change EventsThe DCRRegistry is enriched by the <ORGANIZATION> events generated in <ORGANIZATION> service component - after <ORGANIZATION> operation is invoked to <ORGANIZATION>, each <ORGANIZATION> is traced asynchronously in this process - <ORGANIZATION>: process DCR Change EventsThe DCRRegistry is enriched by the <ORGANIZATION> events generated in <ORGANIZATION> service component - after <ORGANIZATION> operation is invoked to <ORGANIZATION>, each <ORGANIZATION> is traced asynchronously in this process - Veeva: process DCR Change EventsStepsStatusThere are the following request statuses that users may receive during Create <ORGANIZATION> operation or during checking the updated status using GET /dcr/_status operation described below:RequestStatusDCRStatus <ORGANIZATION> statusDescriptionREQUEST_ACCEPTEDCREATEDSENT_TO_OKDCR was sent to the <ORGANIZATION> system for validation and pending the processing by <PERSON> in the systemREQUEST_ACCEPTEDCREATEDSENT_TO_VEEVADCR was sent to the VEEVA system for validation and pending the processing by <PERSON> in the systemREQUEST_ACCEPTEDCREATEDDS_ACTION_REQUIREDDCR is pending <ORGANIZATION> validation in <ORGANIZATION>, waiting for approval or rejectionREQUEST_ACCEPTEDCREATEDOK_NOT_FOUNDUsed when <ORGANIZATION> profile was not found after X retriesREQUEST_ACCEPTEDCREATEDVEEVA_NOT_FOUNDUsed when <ORGANIZATION> profile was not found after X retriesREQUEST_ACCEPTEDCREATEDWAITING_FOR_ETL_DATA_LOADUsed when waiting for actual data profile load from <ORGANIZATION> to appear in ReltioREQUEST_ACCEPTEDACCEPTEDACCEPTEDData Steward accepted the <ORGANIZATION>, changes were appliedREQUEST_ACCEPTEDACCEPTEDPRE_ACCEPTEDPreClose logic was invoked and automatically accepted <ORGANIZATION> according to decision table in PreCloseConfigREQUEST_REJECTEDREJECTED <PERSON> rejected the changes presented in the Change RequestREQUEST_REJECTEDREJECTED PRE_REJECTEDPreClose logic was invoked and automatically rejected <ORGANIZATION> according to decision table in PreCloseConfigREQUEST_FAILED-FAILEDDCR requests failed due to: validation error/ unexpected error e.t.d - details in the errorCode and errorMessageError codes:There are the following classes of exception that users may receive during Create <ORGANIZATION> operation:ClasserrorCodeDescriptionHTTP code1DUPLICATE_REQUESTrequest rejected - extDCRRequestId is registered - this is a duplicate request4032NO_CHANGES_DETECTEDentities are the same (request is the same) - no changes4003VALIDATION_ERRORref object does not exist (not able to find <ORGANIZATION> target object4043VALIDATION_ERRORref attribute does not exist - not able to find nested attribute in the target object4003VALIDATION_ERRORwrong number of <ORGANIZATION> entities in the input request400Clients execute the <ORGANIZATION> GET/dcr/_status requestKong receives requests and handles authenticationIf the authentication succeeds the request is forwarded to the dcr-service-2 component,<ORGANIZATION> checks permissions to call this operation and the correctness of the request, then the flow is started and the following steps are executedQuery on mongo is executed to get all DCRs matching input parameters:updateFrom (date-time) - <ORGANIZATION> last update from - <URL>angeDateupdateTo (date-time) - <ORGANIZATION> last update to - <URL>angeDatelimit (int) the maximum number of results returned through <ORGANIZATION> - the recommended value is 25. The max value for a single request is 50.offset(int) - result offset - the parameter used to query through results that exceeded the limit. Resulted values are aggregated and returned to the <URL>e client receives the List<DCRResposne> <URL>iggersTrigger actionComponentActionDefault timeREST callDCR Service: GET/dcr/_statusget status of created DCRs. Limit the results using query parameters like dates and offsetAPI synchronous requests - realtimeDependent componentsComponentUsageDCR ServiceMain component with flow implementationHub <ORGANIZATION> and <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "OneKey: create <ORGANIZATION> method (submitVR) - direct",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/OneKey%3A+create+DCR+method+%28submitVR%29+-+direct",
|
||
"content": "<ORGANIZATION> method exposed in the <ORGANIZATION> component responsible for submitting the <ORGANIZATION> to OneKeyFlow diagramStepsReceive the <ORGANIZATION> requestValidate - check if the onekey crosswalk exists once there is an update on the profile, otherwise reject the requestThe <ORGANIZATION> is mapped to OK VR Request and it's submitted using <ORGANIZATION> REST method <ORGANIZATION> /vr/submit. (mapping described below)If the submission is successful then:DCRRequesti updated to SENT_TO_OK with OK request and response details. <ORGANIZATION> in saved for tracing purposes. The process that reads and check <ORGANIZATION> is described here: OneKey: generate DCR Change Events (traceVR)Otherwise FAILED status is recorded and the response is returned with an OK error responseMappingVR - Business Fields Requirements_UK.xlsx - file that contains VR <LOCATION> requirements and mapping to IQVIA <URL>ientRequestIdHUB_GENERATED_<URL>questDate1970-01-01T00:<URL>llDate1970-01-01T00:<URL>questCommentcountryYisoCod2reference <URL>rentUsualNamesubTypeCodeCOTFacilityType(TET.W.*)workplace.typeCodetypeCodeno value in <ORGANIZATION>/<NRP>/<ORGANIZATION> address with rank=1 emailstypeN/<URL>rankget email with rank=1 otherHCOAffiliationstypeN/Arankget affiliation with rank=1 reference EntityotherHCOAffiliations reference entity onekeyID <URL>rentWorkplaceEidphonestypecontains <ORGANIZATION> phone with rank=1 <PERSON> contains FAXnumberworkplace.faxrankget phone with rank=1 <URL>ientRequestIdHUB_GENERATED_<URL>questDate1970-01-01T00:<URL>llDate1970-01-01T00:<URL>questCommentcountryYisoCod2reference <URL>stNamemiddleNameindividual.middleNametypeCodeN/AsubTypeCodeHCPSubTypeCode(TYP..*)individual.typeCodetitleHCPTitle(TIT.*)individual.titleCodeprefixHCPPrefix(APP.*)<URL>efixNameCodesuffixN/AgenderGender(.*)<URL>nderCodespecialtiestypeCodeHCPSpecialty(SP.W.*)individual.speciality1typeN/Arankget speciality with rank=1 typeCodeHCPSpecialty(SP.W.*)individual.speciality2typeN/Arankget speciality with rank=2 typeCodeHCPSpecialty(SP.W.*)individual.speciality3typeN/Arankget speciality with rank=3 addressessourceAddressIdN/AaddressTypeN/<NRP>/<ORGANIZATION> address with rank=1 identifierstypeN/AidN/AphonestypeN/<URL>lePhonerankget phone with rank=1 emailstypeN/<URL>rankget phone with rank=1 contactAffiliationsno value in PFORCERXtypeRoleType(TIH.W.*)<URL>leprimaryN/Arankget affiliation with rank=1 contactAffiliations reference <ORGANIZATION> HCP full mapping check the <ORGANIZATION> section <URL>ientRequestIdHUB_GENERATED_IDFor <ORGANIZATION> full mapping check the <ORGANIZATION> section <URL>questDate1970-01-01T00:<URL>llDate1970-01-01T00:<URL>questCommentcountryYisoCod2addressesIf the <ORGANIZATION> address exists map to <ORGANIZATION> addressaddress (mapping HCO)elseIf the HCP address exists map to <ORGANIZATION> addressaddress (mapping HCP)contactAffiliationsno value in PFORCERXtypeRoleType(TIH.W.*)<URL>leprimaryN/Arankget affiliation with rank=1 TriggersTrigger actionComponentActionDefault timeREST callDCR Service: POST /dcrcreate DCRs in the ONEKEYAPI synchronous requests - realtimeDependent componentsComponentUsageDCR Service 2Main component with flow implementationHub <ORGANIZATION> and <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "OneKey: generate DCR Change Events (traceVR)",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "DescriptionThis process is triggered after the <ORGANIZATION> was routed to <ORGANIZATION> based on the decision table configuration. The process of tracing the VR changes is based on the OneKey VR changes. During this process HUB, <ORGANIZATION> is triggered every <T> hour for SENT <ORGANIZATION>'s and check VR status using <ORGANIZATION> web service. After verification, the DCR Change event is generated. The <ORGANIZATION> event is processed in the <ORGANIZATION>: process DCR Change Events and the <ORGANIZATION> is updated in <ORGANIZATION> with Accepted or Rejected status.<ORGANIZATION> hours OK VR requests with status SENT are queried in <ORGANIZATION> <URL>r each open requests, its status is checked it OK using REST <ORGANIZATION> method /vr/traceThe first check is the <URL>atus attribute, checking if the status is SUCCESSNext, if the process status (<URL>cessStatus) is REQUEST_PENDING_OKE | REQUEST_PENDING_JMS | REQUEST_PROCESSED or OK data export date (<PERSON>) is <DATE_TIME> then the processing of the request is postponed to the next checkexportDate or processStatus are optional and can be <URL>e process goes to the next step only if processStatus is REQUEST_RESPONDED | RESPONSE_SENTThe process is blocked to next check only if trace6CegedimOkcExportDate is not null and is earlier than 24hIf the processStatus is validated and <ORGANIZATION> is VAS_NOT_FOUND | VAS_INCOHERENT_REQUEST | VAS_DUPLICATE_PROCESS then OneKeyDCREvent is being generated with status REJECTEDOneKeyChangeRequest attributesMappingvrStatus"CLOSED"vrStatusDetail"REJECTED"traceResponseReceivedDatecurrent <URL>sponseCommentNext. if responseStatus is VAS_FOUND | VAS_FOUND_BUT_INVALID then OneKeyDCREvent is being generated with status ACCEPTED. ( now the new <ORGANIZATION> profile will be loaded to Reltio using <ORGANIZATION> data load. The <ORGANIZATION>: process DCR Change Events is processing this events ad checks the <ORGANIZATION> if the <ORGANIZATION> is created and COMPANYCustomerGlobalId is assigned, this process will wait until <ORGANIZATION> is in <ORGANIZATION> so the client received the ACCEPTED <ORGANIZATION> only after this condition is met) <ORGANIZATION> entity attributesMappingvrStatus"CLOSED"vrStatusDetail"ACCEPTED"traceResponseReceivedDatecurrent <URL>sponseComment \\nONEKEY ID = individualEidValidated or workplaceEidValidatedevents are published to the $env-internal-onekey-dcr-change-events-in topicEvent <ORGANIZATION> class OneKeyDCREvent(val eventType: String? = null, val eventTime: Long? = null, val eventPublishingTime: Long? = null, val countryCode: String? = null, val dcrId: String? = null, val targetChangeRequest: OneKeyChangeRequest,)data class OneKeyChangeRequest( val vrStatus : String? = null, val vrStatusDetail : String? = null, val oneKeyComment : String? = null, val individualEidValidated : String? = null, val workplaceEidValidated : String? = null, val vrTraceRequest : String? = null, val vrTraceResponse : String? = null,)TriggersTrigger actionComponentActionDefault timeIN Timer (cron)dcr-service:TraceVRServicequery mongo to get all SENT <ORGANIZATION>'s related to the <ORGANIZATION> processevery <T> hourOUT Eventsdcr-service:TraceVRServicegenerate the OneKeyDCREventevery <T> hourDependent componentsComponentUsageDCR ServiceMain component with flow implementationHub <ORGANIZATION> and <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "OneKey: process DCR Change Events",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/OneKey%3A+process+DCR+Change+Events",
|
||
"content": "\n\n\n\nDescriptionThe process updates the <ORGANIZATION>'s based on the Change Request events received from [ONEKEY|VOD] (after trace VR method result). Based on the [IQVIA|VEEVA] Data Steward decision the state attribute contains relevant information to update <ORGANIZATION> status. During this process also the comments created by IQVIA DS are retrieved and the relationship (optional step) between the <ORGANIZATION> object and the newly created entity is created. <ORGANIZATION> status is accepted only after the [ONEKEY|VOD] profile is created in <ORGANIZATION>, only then the <ORGANIZATION> will receive the ACCEPTED status. The process is checking Reltio with <T> delay and retries if the <ORGANIZATION> load is still in progress waiting for [ONEKEY|VOD] profile. Flow diagram\n\n\n\n\n\nOneKey variant\n\n\n\nVeeva variant: \n\n\n\n\n\nStepsOneKey: generate DCR Change Events (<NRP>) publishes simple events to $env-internal-onekey-dcr-change-events-in: DCR_CHANGEDVeeva specific: <PERSON>: generate DCR Change Events (<NRP>) publishes simple events to $env-internal-veeva-dcr-change-events-in: DCR_CHANGEDEvents are aggregated in a time window (recommended the window length <DATE_TIME>) and the last event is returned to the process after the window is <URL> are processed in the <LOCATION> and based on the <URL>KeyChangeRequest.vrStatus | <URL>evaChangeRequestDetails.vrStatus attribute decision is madeDCR is retrieved from the cache based on the _id of the DCRIf the event state is <ORGANIZATION> by [ONEKEY|VOD] crosswalkIf such crosswalk entity exists in Reltio:COMPANYGlobalCustomerId is saved in <ORGANIZATION> and will be returned to the Client During the process, the optional check is triggered - create the relation between the <ORGANIZATION> object and newly created entitiesif DCRRegistry contain an empty list of entityUris, or some of the newly created entity is not present in the list, the <ORGANIZATION> between this object and the <ORGANIZATION> has to be createdDCR entity is updated in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entityReltio source name (crosswalk. type): <NRP> relation type: HCPtoDCR or HCOtoDCR (depending on the object <NRP> created entities uris should be retrieved by the individualEidValidated or workplaceEidValidated (it may be both) attributes from the events that represent the <ORGANIZATION> or <ORGANIZATION> <URL>e status in <ORGANIZATION> and in <PERSON> is updatedDCR entity attributesMapping for OneKeyMapping for VeevaVRStatusCLOSEDVRStatusDetailstate: <ORGANIZATION> comments ({<URL>sponseComments})ONEKEY ID = individualEidValidated or workplaceEidValidatedVEEVA comments = <URL>sponseCommentsVEEVA ID = entityUrisCOMPANYGlobalCustomerIdThis is required in ACCEPTED status If the [ONEKEY|VOD] does not exist in ReltioRegenerate the Event with a new timestamp to the input topic so this will be processed in the next <T> hoursUpdate the <ORGANIZATION> DCR statusDCR entity attributesMappingVRStatusOPENVRStatusDetailACCEPTEDupdate the <PERSON> status to the OK_NOT_FOUND | VEEVA_NOT_FOUND and increase the "retryCounter" attributeIf the event state is REJECTEDIf a Reltio DS has already seen this request, REJECT the <ORGANIZATION> and end the flow (if the initial target type is Reltio)The status in <ORGANIZATION> and in <PERSON> is updatedDCR entity attributesMappingVRStatusCLOSEDVRStatusDetailstate: REJECTEDComments[ONEKEY|VOD] comments ({<URL>sponseComments})If this is based on the routing table and it was never sent to the Reltio DS, then create the <ORGANIZATION> workflow and send this to the <ORGANIZATION> DS. Add the information comment that this was Rejected by the <ORGANIZATION>, so now Reltio DS has to decide if this should be REJECTED or APPLIED in Reltio. Add the comment that this is not possible to execute the sendTo3PartyValidation button in this case. Steps:Check if the initial target type is [ONEKEY|VOD]Use the DCR Request that was initially received from PforceRx and is a <ORGANIZATION> request (after validation) Send the <ORGANIZATION> to Reltio the service returns the following response:ACCEPTED (change request accepted by Reltio)update the status to DS_ACTION_REQUIERED and in the comment add the following: "This <ORGANIZATION> was REJECTED by the [ONEKEY|VOD] Data Steward with the following comment: <[ONEKEY|VOD] reject comment>. Please review this <ORGANIZATION> in <ORGANIZATION> and APPLY or REJECT. It is not possible to execute the sendTo3PartyValidation button in this case"initialize new Workflow in Reltio with the <URL>ve data in the <ORGANIZATION> entity status in <ORGANIZATION> and update <ORGANIZATION> with workflow ID and other attributes that were used in this <URL>JECTED (failure or error response from Reltio)CLOSE the <ORGANIZATION> with the information that <ORGANIZATION> was REJECTED by the [ONEKEY|VOD] and Reltio also REJECTED the <ORGANIZATION>. Add the error message from both systems in the comment. TriggersTrigger actionComponentActionDefault timeIN Events incoming dcr-service-2:DCROneKeyResponseStreamdcr-service-2:DCRVeevaResponseStream ($env-internal-veeva-dcr-change-events-in)process publisher full change request events in the streamrealtime: events stream processing <ORGANIZATION> 2Main component with flow implementationManagerReltio Adapter - API operationsPublisherEvents publisher generates incoming eventsHub <ORGANIZATION> and <ORGANIZATION> \n\n\n"
|
||
},
|
||
{
|
||
"title": "Reltio: create <ORGANIZATION> method - direct",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Reltio%3A+create+DCR+method+-+direct",
|
||
"content": "<ORGANIZATION> method exposed in the Manager component responsible for submitting the Change Request to ReltioFlow diagramStepsReceive the <ORGANIZATION> request generated by <ORGANIZATION> componentDepending on the Action execute the method in the Manager component:insert - Execute standard Create/Update <ORGANIZATION><ORGANIZATION> operation with additional <URL> parameterupdate - Execute Update Attributes operation with additional <URL> parameterthe combination of <ORGANIZATION> once updating existing parameter in Reltiothe INSERT_ATTRIBUTE once adding new attribute to <ORGANIZATION> Update Attribute operation with additional <URL> parameterthe UPDATE_END_DATE on the entity to inactivate this profileBased on the <ORGANIZATION> response <ORGANIZATION> is returned:<ORGANIZATION> processed the request successfully <ORGANIZATION> Reltio returned the exception, Client will receive the detailed description in the errorMessageTriggersTrigger actionComponentActionDefault timeREST callDCR Service: POST /dcr2Create change Requests in ReltioAPI synchronous requests - realtimeDependent componentsComponentUsageDCR ServiceMain component with flow implementationHub <ORGANIZATION> and <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "Reltio: process DCR Change Events",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/Reltio%3A+process+DCR+Change+Events",
|
||
"content": "DescriptionThe process updates the <ORGANIZATION>'s based on the Change Request events received from Reltio(publishing). Based on the <ORGANIZATION> decision the state attribute contains relevant information to update <ORGANIZATION> status. During this process also the comments created by DS are retrieved and the relationship (optional step) between the <ORGANIZATION> object and the newly created entity is created.Flow diagramStepsEvent publisher publishes simple events to $env-internal-reltio-dcr-change-events-in: DCR_CHANGED("CHANGE_REQUEST_CHANGED") and DCR_REMOVED("CHANGE_REQUEST_REMOVED")When the events do not contain the ThirdPartyValidation flag it means that DS APPLIED or REJECTED the <ORGANIZATION>, the following logic is appliedEvents are processed in the <LOCATION> and based on the <URL>ate attribute decision is madeIf the state is APPLIED or REJECTS, <ORGANIZATION> is retrieved from the cache based on the changeRequestURIIf <ORGANIZATION> exists in Cache The status in <ORGANIZATION> is updatedDCR entity attributesMappingVRStatusCLOSEDVRStatusDetailstate: APPLIED → ACCEPTEDstate: REJECTED → <LOCATION>, the events are rejected and the transaction is endedThe COMPANYCustomerGlobalId is retrieved for newly created entities in <ORGANIZATION> based on the main entity URI.During the process, the optional check is triggered - create the relation between the <ORGANIZATION> object and newly created entitiesif DCRRegistry contain an empty list of entityUris, or some of the newly created entity is not present in the list, the <ORGANIZATION> between this object and the <ORGANIZATION> has to be createdDCR entity is updated in <ORGANIZATION> and the relation between the processed entity and the <ORGANIZATION> entityReltio source name (crosswalk. type): <NRP> relation type: HCPtoDCR or HCOtoDCR (depending on the object type)The comments added by the <ORGANIZATION> during the processing of the Change request is retrieved using the following operation:GET /tasks?objectURI=entities/<id>The processInstanceComments is retrieved from the response and added to <URL>angeRequestComment Otherwise, when the events contain the ThirdPartyValidation flag it means that DS decided to send the <ORGANIZATION> to IQVIA or <ORGANIZATION> for the validation, the following logic is applied:If the current targetType is <ORGANIZATION> | <ORGANIZATION> the <ORGANIZATION> and add the comment on the <ORGANIZATION> in <ORGANIZATION> that "<ORGANIZATION> was already processed by [ONEKEY|VEEVA] Data Stewards, REJECT because it is not allowed to send this <ORGANIZATION> one more time to [IQVIA|VEEVA]"If the current targetType is <ORGANIZATION>, it means that we can send this <ORGANIZATION> to [IQVIA|VEEVA] for validation Use the DCR Request that was initially received from PforceRx and is a <ORGANIZATION> request (after <ORGANIZATION> /dcr method in [ONEKEY|VEEVA] <ORGANIZATION>, the service returns the following response:ACCEPTED - update the status to [SENT_TO_OK|SENT_TO_VEEVA]REJECTED - it means that some unexpected exception occurred in [ONEKEY|VEEVA], or request was rejected by [ONEKEY|VEEVA], or the <ORGANIZATION> crosswalk does not exist in <ORGANIZATION>, and [ONEKEY|VEEVA]service rejected this requestVeeva specific: When <ORGANIZATION> crosswalk does not exist in <ORGANIZATION>, current version of profile is being sent to <LOCATION> for validation independent from initial changes which where incorporated within DCRTriggersTrigger actionComponentActionDefault timeIN Events incoming dcr-service-2:DCRReltioResponseStreamprocess publisher full change request events in the streamrealtime: events stream processing <ORGANIZATION> 2Main component with flow implementationManagerReltio Adapter - API operationsPublisherEvents publisher generates incoming eventsHub <ORGANIZATION> and Entities Cache "
|
||
},
|
||
{
|
||
"title": "Reltio: Profiles created by <ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Reltio%3A+Profiles+created+by+DCR",
|
||
"content": "<ORGANIZATION> typeApproval/Reject Record visibility in MDMCrosswalk TypeCrosswalk ValueSourceDCR create for <ORGANIZATION> by <ORGANIZATION> created in MDMONEKEY|VODonekey id ONEKEY|VODApproved by <ORGANIZATION> created in <ORGANIZATION> source name from <ORGANIZATION> (KOL_OneView, PforceRx, etc)DCR <ORGANIZATION> source name from <ORGANIZATION> (KOL_OneView, <ORGANIZATION>, etc)DCR edit for <ORGANIZATION> by <ORGANIZATION> requested attribute updated in MDMONEKEY|VODONEKEY|VODApproved by <ORGANIZATION> requested attribute updated in <NRP> uriReltioDCR edit for <ORGANIZATION> addressApproved by <ORGANIZATION>/VODNew address created in <ORGANIZATION>, existing address marked as inactiveONEKEY|VODONEKEY|VODApproved by DSRNew address created in <ORGANIZATION>, existing address marked as inactiveReltioentity <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Veeva DCR flows",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Veeva+DCR+flows",
|
||
"content": "DescriptionThe process is responsible for creating DCRs which are stored (Store VR) to be further transferred and processed by <PERSON>. Changes can be suggested by the DS using "Suggest" operation in <ORGANIZATION> and "Send to Third Party Validation" button. All DCRs are saved in the dedicated collection in HUB Mongo DB, required to gather metadata and trace the changes for each <ORGANIZATION> request. During this process, the communication to <PERSON> is established via <ORGANIZATION>/SFTP communication. SubmitVR operation is executed to create a new ZIP files with <ORGANIZATION> requests spread across multiple CSV files. The TraceVR operation is executed to check if <PERSON> responded to initial <ORGANIZATION> Requests via ZIP file placed Inbound <US_DRIVER_LICENSE> dir. The process is divided into 3 sections:Create <ORGANIZATION> request - VeevaSubmit DCR Request - VeevaTrace Validation Request - VeevaThe below diagram presents an overview of the entire process. Detailed descriptions are available in the separated <URL> process diagram for <US_DRIVER_LICENSE> phaseFlow diagramStepsCreateVRProcess of saving <ORGANIZATION> requests in <PERSON> after being triggered by <ORGANIZATION> request information is translated to <PERSON>'s model and stored in dedicated collection for Veeva <URL>bmitVRThe process of submitting <ORGANIZATION> stored in Mongo Cache to Veeva's SFTP via <ORGANIZATION> bucket. The process aggregates events stored in <ORGANIZATION> since last <URL> ZIP is created with <ORGANIZATION> files containing <ORGANIZATION> request for <LOCATION>. ZIP is placed in outbound dir in <ORGANIZATION> bucket which is further synchronized to Veeva's SFTP. Each <ORGANIZATION> is updated with ZIP file name which was used to transfer request to <URL>aceVRThe process of tracing <ORGANIZATION> is triggered each <T> <DATE_TIME> by <ORGANIZATION><URL>bound <ORGANIZATION> bucket is searched for ZIP files with CSVs containing <ORGANIZATION> responses from <LOCATION>. There are multiple dirs in <ORGANIZATION> buckets, each for specific group of countries (currently CN and <PERSON> of <ORGANIZATION> responses are spread across multiple files. Combined information is being <URL>nally information about <ORGANIZATION> is updated in <ORGANIZATION> and events are produced to dedicated topic for <ORGANIZATION> for further <URL>iggersDCR service 2 is being triggered via /dcr <ORGANIZATION> calls which are triggered by <ORGANIZATION> actions (<US_DRIVER_LICENSE> phase) → "Suggests 3rd party validation" which pushes <ORGANIZATION> from <ORGANIZATION> to <ORGANIZATION> componentsDescribed in the separated sub-pages for each <URL>gn document for HUB development Design → <URL>cxReltio <ORGANIZATION> mapping → VeevaOpenDataAPACDataDictionary.xlsxVOD model description (<US_DRIVER_LICENSE>) → Veeva_OpenData_APAC_Data_Dictionary <US_DRIVER_LICENSE>.xlsx"
|
||
},
|
||
{
|
||
"title": "Create <ORGANIZATION> request - Veeva",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Create+DCR+request+-+Veeva",
|
||
"content": "DescriptionThe process of creating new <ORGANIZATION> requests to <ORGANIZATION>. During this process, new DCRs are created in DCRregistryVeeva mongo collection.Flow diagramStepsService is called by <PERSON> request is validated. If request is invalid - return response with status <PERSON> input request to <ORGANIZATION> modeltranslate lookup codes to <ORGANIZATION> source codesfill the <ORGANIZATION> model with input request valuesSave <ORGANIZATION> request to DCRRegistryVeeva mongo collection with status NEWMappingsDCR domain model→ <ORGANIZATION> mapping file: VeevaOpenDataAPACDataDictionary-mmor-mapping.xlsxVeeva integration guide"
|
||
},
|
||
{
|
||
"title": "Submit DCR Request - Veeva",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Submit+DCR+Request+-+Veeva",
|
||
"content": "DescriptionThe process of submitting new validation requests to the <ORGANIZATION> OpenData service via VeevaAdapter (communication with <ORGANIZATION>) based on DCRRegistryVeeva mongo collection . During this process, new DCRs are created in <ORGANIZATION> system.<ORGANIZATION> service flow:<DATE_TIME> Veeva <ORGANIZATION> requests with status NEW are queried in DCRRegistryVeeva store.<ORGANIZATION> are group by countryFor each country:merge <PERSON> requests - create one zip file for each countryupload zip file to <ORGANIZATION> locationupdate <ORGANIZATION> status to SENT if upload status is successfulDCR entity attributesMappingDCRIDVeeva VR Request IdVRStatus"OPEN"VRStatusDetail"SENT"CreatedByMDM HUBSentDatecurrent timeSFTP integration service flow:Every N hours grab all zip files from <ORGANIZATION> locationsUpload files to corresponding SFTP serverTriggersTrigger actionComponentActionDefault timeSpring schedulermdm-veeva-dcr-service:VeevaDCRRequestSenderprepare ZIP files for <ORGANIZATION> systemCalled every specified intervalDependent componentsComponentUsageVeeva adapterUpload <ORGANIZATION> request to <ORGANIZATION> location"
|
||
},
|
||
{
|
||
"title": "Trace Validation Request - Veeva",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Trace+Validation+Request+-+Veeva",
|
||
"content": "DescriptionThe process of tracing the <ORGANIZATION> changes based on the Veeva VR changes. During this process HUB, DCRRegistryVeeva Cache is triggered every <T> hour for SENT <ORGANIZATION>'s and check VR status using <ORGANIZATION> (<ORGANIZATION>/SFTP integration). After verification <ORGANIZATION> event is sent to <ORGANIZATION> <LOCATION> response stream.<ORGANIZATION> get all <LOCATION> <ORGANIZATION> responses using <LOCATION> AdapterFor each response:check if status is terminal - (CHANGE_ACCEPTED, CHANGE_PARTIAL, CHANGE_REJECTED, CHANGE_CANCELLED)if not - go to next responsequery DCRregistryVeeva mongo collection for <ORGANIZATION> with given key and SENT statusget <ORGANIZATION> ID (vid__v) from response filegenerate <ORGANIZATION> change eventupdate <ORGANIZATION> status in DCRRegistryVeeva mongo collectionresolution is CHANGE_ACCEPTED, CHANGE_PARTIALDCR entity attributesMappingVRStatus"CLOSED"VRStatusDetail"ACCEPTED"ResponseTimeveeva response completed dateCommentsveeva response resolution notesresolution is CHANGE_REJECTED, CHANGE_CANCELLEDDCR entity attributesMappingVRStatus"CLOSED"VRStatusDetail"REJECTED"ResponseTimeveeva response completed dateCommentsveeva response resolution notesTriggersTrigger actionComponentActionDefault timeIN <DATE_TIME> schedulermdm-veeva-dcr-service:VeevaDCRRequestTracestart trace validation request processevery <T> hourOUT <PERSON> topicmdm-dcr-service-2:VeevaResponseStreamupdate <ORGANIZATION> status in <ORGANIZATION>, create relationsinvokes <PERSON> producer for each veeva <ORGANIZATION> responseDependent componentsComponentUsageDCR Service 2Process response event"
|
||
},
|
||
{
|
||
"title": "Veeva: create <ORGANIZATION> method (<LOCATION>)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "<ORGANIZATION> method exposed in <ORGANIZATION> component responsible for creating new <ORGANIZATION> requests specific to <PERSON> (<ORGANIZATION>) and storing them in dedicated collection for further submit. Since <ORGANIZATION> enables communication only via <ORGANIZATION>, it's required to use dedicated mechanism to actually trigger CSV/ZIP file creation and file placement in outbound directory. This will periodic call to <ORGANIZATION> method will be scheduled once a day (with cron) which will in the end call VeevaAdapter with method createChangeRequest.Flow diagramStepsReceive the <ORGANIZATION> requestValidate initial requestcheck if the Veeva crosswalk exists once there is an update on the profileotherwise it's required to prepare <ORGANIZATION> to create new <ORGANIZATION> profileIf there is any formal attribute missing or incorrect: skip requestThen the <ORGANIZATION> is mapped to Veeva Request by invoking mapper between HUB DCR → <ORGANIZATION> model For mapping purpose below mapping table should be used If there is not proper LOV mapping between HUB and <LOCATION>, default fallback should be set to question mark → ? Once proper request has been created, it should be stored as a <DATE_TIME> entry in dedicated DCRRegistryVeeva collection to be ready for actually send via <ORGANIZATION> job and for future tracing purposesPrepare return response for initial <ORGANIZATION> request with below logicGenerate sample request after successful mongo insert → generateResponse(dcrRequest, <URL><PERSON>, null, null)Generate error when validation or exception → generateResponse(dcrRequest, <URL>QUEST_FAILED, getErrorDetails(), null);Mapping HUB DCR → <LOCATION> model Below table does not contain all new attributes which are new in Reltio. Only the most important ones were mentioned <URL>le STTM Stats_SG_HK_v3.xlsx contains full mapping requirements from <ORGANIZATION> data model. It does contain full data mapping which should be covered in target <ORGANIZATION> process for <URL>ltioHUBVEEVAAttribute PathDetailsDCR Request pathDetailsFile <ORGANIZATION> for Add Request?Required for Change Request?DescriptionReference (RDM/LOV)NOTEHCON/AMongo Generated ID for this <ORGANIZATION> | <PERSON> mapping from HUB Domain DCRRequest take this from DCRRequestD.dcrRequestId: String, // HUB <ORGANIZATION> request <PERSON> - required in <ORGANIZATION> servicechange_requestdcr_keyYYCustomer's internal identifier for this requestChange Requests comments extDCRCommentchange_requestdescriptionYYRequester free-text comments explaining the <URL>eatedBycreatedBychange_requestcreated_byYYFor requestor identificationN/<ORGANIZATION> new objects - ADD, if veeva ID CHANGEchange_requestchange_request_typeYYADD_REQUEST or CHANGE_REQUESTN/Adepends on suggested changes (check use-cases)main entity object type <ORGANIZATION> or <LOCATION> or HCOEntityTypeN/<ORGANIZATION> Generated ID for this <ORGANIZATION> | <PERSON> KEYchange_request_hcodcr_keyYYCustomer's internal identifier for this requestReltio Uri and Reltio Typewhen insert new profileentities.HCO.updateCrosswalk.type (Reltio)<URL>lue (Reltio id)and refId.entityURIconcatenate Reltio:rvu44dmchange_request_hcoentity_keyYYCustomer's internal <ORGANIZATION> identifierCrosswalks - VEEVA crosswalkwhen update on VEEVAentities.HCO.updateCrosswalk.type (VEEVA)<URL>lue (<ORGANIZATION> ID)change_request_hcovid__vYNVeeva ID of existing <ORGANIZATION> to update; if blank, the request will be interpreted as an add requestconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION>/attributes/<ORGANIZATION> elementTODO - add new attributechange_request_hcoalternate_name_1__vYN????change_request_hcobusiness_type__vYNHCOBusinessTypeTO BE CONFIRMEDconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/<URL>bTypeCodechange_request_hcpmajor_class_of_trade__vNNCOTFacilityTypeIn PforceRx - Account Type, more info: \n MR-9512\n -\n Getting issue details...\n STATUS\n configuration/entityTypes/<ORGANIZATION>/attributes/Namenamechange_request_hcocorporate_name__vNYconfiguration/entityTypes/<ORGANIZATION>/attributes/TotalLicenseBedsTODO - add new attributechange_request_hcocount_beds__vNYconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<PERSON> with rank 1emailschange_request_hcoemail_1__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/<PERSON>/attributes/<PERSON> with rank 2change_request_hcoemail_2__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION> type TEL.FAX with best rankphoneschange_request_hcofax_1__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/<ORGANIZATION> type TEL.FAX with worst rankchange_request_hcofax_2__vNNconfiguration/<ORGANIZATION>/attributes/<ORGANIZATION> - add new attributechange_request_hcohco_status__vNNHCOStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/TypeCodetypecodechange_request_hcohco_type__vNNHCOTypeconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Numberphone type TEL.OFFICE with best rankphoneschange_request_hcophone_1__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Numberphone type TEL.OFFICE with worst rankchange_request_hcophone_2__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Phone/attributes/Numberphone type TEL.OFFICE with worst rankchange_request_hcophone_3__vNNconfiguration/<ORGANIZATION>/attributes/<URL>untrychange_request_hcoprimary_country__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/<PERSON> from COT specialtieschange_request_hcospecialty_1__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_10__vNNSpecialityconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_2__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_3__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_4__vNNconfiguration/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_5__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_6__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_7__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_8__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/ClassofTradeN/attributes/Specialtychange_request_hcospecialty_9__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Website/attributes/WebsiteURLfirst elementwebsiteURLchange_request_hcoURL_1__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Website/attributes/WebsiteURLN/AN/Achange_request_hcoURL_2__vNNHCP N/AMongo Generated ID for this <ORGANIZATION> | <PERSON> KEYchange_request_hcpdcr_keyYYCustomer's internal identifier for this requestReltio Uri and Reltio Typewhen insert new profileentities.HCO.updateCrosswalk.type (Reltio)<URL>lue (Reltio id)and refId.entityURIconcatenate Reltio:rvu44dmchange_request_hcpentity_keyYYCustomer's internal <ORGANIZATION> identifierconfiguration/entityTypes/<ORGANIZATION>/attributes/<URL>untrychange_request_hcpprimary_country__vYYCrosswalks - VEEVA crosswalkwhen update on VEEVAentities.HCO.updateCrosswalk.type (VEEVA)<URL>lue (VEEVA ID)change_request_hcpvid__vNYconfiguration/entityTypes/<ORGANIZATION>/attributes/FirstNamefirstNamechange_request_hcpfirst_name__vYNconfiguration/entityTypes/<ORGANIZATION>/attributes/MiddlemiddleNamechange_request_hcpmiddle_name__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/LastNamelastNamechange_request_hcplast_name__vYNconfiguration/entityTypes/<ORGANIZATION>/attributes/NicknameTODO - add new attributechange_request_hcpnickname__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Prefixprefixchange_request_hcpprefix__vNNHCPPrefixconfiguration/entityTypes/<ORGANIZATION>/attributes/SuffixNamesuffixchange_request_hcpsuffix__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Titletitlechange_request_hcpprofessional_title__vNNHCPProfessionalTitleconfiguration/entityTypes/<ORGANIZATION>/attributes/SubTypeCodesubTypeCodechange_request_hcphcp_type__vYNHCPTypeconfiguration/entityTypes/<ORGANIZATION>/attributes/<ORGANIZATION> - add new attributechange_request_hcphcp_status__vNNHCPStatusconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/FirstNameTODO - add new attributechange_request_hcpalternate_first_name__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/LastNameTODO - add new attributechange_request_hcpalternate_last_name__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/AlternateName/attributes/MiddleNameTODO - add new <ORGANIZATION> - add new attributechange_request_hcpfamily_full_name__vNNTO BE CONFRIMEDconfiguration/entityTypes/<ORGANIZATION>/attributes/DoBbirthYearchange_request_hcpbirth_year__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/<PERSON> rank 1TODO - add new attributechange_request_hcpcredentials_1__vNNTO BE CONFIRMEDconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/<ORGANIZATION> - add new attributechange_request_hcpcredentials_2__vNNIn reltio there is attribute but not usedconfiguration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/Credential3TODO - add new attributechange_request_hcpcredentials_3__vNN "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/Credential",configuration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/<ORGANIZATION> - add new attributechange_request_hcpcredentials_4__vNN "lookupCode": "rdm/lookupTypes/Credential",configuration/entityTypes/<ORGANIZATION>/attributes/Credential/attributes/Credential5TODO - add new attributechange_request_hcpcredentials_5__vNNHCPCredentials "skipInDataAccess": false??TODO - add new attributechange_request_hcpfellow__vNNBooleanReferenceTO BE CONFRIMEDconfiguration/entityTypes/<ORGANIZATION>/attributes/Gendergenderchange_request_hcpgender__vNNHCPGender?? Education ??<ORGANIZATION> - add new attributechange_request_hcpeducation_level__vNNHCPEducationLevelTO BE CONFRIMEDconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/SchoolNameTODO - add new attributechange_request_hcpgrad_school__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Education/attributes/YearOfGraduationTODO - add new attributechange_request_hcpgrad_year__vNN??change_request_hcphcp_focus_area_10__vNNTO BE CONFRIMED??change_request_hcphcp_focus_area_1__vNN??change_request_hcphcp_focus_area_2__vNN??change_request_hcphcp_focus_area_3__vNN??change_request_hcphcp_focus_area_4__vNN??change_request_hcphcp_focus_area_5__vNN??change_request_hcphcp_focus_area_6__vNN??change_request_hcphcp_focus_area_7__vNN??change_request_hcphcp_focus_area_8__vNN??change_request_hcphcp_focus_area_9__vNNHCPFocusArea??change_request_hcpmedical_degree_1__vNNTO BE CONFRIMED??change_request_hcpmedical_degree_2__vNNHCPMedicalDegreeconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/<PERSON> rank from 1 to 100specialtieschange_request_hcpspecialty_1__vYNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_10__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_2__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_3__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_4__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_5__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_6__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_7__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_8__vNNconfiguration/entityTypes/<ORGANIZATION>/attributes/Specialities/attributes/Specialtyspecialtieschange_request_hcpspecialty_9__vNNSpecialtyconfiguration/entityTypes/<ORGANIZATION>/attributes/WebsiteURLTODO - add new attributechange_request_hcpURL_1__vNNADDRESSMongo Generated ID for this <ORGANIZATION> | <PERSON> internal identifier for this requestReltio Uri and Reltio Typewhen insert new profileentities.<ORGANIZATION> OR HCO.updateCrosswalk.type (Reltio)entities.HCP OR <URL>lue (Reltio id)and refId.entityURIconcatenate Reltio:rvu44dmchange_request_addressentity_keyYYCustomer's internal <ORGANIZATION> identifierattributes/Addresses/attributes/<ORGANIZATION>'s internal address identifierattributes/Addresses/attributes/AddressLine1addressLine1change_request_addressaddress_line_1__vYNattributes/Addresses/attributes/AddressLine2addressLine2change_request_addressaddress_line_2__vNNattributes/Addresses/attributes/AddressLine3addressLine3change_request_addressaddress_line_3__vNNN/AN/AAchange_request_addressaddress_status__vNNAddressStatusattributes/Addresses/attributes/AddressTypeaddressTypechange_request_addressaddress_type__vYNAddressTypeattributes/Addresses/attributes/StateProvincestateProvincechange_request_addressadministrative_area__vYNAddressAdminAreaattributes/Addresses/attributes/Countrycountrychange_request_addresscountry__vYNattributes/Addresses/attributes/Citycitychange_request_addresslocality__vYYattributes/Addresses/attributes/Zip5zipchange_request_addresspostal_code__vYNattributes/Addresses/attributes/Source/attributes/SourceNameattributes/Addresses/attributes/Source/attributes/SourceAddressIDwhen VEEVA map VEEVA ID to sourceAddressIdchange_request_addressvid__vNYmap fromrelationTypes/OtherHCOtoHCOAffiliationsor relationTypes/ContactAffiliationsThis will be <URL>Affiliation or HCO.OtherHcoToHCO affiliationMongo Generated ID for this <ORGANIZATION> | <PERSON> KEYchange_request_parenthcodcr_keyYYCustomer's internal identifier for this <URL>lationUri (from Domain model)information about Reltio Relation IDchange_request_parenthcoparenthco_keyYYCustomer's internal identifier for this relationshipRELATION IDKEY entity_key from <ORGANIZATION> or <ORGANIZATION> (start object)change_request_parenthcochild_entity_keyYYChild Identifier in the <ORGANIZATION>/HCP fileSTART OBJECT IDendObject entity uri mapped to refId.EntityURITargetObjectIdKEY entity_key from <ORGANIZATION> or <ORGANIZATION> (end object, by affiliation)change_request_parenthcoparent_entity_keyYYParent identifier in the <ORGANIZATION> fileEND OBJECT IDchanges in Domain model mappingmap <URL>urceName - VEEVAmap <URL>urceValue - VEEVA IDadd to Domain modelmap if relation is from <ORGANIZATION> ID change_request_parenthcovid__vNYstart object entity type change_request_parenthcoentity_type__vYNattributes/RelationType/attributes/PrimaryAffiliationif is primaryTODO - add new attribute to otherHcoToHCOchange_request_parenthcois_primary_relationship__vNNBooleanReferenceHCO_HCO or HCP_HCOchange_request_parenthcohierarchy_type__vRelationHierarchyTypeattributes/<ORGANIZATION>/attributes/RelationshipDescriptiontype from affiliationbased on <ORGANIZATION> or OtherHCOToHCO affiliationI think it will be 14-Emploted for HCP_HCOand 4-Manages for HCO_HCObut maybe we can map from affiliation.typechange_request_parenthcorelationship_type__vYNRelationTypeMongo collectionAll DCRs initiated by the dcr-service-2 <ORGANIZATION> and to be sent to <ORGANIZATION> will be stored in <PERSON> in new collection DCRRegistryVeeva. The idea is to gather all DCRs requested by the client through <DATE_TIME> and schedule ‘SubmitVR’ process that will communicate with <ORGANIZATION> adapter.Typical use case: Client requests 3 DCRs during the daySubmitVR contains the schedule that gathers all DCRs with NEW status created during <DATE_TIME> and using VeevaAdapter to push requests to <ORGANIZATION>/<URL> this store we are going to keep both types of DCRs:\ninitiated by PforceRX - PFORCERX_DCR("PforceRxDCR")\ninitiated by Reltio SubmitVR - SENDTO3PART_DCR("ReltioSuggestedAndSendTo3PartyDCR");\nStore class idea:_id – this is the same ID that was assigned to <ORGANIZATION> in dcr-service-2 VeevaVRDetails\n@Document("DCRRegistryVEEVA")\n@JsonIgnoreProperties(ignoreUnknown = true)\n@JsonInclude(<URL>N_NULL)\ndata class VeevaVRDetails(\n <LOCATION> @Id\n val id: String? = <PERSON> val type: DCRType,\n val status: DCRRequestStatusDetails,\n val createdBy: String? = <PERSON> val createTime: ZonedDateTime? = <PERSON> val endTime: ZonedDateTime? = <PERSON> val veevaRequestTime: ZonedDateTime? = <PERSON> val veevaResponseTime: ZonedDateTime? = <PERSON> val veevaRequestFileName: String? = null\n val veevaResponseFileName: String? = null val veevaResponseFileTime: ZonedDateTime? = null\n val country: String? = <PERSON> val source: String? = <PERSON> val extDCRComment: String? = null, // external <ORGANIZATION> Comment (client <NRP> val trackingDetails: List<DCRTrackingDetails> = mutableListOf(),\n\n RAW FILE LINES mapped from DCRRequestD to Veeva model\n val veevaRequest:\n val change_request_csv: String,\n val change_request_hcp_csv: String\n val change_request_hco_csv: List<String>\n val change_request_address_csv: List<String>\n val change_request_parenthco_csv: List<String>\n\n RAW FILE LINES mapped from <LOCATION> Response model\n val veevaResponse:\n val change_request_response_csv: String,\n val change_request_response_hcp_csv: String\n val change_request_response_hco_csv: List<String>\n val change_request_response_address_csv: List<String>\n val change_request_response_parenthco_csv: List<String>\n)\nMapping Reltio canonical codes → <LOCATION> source codesThere are a couple of steps performed to find out a mapping for canonical code from <ORGANIZATION> to source code understood by <ORGANIZATION>. Below steps are performed (in this order) once a code is found. Veeva Defaults Configuration is stored in mdm-config-registry > config-hub/stage_apac/mdm-veeva-dcr-service/defaultsThe purpose of these logic is to select one of possible multiple source codes on <ORGANIZATION> end for a single code on COMPANY side (1:N). The other scenario is when there is no actual source code for a canonical code on <ORGANIZATION> end (1:0), however this is usually covered by fallback code <URL>ere are a couple of files, each containing source codes for a specific attribute. The ones related to HCO.Specialty and <LOCATION> have logic which selects proper <URL>ually there are constructed as a three column CSV: Country, Canonical Code, Source CodeFor specific Country we're looking for Canonical code and then we're sending Source code as it is (no trim required)Examples: IN;SP.PD;PD → <LOCATION> source code will be sent to VODRDM lookups with RegExpThe main logic which is used to find out proper source code for canonical code. We're using codes configured in <ORGANIZATION>, however mongo collection LookupValues are used. For specific canonical code (code) we looking for sourceMappings with source = <ORGANIZATION>. Often country is embedded within source code so we're applying regexpConfig (more in Veeva Fallback section) to extract specific source code for particular <URL>eva FallbackConfiguration is stored in mdm-config-registry > config-hub/stage_apac/mdm-veeva-dcr-service/fallbackAvailable for a couple of attributes: <ORGANIZATION>-specialty.csvCOTSpecialtyhco-type-code.csvHCOTypehcp-specialty.csvHCPSpecialtyhcp-title.csvHCPTitlehcp-type-code.csvHCPSubTypeCodeUsually files are constructed as a one column <ORGANIZATION>, however the logic for extracting source code may be differentSource code is extracted using RegExp for each parameter. Check application.yml for this mdm-veeva-dcr-server component - <PERSON>-services > mdm-veeva-dcr-service/src/main/resources/application.yml to find out proper line and extract code sent to VOD.Example value for hco-specialty-type.csv: IN_?Regexp value for HCP.specialty: regexpConfig > HCPSpecialty: <ORGANIZATION> code sent to <ORGANIZATION> for <LOCATION> country: "?" (only question mark without country <PERSON> callmdm-veeva-dcr-service: POST /dcr → <URL>eateChangeRequest(request)Creates <ORGANIZATION> and stores it in collection without actual send to <LOCATION>. <ORGANIZATION> synchronous requests - realtimeDependent componentsComponentUsageDCR Service 2Main component with flow implementationHub <ORGANIZATION> and <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "Veeva: create <ORGANIZATION> method (submitVR)",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "DescriptionGather all stored <ORGANIZATION> entities in DCRRegistryVeeva collection (status = NEW) and sends them via <US_DRIVER_LICENSE>/SFTP to <ORGANIZATION> (<ORGANIZATION>). This method triggers CSV/ZIP file creation and file placement in outbound directory. This method is triggered from cron which invokes <URL>ndDCRs() from <ORGANIZATION> Flow diagramStepsReceive the <ORGANIZATION> request via scheduled trigger, usually every 24h (<URL>xedDelay) at specific time of day (<URL>itDelay)All <ORGANIZATION> entities (VeevaVRDetails) with status NEW are being retrieved from DCRRegistryVeeva collection Then VeevaCreateChangeRequest object is created which aggregates all <ORGANIZATION> content which should be placed in actual <ORGANIZATION> files. Each object contains only DCRs specific for countryEach country has its own <ORGANIZATION>/SFTP directory structure as well as dedicated <ORGANIZATION> server instanceOnce <ORGANIZATION> files are created with header and content, they are packed into single ZIP fileFinally ZIP file is placed in outbound <ORGANIZATION> directoryIf file was placedsuccessfuly - then VeevaChangeRequestACK status = SUCCESSotherwise - then VeevaChangeRequestACK status = FAILURE and process endsFinally, status of VeevaVRDetails entity in DCRRegistryVeeva collection is updated and set to SENT_TO_VEEVATriggersTrigger actionComponentActionDefault timeTimer (cron)mdm-veeva-dcr-service: <URL>ndDCRs()Takes all unsent entities (status = NEW) from <LOCATION> collection and actually puts file on <ORGANIZATION>/SFTP directory via <URL>eateDCRsUsually every 24h (<URL>xedDelay) at specific time of day (<URL>itDelay)Dependent componentsComponentUsageDCR Service 2Main component with flow implementationHub <ORGANIZATION> and <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "Veeva: generate DCR Change Events (traceVR)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "DescriptionThe process is responsible for gathering <ORGANIZATION> responses from <ORGANIZATION> (<ORGANIZATION>). Responses are provided via CSV/ZIP files placed on <ORGANIZATION>/SFTP server in inbound directory which are specific for each country. During this process files should be retrieved, mapped from <ORGANIZATION> to <ORGANIZATION> model and published to <PERSON> topic to be properly processed by <ORGANIZATION>, <PERSON>: process DCR Change Events.Flow diagramSource: <ORGANIZATION> is trigger via cron, usually every 24h (<URL>xedDelay) at specific time of day (<URL>itDelay)For each country, each inbound directory in scanned for ZIP filesEach ZIP files (<country>_DCR_Response_<Date>.zip) should be unpacked and processed. A bunch of <ORGANIZATION> files should be extracted. Specifically:change_request_response.csv → it's a manifest file with general information in specific columnsdcr_key → ID of <ORGANIZATION> which was established during <ORGANIZATION> request creation entity_key → ID of entity in <ORGANIZATION>, the same one we provided during <ORGANIZATION> request creationentity_type → type of entity (<ORGANIZATION>, <ORGANIZATION>) which is being modified via this DCRresolution → has information whether <ORGANIZATION> was accepted or rejected. Full list of values is <URL>solution valueDescriptionCHANGE_PENDINGThis change is still processing and hasn't been resolvedCHANGE_ACCEPTEDThis change has been accepted without modificationCHANGE_PARTIALThis change has been accepted with additional changes made by the steward, or some parts of the change request have been rejectedCHANGE_REJECTEDThis change has been rejected in its entiretyCHANGE_CANCELLEDThis change has been cancelledchange_request_type change_request_type valueDescriptionADD_REQUESTwhether <ORGANIZATION> caused to create new profile in <ORGANIZATION> with new vid__v (Veeva id)CHANGE_REQUESTjust update of existing profile in <ORGANIZATION> with existing and already known vid__v (<LOCATION> id)change_request_hcp_response.csv - contains information about <ORGANIZATION> related to HCPchange_request_hco_response.csv - contains information about <ORGANIZATION> related to HCOchange_request_address_response.csv - contains information about <ORGANIZATION> related to addresses which are related to specific <ORGANIZATION> or HCOchange_request_parenthco_response.csv - contains information about <ORGANIZATION> which correspond to relations between <ORGANIZATION> and <ORGANIZATION>, and <ORGANIZATION> and HCOFile with log: <country>_DCR_Request_Job_Log.csv can be skipped. It does not contain any useful information to be processed automaticallyFor all <ORGANIZATION> responses from <ORGANIZATION>, we need to get corresponding <ORGANIZATION> entity (VeevaVRDetails)from collection DCRRegistryVeeva should be selected. In general, specific response files are not that important (<ORGANIZATION> profiles updates will be ingested to HUB via <ORGANIZATION> channel) however when new profiles are created (change_request_<URL>ange_request_type = ADD_REQUEST) we need to extract theirs <ORGANIZATION> ID. We need to deep dive into change_request_hcp_response.csv or change_request_hco_response.csv to find vid__v (Veeva ID) for specific dcr_key This new <ORGANIZATION> ID should be stored in <URL>evaHCPIdsIt should be further used as a crosswalk value in Reltio:entities.HCO.updateCrosswalk.type (VEEVA)<URL>lue (VEEVA ID)Once data has been properly mapped from <LOCATION> to HUB <ORGANIZATION> model, new VeevaDCREvent entity should be created and published to dedicated <PERSON> topic $env-internal-veeva-dcr-change-events-inPlease be advised, when the status of resolution is not final (CHANGE_ACCEPTED, CHANGE_REJECTED, CHANGE_CANCELLED, CHANGE_PARTIAL) we should not sent event to <ORGANIZATION>-service-2Then for each successfully processed <ORGANIZATION> entity (VeevaVRDetails) in <PERSON> DCRRegistryVeeva collection should be updated Veeva CSV: resolutionMongo: DCRRegistryVeeva Entity: <URL>atus: DCRRequestStatusDetailsTopic: $env-internal-veeva-dcr-change-events-inEvent: VeevaDCREvent.vrDetails.vrStatusTopic: $env-internal-veeva-dcr-change-events-inEvent: <PERSON> should not be updated at all (stays as SENT)do not send events to <ORGANIZATION>-service-2 do not send events to <ORGANIZATION>-service-2 CHANGE_ACCEPTEDACCEPTEDCLOSEDACCEPTEDCHANGE_PARTIALACCEPTEDCLOSEDACCEPTEDresolutionNotes / veevaComment should contain more information what was rejected by <ORGANIZATION> DSCHANGE_REJECTEDREJECTEDCLOSEDREJECTEDCHANGE_CANCELLEDREJECTEDCLOSEDREJECTEDOnce files are processed, ZIP file should be moved from inbound to <LOCATION> VeevaDCREvent Model\ndata class VeevaDCREvent (val eventType: String? = <PERSON> val eventTime: Long? = <PERSON> val eventPublishingTime: Long? = <PERSON> val countryCode: String? = <PERSON> val dcrId: String? = <PERSON> val vrDetails: VeevaChangeRequestDetails)\n\ndata class VeevaChangeRequestDetails (\n val vrStatus: String? = null, - HUB CODEs\n val vrStatusDetail: String? = null, - HUB CODEs\n val veevaComment: String? = <PERSON> val veevaHCPIds: List<String>? = <PERSON> val veevaHCOIds: List<String>? = null)\nTriggersTrigger actionComponentActionDefault timeIN Timer (cron)mdm-veeva-dcr-service: <URL>aceDCRs()get <ORGANIZATION> responses from <ORGANIZATION>/SFTP directory, extract CSV files from ZIP file and publish events to kafka topicevery <T> hourusually every 6h (<URL>xedDelay) at specific time of day (<URL>itDelay)OUT Events on <PERSON>-veeva-dcr-service: <URL>aceDCRs()$env-internal-veeva-dcr-change-events-inVeevaDCREvent event published to topic to be consumed by <ORGANIZATION> 2every <T> hourusually every 6h (<URL>xedDelay) at specific time of day (<URL>itDelay)Dependent componentsComponentUsageDCR Service 2Main component with flow implementationHub <ORGANIZATION> and <ORGANIZATION> "
|
||
},
|
||
{
|
||
"title": "ETL Batches",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/ETL+Batches",
|
||
"content": "DescriptionThe process is responsible for managing the batch instances/stages and loading data received from the <ORGANIZATION> channel to the <ORGANIZATION> system. The Batch service is a complex component that contains predefined JOBS, <PERSON> configuration that is using the JOBS implementations and using asynchronous communication with <PERSON> topis updates data in MDM system and gathered the acknowledgment events. Mongo cache stores the <ORGANIZATION> with corresponding stages and <ORGANIZATION> objects that contain metadata information about loaded <URL>e below diagram presents an overview of the entire process. Detailed descriptions are available in the separated subpages.Flow diagramModel diagramStepsThe client is able to create a new instance of the batch using - Batch Controller: creating and updating batch instance flowOnce the batch instance is created client is able to load the data using - Bulk Service: loading bulk data flowDuring data load, the following process startsSending JOB - send data received from REST <ORGANIZATION> to <PERSON> topicsProcessing JOB - check the status for the specific load if all <ORGANIZATION> were receivedSoftDeleting JOB - an optional job that is triggered at the end of the batch that was configured to use full file load - this starts the delta detection process and soft-deletes the objectsACK Collector - a streaming process that gathered events and updated Cache with the <ORGANIZATION> response statusFor the support opposes the additional Clear Cache operation is exposedTriggersDescribed in the separated sub-pages for each <URL>pendent componentsComponentUsageBatch ServiceMain component with flow implementationManagerAsynchronous events processingHub <ORGANIZATION> and cache"
|
||
},
|
||
{
|
||
"title": "ACK Collector",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/ACK+Collector",
|
||
"content": "DescriptionThe flow process the <ORGANIZATION> response messages and updates the cache. Based on these responses the Processing flow is checking the Cache status and is blocking the workflow by the time all responses are received. This process updates the "status" attribute with the <ORGANIZATION> system response and the "updateDateMDM" with the corresponding update timestamp. Flow diagramStepsManager publisher <ORGANIZATION> responses to the <ORGANIZATION> ACK queue for each processed object through batch-serviceACK Collector process in the streaming mode the events and update the status in the cache. The following attributes are updated:status - MDM status that HUB received after entity/relationship object was created/updated/soft-deletedupdateDateMDM - timestamp once the <ORGANIZATION> was receivedentityId - corresponding entity/relation URI that is given by the <ORGANIZATION> systemerrorCode - optional MDM error code once the status is failederrorMessage - optional MDM error message that contains detailed description once the status is failed. TriggersTrigger actionComponentActionDefault timeIN Events incoming batch-service:<ORGANIZATION> the cache based on the ACK responserealtimeDependent componentsComponentUsageBatch ServiceThe main componentManagerAsync route with ACK responsesHub StoreCache"
|
||
},
|
||
{
|
||
"title": "Batch Controller: creating and updating batch instance",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Batch+Controller%3A+creating+and+updating+batch+instance",
|
||
"content": "DescriptionThe batch controller is responsible for managing the Batch Instances. The service allows to creation of a new batch instance for the specific Batch, create a new Stage in the batch and update stage with the statistics. The <ORGANIZATION> controller component manages the batch instances and checks the validation of the requests. Only authorized users are allowed to manage specific batches or stages. Additionally, it is not possible to START multiple instances of the same batch in one time. Once batch is started Client should load the data and at the end complete the current batch instance. Once user creates new batch instance the new unique ID is assigned, in the next request user has to use this ID to update the workflow. By default, once the batch instance is created all stages are initialized with status PENDING. Batch controller also manages the dependent stages and is marking the whole batch as COMPLETED at the end. Flow diagramStepsThe first step that the User has to make is the initialization of the new <ORGANIZATION>, during this operation process starts and a new unique ID is <URL>ing the Unique ID and available <ORGANIZATION> name user is able to start the STAGE. (by design users have to access only to the first "Loading" stage, but this can be changed in the configuration if required. In this request, the <NRP> objects may be empty. It will cause the initialization of this specific STAGE - changed to <URL> that moment user is able to load data - the description is available in the next flow - Bulk Service: loading bulk dataAfter data loading User has to complete the STAGE. In this request, the <NRP> objects have to be delivered. In the request, the User provides the statistics about the load or optionally errors.if there are errors during loading - BatchStageStatus = FAILEDif the load ended with success - BatchStageStatus = COMPLETEDIn the end, the user should trigger the GET batch instance details operation and wait for the Batch completion ( after <PERSON> stage all dependent stages are started)To get more details about next internal steps check:Processing JOBSending JOBSoftDeleting JOBACK CollectorTriggersTrigger actionComponentActionDefault timeAPI <URL>BatchControllerRouteUser initializes the new batch instance, updates the STAGE, saves the statistics, and completes the corresponding <ORGANIZATION> is able to get batch instance details and wait for the load completionmuser <ORGANIZATION> request dependent, triggered by an external clientDependent componentsComponentUsageBatch ServiceThe main component that exposes the REST APIHub StoreBatch Instances Cache"
|
||
},
|
||
{
|
||
"title": "Batches registry",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Batches+registry",
|
||
"content": "There is a list of batches configured from <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, MCONEKEYONEKEY_FRHCPLoadingHCOLoadingRelationLoadingIt will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> (<ORGANIZATION>) = RE,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,PM,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> (<LOCATION> and Greenland)ONEKEYONEKEY_DKHCPLoadingHCOLoadingRelationLoadingIt will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> ZealandONEKEYONEKEY_NZHCPLoadingHCOLoadingRelationLoadingIt will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> KoreaONEKEYONEKEY_KRHCPLoadingHCOLoadingRelationLoadingIt will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION>/UruguayONEKEYONEKEY_ARHCPLoadingHCOLoadingRelationLoadingIt will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> NameStageDetailsAMERBrazilPFORCERX_ODSPFORCERX_ODSHCPLoadingHCOLoadingRelationLoadingIt will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION>/UruguayCanadaAPACJapan PFORCERX_ODSPFORCERX_ODSHCPLoadingHCOLoadingRelationLoadingIt will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> /New ZealandIndiaSouth KoreaEMEASaudi ArabiaPFORCERX_ODSPFORCERX_ODSHCPLoadingHCOLoadingRelationLoadingIt will be incremental file load and don’t need to enable the soft-delete process for entities (<ORGANIZATION>, <ORGANIZATION>) and relations (<ORGANIZATION>, <ORGANIZATION> DenmarkPortugalGRVTenantCountrySource <ORGANIZATION> NameBatch NameStageEMEAGRGCPGCPHCPLoadingITFRESRUTRSADKGLFOPTAMERCAGCPGCPHCPLoadingBRMXARAPACAUGCPGCPHCPLoadingNZINJPKRENGAGETenantCountrySource NameBatch NameStageAMERCAENGAGEENGAGEHCPLoadingHCOLoadingRelationLoading"
|
||
},
|
||
{
|
||
"title": "Bulk Service: loading bulk data",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Bulk+Service%3A+loading+bulk+data",
|
||
"content": "DescriptionThe bulk service is responsible for loading the bundled data using REST <ORGANIZATION> as the input and <PERSON> stage topics as the output. This process is strictly connected to the Batch Controller: creating and updating batch instance flow, which means that the Client should first initialize the new batch instance and stage. Using <ORGANIZATION> requests data is loaded to the next processing stages. Flow diagramStepsThe batch controller part is described in the Batch Controller: creating and updating batch instance <URL>ter the User starts the <PERSON> stage it is now possible to load the data. (Loading STAGE part on the diagram)Depending on the batch workflow configuration it is possible to load entities or relationsPOST /entities - create entities in <ORGANIZATION> updated entities in <ORGANIZATION>, in that case, the partialOverride option is usedPOST /relations - create relations in MDMPATCH /tags - add tags to objects in <ORGANIZATION> /tags - remove tags from objects in MDMPOST /entities/_merge - merges 2 entities in MDMPOST /entities/_unmerge - unmerges entity B from entity A in <LOCATION>, based on the configuration, there is a limitation of the objects in one call - by default user is allowed to send the list of 25 objects in one <ORGANIZATION> <URL>e response is the HTTP 200 code with an empty <URL>e API Loading stage is the synchronous operation, the rest of the process uses the Kafka Topics and all data is shared to the <ORGANIZATION> system in an asynchronous way. After <PERSON> all data through the specific STAGE, the Client should complete the STAGE, this will trigger the next processing steps described on the ELT Batch sub-pages. TriggersTrigger actionComponentActionDefault timeAPI <URL>BulkControllerRouteClients send the data to the bulk <URL>er <ORGANIZATION> request dependent, triggered by an external clientDependent componentsComponentUsageBatch ServiceThe main component that exposes the REST APIHub StoreBatch Instances Cache"
|
||
},
|
||
{
|
||
"title": "Clear Cache",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Clear+Cache",
|
||
"content": "DescriptionThis flow is used to clear mongo cache (removes records from batchEntityProcessStatus) for specified batch name, object type and entity type. Optional list of countries (comma-separated) allows filtering by countries.Flow diagramStepsclient sends the request to the batch controller with specified parameters like batchName, objectType and entityType example: {{API_URL_BATCH_CONTROLLER}}/{{batchName}}/_clearCache?objectType=RELATION&entityType=configuration/relationTypes/ContactAffiliationsexample: {{API_URL_BATCH_CONTROLLER}}/{{batchName}}/_clearCache?objectType=ENTITY&entityType=configuration/entityTypes/HCP&countries=<LOCATION>,IE,<ORGANIZATION>,<ORGANIZATION>,DKthe service checks if client is allowed to do this action - has appropriate role CLEAR_CACHE_BATCH the service process client request and executes mongo query with specified parametersthe service returns number of removed <URL>iggersTrigger actionComponentActionDefault timeAPI <URL><ORGANIZATION> client calls request to clear the cacheuser <ORGANIZATION> request dependent, triggered by an external clientDependent componentsComponentUsageBatch ServiceThe main component that exposes the REST APIHub <ORGANIZATION> entities/relations cache"
|
||
},
|
||
{
|
||
"title": "Clear Cache by croswalks",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Clear+Cache+by+croswalks",
|
||
"content": "DescriptionThis flow is used to clear mongo cache (removes records from batchEntityProcessStatus) for specified batch name, sourceId type or/and valueFlow diagramStepsclient sends the request to the batch controller with specified parameters like batchName, sourceId type or/and valueexample: PATCH {{API_URL_BATCH_CONTROLLER}}/{{batchName}}/_clearCachebody: <PERSON>"sourceId": [\n {\n "type": "ABC",\n "value": "TEST:123"\n },<ORGANIZATION>{\n "type": "DEF"\n },<ORGANIZATION>{\n "value": "TEST:456"\n }\n ]\n}\nthe service checks if client is allowed to do this action - has appropriate role CLEAR_CACHE_BATCH the service process client request and executes mongo query with specified parametersthe service returns number of removed <URL>iggersTrigger actionComponentActionDefault timeAPI <URL><ORGANIZATION> client calls request to clear the cacheuser <ORGANIZATION> request dependent, triggered by an external clientDependent componentsComponentUsageBatch ServiceThe main component that exposes the REST APIHub <ORGANIZATION> entities/relations cache"
|
||
},
|
||
{
|
||
"title": "PATCH Operation",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/PATCH+Operation",
|
||
"content": "DescriptionEntity PATCH (UpdateHCP/UpdateHCO/UpdateMCO) operation differs slightly from the standard POST (CreateHCP/CreateHCO/CreateMCO) operation:PATCH operation includes contributor crosswalk verification - MDM is searched to make sure that the updated entity exists (to prevent creations of <ORGANIZATION> operation uses <ORGANIZATION>'s partialOverride parameter. It allows sending only a portion of attributes (usually only the ones that have changed since the last load). Existing attribute values that have not been provided in the request will not be wiped from <URL>gorithmPATCH operation logic consists of following steps:For each entity in the bundle (depending on the configuration, usually around 50 requests):Find contributor crosswalk - if contributor crosswalk cannot be determined, throw an exceptionSearch all the contributor crosswalks in <ORGANIZATION> - single search requestsFilter results - assign each found entity to corresponding crosswalkIf no entity found for a crosswalk - perform a fallback search by crosswalk using MDM APIFor every entity where contributor crosswalk was not found in above steps, generate a "Not Found" <URL>r remaining entities, perform <ORGANIZATION>/CreateMCO <URL>rge response from <ORGANIZATION>/CreateMCO with "Not Found" messages in correct order, return."
|
||
},
|
||
{
|
||
"title": "Processing JOB",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Processing+JOB",
|
||
"content": "DescriptionThe flow checks the <ORGANIZATION> using a poller that executes the query each <T> minutes. During this processing, the count is decreasing until it reaches 0. The following query is used to check the count of objects that were not delivered. The process ends if the query return 0 objects - it means that we received ACK for each object and it is possible to go to the next dependent stage. "{'batchName': ?0 ,'<PERSON>':{ $gt: ?1 }, '$or':[ {'updateDateMDM':{ $lt: ?1 } }, { 'updateDateMDM':{ $exists : false } } ] }"Using <PERSON> query there is a possibility to find what objects are still not processed. In that case, the user should provide batchName==" currently loading batch " and use the date that is the batch start date. Flow diagramStepsThe process starts once the activation criteria are successful, which means that the dependent JOB is <URL>ing trigger mechanism data is polled from <ORGANIZATION> and counted.If the number of processed entities is equal to 0 process endselse the process is triggered after <T> minutes. If this is the last stage in the current batch workflow statistics are calculated. ( it means that there may be multiple processing jobs in one workflow, but only the last one is calculating all gathered statistics )The LAST stage will always contain the following staistisc: Each statistic is divided into 3 sections using "/" separator1 - entities or relations depending on the loaded <ORGANIZATION> - object type, it can be <ORGANIZATION> or any relationType <LOCATION> - name{entities | relations}/{object type}/receivedCount - number of objects received {entities | relations}/{object type}/skippedCount - number of objects skipped because of delta detection{entities | relations}/{object type}/failedCount - number of objects that got "failed" status from MDM{entities | relations}/{object type}/updatedCount - number of objects that got "updated" status from MDM{entities | relations}/{object type}/createdCount - number of objects that got "created" status from MDM{entities | relations}/{object type}/notFoundCount - number of objects that got "notFound" status from <ORGANIZATION> (may occur once using partialOverride operation){entities | relations}/{object type}/deletedCount - number of objects that got "deleted" status from <ORGANIZATION> (may occur once object is <ORGANIZATION> in <ORGANIZATION> and the object updated alreade deleted entity){entities | relations}/{object type}/softDeletedCount - number of objects removed by the <ORGANIZATION> JOB - used only during full files load.Example statistics:TriggersTrigger actionComponentActionDefault timeThe previous dependent JOB is completed. Triggered by the <ORGANIZATION> mechanismbatch-service:ProcessingJobTriggers mongo and checks the number of objects that are not yet processed.every 60 secondsDependent componentsComponentUsageBatch ServiceThe main component with <ORGANIZATION> implementationHub StoreThe cache that stores all information about the loaded objects"
|
||
},
|
||
{
|
||
"title": "Sending JOB",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Sending+JOB",
|
||
"content": "DescriptionThe JOB is responsible for sending the data from the Stage Kafka topics to the manager component. During this process data is checked, the checksum is calculated and compared to the previous state, os only the changes are applied to MDM. The Cache - Batch data store, contains multiple metadata attributes like sourceIngetstionDate - the time once this entity was recently shared by the Client, and the <ORGANIZATION> response status (create/update/failed) The Checksum is calculation is skipped for the "failed" objects. It means there is no need to clear the cache for the failed objects, the user just needs to reload the data. The JOB is triggered once the previous dependent job is completed or is started. There are two mode of dependences between <PERSON> STAGE and Sending STAGE(hard) dependentStages - the Sending stage will start once the previous dependent JOB is COMPLETEDsoftDependentStages - the Sending stage will start in parallel to the <PERSON> stage. It means that all loaded dates will be intimately sent to Reltio. The purpose of hard dependency is the case when the user has to <ORGANIZATION> and Relations objects. The sending of relation has to start after <ORGANIZATION> and <ORGANIZATION> load is <ORGANIZATION>. The process finishes once the <ORGANIZATION> stage queue is empty for <DATE_TIME> (no new events are in the queue).The following query is used to retrieve processing object from cache. Where the batchName is the corersponding <ORGANIZATION>, and sourceId is the information about loaded source crosswalk.{'batchName': ?0, {'sourceId.type': ?1, '<URL>lue': ?2,'<URL>urceTable': ?3 } }Flow diagramStepsThe process starts once the activation criteria are successful, which means that the (hard) dependent JOB is <ORGANIZATION> or soft dependent JOB <URL>l entities or relations are polled from stage topicif objects exist on topic for each:the current state is retrieved from Batch Cache if this is a new one the object is initialized with all required attributes and checksumthe checksum is calculated (for failed status checksum calculation is skipped)the sourceIngestionDate is updated to the current date (required to track the object and generate soft-deletes once the entity was not received)updateDate,<PERSON> attributes are updated and "deleted" flag is set to falseonce no new objects are on stage topic process is finished. The STAGE is updated with <ORGANIZATION> <URL>iggersTrigger actionComponentActionDefault timeThe previous dependent JOB is completed. Triggered by the <ORGANIZATION> mechanismbatch-service:SendingJobGet entries from stage topic, saved data in mongo and create/updates profiles using <PERSON> producer (asynchronous channel)once the dependence JOB is completedDependent componentsComponentUsageBatch ServiceThe main component with the Sending JOB implementationHub StoreThe cache that stores all information about the loaded objects"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> JOB",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/SoftDeleting+JOB",
|
||
"content": "DescriptionThis JOB is responsible for the soft-delete process for the full file loads. Batches that are configured with this JOB have to always deliver the full set of data. The process is triggered at the end of the workflow and soft-delete objects in the <ORGANIZATION> system. The following query is used to check how many objects are going to be removed and also to get all these objects and send the soft-delete requests. {'batchName': ?0, 'deleted': false, 'objectType': 'ENTITY OR RELATION', 'sourceIngestionDate':{ $lt: ?1 } }Once the object is soft deleted "deleted" flag is changed to "true"Using the mongo query there is a possibility to check what objects were soft-deleted by this process. In that case, the Administrator should provide the batchName=" currently loading batch" and the deleted parameter =" true".The process removes all objects that were not delivered in the current load, which means that the "SourceIngestionDate" is lower than the "BatchStartDate".It may occur that the number of objects to soft-delete exceeds the limit, in that case, the process is aborted and the Administrator should verify what objects are blocked and notify the client. The production limit is a maximum of 10000 objects in one load.Flow diagramSteps The process starts once the activation criteria are successful, which means that the dependent JOB is <URL>ing a query in the first step the process counts the number of entities to be soft-deletedIf the limit is exceeded the process is aborted and status with reason is saved in <ORGANIZATION>. The limit is a safety switch in case if we get a corrupted file (empty or partial). It prevents from deleting all <ORGANIZATION> profiles in such <URL> the "RelationsUnseenDeletion" STAGE the following information is saved:statistics:maxDeletesLimit - currently configured limitentitiesUnseenResultCount - number of entities that process indicated to soft-deleteerrors:errorCode - 400 errorMessage - Entities delete limit exceeded, aborting soft delete sending.example:Else the Cache is queried and returned objects are sent Manager for removalIn the loop, all objects are queried from Cache and the data is sent to the corresponding <PERSON> topic. During this operation, the cache is updated and <ORGANIZATION> is preparedMDMRequest:entityTypecountryCrosswalktypevaluedeleteDate - current timestampCache attributes to update:updateDate = current time - cache object update <PERSON> = current time - date that contains the delete date of corresponding <LOCATION> = current time - date that contains the time when the profile was sent to MDMdeleted = true - flag indicates that the profile was soft-deleted2023-07 Update: Set Soft-Delete Limit by CountryDeletingJob now allows additional configuration:\ndeletingJob:\n "TestDeletesPerCountryBatch":\n "EntitiesUnseenDeletion":\n maxDeletesLimit: 20\n queryBatchSize: 5\n reltioRequestTopic: "local-internal-async-all-testbatch"\n reltioResponseTopic: "local-internal-async-all-testbatch-ack"\n> maxDeletesLimitPerCountry:\n> enabled: true\n> overrides:\n> CA: 10\n> BR: 30\nIf maxDeletesLimitPerCountry.enabled == true (default false):soft-deletes limit in <LOCATION> is applied per country. Number of records to delete is fetched from Cache for each country, and if any of the countries exceeds the limit, the batch is failed with appropriate error <URL>ft-deletes limit can be changed for each country using the maxDeletesLimitPerCountry.overrides map. If country is not present in the overrides, default value from <PERSON> is consideredTriggersTrigger actionComponentActionDefault timeThe previous dependent JOB is completed. Triggered by the <ORGANIZATION> mechanismbatch-service:AbstractDeletingJob (DeletingJob/DeletingRelationJob)Triggers mongo and soft-delete profiles using <PERSON> producer (asynchronous channel)once the dependence JOB is completedDependent componentsComponentUsageBatch ServiceThe main component with the <ORGANIZATION> JOB implementationManagerAsynchronous channel Hub StoreThe cache that stores all information about the loaded objects"
|
||
},
|
||
{
|
||
"title": "Event filtering and routing rules",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Event+filtering+and+routing+rules",
|
||
"content": "At various stages of processing events can be filtered based on some configurable criteria. This helps to lessen the load on the Hub and client systems, as well as simplifies processing on client side by avoiding the types of events that are of no interest to the target application. There are three places where event filtering is applied:Reltio Subscriber – filters events based on their (Reltio-defined) typeNucleus Subscriber – filters out duplicate events, based on event type and entityUriEvent Publisher – filters events based on their contentEvent type filteringEach event received from <ORGANIZATION> queue has a "type" attribute. Reltio Subscriber has a "allowedEventTypes" configuration parameter (in application.yml config file) that lists event types which are processed by application. Currently, complete list of supported types is:ENTITY_CREATEDENTITY_REMOVEDENTITY_CHANGEDENTITY_LOST_MERGEENTITIES_MERGEDENTITIES_SPLITTEDAn event that does not match this list is ignored, and "Message skipped" entry is added to a log <URL>ease keep in mind that while it is easy to remove an event type from this list in order to ignore it, adding new event type is a whole different story – it might not be possible without changes to the application source code.Duplicate detection (Nucleus)There's an in-memory cache maintained that stores entityUri and type of an event previously sent for that uri. This allows duplicate detection. The cache is cleared after successful processing of the whole zip file.Entity data-based filteringEvent Publisher component receives events from internal <PERSON> topic. After fetching current <NRP> state from <ORGANIZATION> (via <ORGANIZATION>) it imposes few additional filtering rules based on fetched data. Those rules are:Filtering based on <ORGANIZATION> that entity belongs to. This is based on value of <ORGANIZATION> country code, extracted from Country attribute of an entity. List of allowed codes is maintained as "activeCountries" parameter in application.yml config <URL>ltering based on Entity type. This is controlled by "allowedEntityTypes" configuration parameter, which currently lists two values: "HCP" and "<ORGANIZATION>". Those values are matched against "entityType" attribute of Entity (prefix "configuration/entityTypes/" is added automatically, so it does not need to be included in configuration file)Filtering out events that have empty "targetEntity" attribute – such events are considered outdated, plus they lack some mandatory information that would normally be extracted from targetEntity, such as originating country and source system. They are filtered out because Hub would not be able to process them correctly <URL>ltering out events that have value mismatch between "entitiesURIs" attribute of an event and "uri" attribute of targetEntity – for all event types except HCP_LOST_MERGE and HCO_LOST_MERGE. <PERSON> mismatch may arise when <PERSON> is processing events with significant delay (e.g. due to downtime, or when reprocessing events) – Event Publisher might be processing HCP_CHANGED (HCO_CHANGED) event for an Entity that was merged with another Entity since then, so HCP_CHANGED event is considered outdated, and we are expecting HCP_LOST_MERGE event for the same <URL>is filter is controlled by <URL>lterMismatchedURIs configuration parameter, which takes <NRP> values (yes/no, true/false)Filtering out events based on timestamps. When HCP_CHANGED or HCO_CHANGED event arrives that has "eventTime" timestamp older than "updatedTime" of the targetEntity, it is assumed that another change for the same entity has already happened and that another event is waiting in the queue to be processed. By ignoring current event Event Publisher is ensuring that only the most recent change is forwarded to client <URL>is filter is controlled by <URL>lterOutdatedChanges configuration parameter, which can take <NRP> values (yes/no, true/false)Event routingPublishing Hub supports multiple client systems subscribing for Entity change events. Since those clients might be interested in different subset of Events, the event routing mechanism was created to allow configurable, content-based routing of the events to specific client systems. Routing mechanics consists of three main parts:<PERSON> topics – each client system can has one or more dedicated topics where events of interest for that system are publishedMetadata extraction – as one of the processing steps, there are some pieces of information extracted from the Event and related Entity and put in processing context (as headers), so they can be easily <URL>nfigurable routing rules – Event Publisher's configuration file contains the whole section for defining rules that facilitates Groovy scripting language and the metadata.Available metadata is described in the table below.Table 10. Routing headersHeaderTypeValuesSource FieldDescriptioneventTypeStringfull simplenoneType of an event. "full" means Event Sourcing mode, with full targetEntity data. "simple" is just an event with basic data, without targetEntityeventSubtypeStringHCP_CREATED, HCP_CHANGED, ….event.eventTypeFor the full list of available event subtypes is specified in <ORGANIZATION> <URL>untryStringCN <URL>tributes .Country.lookupCodeCountry of origin for the <ORGANIZATION> of String["OK", "GRV"]event. <URL>osswalks.typeArray containing names of all the source systems as defined by Reltio crosswalksmdmSourceString["RELTIO", NUCLEUS"]NoneSystem of origin for the <URL>lfMergeBooleantrue, falseNoneIs the event "self-merge"? Enables filtering out merges on the <URL>uting rules configuration is found in <URL>utingRules section of application.yml configuration file. Here's an example of such rule: Elements of this configuration are described <URL> – unique identifier of the ruleselector – snippet of Groovy code, which should return true or false depending on whether or not message should be forwarded to the <URL>stination – name of the topic that message should be sent <URL>lector syntax can include, among the others, the elements listed in the table below.Table 11. Selector syntaxElementExampleDescriptioncomparison operators==, !=, <, ><ORGANIZATION> syntaxboolean operators&&,set operatorsin, intersectMessage <URL>untrySee Table 10 for list of available headers. "<URL>.headers" is the standard prefix that must be used do access themFull syntax reference can be found in Apache Camel documentation: <URL> . The limitation here is that the whole snippet should return a single boolean <URL>stination name can be literal, but can also reference any of the message headers from Table 10, with the following syntax: "
|
||
},
|
||
{
|
||
"title": "FLEX COV Flows",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/FLEX+COV+Flows",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Address rank callback",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Address+rank+callback",
|
||
"content": "The Address Rank Callback is used only in the FLEX COV environment to update the Rank attribute on Addresses. This process sends the callback to Reltio only when the specific source exists on the profile. The <ORGANIZATION> is used then by <ORGANIZATION> or <ORGANIZATION> in <ORGANIZATION> or by the downstream FLEX system. Address Rank Callback is triggered always when <ORGANIZATION> operation is invoked. The purpose of this process is to synchronize Reltio with correct address rank sort <URL>rrently the functionality is configured only for <LOCATION> Trade Instance. Below is the diagram outlining the whole process. Process steps description:Event Publisher receives events from internal <PERSON> topic and calls <PERSON> to retrieve latest state of <ORGANIZATION>.Event Publisher internal user is authorized in <ORGANIZATION> to check source, country and appropriate access roles. <ORGANIZATION> invokes get entity operation in <ORGANIZATION>. Returned <ORGANIZATION> is then added to the Address Rank sort process, so the client will always get entity with sorted address rank order, but only when this feature is activated in configuration.When Address Rank Sort process is activated, each address in entity is sorted. In this case "AddressRank" and "BestRecord" attributes are set. When <ORGANIZATION> is equal to "1" <ORGANIZATION> attribute will always have "1" value.When Address Rank Callback process is activated, relation operation is invoked in <ORGANIZATION>. The Relation Request object contains Relation object for each sorted address. Each Relation will be created with "AddrCalc" source, where the start object is current entity id and the end object is id of the <ORGANIZATION> entity. In that case relation between entity and <ORGANIZATION> is created with additional rank attributes. There is no need to send multiple callback requests every time when get entity operation is invoked, so the Callback operation is invoked only when address rank sort order have changed.Entity data is stored in MongoDB <ORGANIZATION> database, for later use in Simple mode (publication of events that entityURI and require client to retrieve full Entity via REST API).For every Reltio event there are two <ORGANIZATION> events created: one in Simple mode and one in <ORGANIZATION> (full) mode. Based on metadata, and Routing Rules provided as a part of application configuration, the list of the target destinations for those events is created. Event is sent to all matched destinations."
|
||
},
|
||
{
|
||
"title": "DEA Flow",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/DEA+Flow",
|
||
"content": "This flow processes <ORGANIZATION> files published by <ORGANIZATION> to <ORGANIZATION> Bucket. Flow steps are presented on the sequence diagram below. Process steps description:<ORGANIZATION> files are uploaded to <ORGANIZATION> storage bucket to the appropriate directory intended only for <ORGANIZATION> <URL><ORGANIZATION> component is monitoring <ORGANIZATION> location and processes the files uploaded to <URL>lder structure for <ORGANIZATION> is divided on "inbound" and "archive" directories. <ORGANIZATION> component is polling data from inbound directory, after successful processing the file is copied to "archive directory"Files downloaded from <ORGANIZATION> is processed in streaming mode. The processing of the file can be stared before full download of the file. Such solution is dedicated to speed up processing of the big files, because there is no need to wait until the file will be fully <URL><ORGANIZATION> file load Start <ORGANIZATION> is saved for the specific load – as loadStartDate.Each line in file is parsed in <ORGANIZATION> component and mapped to the dedicated <ORGANIZATION> object. <ORGANIZATION> file is saved in <ORGANIZATION>, in that case one <ORGANIZATION> record is saved in one line in the file so there is no need to use record aggregator. Each line has specified length, each column has specified star and end point number in the <URL><PERSON> is downloaded from MongoDB for each <ORGANIZATION> record. This context contains <ORGANIZATION> crosswalk ID, line from file, MD5 checksum, last modification date, delete flag. When <PERSON> is empty it means that this <ORGANIZATION> record is initially created – such object is send to <PERSON>. When <PERSON> is not empty the MD5 form the source <ORGANIZATION> file is compared to the MD5 from the <PERSON> (mongo). If MD5 checksums are equals – such object is skipped, otherwise – such object is send to <PERSON>. For each modified object, lastModificationDate is updated in <PERSON> – it is required to detected delete records as the final <URL>y when record MD5 checksum is not changed, <ORGANIZATION> record will be published to <PERSON> topic dedicated for events for <ORGANIZATION> records. They will be processed by <ORGANIZATION> component. The first step is authorization check to verify if this event was produced by Batch Channel component with appropriate source name and country and roles. Then the standard process for <ORGANIZATION> creation is stared. The full description of this process is in <ORGANIZATION> <URL><ORGANIZATION> is an additional component for managing transaction logs. The role of this component is to save each successful or unsuccessful flow in transaction log. Additionally each log is saved in MongoDB to create a full report from current load and to correlate record flow between <ORGANIZATION> and <ORGANIZATION> Manager <URL>ter <ORGANIZATION> file is successfully processed, <ORGANIZATION> delete record processor is started. From Mongo Database each record with lastModificationDate less than loadStartDate and delete flag equal to false is downloaded. When the result count is grater that 1000, delete record processor is stoped – it is a protector feature in case of wrong file uploade which can generate multiple unexpected <ORGANIZATION> profiles deletion. Otherwise, when result count is less than 1000, each record from MongoDB is parsed and send to <PERSON> with deleteDate attribute on crosswalk. Then they will be processed by <ORGANIZATION> component. The first step is authorization check to verify if this event was produced by Batch Channel component with appropriate source name and country and roles. Then the standard process for <ORGANIZATION> creation is stared. The full description of this process is in <ORGANIZATION> section. Profiles created with deleteDate attribute on crosswalk are soft deleted in <URL>nally <ORGANIZATION> file is moved to archive subtree in <ORGANIZATION> bucket."
|
||
},
|
||
{
|
||
"title": "FLEX Flow",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/FLEX+Flow",
|
||
"content": "This flow processes FLEX files published by <ORGANIZATION> to <ORGANIZATION> Bucket. Flow steps are presented on the sequence diagram below. Process steps description:FLEX files are uploaded to <ORGANIZATION> storage bucket to the appropriate directory intended only for <ORGANIZATION> <URL>tch Channel component is monitoring <ORGANIZATION> location and processes the files uploaded to <URL>lder structure for <ORGANIZATION> is divided on "inbound" and "archive" directories. <ORGANIZATION> component is polling data from inbound directory, after successful processing the file is copied to "archive directory"Files downloaded from <ORGANIZATION> is processed in streaming mode. The processing of the file can be stared before full download of the file. Such solution is dedicated to speed up processing of the big files, because there is no need to wait until the file will be fully downloaded.Each line in file is parsed in <ORGANIZATION> component and mapped to the dedicated FLEX object. FLEX file is saved in CSV Data Format, in that case one FLEX record is saved in one line in the file so there is no need to use record aggregator. The first line in the file is always the header line with column names, each next line is the <ORGANIZATION> records with "," (comma character) delimiter. The most complex thing in FLEX mapping is Identifiers mapping. When Flex records contain "GROUP_KEY" ("Address Key") attribute it means that Identifiers saved in "Other Active IDs" will be added to <URL>entifiers nested attributes. "Other Active IDs" is one line string with key value pairs separated by "," (comma character), and key-value delimiter ":" (colon character). Additionally for each type of customer <ORGANIZATION> identifier is always saved in FlexID section.FLEX record will be published to <PERSON> topic dedicated for events for FLEX records. They will be processed by <ORGANIZATION> component. The first step is authorization check to verify if this event was produced by Batch Channel component with appropriate source name and country and roles. Then the standard process for <ORGANIZATION> creation is stared. The full description of this process is in <ORGANIZATION> <URL><ORGANIZATION> is an additional component for managing transaction logs. The role of this component is to save each successful or unsuccessful flow in transaction log. Additionally each log is saved in MongoDB to create a full report from current load and to correlate record flow between <ORGANIZATION> and <ORGANIZATION> Manager <URL>ter <ORGANIZATION> file is successfully processed, it is moved to archive subtree in <ORGANIZATION> bucket."
|
||
},
|
||
{
|
||
"title": "HIN Flow",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/HIN+Flow",
|
||
"content": "This flow processes HIN files published by <ORGANIZATION> to <ORGANIZATION> Bucket. Flow steps are presented on the sequence diagram below. Process steps description:HIN files are uploaded to <ORGANIZATION> storage bucket to the appropriate directory intended only for HIN <URL>tch Channel component is monitoring <ORGANIZATION> location and processes the files uploaded to <URL>lder structure for HIN is divided on "inbound" and "archive" directories. <ORGANIZATION> component is polling data from inbound directory, after successful processing the file is copied to "archive directory"Files downloaded from <ORGANIZATION> is processed in streaming mode. The processing of the file can be stared before full download of the file. Such solution is dedicated to speed up processing of the big files, because there is no need to wait until the file will be fully downloaded.Each line in file is parsed in <ORGANIZATION> component and mapped to the dedicated HIN object. HIN file is saved in <ORGANIZATION>, in that case one HIN record is saved in one line in the file so there is no need to use record aggregator. Each line has specified length, each column has specified star and end point number in the row.HIN record will be published to <PERSON> topic dedicated for events for FLEX records. They will be processed by <ORGANIZATION> component. The first step is authorization check to verify if this event was produced by Batch Channel component with appropriate source name and country and roles. Then the standard process for <ORGANIZATION> creation is stared. The full description of this process is in <ORGANIZATION> <URL><ORGANIZATION> is an additional component for managing transaction logs. The role of this component is to save each successful or unsuccessful flow in transaction log. Additionally each log is saved in MongoDB to create a full report from current load and to correlate record flow between <ORGANIZATION> and <ORGANIZATION> Manager <URL>ter HIN file is successfully processed, it is moved to archive subtree in <ORGANIZATION> bucket."
|
||
},
|
||
{
|
||
"title": "SAP Flow",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "This flow processes <ORGANIZATION> files published by GIS system to <ORGANIZATION> Bucket. Flow steps are presented on the sequence diagram below. Process steps description:<ORGANIZATION> files are uploaded to <ORGANIZATION> storage bucket to the appropriate directory intended only for <ORGANIZATION> <URL><ORGANIZATION> component is monitoring <ORGANIZATION> location and processes the files uploaded to <URL>portant note: To facilitate fault tolerance the <ORGANIZATION> component will be deployed on multiple instances on different machines. However, to avoid conflicts, such as processing the same file twice, only one instance is allowed to do the processing at any given time. This is implemented via standard Apache Camel mechanism of <ORGANIZATION>, which is backed by Zookeeper distributed key-value store. When a new file is picked up by <ORGANIZATION> instance, the first processing step would be to create a key in Zookeeper, acting as a lock. Only one instance will succeed in creating the key, therefore only one instance will be allowed to <URL>lder structure for <ORGANIZATION> is divided on "inbound" and "archive" directories. <ORGANIZATION> component is polling data from inbound directory, after successful processing the file is copied to "archive directory"Files downloaded from <ORGANIZATION> is processed in streaming mode. The processing of the file can be stared before full download of the file. Such solution is dedicated to speed up processing of the big files, because there is no need to wait until the file will be fully downloaded.Each line in file is parsed in <ORGANIZATION> component and mapped to the dedicated <ORGANIZATION> object. In case of <ORGANIZATION> files where one <ORGANIZATION> record is saved in multiple lines in the file there is need to use SAPRecordAggregator. This class will read each line of the <ORGANIZATION> file and aggregate each line to create full <ORGANIZATION> record. Each line starts with Record Type character, the separator for <ORGANIZATION> is "~" (tilde character). Only lines that start with the following character are parsed and create full SAP record:1 – Header4 – Sales OrganizationE – LicenseC – NotesWhen header line is parsed Account Type attribute is checked. Only <ORGANIZATION> records with "<US_DRIVER_LICENSE>" type are filtered and post to <URL><PERSON> is downloaded from MongoDB for each <ORGANIZATION> record. This context contains Start Date for <ORGANIZATION> and 340B Identifiers. When <PERSON> is empty current timestamp is saved for each of the Identifiers, otherwise the start date for the identifiers is changed for the one saved in the <PERSON> cache. This Start Date always must be overwritten with the initial dates from mongo <URL>gregated SAP record will be published to <PERSON> topic dedicated for events for <ORGANIZATION> records. They will be processed by <ORGANIZATION> component. The first step is authorization check to verify if this event was produced by Batch Channel component with appropriate source name and country and roles. Then the standard process for <ORGANIZATION> creation is stared. The full description of this process is in <ORGANIZATION> <URL><ORGANIZATION> is an additional component for managing transaction logs. The role of this component is to save each successful or unsuccessful flow in transaction log. Additionally each log is saved in MongoDB to create a full report from current load and to correlate record flow between <ORGANIZATION> and <ORGANIZATION> Manager <URL>ter <ORGANIZATION> file is successfully processed, it is moved to archive subtree in <ORGANIZATION> bucket."
|
||
},
|
||
{
|
||
"title": "<LOCATION> overview",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/US+overview",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Generic Batch",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Generic+Batch",
|
||
"content": "The generic batch offers the functionality of configuring processes of <ORGANIZATION> data loading from text files (<ORGANIZATION>) into <NRP> loading processes are defined in the configuration, without the need for changes in the <URL>scription of the processDefinition of single data flow Configuration (definition) od each data flow contains:Data flow name Definition of data files. Each file is described by: File name patternMappings for each column Columns in file definition are described by: Column index and name Column type (string, date, number, fixed value)Attribute of the entity to which the value from the column is mappedConditional mapping parametersAmazon <ORGANIZATION> resources and local temporary directory configurationAmazon <ORGANIZATION> input directory <ORGANIZATION> <ORGANIZATION> archive directory Local temporary directory <PERSON> topic names for sending asynchronous requests <PERSON> database connection parameters (common for all flow definitions) Currently defined data flows:<ORGANIZATION> files (with names required after preprocessing stage)Detailed columns to entity attribute mapping fileTH HCPTHCICRhcpEntitiesfileNamePattern: '(TH_Contact_In)+(\\.(?i)(txt))$'hcpAddressesfileNamePattern: '(TH_Contact_Address_In_JOINED)+(\\.(?i)(txt))$'hcpSpecialtiesfileNamePattern: '(TH_Contact_Speciality_In)+(\\.(?i)(txt))$'mdm-gateway\\batch-channel\\src\\main\\resources\\flows.ymlSA HCPSALocalMDMhcpEntitiesfileNamePattern: '(KSA_HCPs)+(\\.(?i)(csv))$'mdm-gateway\\batch-channel\\src\\main\\resources\\flows.yml"
|
||
},
|
||
{
|
||
"title": "Get Entity",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Get+Entity",
|
||
"content": "DescriptionOperation getEntity of <ORGANIZATION> Manager fetches current state of <ORGANIZATION> from MongoDB <URL>e detailed process flow is shown below.Flow diagramGet EntityStepsClient sends HTTP request to <ORGANIZATION> endpoint.<LOCATION> receives requests and handles authentication.If the authentication succeeds, the request is forwarded to <ORGANIZATION> <URL><ORGANIZATION> Manager checks user permissions to call getEntity operation and the correctness of the request.If user's permissions are correct, <ORGANIZATION> proceeds with searching for the specified entity by <URL><ORGANIZATION> Manager checks user profile configuration for <ORGANIZATION> operation to determine whether to return results based on MongoDB state or call Reltio <URL>r clients configured to use MongoDB – if the entity is found, then its status is checked. For entities with LOST_MERGE status parentEntityId attribute is used to fetch and return the parent Entity instead. This is in line with default Reltio behavior since <ORGANIZATION> Manager is supposed to mirror <URL>iggersTrigger actionComponentActionDefault timeREST callManager: GET /entity/{entityId}get specific objects from <ORGANIZATION> synchronous requests - realtimeDependent componentsComponentUsageManagerget Entities in <ORGANIZATION> systems"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> events processing",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "ContactsVendorContactMAP/DEG API <URL>lanc@<URL>This flow processes events from <LOCATION> and <ORGANIZATION> systems distributed through <LOCATION>. Processing is split into three stages. Since each stage is implemented as separate <ORGANIZATION> route and separated from other stages by persistent message store (<PERSON>), it is possible to turn each stage on/off separately using <ORGANIZATION> Console.<ORGANIZATION> subscriptionFirst processing stage is receiving data published by <ORGANIZATION> from <ORGANIZATION> queues, which is done as shown on diagram <URL>gure 5. First processing stageProcess steps description:Data changes in <LOCATION> and <ORGANIZATION> are captured by <ORGANIZATION> and distributed via queues to MAP Channel components using <ORGANIZATION> queues with names:eh-out-reltio-gcp-update-<env_code>eh-out-reltio-gcp-batch-update-<env_code>eh-out-reltio-grv-update-<env_code>Events pulled from <ORGANIZATION> queue are published to <PERSON> topic as a way of persisting them (allowing reprocessing) and to do event prioritizing and control throughput to Reltio. The following topics are used:<env_code>-gw-internal-gcp-events-raw<env_code>-gw-internal-grv-events-rawTo ensure correct ordering of messages in <PERSON>, there is a custom message key generated. It is a concatenation of market code and unique Contact/User id.Once the message is published to <PERSON>, it is confirmed in <ORGANIZATION> and deleted from the queue.Enrichment with <ORGANIZATION> dataFigure 6. Second processing stageSecond processing stage is focused on getting data from DEG system. The control flow is presented <URL>cess steps description:MAPChannel receives events from <PERSON> topic on which they were published in previous <URL><NRP> filters events based on country activation criteria – events coming from not activated countries are skipped. A list of active countries is controlled by configuration parameter, separately for each source (<LOCATION>, GCP);Next, <ORGANIZATION> calls DEG REST services (INT2.1 or INT 2.2 depending on whether it is a <LOCATION> or GCP event) to get detailed information about changed record. <PERSON> always returns current state of <LOCATION> and <ORGANIZATION> records.Data from <ORGANIZATION> is published to <PERSON> topic (again, as a way of persisting them and separating processing stages). The topics used are:<env_code>-gw-internal-gcp-events-deg<env_code>-gw-internal-grv-events-degAgain, custom message key (which is a concatenation of market code and unique Contact/User idCreating <ORGANIZATION> entitiesLast processing stage involves mapping data to <ORGANIZATION> format and calling <PERSON> to create <ORGANIZATION> entities in Reltio. Process overview is shown <URL>gure 7. Third processing stageProcess steps description:MAPChannel receives events from <PERSON> topic on which they were published in previous <URL><NRP> filters events based on country activation criteria, events coming from not activated countries are skipped. A list of active countries is controlled by configuration parameter, separately for each source (<LOCATION>, <ORGANIZATION>) – this is exactly the same parameter as in previous <URL><ORGANIZATION> maps data from <ORGANIZATION>/<LOCATION> to <ORGANIZATION>:EMEA mappingGLOBAL mappingValidation status of mapped <ORGANIZATION> is checked – if it matches a configurable list of inactive statuses, then deleteCrosswalk operation is called on <ORGANIZATION>. As a result entity data originating from <ORGANIZATION>/<LOCATION> is deleted from Reltio.Otherwise, <ORGANIZATION> calls REST operation <ORGANIZATION> /hcp on <ORGANIZATION> (INT4.1) to create or replace <ORGANIZATION> profile in Reltio. <ORGANIZATION> handles complexity of the update process in <URL>cessing events from multiple sources and prioritizationAs mentioned in previous sections, there are three different <ORGANIZATION> queues that are populated with events by <LOCATION>. Each of them is processed by a separate <ORGANIZATION>, allowing for some flexibility and prioritizing one queue above others. This can be accomplished by altering consumer configuration found in application.yml file. Relevant section of mentioned file is shown below. Queue eh-out-reltio-gcp-batch-update-dev has 15 consumers (and therefore 15 processing threads), while two remaining queues have only 5 consumers each. This allows faster processing of GCP Batch <URL>e same principle applies to further stages of the processing, which use <PERSON> endpoints. Again, there is a configuration section dedicated to each of the internal <PERSON> topic that allows tuning the pace of processing. "
|
||
},
|
||
{
|
||
"title": "HUB UI User Guide",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/HUB+UI+User+Guide",
|
||
"content": "This page contains the complete user guide related to the HUB <URL>ease check the sub-pages to get details about the HUB UI and <URL>art with Main Page - HUB Status - main pageA handful of information that may be helpful when you are using HUB UI:UI URL: <URL> (there is no need to know all URLs, click one, and in the top right corner you can easily switch between tenants).How to connect to <ORGANIZATION> and gain access to all features - <ORGANIZATION> Connect Guide(INTERNAL USAGE only by HUB Admins) <ORGANIZATION> role names and standards - Add new role and add users to the UIIf you want to add any new features to the HUB UI please send your suggestions to the HUB Team: <EMAIL_ADDRESS>"
|
||
},
|
||
{
|
||
"title": "HUB Admin",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/HUB+Admin",
|
||
"content": "All the subpages contain the user guide - how to use the hub admin <URL> gain access to the selected operation please read - UI Connect Guide"
|
||
},
|
||
{
|
||
"title": "1. <PERSON> Offset",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/1.+Kafka+Offset",
|
||
"content": "DescriptionThis tab is available to a user with the MODIFY_KAFKA_OFFSET management <URL>lows you to reset the offset for the selected topic and group.<PERSON> turn off your <PERSON> Consumer before executing this operation, it is not possible to manage the ACTIVE consumer groupRequired parametersGroup ID - the Kafka Consumer group that is connected to the topicTopic - The <PERSON> topic name that the user wants to manageDetailsThe offset parameter can take one of three values:earliest - reset the consumer group to the beginning of kafka topic - use this to read all events one more timelatest - reset the consumer group to the end of kafka topic - use this to skip all events and set consumer group at the end of the <URL>ift by - allows to move consumer group by specific ammount to events. negative number (e.g -1000) - shifts the consumer group by 1000 events to the left - means you will get 1000 events more positive number (e.g. 1000) - shifts the consumer group by 1000 events to the right - means you will get 1000 events less Use Case - you want to read 1000 <URL>rst reset offest to latests - LAG will be 0Then shift by (-1000) - LAG will be 1000 eventsdate - allows to set the consumer group in a specific date, usefull when you want to read events since specific day. View"
|
||
},
|
||
{
|
||
"title": "10. Jobs Manager",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/10.+Jobs+Manager",
|
||
"content": "DescriptionThis page is available to users that scheduled the <NRP> you to check the current status of an asynchronous operation Required parametersJob Type choose a JOB to check the statusDetailsThe page shows the statuses of jobs for each <URL> <ORGANIZATION> and select the business <URL> the table below all the jobs for all users in your <ORGANIZATION> group are displayed. You can track the jobs and download the reports <URL> the Refresh view button to refresh the pageClick the icon to download the <URL>ew"
|
||
},
|
||
{
|
||
"title": "2. Partials",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/2.+Partials",
|
||
"content": "DescriptionThis tab is available to the user with the <PERSON> role to manage the precallback service. It allows you to download a list of partials - these are events for which the need to change the <ORGANIZATION> has been detected and their sending to output topics has been suspended. The operation allows you to specify the limit of returned records and to sort them by the time of their <URL>B ADMINUsed only internally by <ORGANIZATION> ADMINSRequired parametersN/A - by default, you will get all partial <URL><ORGANIZATION> timestamp instead - mark as true to get date format instead of the duration of partial in minutesReturn epoch millis- mark as true to get EPOCH timestamp instead of date formatLimit - put a number to limit the number of resultsSort - change the sort orderView"
|
||
},
|
||
{
|
||
"title": "3. HUB Reconciliation",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/3.+HUB+Reconciliation",
|
||
"content": "DescriptionThis tab is available to the user with the reconciliation service management role - RECONCILE and RECONCILE_COMPLEXThe operation accepts a list of identifiers for which it is to be performed. It allows you to trigger a reconciliation task for a selected type of object:relationsentitiespartialsDivided into 2 sections:TOP - Simple JOBS - simple query where input is the entity <ORGANIZATION> jobs - complex query that schedules Airflow <URL>mple JOBS:Required parametersN/A - by default generate CHANGE events and skip entity when it is in REMOE/INACTIVE/LOST_MERGE state. In that case, we only push CHANGE events. <NRP> valueDescriptionforcefalseSend an event to output topics even when a partial update is detected or the checksum is the same.push lost mergefalseReconcile event with <LOCATION> statuspush inactivatedfalseReconcile event with INACTIVE statuspush removedfalseReconcile event with REMOVE statusViewComplex JOBS:Required parametersCountries - list countries for which you want to generate CHANGE events. DetailsSimpleParameterDefault valueDescriptionforcefalseSend an event to output topics even when a partial update is detected or the checksum is the <URL>untries <ORGANIZATION> CA, MXSourcesN/Acrosswalks names for which you want to generate the events.Object TypeENTITYgenerates events from ENTITY or RELATION objectsEntity <PERSON> on object <ORGANIZATION> be for ENTITY: <ORGANIZATION>/DCRCan be for RELATION: input test in which you specify the relation e.g.: OtherHCOToHCOBatch limitN/Alimit the number of events - useful for testing purposesComplexParameterDefault valueDescriptionforcefalseSend an event to output topics even when a partial update is detectedEntity QueryN/<ORGANIZATION> the MATCH query to get <PERSON> results and generate events. e.g.: { "status": "ACTIVE", "sources": "ONEKEY", "country": "gb" }Entities limitN/Alimit the number of events - useful for testing purposesRelation QueryN/<ORGANIZATION> the MATCH query to get <PERSON> results and generate events. e.g.: { "status": "ACTIVE", "sources": "ONEKEY", "country": "gb" }Relation limitN/Alimit the number of events - useful for testing purposesView"
|
||
},
|
||
{
|
||
"title": "4. <PERSON> Events",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/4.+Kafka+Republish+Events",
|
||
"content": "DescriptionThis page is available to users with the publisher manager role -RESEND_KAFKA_EVENT and RESEND_KAFKA_EVENT_COMPLEXAllows you to resend events to output topics. It can be used in two modes: simple and <URL>e operation will trigger JOB with selected parameters. In response, the user will receive an identifier that is used to check the status of the asynchronous operation in the 10. Jobs Manager <URL>mple modeRequired parametersCountries - list countries for which you want to generate CHANGE events. DetailsIn this mode, the user specifies values <ORGANIZATION> defined parameters:ParameterDefault <ORGANIZATION> <NRP> CHANGE eventsnote:when you mark 'republish CHANGE events' - the process will generate CHANGE events for all entities that are <ORGANIZATION>, and will check if the entity is LOST_MERGE - then will generate LOST_MERGED events, DELETED - then will generate REMOVED events, INACTIVE - then will generate INACTIVATED events.when you mark 'republish CREATE events' - the process will generate CREATE events for all entities that are <ORGANIZATION>, and will check if the entity is LOST_MERGE - then will generate LOST_MERGED events, DELETED - then will generate REMOVED events, INACTIVE - then will generate INACTIVATED <URL>e difference between these 2 modes is, in one we generate CHANGEs in the second CREATE events (depending if whether this is <ORGANIZATION> generation or not)CountriestrueList of countries for which the task will be performedSourcesfalseList of sources for which the task will be performedObject typetrueObject type for which operation will be performed, available values: Entity, RelationReconciliation targettrueOutput <PERSON> namelimittrueLimit of generated eventsmodification time fromfalseEvents with a modification date greater than this will be generatedmodification time tofalseEvents with a modification date less than this will be generatedViewComplex modeRequired parametersEntities query or Relation queryDetails In this mode, the user himself defines the <PERSON> query that will be used to generate eventsParameterRequiredDescriptionSelect moderepublish CHANGE eventsnote:when you mark 'republish CHANGE events' - the process will generate CHANGE events for all entities that are <ORGANIZATION>, and will check if the entity is LOST_MERGE - then will generate LOST_MERGED events, DELETED - then will generate REMOVED events, INACTIVE - then will generate INACTIVATED events.when you mark 'republish CREATE events' - the process will generate CREATE events for all entities that are <ORGANIZATION>, and will check if the entity is LOST_MERGE - then will generate LOST_MERGED events, DELETED - then will generate REMOVED events, INACTIVE - then will generate INACTIVATED <URL>e difference between these 2 modes is, in one we generate CHANGEs in the second CREATE events (depending if whether this is <ORGANIZATION> generation or not)Entities querytrueResend entities <PERSON> queryEntities limitfalseResend entities limitRelation querytrueResend relations <PERSON> queryRelations limittrueResend relations limitReconciliation targettrueOutput <PERSON> nameView"
|
||
},
|
||
{
|
||
"title": "5. Reltio Reindex",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/5.+Reltio+Reindex",
|
||
"content": "DescriptionThis page is available to users with the reltio reindex role - REINDEX_ENTITIESAllows you to schedule Reltio Reindex JOB. It can be used in two modes: query and <URL>e operation will trigger JOB with selected parameters. In response, the user will receive an identifier that is used to check the status of the asynchronous operation in the 10. Jobs Manager <URL>quired parametersSpecify Countries in query mode or file with entity uris in file mode. <PERSON> ParameterDescriptionCountriesList of countries for which the task will be performedSourcesList of sources for which the task will be performedEntity typeObject type for which operation will be performed, available values: <ORGANIZATION><ORGANIZATION>/DCRBatch limitAdd if you want to limit the reindex to the specific number - helpful with testing purposesfileInput fileFile format: CSV Encoding: <ORGANIZATION> headers: - <ORGANIZATION> <PERSON> details:HUB executes Reltio Reindex API with the following default parameters:ParameterAPI Parameter nameDefault <ORGANIZATION> detailed <ORGANIZATION> detailsEntity typeentityTypeN/AIf provided, the task restricts the reindexing scope to Entities of specified <URL>er can specify the <ORGANIZATION> is search <ORGANIZATION> and the <ORGANIZATION> list will be generated. There is no need to pass this to Reltio API becouse we are using the generated URI listSkip entities countskipEntitiesCount0If provided, sets the number of Entities which are skipped during reindexing.-Entities limitentitiesLimitinfinityIf provided, sets the maximum number of Entities are reindexed-Updated sinceupdatedSinceN/ATimestamp in Unix format. If this parameter is provided, then only entities with greater or equal timestamp are reindexed. This is a good way to limit the reindexing to newer records.-Update entitiesupdateEntitiestrue If set to true, initiates update for Search, Match tables, History. If set to false, then no rematching, no history changes, only ES structures are updated.If set to true (default), in addition to refreshing the <ORGANIZATION> index, the task also updates history, match tables, and the analytics layer (RI). This ensures that all indexes and supporting structures are as up-to-date as possible. As explained above, however, triggering all these activities may decrease the overall performance level of the database system for business work, and overwhelm the event streaming channels. If set to false, the task updates <ORGANIZATION> data only. It does not perform rematching, or update history or analytics. These other activities can be performed at different times to spread out the performance impact.-Check crosswalk consistencycheckCrosswalksConsistencyfalseIf true, this will start a task to check if all crosswalks are unique before reindexing data. Please note, if entitiesLimit or distributed parameters have any value other than default, this parameter will be unavailableSpecify true to reindex each Entity, whether it has changed or not. This operation ensures that each Entity in the database is processed. Reltio does not recommend this option – it decreases the performance of the reindex task dramatically, and may overload the server, which will interfere with all database <ORGANIZATION> listentityUrisgenerated list of <ORGANIZATION> from <ORGANIZATION> or more entity URIs (separated by a comma) that you would like to process. For example: entities/<id1>, entities/<id2>.Reltio suggests to use 50-100K uris in one <ORGANIZATION> request, this is Reltio limitation. Our process splits to 100<ORGANIZATION> files if required. Based on the input files size one JOB from HUB end may produce multiple Reltio tasks.UI generates list of <ORGANIZATION> from mongo querry or we are running the reindex with the input filesIgnore streaming eventsforceIgnoreInStreamingfalseIf set to true, no streaming events will be generated until after the reindex job has completed.-DistributeddistributedfalseIf set to true, the task runs in distributed mode, which is a good way to take advantage of a networked or clustered computing environment to spread the performance demands of reindexing over several nodes. -Job parts counttaskPartsCountN/A due to distributed=falseDefault value: 2The number of tasks which are created for distributed reindexing. Each task reindexes its own subset of Entities. Each task may be executed on a different <ORGANIZATION> node, so that all tasks can run in parallel. Recommended value: the number of <ORGANIZATION> nodes which can execute the tasks. Note: This parameter is used only in distributed mode ( distributed=true); otherwise, its ignored.-More detials in <LOCATION> docs:<URL>"
|
||
},
|
||
{
|
||
"title": "6. Merge/Unmerge entities",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "DescriptionThis page is available to users with the merge/unmerge role - MERGE_UNMERGE_ENTITIESAllows you to schedule <ORGANIZATION> JOB. It can be used in two modes: merge or <URL>e operation will trigger JOB with selected parameters. In response, the user will receive an identifier that is used to check the status of the asynchronous operation in the 10. Jobs Manager <URL>quired parametersfile with profiles to be merged or unmerged in the selected formatDetailsfileInput fileFile format: CSV Encoding: UTF-8more details here - Batch merge & unmergeView"
|
||
},
|
||
{
|
||
"title": "7. Update Identifiers",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/7.+Update+Identifiers",
|
||
"content": "DescriptionThis page is available to users with the update identifiers role - UPDATE_IDENTIFIERSAllows you to schedule update identifiers <URL>e operation will trigger JOB with selected parameters. In response, the user will receive an identifier that is used to check the status of the asynchronous operation in the 10. Jobs Manager <URL>quired parametersfile with profiles to be updated in the selected formatDetailsfileInput fileFile format: CSV Encoding: UTF-8more details here - Batch update identifiersView"
|
||
},
|
||
{
|
||
"title": "8. Clear Cache",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/8.+Clear+Cache",
|
||
"content": "DescriptionThis page is available to users with the <ORGANIZATION> clear cache role - CLEAR_CACHE_BATCHThe cache is related to the Direct Channel ETL jobs:Docs: <ORGANIZATION> and ETL BatchesAllows you to clear the <ORGANIZATION> checksum cache. It can be used in three modes: query or by_source or <URL>e operation will trigger JOB with selected parameters. In response, the user will receive an identifier that is used to check the status of the asynchronous operation in the 10. Jobs Manager tab.Query modeRequired parametersBatch name - specify a batch name for which you want to clear the cacheObject type - ENTITY or <ORGANIZATION> type - e.g. configuration/relationTypes/Employment or configuration/entityTypes/HCPDetailsParameterDescriptionBatch nameSpecify a batch on which the clear cache will be triggeredObject type ENTITY or <ORGANIZATION> typeIf object type is ENTITY then e.g:configuration/entityTypes/HCOconfiguration/entityTypes/HCPIf object type is RELATION then e.g.:configuration/relationTypes/ContactAffiliationsconfiguration/relationTypes/EmploymentCountryAdd a country if required to limit the clear cache query <ORGANIZATION> modeRequired parametersBatch name - specify a batch name for which you want to clear the cacheSource - crosswalk type and valueDetailsSpecify a batch name and click add a source to specify new crosswalks that you want to remove from the <URL><ORGANIZATION> modeRequired parametersBatch name - specify a batch name for which you want to clear cachefile with crosswalks to be cleared in <ORGANIZATION> cache in the selected format for specified batchDetailsfileInput fileFile format: CSV Encoding: UTF-8more details here - Batch clear <ORGANIZATION> data load <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "9. Restore Raw Data",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/9.+Restore+Raw+Data",
|
||
"content": "DescriptionThis page is available to users with the restore data role - RESTOREThe raw data contains data send to MDM HUB:Docs: Restore raw dataAllows you to restore raw (source) data on selected environmentThe operation will trigger asynchronous job with selected <URL>ore entitiesRequired parametersSource environment - restore data from another environment eg from QA to DEV environment, the default is the currently logged in environmentEntity type - restore data only for specified entity type: <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> parametersCountries - restore data only for specified entity country, eq: <LOCATION>, IE, <ORGANIZATION> - restore data only for specified entity source, eq: <LOCATION>, ONEKEYDate Time - restore data created after specified date timeViewRestore relationsRequired parametersSource environment - restore data from another environment eg from QA to DEV environment, the default is the currently logged in environmentOptional parametersCountries - restore data only for specified entity country, eq: <LOCATION>, IE, <ORGANIZATION> - restore data only for specified entity source, eq: <LOCATION>, <LOCATION> types- restore data only for specified relation type, eg: configuration/relationTypes/OtherHCOtoHCOAffiliationsDate <ORGANIZATION> - restore data created after specified date timeView"
|
||
},
|
||
{
|
||
"title": "HUB Status - main page",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/HUB+Status+-+main+page",
|
||
"content": "DescriptionThe <ORGANIZATION> is divided into the following sections:<NRP> links to Ingestion Services ConfigurationIngestion Services TesterHUB AdminHEADERShows the current tenant name, click to quickly change the tenant to a different <URL>ows the logged-in user name. Click to log out. FOOTERLink to User GuideLink to Connect GideLink to the whole HUB documentationLink to the Get Help pageCurrently deployed versionClick to get the details about the CHANGELOGon PROD - released versionon NON-PROD- snapshot version - Changelog contains unreleased changes that will be deployed in the upcoming release to <ORGANIZATION> dashboard is divided into the following sections:On this page you can check HUB processing status / kafka topics LAGs / <ORGANIZATION> availability / Snowflake DataMart refresh. <ORGANIZATION> (related to the Direct Channel)API Availability - status related to HUB <ORGANIZATION> (all <ORGANIZATION> exposed by HUB e.g. based on <ORGANIZATION><ORGANIZATION> )Reltio READ operations performance and latency - for example, GET Entity operations (every operation that gets data from Reltio)Reltio WRITE operations performance and latency - for example, <ORGANIZATION> operations (every operation that changes data in Reltio)Batches (related to the ETL Batch Channel)Currently running batches and duration of completed <URL>rrently running batches may cause data load and impact event processing visible in the dashboard below (inbound and outbound)Event Processing Shows information about events that we are processing to:Inbound - all updates made by HUB on profiles in <ORGANIZATION> the <ORGANIZATION> based on the:<ORGANIZATION> (loading and processing events into HUB from ETL)Direct Channel processing:loading <ORGANIZATION> data to <ORGANIZATION> (all updates on profiles on Reltio) Outbound - streaming channel processing (related to the <ORGANIZATION> channel)shows the <ORGANIZATION> based on the:Streaming channel - all events processing starting from <ORGANIZATION> queue, events currently processing by <ORGANIZATION> channel microservices.DataMart (related to the <ORGANIZATION> Mart)The time when the last REGIONAL and <ORGANIZATION> data martsShows the number of events that are still processing by HUB microservices and are not yet consumed by <ORGANIZATION>. "
|
||
},
|
||
{
|
||
"title": "Ingestion Services Configuration",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Ingestion+Services+Configuration",
|
||
"content": "DescriptionThis page shows configuration related to theData <ORGANIZATION> checksSource Match CategorizationCleansing & FormattingAuto-FillsMinimum Viable Profile Check. Noise listsIdentifier noise listDuplicate identifier <URL>oose a filter to switch between different entity types and use input boxes to filter results.Available filters:FilterDescriptionEntity <ORGANIZATION><ORGANIZATION> - choose an entity type that you want to review and click <DATE_TIME> to limit the result and review only selected rulesCountryType a country code to limit the number of rules related to the specific countrySource Type a source to limit the number of rules related to the specific sourceQueryOpen Text filed -helps to limit the number of results when searching for specific attributes. Example case - put the "firstname" and click Search to get all rules that modify/use FirstName <URL>dit filedComparison typeDateUse a combination of these 3 attributes to find rules created before or after a specific date. Or to get rules modified after a specific date. Click on the:Noise List ConfigID Noise ConfigDuplicate ID ConfigAnd get detailed information about current rules for specific <URL>TE: remember to change entity type and click Search to view rules for different entity types. "
|
||
},
|
||
{
|
||
"title": "Ingestion Services Tester",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Ingestion+Services+Tester",
|
||
"content": "DescriptionThis site allows you to test quality service. The user can select the input entity using the 'upload' button, paste the content of the entity into the editor or drag it. After clicking the 'test' button, the entity will be sent to the quality service. After processing, the result will appear in the right window. The user can choose two modes of presenting the result - the whole entity or the difference. In the second mode, only changes made by quality service will be displayed. After clicking the 'validation result' button, a dialog box will be displayed with information on which rules were applied during the operation of the service for the selected entity.Quality service tester editorValidation summary Here you can check which rules were "triggered" and check the rule in <ORGANIZATION> using the Rule <URL>arch by text using attribute or "triggered" keyword to get all triggered rules. "
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> batch",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Incremantal+batch",
|
||
"content": "On the diagram below presented the generic structure of the batch flow. Data sources will have own instances of the flow configured:The flow consists of the following stages: Flow triggering is done by <ORGANIZATION> based on a schedule suited to a source data delivery time. The source data files are downloaded from <ORGANIZATION> <US_DRIVER_LICENSE> bucket managed by <ORGANIZATION> and they are preprocessed. The preprocessing is done using standard Unix tools run by <PERSON> as docker containers, and it is specific to particular source requirements. The goal of the stage is preparing data for the mapping stage by cleaning and formatting. Source data are mapped to Reltio data model using <ORGANIZATION> – custom <ORGANIZATION> component that uses flexible mapping rules expressed as metadata configuration. The component produces HCP/HCP/relation update events and publish it to dedicated <PERSON> topics. Each flow uses own topic to control access and prevent from uncontrolled data modification in Reltio by a source (Topic name is mapped to client privileges in <LOCATION>). The mapper generates update events in an order that reflects Reltio object dependencies. As first, Main HCO events are generated, then child <ORGANIZATION> events, and at the end <ORGANIZATION> events. <PERSON> receives update events, validates, call respective Reltio <ORGANIZATION> to update profiles in <ORGANIZATION>, and send an acknowledge events (ACK) to a response topic containing statuses of processing update events. The events are processed in parallel. The number of threads depends on the number of <PERSON> consumers configured in the <LOCATION>. The <ORGANIZATION> component receives ACKs and send events for the next Reltio object, or if all events are processed than it generates a report from a load. At the end of the process, the input files and the load report are copied to an archive location in <ORGANIZATION>. <ORGANIZATION> is a component that converts source data into documents in the unified format required by Reltio API. The component is flexible enough to support incremental batches as well as full snapshots of data. Handling a new type of data source is a matter of (in most cases) creating a new configuration that consists of stage and metadata parts. The first one defines details of so called "stages", i.e.: <ORGANIZATION>, <ORGANIZATION>, etc. The latter contains all mapping rules defining how to transform source data into attribute path/value form. Once data are transformed into the mentioned form it is easy to store it, merge it or do any other operation (including <ORGANIZATION> document creation) in the same way for all types of sources. This simple idea makes <ORGANIZATION> a very powerful tool that can be extended in many ways. A stage is a logical group of steps that as a whole process single type of Reltio document, i.e.: <ORGANIZATION> entity. At the beginning of each stage the component reads source data and generates attribute changes (events) and then stores this in an output file. It is worth to notice that there can be many source data configured. Once the output file is produced it is sorted. The above logic can be called phase 1 of a stage. Until now no database has been used. In the phase 2 the sorted file is read, events are aggregated into groups in such a way that each element of a group refers to the same Reltio document. Next all lookups are resolved against a database, merged with previous version of a document attributes and persisted. Then, Reltio document (Json) is created and sent to <PERSON>. The stage is finished when all acks from the gateway are collected. Under the hood each stage is a sequence of jobs: a job (i.e.: the one for sorting a file) can be started only in case its direct predecessor is finished with a success. Stages can be configured to run in parallel and depends on each other. Load reports At runtime <ORGANIZATION> collects various types of data that give insight into DAG state and load statistics. The <ORGANIZATION> report is written to disk each time a status of any job is changed. The report consists of three panels: Summary, Metrics and DAG. The summary panel contains details of all jobs within a DAG that was created for the current execution (load). The <ORGANIZATION> panel shows relationships between jobs in the form of a graph. The metrics panel presents details of a load. Each metric key is prefixed by a stage name. Document processed or Document sent: number of <ORGANIZATION> documents processed with success. In the latter case the document was additionally sent to <ORGANIZATION>. Document not sent due to its deleted status: number of documents not processed because of its status marked as deleted (only for initDeletedLoadEnabled set to false, otherwise a document is processed anyway) Document not sent due to lack of delta: number of documents not processed because there was not any change discovered (only for deltaDetectionEnabled set to true, otherwise a document is processed anyway) <LOCATION> creation error: number of documents not sent due to a problem with building <LOCATION> object. This may happen if source data are not complete, i.e.: only specializations without root object attributes were delivered Lookup error: number of documents not processed due to problems with finding referenced data in a database. Record filtered out: number of records filtered out during attribute change generation step. By default no record is filtered out, this may be changed via mapping configuration. Invalid record error: number of invalid records "
|
||
},
|
||
{
|
||
"title": "<PERSON> offset modification",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Kafka+offset+modification",
|
||
"content": "DescriptionThe REST interfaces exposed through the <ORGANIZATION> Manager component used by clients to modify kafka offset.During the update, we will check access to groupId and specyfic topic.Diagram 1 presents flow, and kafka communication during offset <URL>e diagrams below present a sequence of steps in processing client calls.Flow diagramStepsThe client sends HTTP request to MDM Manager endpoint.Kong API Gateway receives requests and handles authentication.If the authentication succeeds, the request is forwarded to MDM Manager <URL>M Manager checks user permissions to call kafka offset modification operation and the correctness of the request.If the user's permissions are correct, MDM Manager proceeds with offset modification.Offset modification cases:latest: to latest offsetearliest: to earliest offsetto date: to offset based on specyfied timestamp(Used to retrieve the earliest offset whose timestamp is greater than or equal to the given timestamp in the corresponding partition, timestamp – in milliseconds)If You want shift offset for specific message number you can use "shift" attribute and specify positive or negative number of messages to shift (offset is calculated in memory based on "offset + shift" properties)TriggersTrigger actionComponentActionDefault timeREST callManager: POST /kafka/offsetmodify kafka offsetAPI synchronous requests - realtimeRequestResponse{ "groupId": "mdm_test_user_group", "topic": "amer-dev-in-guest-tests", "offset": "latest"}{ "values": [ { "topic": "amer-dev-in-guest-tests", "partition": 0, "offset": 2 } ]}{ "groupId": "mdm_test_user_group", "topic": "amer-dev-in-guest-tests", "offset": "earliest"}{ "values": [ { "topic": "amer-dev-in-guest-tests", "partition": 0, "offset": 0 } ]}{ "groupId": "mdm_test_user_group", "topic": "amer-dev-in-guest-tests", "offset": "<DATE_TIME>"}{ "values": [ { "topic": "amer-dev-in-guest-tests", "partition": 0, "offset": 1 } ]}{ "groupId": "mdm_test_user_group", "topic": "amer-dev-in-guest-tests", "offset": "latest" "partition": 4}{ "values": [ { "topic": "amer-dev-in-guest-tests", "partition": 4, "offset": 2 } ]}{ "groupId": "mdm_test_user_group", "topic": "amer-dev-in-guest-tests", "offset": "<DATE_TIME>", "shift": 5}{ "values": [ { "topic": "amer-dev-in-guest-tests", "partition": 0, "offset": 6 } ]}Dependent componentsComponentUsageManagercreate update Entities in MDM systemsAPI <PERSON> REST and secure access"
|
||
},
|
||
{
|
||
"title": "LOV read",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/LOV+read",
|
||
"content": "The flow is triggered by <ORGANIZATION> GET /lookup call. It retrives LOV data from HUB store. Process steps description:Client sends HTTP request to <ORGANIZATION> endpoint.<LOCATION> receives request and handles authenticationIf the authentication succeeds, the request is forwarded to <ORGANIZATION> Manager checks user permissions to call getEntity operation and the correctness of the requestMDM Manager checks user profile configuration for lookup operation to determine whether to return results based on MongoDB state, or call Reltio <URL>quest parameters are used to dynamically generate a query. This query is executed in <DATE_TIME> method.Query results are returned to the client"
|
||
},
|
||
{
|
||
"title": "LOV update process (Nucleus)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "\nProcess steps description:\n\n\tNucleus Subscriber monitors <ORGANIZATION> location where <ORGANIZATION> files are uploaded.\n\tWhen a new file is found, it is downloaded and processed. Single CCV zip file contains multiple *.exp files, which contain different parts of LOV – header, description, references to values from external systems.\n\tEach *.exp file is processed line by line, with Dictionary change events generated for each line. These events are published to a <PERSON> topic from where the Event Publisher component receives them.\n\tAfter <ORGANIZATION> file is processed completely, it is moved to archive subtree in <ORGANIZATION> bucket folder structure.\n\tWhen Dictionary change event is received in <ORGANIZATION> Publisher the current state of LOV is first fetched from <PERSON> database. New data from the event is then merged with that state and the result is saved back in Mongo.\n\n\n\nAdditional remarks:\n\n\tCorrectness is ensured by the fact that LOV id is used as <PERSON> partitioning key, guaranteeing that events related to the same LOV are processed sequentially by the same thread.\n\tDictionary change events are considered internal to <ORGANIZATION> – they are not forwarded to client systems subscribing to Entity change events.\n\n"
|
||
},
|
||
{
|
||
"title": "LOV update processes (Reltio)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "\n Figure 18. Updating LOVs from ReltioLOV update processes are triggered by timer on regular, configurable intervals. Their purpose is to synchronize dictionary values from Reltio. Below is the diagram outlining the whole process.\n\nProcess steps description:\n\n\tSynchronization processes are triggered at regular intervals.\n\tReltio Subscriber calls <PERSON> lookups <ORGANIZATION> to retrieve first batch of LOV data\n\tFetched data is inserted into the <PERSON> database. Existing records are updated\n\n\n\nSecond and third steps are repeated in a loop until there is no more LOV data remaining."
|
||
},
|
||
{
|
||
"title": "MDM Admin Flows",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/MDM+Admin+Flows",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Kafka Offset",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Kafka+Offset",
|
||
"content": "Swagger: <URL> allows offset manipulation for consumergroup-topic pair. Offsets can be set to earliest/latest/timestamp, or adjusted (shifted) by a numeric <URL> important point to mention is that in many cases offset does not equal to messages - shifting offset on a topic back by 100 may result in receiving 90 extra messages. This is due to compactation and retention - Kafka may mark offset as removed, but it still remains for the sake of continuity.Example 1Environment is <ORGANIZATION>. User wants to consume the last 100 messages from his topic again. He is using topic "emea-dev-out-full-test-topic-1" and consumer-group "emea-dev-consumergroup-1".User has disabled the consumer - Kafka will not allow offset manipulation, if the topic/consumergroup is being used.He sent below <PERSON> "topic": "emea-dev-out-full-test-topic-1",\n "groupId": "emea-dev-consumergroup-1",\n "shiftBy": -100\n}\nUpon re-enabling the consumer, 100 of the last events were re-consumed.Example 2User wants to consume all available messages from the topic <URL>er has disabled the consumer and sent below <PERSON> "topic": "emea-dev-out-full-test-topic-1",\n "groupId": "emea-dev-consumergroup-1",\n "offset": earliest\n}\nUpon re-enabling the consumer, all events from the topic were available for consumption again."
|
||
},
|
||
{
|
||
"title": "Partial List",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/Partial+List",
|
||
"content": "Swagger: <URL> calls <ORGANIZATION> internal <ORGANIZATION> and returns a list of events stuck in partial state (more information here). List can be limited and sorted. Partial age can be displayed in one of below formats:HH:mm:ss.fff duration(default)YYYY-MM-DDThh:mm:ss.sss timestampepoch timestamp.ExampleUser has noticed an alert being triggered for GBLUS DEV, informing about events in partial state. To investigate the situation, he sends the following request:\nGET <URL> "entities/1sgqoyCR": "<DATE_TIME> "entities/1eUqpXVe": "<DATE_TIME> "entities/2ZlDTE2U": "<DATE_TIME> "entities/2J1YiLW9": "<DATE_TIME> "entities/1KgPnkhY": "<DATE_TIME> "entities/1YpLnUIR": "<DATE_TIME> realized, that it is difficult to quickly tell the age of each partial based on timestamp. He removed the absolute flag from <PERSON>"entities/1sgqoyCR": "27:26:56.228",\n "entities/1eUqpXVe": "218:29:05.406",\n "entities/2ZlDTE2U": "27:28:31.801",\n "entities/2J1YiLW9": "27:27:17.659",\n "entities/1KgPnkhY": "218:29:04.157",\n "entities/1YpLnUIR": "218:28:56.090"\n}\nThree partials have been stuck for <DATE_TIME>. Other three partials - for over <DATE_TIME>."
|
||
},
|
||
{
|
||
"title": "Reconciliation",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Reconciliation",
|
||
"content": "EntitiesSwagger: <URL> accepts a <ORGANIZATION> list of entity URIs. URIs not beginning with "entities/" are filtered out. For each URI it:Checks entityType (<ORGANIZATION><ORGANIZATION>) in MongoChecks status (ACTIVE/LOST_MERGE/INACTIVE/REMOVED) in MongoIf entity is <ORGANIZATION>, it generates a *_CHANGED event and sends it to the ${env}-internal-reltio-events to be enriched by the Entity EnricherIf entity has status other than ACTIVE:If entity has status LOST_MERGE and pushLostMerge parameter is true, generate a *_LOST_MERGE event.If entity has status INACTIVE and pushInactived parameter is true, generate a *_INACTIVATED event.If entity has status DELETED and pushRemoved parameter is true, generate a *_REMOVED event.*Additional parameter, force, may be used. When set to true, event will proceed to the <PERSON> even if rejected by <ORGANIZATION>.ExampleUser wants to reconcile 4 entities, which have different data in <ORGANIZATION> than in Reltio:entities/108dNvgB is <ORGANIZATION> is LOST_MERGEentities/10bH3nze is INACTIVEentities/1065AHEA is DELETEDrelations/101LIzcm was mistakenly added to the listBelow request is sent (<ORGANIZATION>, "entities/10VLBsCl", "entities/10bH3nze", "entities/1065AHEA", "relations/101LIzcm"]\nResponse:\n{\n "entities/10bH3nze": "false - Record with INACTIVE status in cache",\n "entities/1065AHEA": "false - Record with DELETED status in cache",\n "entities/10VLBsCl": "false - Record with <LOCATION> status in cache",\n "entities/108dNvgB": "true",\n "relations/101LIzcm": "false"\n}\nOnly one event was generated: HCP_CHANGED for entities/<URL>er decided that he also need an HCP_LOST_MERGE event for entities/10VLBsCl. He sent the same request with pushLostMerge flag:\nPOST <URL>"entities/108dNvgB", "entities/10VLBsCl", "entities/10bH3nze", "entities/1065AHEA", "relations/101LIzcm"]\nResponse:\n{\n "entities/10bH3nze": "false - Record with INACTIVE status in cache",\n "entities/1065AHEA": "false - Record with DELETED status in cache",\n "entities/10VLBsCl": "true",\n "entities/108dNvgB": "true",\n "relations/101LIzcm": "false"\n}\nThis time, two events have been generated:HCP_CHANGED for <PERSON> for entities/10VLBsClRelationsSwagger: <URL> works the same way as for Entities, but this time URIs not beginning with "relations/" are filtered out.ExampleUser sent the same request as in previous example (<ORGANIZATION>", "entities/10VLBsCl", "entities/10bH3nze", "entities/1065AHEA", "relations/101LIzcm"]\nResponse:\n{\n "entities/10bH3nze": "false",\n "entities/1065AHEA": "false",\n "entities/10VLBsCl": "false",\n "entities/108dNvgB": "false",\n "relations/101LIzcm": "false - Record with DELETED status in cache"\n}\nFirst 4 URIs have been filtered out due to unexpected prefix. Event for relations/101LIzcm has not been generated, because this relation has DELETED status in <URL>me request has been sent with pushRemoved <PERSON>, "entities/10VLBsCl", "entities/10bH3nze", "entities/1065AHEA", "relations/101LIzcm"]\nResponse:\n{\n "entities/10bH3nze": "false",\n "entities/1065AHEA": "false",\n "entities/10VLBsCl": "false",\n "entities/108dNvgB": "false",\n "relations/101LIzcm": "true"\n}\nA single event has been generated: <PERSON> for relations/<URL>rtialsSwagger: <URL> Reconciliation API works the same way that Entities Reconciliation does, but it automatically fetches the current list of entities stuck in partial state using <ORGANIZATION> also handles push and force flags. Additionally, partials can be filtered by age, using partialAge parameter with one of following values: NONE (default), MINUTE, HOUR, DAY.ExampleUser wants to reload entities stuck in partial state in <ORGANIZATION>. Prometheus alert informs him that there are plenty, but he remembers that there is currently an ongoing data load, which may cause many temporary <URL>er decides that he should use the partialAge parameter with value DAY, to only reload the entities which have been stuck for a longer while, and not generate unnecessary additional traffic.He sends the following <ORGANIZATION> <URL> -\nFlow fetches a full list of partials from <ORGANIZATION> and filters out the ones stuck for <DATE_TIME>. It then executes the Entities Reconciliation with this list. Response:\n{\n "entities/1yHHKEZ7": "true",\n "entities/2EHamZr3": "true",\n "entities/2EyP0kYM": "true",\n "entities/21QU96KG": "true",\n "entities/2BmHQMCn": "true"\n}\<US_DRIVER_LICENSE> <ORGANIZATION>/HCO_CHANGED events have been generated as a result."
|
||
},
|
||
{
|
||
"title": "Resend Events",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Resend+Events",
|
||
"content": "<ORGANIZATION> triggers an Airflow DAG. The DAG:Runs a query on MongoDB and generates a list of entity/relation <URL>ing Event Publisher's /resendLastEvent <ORGANIZATION>, it produces outbound events for received reconciliationTarget (user-sent).Resend - SimpleSwagger: <URL> using <ORGANIZATION>, user does not actually write the <PERSON> query - they instead fill in the <URL>quired parameters are:country filter,objectType (entity, relation)reconciliationTarget - this is configured for each routing rule in Event Publisher and, according to <ORGANIZATION> support practices, should be equal to topic name,event limit - number.Optionally, objects can be filtered by:source,modification time.ExampleEnvironment is <ORGANIZATION>. User wants to generate 300 entity events (HCP_CHANGED or HCO_CHANGED) for <LOCATION>, source <ORGANIZATION>. His outbound topic is emea-dev-out-full-user-all.He sends the <ORGANIZATION> <URL> "countries": [\n "pl"\n ],<ORGANIZATION> "sources": [\n "CRMMI"\n ],<ORGANIZATION> "objectType": "ENTITY",\n "limit": 300,\n "reconciliationTarget": "emea-dev-out-full-user-all"\n}\nResponse:\n{\n "dag_id": "reconciliation_system_emea_dev",\n "dag_run_id": "manual__2023-02-13T14:26:22.<US_DRIVER_LICENSE>+00:00",\n "execution_date": "<DATE_TIME>",\n "state": "queued"\n}\nA new Airflow DAG run was started. dag_run_id field contains this run's unique ID. Below request can be sent to fetch current status of this DAG run:\nGET <URL> "dag_id": "reconciliation_system_emea_dev",\n "dag_run_id": "manual__2023-02-13T14:26:22.<US_DRIVER_LICENSE>+00:00",\n "execution_date": "<DATE_TIME>",\n "state": "running"\n}\nAfter the <ORGANIZATION> has finished, 300 HCP_CHANGED/HCO_CHANGED events will have been generated to the emea-dev-out-full-user-all <URL>send - ComplexSwagger: <URL> Complex API, user writes their own <PERSON> <URL>quired parameters are:either entitiesQuery or relationsQuery - depending on object type and collection to be queried,reconciliationTarget.Optionally, resulting objects can be limited (separate fields for each query).ExampleAs in previous example, user wants to generate 300 events for <LOCATION>, source <ORGANIZATION>. Output topic is <URL>is time, he sends the following <ORGANIZATION> <URL> "entitiesQuery": "{ 'country': 'pl', 'sources': '<ORGANIZATION>' }",<ORGANIZATION> "relationsQuery": <PERSON> "reconciliationTarget": "emea-dev-out-full-user-all",\n "limitEntities": 300,\n "limitRelations": null\n}\nResponse:\n{\n "dag_id": "reconciliation_system_emea_dev",\n "dag_run_id": "manual__2023-02-13T14:57:11.<US_DRIVER_LICENSE>+00:00",\n "execution_date": "<DATE_TIME>",\n "state": "queued"\n}\nResend - StatusSwagger: <URL> described in previous examples, this <ORGANIZATION> returns current status of <ORGANIZATION> run. Request url parameter must be equal to dag_run_id. Possible statuses are:queuedsuccessrunningfailed"
|
||
},
|
||
{
|
||
"title": "Internals",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Internals",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Archive",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Archive",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> performance tests",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/APM+performance+tests",
|
||
"content": "Performance tests were executed using <LOCATION> tool placed on <ORGANIZATION>/CD server.Test scenario:Create HCPSmall entityMedium size entityBig entityGet previously created entityTests werer performed by 4 parallel users in a loop for 60 min.Test results:The decrease in component efficiency is not more than 3%The increase in the load on the nodes in not more than 5%(within the measurement error)"
|
||
},
|
||
{
|
||
"title": "Client integration specifics",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Client+integration+specifics",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<LOCATION> integration with IQVIA",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Saudi+Arabia+integration+with+IQVIA",
|
||
"content": "Below design was confirmed with <PERSON> and <PERSON> during <DATE_TIME> meeting. Concept of such solution was earlier approved by <URL>urce: Lucid"
|
||
},
|
||
{
|
||
"title": "Components providers - <ORGANIZATION>, networking, etc...",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "TenantProviderReltioAWS accounts IDsIAM usersIAM rolesS3 bucketsNetwork (subnets, VPCe)Application IDEMEA NPRODPDCS - Kubernetes in IoDCOMPANYAirflow (<ORGANIZATION>) - 211782433747Snowflake (<ORGANIZATION>) - 211782433747Reltio (<ORGANIZATION>) - 211782433747AWS (<ORGANIZATION>) - 330470878083Airflow (<US_DRIVER_LICENSE>)- <PERSON>:aws:<PERSON>:user/svc_atp_euw1_mdmhub_nprod_rw_s3Snowflake (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_atp_euw1_mdmhub_nprod_rw_s3Reltio (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_atp_euw1_mdmhub_nprod_rw_s3Node Instance Role ARN: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/atp-mdmhub-nprod-emea-eks-worker-NodeInstanceRole-1OG6IFX6DO8B9Reltio Export IAM Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhub Snowflake - pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhubReltio - pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhubVPCvpc-0c55bf38e97950aa5Subnetssubnet-067425933ced0e77f (●●●●●●●●●●●●●●)subnet-0e485098a41ac03ca (●●●●●●●●●●●●●●)SC3028977EMEA PRODAirflow (<ORGANIZATION>) - 211782433747Snowflake (<ORGANIZATION>) - 211782433747Reltio (<ORGANIZATION>) - 211782433747AWS (<ORGANIZATION>) - 330470878083S3 backup bucket - 604526422050Airflow (<ORGANIZATION>) - arn:aws:<PERSON>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:<PERSON>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_atp_euw1_mdmhub_mdm_exports_prod_rw_s3Node Instance Role ARN: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/atp-mdmhub-prod-emea-eks-worker-n-NodeInstanceRole-11OT3ADBULAGCReltio Export IAM Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - pfe-atp-eu-<US_DRIVER_LICENSE>-prod-mdmhubSnowflake - pfe-atp-eu-<US_DRIVER_LICENSE>-prod-mdmhubReltio - pfe-atp-eu-<US_DRIVER_LICENSE>-prod-mdmhubBackups - pfe-atp-eu-<US_DRIVER_LICENSE>-prod-mdmhub-backupemaasp202207120811VPCvpc-0c55bf38e97950aa5Subnetssubnet-067425933ced0e77f (●●●●●●●●●●●●●●)subnet-0e485098a41ac03ca (●●●●●●●●●●●●●●)<PERSON> in IoDCOMPANYAirflow (<ORGANIZATION>) - 555316523483Snowflake (<US_DRIVER_LICENSE>)- 555316523483Reltio (<ORGANIZATION>) - 555316523483AWS (<ORGANIZATION>) - 330470878083Airflow (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> Instance Role ARN: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/atp-mdmhub-nprod-amer-eks-worker-NodeInstanceRole-1X8MZ6QZQD5V7Reltio Export IAM Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - gblmdmhubnprodamrasp100762Snowflake - gblmdmhubnprodamrasp100762Reltio - gblmdmhubnprodamrasp100762VPCvpc-0aedf14e7c9f0c024Subnetssubnet-0dec853f7c9e507dd (<IP_ADDRESS>/18)subnet-07743203751be58b9 (<DATE_TIME> PRODAirflow (<ORGANIZATION>) - 604526422050Snowflake (<US_DRIVER_LICENSE>)- 604526422050Reltio (<ORGANIZATION>) - 555316523483AWS (<ORGANIZATION>) - 330470878083Backup bucket (<ORGANIZATION>) - 604526422050Airflow (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> Instance Role ARN: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/atp-mdmhub-prod-amer-eks-worker-n-NodeInstanceRole-1KA6LWUDBA3OIReltio Export IAM Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - gblmdmhubprodamrasp101478Snowflake - gblmdmhubprodamrasp101478Reltio - gblmdmhubprodamrasp101478Backups - pfe-atp-us-<US_DRIVER_LICENSE>-prod-mdmhub-backupamrasp202207120808VPCvpc-0aedf14e7c9f0c024Subnetssubnet-0dec853f7c9e507dd (<IP_ADDRESS>/18)subnet-07743203751be58b9 (<IP_ADDRESS>/18)SC3211836APAC <ORGANIZATION> in IoDCOMPANYAirflow (<ORGANIZATION>) - 555316523483Snowflake (<ORGANIZATION>) - 555316523483Reltio (<ORGANIZATION>) - 555316523483AWS (<ORGANIZATION>) - <URL>rflow - (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/svc_atp_aps1_mdmetl_nprod_rw_s32. Snowflake (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/svc_atp_aps1_mdmetl_nprod_rw_s33. Reltio (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> Instance Role ARN: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/atp-mdmhub-nprod-apac-eks-worker-NodeInstanceRole-1053BVM6D7I2LReltio Export IAM Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - globalmdmnprodaspasp202202171347Snowflake - globalmdmnprodaspasp202202171347Reltio - globalmdmnprodaspasp202202171347VPCvpc-0d4b6d3f77ac3a877Subnetssubnet-018f9a3c441b24c2b (●●●●●●●●●●●●●●●)subnet-06e1183e436d67f29 (●●●●●●●●●●●●●●●)SC3028977APAC PRODAirflow (<ORGANIZATION>) -Snowflake (<ORGANIZATION>) - Reltio - 555316523483AWS (<ORGANIZATION>) - 330470878083S3 backup bucket <URL>rflow - (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/svc_atp_aps1_mdmetl_prod_rw_s32. Snowflake (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/svc_atp_aps1_mdmetl_prod_rw_s33. Reltio (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> Instance Role ARN: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/atp-mdmhub-prod-apac-eks-worker-n-NodeInstanceRole-1NMGPUSYG7H8QReltio Export IAM Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - globalmdmprodaspasp202202171415Snowflake - globalmdmprodaspasp202202171415Reltio - globalmdmprodaspasp202202171415Backups - pfe-atp-ap-se1-prod-mdmhub-backuaspasp202207141502VPCvpc-0d4b6d3f77ac3a877Subnetssubnet-018f9a3c441b24c2b (●●●●●●●●●●●●●●●)subnet-06e1183e436d67f29 (●●●●●●●●●●●●●●●)<PERSON> in IoDCOMPANYAirflow (<ORGANIZATION>) - 555316523483Snowflake (<ORGANIZATION>) - 555316523483Reltio (<ORGANIZATION>) - 555316523483AWS (<ORGANIZATION>) - 330470878083Airflow (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION>: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - gblmdmhubnprodamrasp100762Snowflake - gblmdmhubnprodamrasp100762Reltio - gblmdmhubnprodamrasp100762Same as <ORGANIZATION> NPRODSC3028977GBLUS PRODAirflow (<ORGANIZATION>) - 604526422050Snowflake - 604526422050Reltio (<ORGANIZATION>) - <ORGANIZATION> (<ORGANIZATION>) - 330470878083S3 backup bucket - 604526422050Airflow (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION>: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - gblmdmhubprodamrasp101478Snowflake - gblmdmhubprodamrasp101478Reltio - gblmdmhubprodamrasp101478Backups - pfe-atp-us-<US_DRIVER_LICENSE>-prod-mdmhub-backupamrasp202207120808Same as <ORGANIZATION> PRODSC3211836GBL <ORGANIZATION> in <DATE_TIME> (<ORGANIZATION>) -Snowflake (<ORGANIZATION>) - 211782433747Reltio (<ORGANIZATION>) - <ORGANIZATION> (<ORGANIZATION>) - <URL>rflow (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_atp_euw1_mdmhub_nprod_rw_s32. Snowflake (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_atp_euw1_mdmhub_nprod_rw_s33. Reltio (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_atp_euw1_mdmhub_mdm_exports_prod_rw_s3Reltio Export IAM Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhubSnowflake - pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhubReltio - pfe-atp-eu-<US_DRIVER_LICENSE>-nprod-mdmhubSame as <ORGANIZATION> (<ORGANIZATION>) -Snowflake (<ORGANIZATION>) - 211782433747Reltio (<ORGANIZATION>) - <ORGANIZATION> (<ORGANIZATION>) - 330470878083S3 backup bucket - <URL>rflow (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_mdm_project_rw_s32. Snowflake (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_mdm_project_rw_s33. Reltio (<ORGANIZATION>) - arn:aws:<PERSON>:user/svc_mdm_project_rw_s3 ???Reltio Export IAM Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-CB-PROD-GLOBALMDMHUB-RW-SSOAirflow - pfe-baiaes-eu-<US_DRIVER_LICENSE>-projectSnowflake - pfe-baiaes-eu-<US_DRIVER_LICENSE>-projectReltio - pfe-baiaes-eu-<US_DRIVER_LICENSE>-projectBackups - pfe-atp-eu-<US_DRIVER_LICENSE>-prod-mdmhub-backupemaasp202207120811Same as <ORGANIZATION> PRODSC3211836FLEX NPRODCloudBroker - EC2IQVIAAirflow (<ORGANIZATION>) -Reltio (<ORGANIZATION>) - Airflow - mdmnprodamrasp22124Reltio - mdmnprodamrasp22124FLEX PRODAirflow (<ORGANIZATION>) - Reltio (<ORGANIZATION>) - Airflow - mdmprodamrasp42095Reltio - mdmprodamrasp42095ProxyRapid - EC2N/AAWS EC2 - 432817204314MonitoringCloudBroker - EC2N/AAWS EC2 - 604526422050AWS <ORGANIZATION> - 604526422050Thanos (<ORGANIZATION>) - arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:user/<ORGANIZATION> Role: arn:aws:iam<IP_ADDRESS><US_BANK_NUMBER>:role/<ORGANIZATION>-ATP-MDMHUB-MONITORING-BACKUP-ROLE-01Grafana Backup - <ORGANIZATION>-prod-mdmhub-grafanaamrasp20240315101601Thanos - pfe-atp-us-<US_DRIVER_LICENSE>-prod-mdmhub-monitoringamrasp20240208135314Jenkins buildFLEX <ORGANIZATION>:<PERSON> vpc-12aa056a"
|
||
},
|
||
{
|
||
"title": "Configuration",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Configuration",
|
||
"content": "\nAll runtime configuration is stored in <ORGANIZATION> repository and changes are monitored using GIT history. Sensitive data is encrypted by Ansible Vault using AES256 algorithm and decrypted only during automatic deployment managed by <ORGANIZATION> process in <PERSON>. "
|
||
},
|
||
{
|
||
"title": "●●●●●●●●●●●●● [<URL>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "\nConfiguration for all environments is placed in mdm-reltio-handler-env/inventory branch.\nAvailable environments:\n\n\tdev/qa/stage/uat/test\n\t\n\t\t●●●●●●●●●●●●●\n\t\t●●●●●●●●●●●●●\n\t\n\t\n\tprod\n\t\n\t\t●●●●●●●●●●●●●\n\t\t●●●●●●●●●●●●●\n\t\t●●●●●●●●●●●●●\n\t\n\t\n\n\n\nIn order to separate variables for each service, we created the following groups:\n\n\t[gw-services]\n\t[hub-services]\n\t[kong]\n\t[mongo]\n\t[kafka]\n\n"
|
||
},
|
||
{
|
||
"title": "<PERSON>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Kafka",
|
||
"content": "\nKafka deployment <PERSON> – this procedure is created to deploy <PERSON>/zookeeper on environments other than PROD.\n\tinstall_hub_broker_cluster.yml – this procedure is created to deploy <PERSON>/zookeeper on PROD environment.\n\n\n\nKafka variables\nProduction <PERSON> cluster requires the following variables:\n\n\tGlobally:\n\t\n\t\thub_broker_truststore_file/password – kafka server truststore file name and password\n\t\thub_broker_keystore_file/password – kafka keystore file name and password\n\t\thub_broker_admin_user/password – <PERSON> admin user name and password\n\t\thub_broker_jaas_config_file – <PERSON> file with Server auth(kafka) and Client auth(zookeeper)\n\t\tkafka_environment_KAFKA_ZOOKEEPER_CONNECT – list of zookeeper services required by kafka to enable cluster connection.\n\t\tzoo_users – zookeeper is deployed with server auth, this map contains admin user and password.\n\t\tzoo_servers - list of zookeeper servers, each host has to have unique id [1/2/3]\n\t\tkafka_extra_hosts – list of <PERSON> hosts, these lines will be added to /etc/hosts file on each kafka docker container\n\t\n\t\n\tVariables per host – unique <PERSON> – zookeeper server id\n\t\tkafka_environment_KAFKA_BROKER_ID – <PERSON> broker id\n\t\tkafka_environment_KAFKA_ADVERTISED_PORT – <PERSON> advertised port\n\t\tkafka_environment_KAFKA_ADVERTISED_HOST_NAME – <PERSON> host name\n\t\tfirewalld_ports – kafka ports to open in firewalld service.\n\t\n\t\n\tDevelopment <PERSON> instance requires the following variables:\n\t\n\t\thub_broker_truststore_file/password – kafka server truststore file name and password\n\t\thub_broker_keystore_file/password – kafka keystore file name and password\n\t\thub_broker_admin_user/password – <PERSON> admin user name and password\n\t\thub_broker_jaas_config_file – <PERSON> file with Server auth(kafka) and Client auth(zookeeper)\n\t\n\t\n\tAdditionally:\n\t\n\t\ttopics.yml – definitions of <PERSON> – definitions of <PERSON> users\n\t\n\t\n\n"
|
||
},
|
||
{
|
||
"title": "<LOCATION>",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "\nKong deployment procedures\n\n\tinstall_mdmgw_gateway.yml – this procedure is created to deploy <LOCATION>/<PERSON> on all available environments.\n\tupdate_kong_api.yml – this procedure is created to manage kong api. Available <LOCATION> components which can be managed are:\n\t\n\t\tconsumers\n\t\tapis\n\t\tcertificates\n\t\n\t\n\n\n\nKong variables\nCassandra memory parameters are controlled by:\n\n\tkong_database_max_heap_size: "512M" – overwrites Xms and <LOCATION> parameters.\n\tkong_database_heap_newsize: "400M" – overwrites <PERSON> required variables:\n\n\tinstall_base_dir – <LOCATION> docker-compose.yml file deployment directory\n\tkong_cluster_main_host – this parameter defines if <LOCATION> and <PERSON> will be deployed in cluster mode. This parameter is declared on PROD environment and contains main CASSANDRA_BROADCAST_ADDRESS. On DEV environment this parameter is not defined.\n\n\n\nTo manage <LOCATION> api through deployment procedure these maps are needed:\n\n\tkong_apis – defines <LOCATION> apis. It is a list of <LOCATION> apis with required parameters:\n\t\n\t\tkong_api_obj_name – <LOCATION> api name (e.g. "gw-api")\n\t\tkong_api_obj_upstream_url – api upstream url (e.g. http://mdmgw_mdm-manager_1:8081)\n\t\tkong_api_obj_uris – <ORGANIZATION> (eg. /gw-api)\n\t\tkong_api_obj_methods – api methods (e.g. GET/POST/PATH)\n\t\tkong_api_obj_plugins (required plugin is key-auth)\n\t\n\t\n\tkong_consumers – defines <LOCATION> consumers. It is a list of <LOCATION> consumers with required parameters:\n\t\n\t\tkong_consumer_obj_username – <LOCATION> user name\n\t\tkong_consumer_obj_auth_creds – <LOCATION> required credentials "key-auth"\n\t\t\n\t\t\tkey – dedicated key for <LOCATION> user\n\t\t\n\t\t\n\t\n\t\n\t[optional] kong_certificates - defines kong certificates to enable ssl communication. It is a list of <LOCATION> snis with key and cert files:\n\t\n\t\tkong_certificate_obj_snis – list of available snis\n\t\tkong_certificate_obj_cert – <LOCATION> certificate file\n\t\tkong_certificate_obj_key – <LOCATION> server key file\n\t\n\t\n\n"
|
||
},
|
||
{
|
||
"title": "Mongo",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Mongo",
|
||
"content": "\nMongo deployment procedures\n\n\tinstall_hub_db.yml – this procedure is created to deploy mongo on environments other than PROD.\n\tinstall_hub_mongo_cluster.yml – this procedure is created to deploy mongo cluster on PROD environment\n\n\n\nMongo variables\nProduction mongo cluster requires the following variables declared in /inventory/prod/group_vars/ all/all.yml file:\n\n\tmdm_mongo_base_dir – mongo base directory where shards/configs/routers will be deployed.\n\tmongo_first_run [True/False] - switch this variable to True when there is the first deployment of mongo cluster.\n\trecreate_services [True/False] - if True all docker-compose files will be started with "up -d" parameter, which means all mongo services will be recreated. Run with True when there is a need to add new shard instance.\n\tregenerate_firewalld_config [True/False] - if True, all ports defined in "mongo_cluster" map will be added to firewall <PERSON> – describes whole mongo cluster. On production environment there are 3 mongo <NRP> - each instance can define mongo shards/configs/routers with required variables: [id, instance_name, port, host]\n\t\tmongo_server_02\n\t\tmongo_server_03\n\t\n\t\n\n\n\nDevelopment mongo instance requires the following variables declared in /inventory/dev/group_vars/all/all.yml file:\n\n\thub_db_install_dir – mongo base directory\n\thub_db_name – mongo db <ORGANIZATION> db name\n\thub_db_user – mongo db <ORGANIZATION> user <LOCATION>"
|
||
},
|
||
{
|
||
"title": "Services - hub_gateway",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Services+-+hub_gateway",
|
||
"content": "\nServices deployment procedures\nHub deployment procedure: \n\n\tinstall_mdmhub_services.yml\n\n\n\n \nGateway deployment procedure:\n\n\tinstall_mdmgw_services.yml\n\n\n\nServices variables\n[gw-services] - this group contains variables for map channel and <ORGANIZATION> manager in the following two maps:\n\n\tmap_channel\n\tmdm_manager\n\n\n\n[hub-services] - this group contains variables for hub api, reltio subscriber and event publisher in the following maps:\n\n\tevent_publisher\n\thub_api\n\treltio_subscriber\n\n\n\nIt is possible to redefine JVM_OPTS or any other environment using these maps:\n\n\tmdm_manager_environments\n\t\n\t\te.g. "JVM_OPTS=-server -Xms128m -Xmx512m <URL>nfi g=/opt/<PERSON>/config/kafka_<URL>nf"\n\t\n\t\n\tmap_channel_environments\n\tconsole_environments\n\n"
|
||
},
|
||
{
|
||
"title": "Data storage",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Data+storage",
|
||
"content": "\nPublishing Hub among other functions serves as data store, caching the latest state of each Entity fetched from <PERSON>. This allows clients to take advantage of increased performance and high availability provided by MongoDB <LOCATION> database. "
|
||
},
|
||
{
|
||
"title": "Data structures",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Data+structures",
|
||
"content": "\n Figure 21. Structure of Publishing HUB's databasesThe following diagram shows the structure of DB collections used by Publishing Hub.\n\nDetailed description:\n\n\tentityHistory – collection storing <ORGANIZATION> (<ORGANIZATION>, <ORGANIZATION>), along with some metadata for easier lookup/processing.\n\t\n\t\t_id – unique id of an Entity. Publishing Hub is reusing attribute "uri" from <ORGANIZATION> model (e.g. "entities/ipa1iKq")\n\t\tcountry – two-letter country code, in lowercase (e.g. "de")\n\t\tcreationDate – timestamp of record creation (i.e. insertion to Mongo)\n\t\tentity – the Reltio Entity\n\t\tentityType – type of the entity (e.g. "configuration/entityTypes/HCO")\n\t\tlastModificationDate – timestamp of last update of the record.\n\t\tmergedEntitiesUris – identifiers of child (merged) entities (for entities that "won" merge event in Reltio)\n\t\tparentEntityId – identifier of the parent entity (for entities in "<LOCATION>" status)\n\t\tsources – array of source system codes (e.g. "OK", "<LOCATION>", "FACE")\n\t\tstatus – current status of the entity (one of: ACTIVE, DELETED, <ORGANIZATION> – name of the source MDM system, currently one of "RELTIO", "NUCLEUS"\n\t\n\t\n\tLookupValues – collection storing dictionary data from Reltio.\n\t\n\t\t_id – unique id of the record. This is generated as concatenation of "type" and "code" attributes from Reltio\n\t\tupdatedOn – timestamp of last update of the record in Mongo\n\t\tvalueUpdatedOn – timestamp of last update of LOV in Reltio (values in <PERSON> are updated every 24h, whether or not they are actually changed in <ORGANIZATION>, so this value represents the timestamp of actual data change, not timestamp of refresh action)\n\t\ttype – <ORGANIZATION> type, as defined by <ORGANIZATION>, e.g. "configuration/lookupTypes/ IMS_LKUP_SPECIALTY"\n\t\tcode – <ORGANIZATION> code, as defined by <ORGANIZATION>, e.g. SPEC\n\t\tcountries – list of countries this <ORGANIZATION> is valid for\n\t\tmdmSource – name of the source MDM system, currently one of "RELTIO", "NUCLEUS"\n\t\tvalue – <ORGANIZATION> (full JSON, in Reltio-defined format – even for <NRP> data)\n\t\n\t\n\n\n\nINSERT vs UPSERT\nTo speed up database operations <ORGANIZATION> takes advantage of MongoDB "upsert" flag of <URL>llection.update() method. This allows the application to skip the potentially costly query checking if the entity already exists in database. Instead the update operation is call right away, ceding the responsibility of checking for entity existence on <PERSON> internal mechanisms."
|
||
},
|
||
{
|
||
"title": "Indexes",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Indexes",
|
||
"content": "\nAll of the fields in database collections are indexed, except complex documents (i.e. "entity" in entityHistory, "value" in <LOCATION>). Queries that do not use indexes (for example querying arbitrarily nested attributes of "entity") might suffer from bad performance. "
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/DoR%2C+AC%2C+DoD",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "DoD - template",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/DoD+-+template",
|
||
"content": "Requirements of task needed to be met before closing:Ticket deployed to dev and qa environmentChange is documentedAC are met."
|
||
},
|
||
{
|
||
"title": "DoR - template",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/DoR+-+template",
|
||
"content": "Requirements of task needed to be met before pushing to the <ORGANIZATION>:Fields in <LOCATION> ticket are filledFix versionEpic <ORGANIZATION> value is known and included in a ticket descriptionIf there is a deadline, it is understood and included in a ticket descriptionAcceptance Criteria are includedA ticket is estimated in Story Points."
|
||
},
|
||
{
|
||
"title": "Exponential Back Off",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Exponential+Back+Off",
|
||
"content": "<ORGANIZATION> mechanizm that increases the back off period for each retry attempt. When the interval has reached the <PERSON> interval, it is no longer increased. Stops retrying once the <PERSON> elapsed time has been reached.Example: The default interval is 2000L ms, the default multiplier is 1.5, and the default <PERSON> interval is 30000L. For 10 attempts the sequence will be as follows:requestback off ms120002300034500467505101256151877227808300009300001030000Note that the default <PERSON> elapsed time is <URL>X_VALUE. Use setMaxElapsedTime(long) to limit the maximum length of time that an instance should accumulate before returning <URL>plementation based on <DATE_TIME>."
|
||
},
|
||
{
|
||
"title": "HUB UI",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "DRAFT:TODO: <PERSON> dashboards through iframe - <URL>"
|
||
},
|
||
{
|
||
"title": "Integration Tests",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Integration+Tests",
|
||
"content": "Integration tests are devided into different categories. These categories are used for different <URL><PERSON> IT configuration: <URL>"
|
||
},
|
||
{
|
||
"title": "Common Integration Test",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/Common+Integration+Test",
|
||
"content": "Test classTest caseFlowCommonGetEntityTeststestGetEntityByUriCreate HCPGet HCP by URI and validatetestSearchEntityCreate HCPGet entities using filter (get by country code, first name and last name)Validate if entity existstestGetEntityByCrosswalkCreate HCPGet entity by corsswalk and validate if existstestGetEntitiesByUrisCreate HCPGet entity by uris andvalidate if existstestGetEntityCountryCreate HCPGet entity by country and validate if existstestGetEntityCountryOvCreate HCPAdd new countrySend update requestGet <ORGANIZATION> and validateMake ignored = true and ov = false on all countriesSend update requestGet <ORGANIZATION> and validateCreateHCPTestcreateHCPTestCreate HCPGet entity and validateCreateRelationTestcreateRelationTestCreate <ORGANIZATION> between <ORGANIZATION> and <ORGANIZATION> and validateDeleteCrosswalkTestdeleteCrosswalkTestCreate HCODelete crosswalk and validate status responseUpdateHCOTestupdateHCPTestCreate HCOGet created <ORGANIZATION> nameValidate response statusGet <ORGANIZATION> and validate if it is updatedUpdateHCPUsingReltioContributorProviderupdateHCPUsingReltioContributorProviderTrueAndDataProviderFalseCreate HCPGet created <ORGANIZATION> and validateUpdate existing corosswalk and set contributorProvider to falseAdd new contributor provider crosswalkUpdate first nameSend update <ORGANIZATION> requestValidate if it is updatedPublishingEventTesttest1_hcpCreate HCPWait for HCP_CREATED eventUpdate <ORGANIZATION> first nameWait for HCP_CHANGED eventGet entity and validatetest2_hcpCreate HCPWait for HCP_CREATED eventUpdate <ORGANIZATION>'s last nameWait for <PERSON> crosswalkWait for HCP_REMOVED eventtest3_hcoCreate HCOWait for HCO_CREATED eventUpdate <ORGANIZATION>'s nameWait for HCO_CHANGED eventDelete crosswalkWait for HCO_REMOVED event"
|
||
},
|
||
{
|
||
"title": "Integration Test For Iqvia Model",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Integration+Test+For+Iqvia+Model",
|
||
"content": "Test classTest caseFlowCRUDHCOAsynctestSend <NRP> to <PERSON> topicWait for created event and validateUpdate <ORGANIZATION>'s name and send <NRP> to <PERSON> topicWait for updated event and validateRemove entitiesCRUDHCOAsyncComplextestCreate Source HCOSend <NRP> with Source HCO to <PERSON> for created event and validateCreate <ORGANIZATION> HCO - set Source HCO as <ORGANIZATION> HCOSend <NRP> with <ORGANIZATION> HCOWait for event and validateRemove entitiesCRUDHCPAsynctestSend <PERSON> to <PERSON> topicWait for created event and validateUpdate HCP's Last Name and send <NRP> to <PERSON> topicWait for updated event and validateRemove entitiesCRUDPostBulkAsynctestHCOSend EntitiesUpdateRequest with multiple <ORGANIZATION> entities to <PERSON> topicWait for entities-create event with specific correlactionId headerValidate message payload and check if all entities are createdRemove entitiestestHCPSend EntitiesUpdateRequest with multiple <ORGANIZATION> entities to <PERSON> topicWait for entities-create event with specific correlactionId headerValidate message payload and check if all entities are createdRemove entitiestestHCPRejectedSend EntitiesUpdateRequest with multiple incorrect <ORGANIZATION> entities to <PERSON> topicWait for event with specific correlactionId headerCheck if all entities have <ORGANIZATION> and status is failedCreateRelationAsynctestCreateCreate <ORGANIZATION> HCPSend <ORGANIZATION> with Relation Activity between <ORGANIZATION> and <ORGANIZATION> to <PERSON> topicWait for event with specific correlactionId header and validate statustestCreateRelationsCreate <ORGANIZATION> and validate responseCreate HCP_3 and validate responseCreate HCP_4 and validate responseCreate <ORGANIZATION> between HCP_1 → <ORGANIZATION>, <ORGANIZATION> → <ORGANIZATION>, HCP_3 → <ORGANIZATION>, HCP_4 → HCOSend <ORGANIZATION> event with all relations to <PERSON> topicWait for event with specific correlactionId header and validate statusRemove entitiestestCraeteWithAddressCopyCreate <ORGANIZATION> between <ORGANIZATION> and HCOSend <ORGANIZATION> event to <PERSON> topic with <ORGANIZATION> trueWait for event with specific correlactionId header and validate status is createdGet <ORGANIZATION> and <ORGANIZATION> updated <ORGANIZATION> - check if address exists and contains <PERSON> attributeRemove <ORGANIZATION> between <ORGANIZATION> and <ORGANIZATION> with PrimaryAffiliationIndicator = trueSend <ORGANIZATION> event to <PERSON> topicWait for event with specific correlactionId header and validate status is createdUpdate Relation - set delete date on nowSend <ORGANIZATION> event to <PERSON> topicWait for event with specific correlactionId header and validate status is deletedRemove entitiesHCOAsyncErrorsTestCasetestSend <NRP> to <PERSON> topic - create <ORGANIZATION> with incorrect valuesWait for event with specific correlactionId header and validate status is failedHCPAsyncErrorsTestCasetestSend HCPRequest to <PERSON> topic - create <ORGANIZATION> without permissionsWait for event with specific correlactionId header and validate status is <ORGANIZATION> and validate status createdCreate HCP with affiliatedHCO and validate status createdGet <ORGANIZATION> and check if Workplace relation existsGet existing <ORGANIZATION> - update <URL> attribute and validate if status is <ORGANIZATION> and validate if <ORGANIZATION> list size is 1Add Country attribute to RelationSend RelationRequest event to <PERSON> topic with updated RelationWait for event with specific correlactionId header and validate status is <ORGANIZATION> and check if <ORGANIZATION> and Country existAdd <ORGANIZATION> attribute to RelationSend RelationRequest event to <PERSON> topic with updated RelationWait for event with specific correlactionId header and validate status is <ORGANIZATION> and check if <ORGANIZATION>, Country and <ORGANIZATION> existRemove entitiesBundlingTesttestSend multiple <ORGANIZATION> to <PERSON> topic - create HCOsFor each request wait for event with status created and collect <ORGANIZATION>'s uriCheck if number of requests equals number of recived eventsSend multiple <NRP> to <PERSON> topic - create HCPsFor each request wait for event with status created and collect <ORGANIZATION>'s uriCheck if number of requests equals number of recived eventsSend multiple <ORGANIZATION> to <PERSON> topic - create RelationFor each request wait for event with status created and collect <ORGANIZATION>'s uriCheck if number of requests equals number of recived eventsSet delete date on now for every HCOSend multiple <ORGANIZATION> to <PERSON> topicFor each request wait for event with status deletedSet delete date on now for every HCPSend multiple <NRP> to <PERSON> topicFor each request wait for event with status deletedDCRResponseTestcreateAndAcceptDCRThenTryToAcceptAgainTestCreate <ORGANIZATION> HCOSet <ORGANIZATION> as <ORGANIZATION>'s <ORGANIZATION> with <ORGANIZATION> as <ORGANIZATION> if <ORGANIZATION> is createdAccept <ORGANIZATION> and check if response is <ORGANIZATION> again and check if response is BAD_REQUESTRemove entitiescreateAndPartialAcceptThenConfirmNoLoopCreate <ORGANIZATION> HCOSet <ORGANIZATION> as <ORGANIZATION>'s <ORGANIZATION> with <ORGANIZATION> as <ORGANIZATION> if <ORGANIZATION> is createdPartial accept <ORGANIZATION> and check if response is <ORGANIZATION> HCP entity and check if <ORGANIZATION> attribute is "partialValidated"Check if <ORGANIZATION> is not created - confirms that <ORGANIZATION> creation does not loopRemove entitiescreateAndRejectDCRThenTryToRejectAgainTestCreate <ORGANIZATION> HCOSet <ORGANIZATION> as <ORGANIZATION>'s <ORGANIZATION> with <ORGANIZATION> as <ORGANIZATION> if <ORGANIZATION> is createdReject <ORGANIZATION> and check if response is <ORGANIZATION> again <ORGANIZATION> and check if response is BAD_REQUESTRemove entitiesDeriveHCPAddressesTestCasederivedHCPAddressesTestCreate HCP and validate responseCreate <ORGANIZATION> with <ORGANIZATION> and validate responseCreate <ORGANIZATION> with 2 Addresses and validate responseCreate "Activity" Relation HCP → <ORGANIZATION> and validate responseCreate "Has Health Care Role" Relation HCP → <ORGANIZATION> and validate responseGet <ORGANIZATION> and check if contains <ORGANIZATION>'s <ORGANIZATION> and validate responseGet <ORGANIZATION> and check if contains updated <ORGANIZATION>'s <ORGANIZATION> and validate responseGet <ORGANIZATION> and check if contains <ORGANIZATION>'s Addresses (without removed)Remove "Has Health Care Role" Relation HCP → <ORGANIZATION> and validate responseGet <ORGANIZATION> and check if Addresses are removedRemove entitiesEVRDCRUpdateHCPLUDTestCasetestCreate <ORGANIZATION> as <ORGANIZATION>'s <ORGANIZATION> with <ORGANIZATION> as <ORGANIZATION> requests and check that <ORGANIZATION> was createdUpdate HCPValidationStatus = notvalidatedchange existing <LOCATION> crosswalk - set DataProvider = trueadd <ORGANIZATION> crosswalk - EVR set ContributorProvider = trueadd another EVR crosswalk set <ORGANIZATION> = trueSend update request and vadiate responseUpdate <ORGANIZATION> (partial update)ValidationStatus = validatedRemove First and Last NameRemove crosswalksSend update request and validate responseGet <ORGANIZATION> and validateCheck if the <ORGANIZATION> (updateDate/singleAttributeUpdateDate) were refreshedRemove crosswalksExistingDepartmentAndHCPTestCasecreateHCP_HCPNotInPendingStatus_NoDCRCreate <ORGANIZATION> with <ORGANIZATION> as MainHCOCreate HCP with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = validatedGet HCP and validate attributesGet Change requests and check if the list is emptyRemove <ORGANIZATION> as MainHCOCreate HCP with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = pendingGet HCP and validate attributesGet Change requests and check if there is one NEW_HCP change requestRemove <ORGANIZATION> with <ORGANIZATION> as MainHCOCreate Department2 <ORGANIZATION> with <ORGANIZATION> as MainHCOCreate HCP with affiliated <ORGANIZATION> (Department1 <ORGANIZATION>) and <ORGANIZATION> = pendingGet HCP and validate attributeshas only one <PERSON> (Department1 HCO)Update <ORGANIZATION> with affiliated <ORGANIZATION> (Department2 <ORGANIZATION>) and <ORGANIZATION> = pendingGet HCP and validate attributeshas only one <PERSON> (Department2 HCO)Get Change requests and check if there is one NEW_HCP change requestRemove crosswalksNewHCODCRTestCasescreateHCP_DepartmentDoesNotExist_HCOL1DCRCreate <ORGANIZATION> with <ORGANIZATION> as MainHCOCreate HCP with affiliated <ORGANIZATION> (Department HCO)Get HCP and validate attributesValidate <ORGANIZATION> and MainWorkplaceGet Change requests and check if the list is emptyRemove crosswalkscreateHCP_HospitalAndDepartmentDoesNotExist_HCOL1DCRCreate <ORGANIZATION> (not created yet) as MainHCOCreate HCP with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = pendingGet HCP and validate attributesGet <ORGANIZATION> and validate attributesGet Change requests and check if there is one NEW_HCO_L2 change requestRemove crosswalksNewHCPDCRTestCasecreateHCPTestCreate <ORGANIZATION> with affiliated <ORGANIZATION> (Department HCO)Get HCP and validate Workplace and MainWorkplaceRemove crosswalkscreateHCPPendingTestCreate <ORGANIZATION> with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = pendingValidate <ORGANIZATION> responseValidate if <ORGANIZATION> is createdRemove crosswalkscreateHCPNotValidatedTestCreate <ORGANIZATION> with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = notvalidatedValidate HCP responseValidate if <ORGANIZATION> is createdRemove crosswalkscreateHCPNotValidatedMergedIntoNotValidatedTestCreate HCP_1 with <ORGANIZATION> = notvalidated (<ORGANIZATION> winner HCP)Create <ORGANIZATION> with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = notvalidatedValidate HCP responseValidate if <ORGANIZATION> is not createdRemove crosswalkscreateHCPPendingMergedIntoNotValidatedTestCreate HCP_1 with <ORGANIZATION> = notvalidated (<ORGANIZATION> winner HCP)Create <ORGANIZATION> with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = pendingValidate <ORGANIZATION> responseValidate if <ORGANIZATION> is createdRemove crosswalkscreateHCPPendingMergedIntoNotValidatedWithAnotherGRVNotValidatedTestCreate HCP_1 with <ORGANIZATION> = notvalidated (<ORGANIZATION> winner HCP)Create <ORGANIZATION> HCP_2 with <ORGANIZATION> = notvalidated (Merge loser HCP)Create <ORGANIZATION> HCP_3 with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = pendingValidate if <ORGANIZATION> is createdRemove crosswalkscreateHCPNotValidatedMergedIntoNotValidatedWithAnotherGRVNotValidatedTestCreate HCP_1 with <ORGANIZATION> = notvalidated (<ORGANIZATION> winner HCP)Create <ORGANIZATION> HCP_2 with <ORGANIZATION> = notvalidated (Merge loser HCP)Create <ORGANIZATION> HCP_3 with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = notvalidatedValidate if <ORGANIZATION> is not createdRemove crosswalkscreateHCPPendingMergedIntoNotValidatedWithGRVAsUpdateTestCreate HCP_1 with <ORGANIZATION> = notvalidated (<ORGANIZATION> winner HCP)Create <ORGANIZATION> HCP_2 with <ORGANIZATION> = notvalidated (Merge loser HCP)Create <ORGANIZATION> HCP_3 with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = notvalidatedGet <ORGANIZATION> and validate corsswalk <LOCATION> count == 3Validate if <ORGANIZATION> is not createdUpdate HCP_3 set code = pendingValidate if <ORGANIZATION> is createdRemove crosswalksPfDataChangeRequestLiveCycleTesttestCreate <ORGANIZATION> with parent <ORGANIZATION> HCP with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = pendingCheck if <ORGANIZATION> existCheck if PfDataChangeRequest existAccpet <LOCATION> that <ORGANIZATION> == validatedCheck that PfDataChangeRequest is closedRemove crosswalksResponseInfoTestTestCreate <ORGANIZATION> with parent <ORGANIZATION> HCP_1 with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = pendingCreate HCP_2 with affiliated <ORGANIZATION> (<ORGANIZATION>) and <ORGANIZATION> = pendingCheck that DCR_1 existCheck that DCR_2 existCheck that PfDataChangeRequest existRespond for DCR_1 - update <ORGANIZATION> with merged urischange <ORGANIZATION> = validatedGet <ORGANIZATION> and check if <ORGANIZATION> is validatedCheck if PfDataChangeRequest is closed and validate ResponseInfoRespond for DCR_2 - accept and validate messageCheck if PfDataChangeRequest is closed and validate ResponseInfoCheck that DCR_2 does not existRemove crosswalksRevalidateNewHCPDCRTestCasetestCreate <ORGANIZATION> and validate responseCreate <ORGANIZATION> with <ORGANIZATION> and validate responseCreate <ORGANIZATION> with affiliated <ORGANIZATION> (<ORGANIZATION>), <ORGANIZATION> = pending and validate responseCheck that <ORGANIZATION> existCheck that PfDataChangeRequest existRespond to <ORGANIZATION> - acceptCheck that <ORGANIZATION> has <ORGANIZATION> = validatedSend revalidate event to <PERSON> topicCheck that new <ORGANIZATION> was createdChecking that previous PfDataChangeRequest has <ORGANIZATION>=acceptCheck that new PfDataChangeRequest existCheck that <ORGANIZATION> has <ORGANIZATION> = pendingRemove crosswalksStandarNonExistingDepartmentTestCasecreateNewHCPTestCreate <ORGANIZATION> HCP with a new affiliated <ORGANIZATION> (<ORGANIZATION> as <ORGANIZATION> HCP and validate attributes (<ORGANIZATION> and MainWorkplace)UpdateHCPPhonestestCreate HCP and validate responseUpdate Phone and send patchHCP requestValidate response status is <ORGANIZATION> crosswalksGetEntityTeststestGetEntityByUriCreate HCP with <ORGANIZATION> = validated and affiliatedHcos (HCO_1, <NRP> by uri and validate attributesRemove crosswalkstestSearchEntityCreate HCP with <ORGANIZATION> = validated and affiliatedHcos (HCO_1, <NRP> entites using filter - HCP by country, first name and last nameValidate if entity existsRemove crosswalkstestSearchEntityWithoutCountryFilterCreate HCP with <ORGANIZATION> = validated and affiliatedHcos (HCO_1, <LOCATION> by corsswalk HCO_1 and check if existsGet by corsswalk HCO_2 and check if existsGet entites using <ORGANIZATION> by country and (HCO_1 name or HCO_2 name)Validate if both <ORGANIZATION> existsRemove crosswalkstestGetEntityByCrosswalkCreate HCP with <ORGANIZATION> = validated and affiliatedHcos (HCO_1, <NRP> by crosswalkValidate if HCP existsRemove crosswalkstestGetEntitiesByUrisCreate <ORGANIZATION> with <ORGANIZATION> = validated and affiliatedHcos (HCO_1, <NRP> by <ORGANIZATION> if <ORGANIZATION> existsRemove crosswalkstestGetEntityCountryCreate HCP with <ORGANIZATION> = validated and affiliatedHcos (HCO_1, <NRP> countryValidate reponseRemove crosswalkstestGetEntityCountryOvCreate HCP with <ORGANIZATION> = validated, affiliatedHcos (HCO_1, HCO_2) and Country = <ORGANIZATION> existing crosswalk - set ContributorProvider = trueadd new crosswalk as <ORGANIZATION> ignored = trueupdate Country - set to <ORGANIZATION> and validatecheck value == BR-Brazilcheck ov == trueUpdate HCP - make ignored=true, ov=false on all countriesGet <ORGANIZATION> and validatelookupCode == BRRemove crosswalksMergeUnmergeHCPTestcreateHCP1andHCP2_checkMerge_checkUnmerge_APICreate HCP_1 and validate responseCreate HCP_2 and validate responseMerge HCP_1 with HCP_2Get HCP_1 after merge and validate attributesGet <ORGANIZATION> after merge and validate attributesUnmerge HCP_1 and HCP_2Get HCP_1 after unmerge and validate attributesGet HCP_2 after unmerge and validate attributesUnmerge HCP_1 and <ORGANIZATION> - validate if response code is BAD_REQUESTMerge HCP_1 and <ORGANIZATION> - validate if response code is NOT_FOUNDRemove crosswalksHCPMatcherTestCasetestPositiveMatchCreate 2 the same <NRP> objectsCheck that objects matchtestNegativeMatchCreate 2 different <ORGANIZATION> objectsCheck that objects do not <NRP> entities with filter: country = BR and entityType = HCPValidate responseAll entites are <ORGANIZATION> least one entity has <LOCATION> entities with filter: country = BR and entityType = <ORGANIZATION> responseAll entites are HCOGetEntityUSTestcreateHCPTestCreate <ORGANIZATION> and validate responseGet <ORGANIZATION> and check if existsRemove crosswalks"
|
||
},
|
||
{
|
||
"title": "Integration Test For COMPANY Model",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Integration+Test+For+COMPANY+Model",
|
||
"content": "Test classTest caseFlowAttributeSetterTestTestAttributeSetterCreate HCP with <PERSON> attributeGet entity and validate if has autofilled attributesUpdate TypeCode field: send "None" as attribute valueUpdate <ORGANIZATION> requestGet entity and validate autofileld attributes by <ORGANIZATION> rulesUpdate TypeCode fieldUpdate <ORGANIZATION> requestGet entity and validate autofileld attributes by <ORGANIZATION> rulesUpdate TypeCode fieldUpdate <ORGANIZATION> requestGet entity and validate autofilled <ORGANIZATION> crosswalk delete dateUpdate and validate if delete date has been <ORGANIZATION> batch instanceCreate batch stageValidate response code: 403 and message: Cannot access the processor which has been protectedGet batch instance with incorrect nameValidate response code: 403 and message: Batch 'testBatchNotAdded' is not allowed. Update batch stage with existing stage nameUpdate batch stage with limited userValidate response code: 403 and message: Stage '' is not allowed.Update batch stage with not authorized stage nameValidate response code: 403 and message: Stage '' passed in Body is not <URL>eateBatchInstanceCreate batch instance and validateComplete stage 1 and start stage 2Validate stagesComplete stage 2Start stage 3Validate all 3 stagesComplete stage 3 and finish batchGet batch instance and validateTestBatchBundlingErrorQueueTesttestBatchWorkflowTestCreate batch <NRP> errors and check if there is no errorsCreate batch stage: HCO_LOADINGCreate batch stage: HCP_LOADINGCreate batch stage: RELATION_LOADINGSend entites to HCO_LOADING stageFinish HCO_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedSend entites to HCP_LOADING stageFinish HCP_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedSend relations to <PERSON> stageFinish <PERSON> sender job status - validate if all relations were sent to ReltioCheck processing job status - validate if all relatons were processedGet batch instance and validate completion statusValidate expected errorsResubmit errorsValidate expected errorsValidate if all errors were resubmitedTestBatchBundlingTesttestBatchWorkflowTestCreate batch instanceCreate batch stage: HCO_LOADINGCreate batch stage: HCP_LOADINGCreate batch stage: RELATION_LOADINGSend entites to HCO_LOADING stageFinish HCO_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedSend entites to HCP_LOADING stageFinish HCP_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedSend relations to <PERSON> stageFinish <PERSON> sender job status - validate if all relations were sent to ReltioCheck processing job status - validate if all relatons were processedGet batch instance and validate completion statusGet Relations by crosswalk and validateTestBatchHCOBulkTesttestBatchWorkflowTestCreate batch instanceCreate batch stage: HCO_LOADINGSend entites to HCO_LOADING stageFinish HCO_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validateTestBatchHCOTesttestBatchWorkflowTestCreate batch instanceCreate batch stage: HCO_LOADINGSend entites to HCO_LOADING stageFinish HCO_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validate created statustestBatchWorkflowTest_CheckFAILonLoadJobCreate batch instanceCreate batch stage: HCO_LOADINGSend entites to HCO_LOADING stageUpdate batch stage status: FAILEDGet batch instance and validatetestBatchWorkflowTest_SendEntities_Update_and_MD5SkipCreate batch instanceCreate batch stage: HCO_LOADINGSend entites to HCO_LOADING stageFinish HCO_LOADING <ORGANIZATION> batch instance and validate completion statusGet entities by crosswalk and validate create statusCreate batch instanceCreate batch stage: HCO_LOADINGSend entites to HCO_LOADING stage (skip 2 entities - MD5 check sum changed)Finish HCO_LOADING <ORGANIZATION> batch instance and validate completion statusGet entities by crosswalk and validate update statustestBatchWorkflowTest_SendEntities_Update_and_DeletesProcessingCreate batch instanceCreate batch stage: HCO_LOADINGSend entites to HCO_LOADING stageFinish HCO_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedCheck deleting job status - validate if all entities were sendCheck deleting processing job - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validate delete <PERSON> second runCreate batch instanceCreate batch stage: HCO_LOADINGSend entites to HCO_LOADING stage (skip 2 entities - delete in post processing)Finish HCO_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedCheck deleting job status - validate if all entities were sendCheck deleting processing job - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validate delete <PERSON> third runCreate batch instance for checking activationCreate batch stage: HCO_LOADINGSend entites to HCO_LOADING stageFinish HCO_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedCheck deleting job status - validate if all entities were sendCheck deleting processing job - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validate delete statusTestBatchHCPErrorQueueTesttestBatchWorkflowTestCreate batch instanceCreate batch stage: HCP_LOADINGGet errors and check if there is no errorsSend entites to HCP_LOADING stageFinish HCP_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedGet errors and validate if exists exceptedResubmit errorsGet errors and validate if all were <PERSON> batch instanceCreate batch stage: HCP_LOADINGSend entites to HCP_LOADING stage with update last nameFinish HCP_LOADING stageCheck sender job status - validate if all entities are created in mongoCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validateTestBatchHCPSoftDependentTesttestBatchWorkflowTestCreate batch instanceCreate batch stage: HCP_LOADINGCheck Sender job status - SOFT DEPENDENT Send entites to HCP_LOADING stageFinish HCP_LOADING stageCheck sender job status - validate if all entities are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validate created statusTestBatchHCPTesttestBatchWorkflowTestCreate batch instanceCreate batch stage: HCP_LOADINGSend entites to HCP_LOADING stageFinish HCP_LOADING stageCheck sender job status - validate if all entities are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validate created statusTestBatchMergeTesttestBatchWorkflowTestCreate 4 x HCP and validate respons statusGet entities and validate if are createdCreate batch instanceCreate batch stage: MERGE_ENTITIES_LOADINGSend merge entities objects (Reltio, Onekey)Finish MERGE_ENTITIES_LOADING stageCheck sender job status - validate if all tags are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities and validate update status (check if tags are visible in Reltio)Create batch instanceCreate batch stage: MERGE_ENTITIES_LOADINGSend unmerge entities objects (Reltio, Onekey)Finish MERGE_ENTITIES_LOADING stageCheck sender job status - validate if all tags are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusTestBatchPatchHCPPartialOverwriteTestCreate batch instanceCreate batch stage: HCP_LOADINGCreate HCP entity with crosswalk's delete date set on nowSend entites to HCP_LOADING stageFinish HCP_LOADING stageCheck sender job status - validate if all entities are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validate created statusCreate batch instanceCreate batch stage: HCP_LOADINGSend entites PATCH to HCP_LOADING stage with empty crosswalk's delete date and missing first and last nameFinish HCP_LOADING stageCheck sender job status - validate if all entities are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities by crosswalk and validate if are updateTestBatchRelationTesttestBatchWorkflowTestCreate batch instanceCreate batch stage: HCO_LOADINGCreate batch stage: HCP_LOADINGCreate batch stage: RELATION_LOADINGSend entites to HCO_LOADING stageFinish HCO_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedSend entites to HCP_LOADING stageFinish HCP_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedSend relations to <PERSON> stageFinish <PERSON> sender job status - validate if all relations were sent to ReltioCheck processing job status - validate if all relatons were processedGet batch instance and validate completion statusTestBatchTAGSTesttestBatchWorkflowTestCreate HCPGet <ORGANIZATION> and check if there is no tagsCreate batch instanceCreate batch stage: TAGS_LOADINGSend request: Append entity tags objectsFinish TAGS_LOADING stageCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusCreate batch instanceCreate batch stage: <ORGANIZATION> request: Delete entity tags objectsCheck sender job status - validate if all entities were sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate update statusGet entity and check if tags are removed from ReltioCOMPANYGlobalCustomerIdSearchOnLostMergeEntitiesTesttestCreate first HCP and validate response statusCreate second <ORGANIZATION> and validate response statusCreate third HCP and validate response statusMerge HCP2 with HCP3 and validate response statusMerge HCP2 with HCP1 and validate response statusGet entities: filter by COMPANYGlobalCustomerID and HCP1UriValidate if existsGet entities: filter by COMPANYGlobalCustomerID and HCP2UriValidate if existsGet entities: filter by COMPANYGlobalCustomerID and HCP3UriValidate if existsCOMPANYGlobalCustomerIdTesttestCreate HCP_1 with RX_AUDIT crosswalkWait for HCP_CREATED eventCreate HCP_2 with <LOCATION> crosswalkWait for HCP_CREATED eventMerge both <ORGANIZATION>'s with RX_AUDIT being winnerWait for HCP_MERGE, HCP_LOST_MARGE and HCP_CHANGED eventsGet entities by uri and validate. Check if merge succeeded and resulting profile has winner COMPANYId.Update HCP_1: set delete date on RX_AUDIT crosswalkCheck if entity's <ORGANIZATION> has not changed after softDeleting the crosswalkGet HCP_1 and validate COMPANYGlobalCustomerID after soft deleting crosswalkRemove HCP_1 by crosswalkRemove HCP_2 by crosswalktestWithDeleteDateCreate HCP_1 with crosswalk delete dateWait for HCP_CREATED eventCreate HCP_2Wait for HCP_CREATED eventMerge both HCP'sWait for HCP_MERGE, HCP_LOST_MARGE and HCP_CHANGED eventsCheck if merge succeeded and resulting profile has winner <URL>move HCP_1 by crosswalkRemove HCP_2 by crosswalkRelationEventChecksumTesttestCreate HCP and validate statusGet <ORGANIZATION> and validate if existsCreate <ORGANIZATION> and validate statusCreate <ORGANIZATION> between <ORGANIZATION> and <ORGANIZATION> - validate response statusWait for RELATIONSHIP_CREATED event and validateFind Relation by id and keep checksumUpdate <ORGANIZATION> title attribute and validate responseWait for RELATIONSHIP_CHANGED eventValidate if checksum has changedDelete <ORGANIZATION> crosswalk and validateDelete HCP crosswalk and validateDelete Relation crosswalk and validateCreateChangeRequestTestcreateChangeRequestTestCreate <PERSON> HCPGet <ORGANIZATION> and validateUpdate HCP's First Name with dcrId from Change RequestInit Change Request and validate response is not nullDelete Change RequestDelete HCP's crosswalkAttributesEnricherNoCachedTesttestCreateFailedRelationNoCacheCreate <ORGANIZATION> with missing attributes - validate response stats is failedSearch Relation in mogno and check if not existsAttributesEnricherTesttestCreateCreate HCP and validateCreate HCP and validateCreate <ORGANIZATION> and validateGet HCP and validate if <ORGANIZATION> attribute existsUpdate <ORGANIZATION>'s Last <ORGANIZATION> HCP and validate if <ORGANIZATION> attribute existsCheck last Last Name is updatedRemove HCP, <ORGANIZATION> and <ORGANIZATION> by crosswalkAttributesEnricherWithDeleteDateOnRelationTesttestCreateAndUpdateRelationWithDeleteDateCreate HCP and validateCreate HCP and validateCreate <ORGANIZATION> and validateGet HCP and validate if <ORGANIZATION> attribute existsUpdate <ORGANIZATION>'s Last <ORGANIZATION> HCP and validate if <ORGANIZATION> attribute existsCheck if Last Name is updatedSet Relation's crosswalk delete date on now and updateUpdate <ORGANIZATION>'s Last <ORGANIZATION> HCP and validate that <ORGANIZATION> attribute does not existCheck last Last Name is updatedSend update <ORGANIZATION> request and check status is deletedAttributesEnricherWithMultipleEndObjectstestCreateWithMultipleEndObjectsCreate HCO_1Create HCO_2Create <ORGANIZATION> between <ORGANIZATION> and HCO_1Create Relation between <ORGANIZATION> and HCO_2Get <ORGANIZATION> and validate if <ORGANIZATION> attribute existsUpdate <ORGANIZATION>'s Last <ORGANIZATION> HCP and validate that <ORGANIZATION> attribute existsRemove all entitiesUpdateEntityAttributeTestshouldUpdateIdentifierCreate <ORGANIZATION> and validateUpdate <ORGANIZATION>'s attribute: insert idetifier and validateUpdate <ORGANIZATION>'s attribute: update idetifier and validateUpdate <ORGANIZATION>'s attribute: merge idetifier and validateUpdate <ORGANIZATION>'s attribute: replace idetifier and validateUpdate <ORGANIZATION>'s attribute: delete idetifier and validateRemove all entities by crosswalkCreateEntityTestcreateAndUpdateEntityTestCreate <ORGANIZATION> entityGet entity and validateUpdate <ORGANIZATION> ID attributeValidate updated entityGet matches entities and validate that response is not nullRemove entityCreateHCPWithoutCOMPANYAddressIdcreateHCPTestCreate HCPGet <ORGANIZATION> and validate fieldsGet generatedId from <PERSON> cache collection keyIdRegistryValidate if created <ORGANIZATION>'s address has COMPANYAddressIDCheck if <ORGANIZATION> equals generatedIdRemove entityGetMatchesTestcreateHCPTestCreate HCP_1Create HCP_2 with similar attributes and valuesGet matches for HCP_1Check if matches size >= 0TranslateLookupsTesttranslateLookupTestSend get translate lookups request: Type=<ORGANIZATION>, canonicalCode=A,sourceName=<ORGANIZATION> resposne is not nullDelayRankActivationTesttestCreate HCO_ACREATE HCO_B1CREATE HCO_B2CREATE HCO_B3CREATE RELATION <US_DRIVER_LICENSE> → A (type: OtherHCOtoHCOAffiliations, rel type: <URL>G, source: ONEKEY)CREATE RELATION <US_DRIVER_LICENSE> → A (type: OtherHCOtoHCOAffiliations, rel type: <URL>G, source: ONEKEY)CREATE RELATION <US_DRIVER_LICENSE> → A (type: OtherHCOtoHCOAffiliations, rel type: <URL>G, source: ONEKEY)Check UPDATE ATTRIBUTE events:UPDATE RANK event exists with Rank = 3 for <URL>PDATE RANK event exists with Rank = 2 for <URL>heck PUBLISHED events:<US_DRIVER_LICENSE> - RELATIONSHIP_CREATED event exists with Rank = 1B1 - RELATIONSHIP_CHANGED event exists with Rank = 3B2 - RELATIONSHIP_CHANGED event exists with Rank = 2Check order of events:<US_DRIVER_LICENSE> - RELATIONSHIP_CHANGED and <US_DRIVER_LICENSE> - RELATIONSHIP_CHANGED are after UPDATE eventsCREATE HCO_B4CREATE RELATION <US_DRIVER_LICENSE> → A (type: OtherHCOtoHCOAffiliations, rel type: <URL>G, source: GRV)Check UPDATE ATTRIBUTE events:UPDATE RANK event exists with Rank = 4 for <URL>heck PUBLISHED events:<US_DRIVER_LICENSE> - RELATIONSHIP_CHANGED event exists with Rank = 4Check order of events:<US_DRIVER_LICENSE> - RELATIONSHIP_CHANGED is after UPDATE eventsCREATE HCO_B5CREATE RELATION <US_DRIVER_LICENSE> → A (type: OtherHCOtoHCOAffiliations, rel type: <ORGANIZATION>, source: ONEKEY)Check UPDATE ATTRIBUTE events:UPDATE RANK event exists with Rank = 4 for <URL>PDATE RANK event exists with Rank = 3 for <URL>PDATE RANK event exists with Rank = 2 for <URL>PDATE RANK event exists with Rank = 5 for <URL>heck PUBLISHED events:<US_DRIVER_LICENSE> - RELATIONSHIP_CHANGED event exists with Rank = 4B2 - RELATIONSHIP_CHANGED event exists with Rank = 3B3 - RELATIONSHIP_CHANGED event exists with Rank = 2B4 - RELATIONSHIP_CHANGED event exists with Rank = 5B5 - RELATIONSHIP_CREATED event exists with Rank = 1Check order of events:All published RELATIONSHIP_CHANGED are after UPDATE_RANK eventsSet deleteDate on <URL>heck UPDATE ATTRIBUTE events:UPDATE RANK event exists with Rank = 4 for <URL>heck PUBLISHED events:<US_DRIVER_LICENSE> - RELATIONSHIP_CHANGED event exists with Rank = 4Check order of events:Published RELATIONSHIP_CHANGED is after UPDATE_RANK eventGet <US_DRIVER_LICENSE>.A relation and check Rank = 3Get <US_DRIVER_LICENSE>.A relation and check Rank = 2Get <US_DRIVER_LICENSE>.A relation and check Rank = 4Get <US_DRIVER_LICENSE>.A relation and check Rank = 1Clear dataRawDataTestshouldRestoreHCPCreate HCP entityDelete HCP by crosswalkSearch entity by name - expected not foundRestore <ORGANIZATION> entitySearch entity by nameClear datashouldRestoreHCOCreate <ORGANIZATION> entityDelete <ORGANIZATION> by crosswalkSearch entity by name - expected not foundRestore <ORGANIZATION> entitySearch entity by nameClear datashouldRestoreRelationCreate HCP entityCreate <ORGANIZATION> entityCreate relation from <ORGANIZATION> to HCODelete relation by crosswalkGet relation by crosswalk - expected not foundRestore relationGet relation by crosswalkClear dataTestBatchUpdateAttributesTesttestBatchWorkFlowTestCreate 2 x HCP and validate respons statusGet entities and validate if they are createdTest Insert <ORGANIZATION> batch instanceCreate batch stage: UPDATE_ATTRIBUTES_LOADINGInitialize UPDATE_ATTRIBUTES_LOADING stageSend updateEntityAttributeRequest objects with different identifiersFinish UPDATE_ATTRIBUTES_LOADING stageCheck sender job status - validate if all updates are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities and validate update status (check if inserted identifiers are visible in Reltio)Test Update <ORGANIZATION> batch instanceCreate batch stage: UPDATE_ATTRIBUTES_LOADINGInitialize UPDATE_ATTRIBUTES_LOADING stageSend updateEntityAttributeRequest objects with different identifiersFinish UPDATE_ATTRIBUTES_LOADING stageCheck sender job status - validate if all updates are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities and validate update status (check if updated identifiers are visible in <NRP> Merge <ORGANIZATION> batch instanceCreate batch stage: UPDATE_ATTRIBUTES_LOADINGInitialize UPDATE_ATTRIBUTES_LOADING stageSend updateEntityAttributeRequest objects with different identifiersFinish UPDATE_ATTRIBUTES_LOADING stageCheck sender job status - validate if all updates are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities and validate update status (check if merged identifiers are visible in <NRP> Replace <ORGANIZATION> batch instanceCreate batch stage: UPDATE_ATTRIBUTES_LOADINGInitialize UPDATE_ATTRIBUTES_LOADING stageSend updateEntityAttributeRequest objects with different identifiersFinish UPDATE_ATTRIBUTES_LOADING stageCheck sender job status - validate if all updates are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities and validate update status (check if replaced identifiers are visible in Reltio)Test Delete <ORGANIZATION> batch instanceCreate batch stage: UPDATE_ATTRIBUTES_LOADINGInitialize UPDATE_ATTRIBUTES_LOADING stageSend updateEntityAttributeRequest objects with different identifiersFinish UPDATE_ATTRIBUTES_LOADING stageCheck sender job status - validate if all updates are sent to ReltioCheck processing job status - validate if all entities were processedGet batch instance and validate completion statusGet entities and validate update status (check if deleted identifiers are visible in Reltio)Remove all entities by crosswalk and all batch instances by id"
|
||
},
|
||
{
|
||
"title": "Integration Test For COMPANY Model China",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Integration+Test+For+COMPANY+Model+China",
|
||
"content": "Test classTest caseFlowChinaComplexEventCaseshouldCreateHCPAndConnectWithAffiliatedHCOByNameCreate <ORGANIZATION> (AffiliatedHCO) and validate responseGet entities with filter by <ORGANIZATION>'s Name and entityTypeValidate if existsCreate HCP (V2Complex method)with not existing MainHCOwith affiliatedHCO and existing <ORGANIZATION>'s <ORGANIZATION> and validateCheck if affiliatedHCO <PERSON> equals created <ORGANIZATION> (Workplace)Remove entitiesshouldCreateHCPAndMainHCOCreate HCO (AffiliatedHCO) and validate responseCreate HCP (V2Complex method)with AffiliatedHCO - set uri from previously created HCOwith MainHCO without uriGet <ORGANIZATION> and validateCheck if affiliatedHCO <PERSON> equals created <ORGANIZATION> (Workplace)Validate <PERSON> attributesRemove entitiesshouldCreateHCPAndAffiliatedHCOCreate <ORGANIZATION> (MainHCO) and validate responseCreate HCP (V2Complex method)with AffiliatedHCO without <PERSON> (not existing HCO)with MainHCO - set objectURI from previously created <ORGANIZATION> HCOGet HCP and validateCheck if MainHCO Uri equals created <ORGANIZATION> (MainWorkplace)Validate <ORGANIZATION> attributesRemove entitiesshouldCreateHCPAndConnectWithAffiliationsCreate <ORGANIZATION> (MainHCO) and validate responseCreate <ORGANIZATION> (AffiliatedHCO) and validate responseCreate HCP (V2Complex method)with AffiliatedHCO - set uri from previously created Affiliated HCOwith MainHCO - set objectURI from previously created <ORGANIZATION> HCOGet HCP and validateCheck if affiliatedHCO <PERSON> equals created <ORGANIZATION> (Workplace)Check if MainHCO Uri equals created <ORGANIZATION> (MainWorkplace)Validate <ORGANIZATION> and <ORGANIZATION> attributesRemove entitiesshouldCreateHCPAndAffiliationsCreate HCP (V2Complex method)without AffialitedHCO uriwithout MainHCO objectURIGet <ORGANIZATION> and validateCheck if <PERSON> is created and has correct attributesCheck if <ORGANIZATION> is created and has correct attributesValidate <ORGANIZATION> and <ORGANIZATION> attributesRemove entitiesChinaSimpleEventCaseshouldPublishCreateHCPInIqiviaModelCreate HCP in <LOCATION> (V2Simple method)Validate responseGet HCP entity and validate attributesWait for <PERSON> output eventValidate eventValidate attributes and check if event is in IqiviaModelRemove entitiesChinaMergeEntityTestCraete HCP_1 (V2Complex method) and validate responseCraete HCP_2 (V2Complex method) and validate responseMerge entities HCP_1 and HCP_2Get HCP by HCP_1 uri and check if existsWait for <PERSON> event on merge response topicValidate <PERSON> eventRemove <ORGANIZATION> HCP (V2Complex method)with 2 affiliatedHCO which do not existwith 1 MainHCO which does not existGet <ORGANIZATION> entity and check if existWait for <PERSON> event on response topicValidate <PERSON> eventValidate <ORGANIZATION> (1 exists)Validate Workplaces (2 exists)Validate MainHCO (1 exists)Assert MainWorkplace equals MainHCORemove entities"
|
||
},
|
||
{
|
||
"title": "Integration Test For COMPANY Model DCR2Service",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Integration+Test+For+COMPANY+Model+DCR2Service",
|
||
"content": "Test classTest caseFlowDCR2ServiceTestshouldCreateHCPTestCreate <ORGANIZATION> and validate responseCreate <ORGANIZATION> request (<DATE_TIME> Change requestGet <ORGANIZATION> status and validateValidate created entityRemove entitiesshouldUpdateHCPChangePrimarySpecialtyTestCreate <ORGANIZATION> request: update <ORGANIZATION> DCR responseApply Change requestGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldCreateHCOTestCreate <ORGANIZATION> Request (<ORGANIZATION>-create) and validate responseApply Change requestGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldUpdateHCPChangePrimaryAffiliationTestCreate HCO_1 and valdiate responseCreate HCO_2 and validate responseCreate <ORGANIZATION> with affiliations and validate reponseGet HCO_1 and save <NRP> and save COMPANYGlobalCustomerIdGet entities - search by <PERSON>'s COMPANYGlobalCustomerId and check if existsGet entities - search by <ORGANIZATION>'s COMPANYGlobalCustomerId and check if existsCreate <ORGANIZATION> Request and validate response: update <ORGANIZATION> primary affiliationApply Change requestGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldUpdateHCPIgnoreRelationCreate HCO_1 and valdiate responseCreate HCO_2 and validate responseCreate <ORGANIZATION> with affiliations and validate reponseGet HCO_1 and save <NRP> and save COMPANYGlobalCustomerIdGet entities - search by <PERSON>'s COMPANYGlobalCustomerId and check if existsGet entities - search by <ORGANIZATION>'s COMPANYGlobalCustomerId and check if existsCreate <ORGANIZATION> Request and validate response: ignore affiliationApply Change requestGet <ORGANIZATION> status and validateWait for RELATIONSHIP_CHANGED eventWait for RELATIONSHIP_INACIVATED eventGet HCP and validateGet <ORGANIZATION> and validateRemove all entitiesshouldUpdateHCPAddPrimaryAffiliationTestCreate <ORGANIZATION> and validate responseCreate <ORGANIZATION> and validate responseCreate <ORGANIZATION> Request: <ORGANIZATION> update added new primary affiliationValidate <ORGANIZATION> responseApply Change requestGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldUpdateHCOAddAffiliationTestCreate HCO_1 and validateCreate HCO_2 and validateCreate <ORGANIZATION> Request: update <ORGANIZATION> add other affiliation (OtherHCOtoHCOAffiliations)Validate <ORGANIZATION> responseApply Change requestGet <ORGANIZATION> status and validateGet <ORGANIZATION>'s connections (OtherHCOtoHCOAffiliations) and validateGet <ORGANIZATION> and validateRemove all entitiesshouldInactivateHCPCreate HCP and validate responseCreate <ORGANIZATION> Request: Inactivate HCPValidate DCR responseApply Change requestGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldUpdateHCPAddPrivateAddressCreate HCP and validate responseCreate <ORGANIZATION> Request: update <ORGANIZATION> - add private addressValidate <ORGANIZATION> responseApply Change requestGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldUpdateHCPAddAffiliationToNewHCOCreate <ORGANIZATION> and validate responseCreate <ORGANIZATION> and validate responseCreate <ORGANIZATION> Request: update <ORGANIZATION> - add affiliation to new <ORGANIZATION> responseApply Change requestGet <ORGANIZATION> status and validateGet HCP and validateGet <ORGANIZATION> entity by crosswalk and save uriGet <ORGANIZATION> and validateRemove all <PERSON> <ORGANIZATION> request with unknown entityUriValidate <ORGANIZATION> response and check if REQUEST_FAILEDshouldCreateHCPOneKeyCreate HCP and validate responseCreate <ORGANIZATION> Request: create <ORGANIZATION> responseGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldCreateHCPOneKeySpecialityMappingCreate HCP and validate responseCreate <ORGANIZATION> Request: create OneKey HCP with speciality valueValidate <ORGANIZATION> responseGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldCreateHCPOneKeyRedirectToReltioCreate HCP and validate responseCreate <ORGANIZATION> Request: create OneKey HCP with speciality value "not found key"Validate <ORGANIZATION> responseApply Change RequestGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldCreateHCOOneKeyCreate <ORGANIZATION> nad validate responseCreate <ORGANIZATION> Request: create <ORGANIZATION> responseGet <ORGANIZATION> status and validateGet <ORGANIZATION> and validateGet <ORGANIZATION> and validateRemove all entitiesshouldReturnMissingDataExceptionCreate <ORGANIZATION> Request with missing dataValidate <ORGANIZATION> response: status = REQUEST_REJECTED and response has correct messageshouldReturnForbiddenAccessExceptionCreate <ORGANIZATION> Request with forbidden access dataValidate <ORGANIZATION> response: status = REQUEST_FAILED and response has correct messageshouldReturnInternalServerErrorCreate <ORGANIZATION> Request with internal server error dataValidate <ORGANIZATION> response: status = REQUEST_FAILED and response has correct message"
|
||
},
|
||
{
|
||
"title": "Integration Test For COMPANY Model Region AMER",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>,
|
||
"content": "Test classTest caseFlowMicroBrickTestshouldCalculateMicroBricksCreate <ORGANIZATION> and validate responseWait for event on ChangeLog topic with specified countryGet <ORGANIZATION> entity and validate MicroBrickUpdate HCP with new zip codes and valdiate responseWait for event on ChangeLog topic with specified countryGet <ORGANIZATION> entity and validate <ORGANIZATION> entitiesValidateHCPTestvalidateHCPTestCreate HCP and validate response statusCreate validation request with valid paramsAssert if response is ok and validation status is "Valid"validateHCPTestNotValidCreate <ORGANIZATION> and validate response statusCreate validation request with not valid paramsAssert if response is ok and validation status is "NotValid"validateHCPLookupTestCreate HCP with "Speciality" attribute and validate response statusCreate lookup validation request with "Speciality" attributeAssert if response is ok and validation status is "Valid""
|
||
},
|
||
{
|
||
"title": "Integration Test For COMPANY Model Region EMEA",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/Integration+Test+For+COMPANY+Model+Region+EMEA",
|
||
"content": "Test classTest caseFlowAutofillTypeCodeTestshouldProcessNonPrescriberCreate <ORGANIZATION> entityValidate type code value is Non-Prescriber on output topicInactivate <ORGANIZATION> entityValidate type code value is Non-Prescriber on history inactive topicDelete entityshouldProcessPrescriberCreate <ORGANIZATION> entityValidate type code value is Prescriber on output topicInactivate <ORGANIZATION> entityValidate type code value is Prescriber on history inactive topicDelete entityshouldProcessMergeCreate first <ORGANIZATION> entityValidate type code is Prescriber on output topicCreate second <ORGANIZATION> entityValidate type code is Non-Prescriber on output topicMerge entitiesValidate type code is Prescriber on output topicInactivate first entityValidate type code is <ORGANIZATION> second entity crosswalkValidate entity has end date on output topicValidate type code value is Prescriber on output topicDelete entityshouldNotUpdateTypeCodeCreate HCP entity with correct type code valueValidate there is no type code value provided by HUB technical source on output topicDelete entityshouldProcessLookupErrorsCreate HCP entity with invalid sub type code and speciality valuesValidate type code value is concatenation of sub type code and speciality values on output topicInactivate <ORGANIZATION> entityValidate type code value is concatenation of sub type code and speciality values on history inactive topicDelete entity"
|
||
},
|
||
{
|
||
"title": "Integration Test For COMPANY Model Region US",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Integration+Test+For+COMPANY+Model+Region+US",
|
||
"content": "Test classTest caseFlowCRUDMCOAsynctestSend MCORequest to <PERSON> topicWait for created eventValidate created <ORGANIZATION> nameSend MCORequest to <PERSON> topicWait for updated eventValidate updated entityDelete all entitiesTestBatchMCOTesttestBatchWorkflowTestCreate batch instance: testBatchCreate MCO_LOADNIG stageSend <ORGANIZATION> entities to MCO_LOADNIG stageFinish MCO_LOADNIG stageCheck sender job status - get batch instance and validate if all entities are createdCheck processing job status - get batch instance and validate if all entties are processedGet batch instance and check batch completion statusGet entities by crosswalk and check if all are createdRemove all entitiestestBatchWorkflowTest_SendEntities_Update_and_MD5SkipCreate batch instance: testBatchCreate MCO_LOADNIG stageSend <ORGANIZATION> entities to MCO_LOADNIG stageFinish MCO_LOADNIG stageCheck sender job status - get batch instance and validate if all entities are createdCheck processing job status - get batch instance and validate if all entties are processedGet batch instance and check batch completion statusGet entities by crosswalk and check if all are createdCreate batch instance: testBatchCreate MCO_LOADNIG stageSend <ORGANIZATION> entities to MCO_LOADNIG stage (skip 2 entities MD5 checksum changed)Finish MCO_LOADNIG stageCheck sender job status - get batch instance and validate if all entities are createdCheck processing job status - get batch instance and validate if all entties are processedGet batch instance and check batch completion statusGet entities by crosswalk and check if all are createdRemove all entitiesMCOBundlingTesttestSend multiple MCORequest to <PERSON> topicWait for created event for every MCORequestCheck if number of recived events equals number of sent requestsSet crosswalk's delete date on now for every requestSend all updated <ORGANIZATION> to <PERSON> topicWait for deleted event for every MCORequestEntityEventChecksumTesttestCreate HCPWait for HCP_CREATED eventGet created HCP by uri and check if existsFind by id created HCP in mogno and save "checksum"Update <ORGANIZATION>'s attribute and send requestWait for HCP_CHANGED eventFind by id created HCP in mogno and saveCheck if old checksum is different than current checksumRemove HCPWait for HCP_REMOVED eventEntityEventsTesttestCreate MCOWait for ENTITY_CREATED eventUpdate MCOWait for ENTITY_CHANGED eventRemove MCOWait for ENTITY_REMOVED eventHCPEventsMergeTesttestCreate HCP_1 and validate responseWait for HCP_CREATED eventGet HCP_1 and validate attributesCreate <ORGANIZATION> and validate <ORGANIZATION> and validate attributesMerge HCP_1 and HCP_2Wait for HCP_MERGED <ORGANIZATION> and validate attributesDelete HCP_1 crosswalkWait for HCP_CHANGED event and validate HCP_URIDelete HCP_1 and <ORGANIZATION> crosswalksWait for <PERSON> eventDelete HCP_2 crosswalkHCPEventsNotTrimmedMergeTesttestCreate HCP_1 and validate responseWait for HCP_CREATED eventGet HCP_1 and validate attributesCreate <ORGANIZATION> and validate <ORGANIZATION> and validate attributesMerge HCP_1 and HCP_2Wait for HCP_MERGED event and validate attributesGet HCP_2 and validate attributesDelete HCP_1 crosswalkWait for HCP_CHANGED event and validate HCP_URIDelete HCP_1 and <ORGANIZATION> crosswalksWait for <PERSON> eventDelete <ORGANIZATION> crosswalkMCOEventsTesttestCreate <ORGANIZATION> and validate reponseWait for MCO_CREATED event and validate urisUpdate <ORGANIZATION>'s name and validate responseWait for MCO_CHANGED event and validate urisDelete <ORGANIZATION>'s crosswalk and validate response statusWait for MCO_REMOVED event and validate urisRemove entitiesPotentialMatchLinkCleanerTestCreate <ORGANIZATION>: Start FLEXGet <ORGANIZATION> and validateCreate <ORGANIZATION>: End ONEKEYGet <ORGANIZATION> and validateGet matches by Start <ORGANIZATION> entityIdValidate matchesGet not matches by Start <ORGANIZATION> entityIdValidate - not match does not existGet Start <ORGANIZATION> from mongo entityMatchesHistory collectionValidate matches from mongoCreate DerivedAffiliation - realtion between <ORGANIZATION> and HCOGet matches by Start <ORGANIZATION> entityIdCheck if there is no matchesGet not matches by Start <ORGANIZATION> entityIdValidate not matches responseRemove all entitiesUpdateMCOTesttest1_createMCOTestCreate <ORGANIZATION> and validate responseGet <ORGANIZATION> by uri and validateRemove entitiestest2_updateMCOTestCreate <ORGANIZATION> and validate responseUpdate <ORGANIZATION>'s nameGet <ORGANIZATION> by uri and validateRemove entitiestest3_createMCOBatchTestCreate multiple MCOs using postBatchMCOValidate responseRemove entitiesUpdateUsageFlagsTesttest1_updateUsageFlagsCreate <ORGANIZATION> and validate responseGet entities using filter (Country & Uri) and validate if <ORGANIZATION> existsGet entities using filter (<PERSON>) and validate if <ORGANIZATION> existsUpdate usage flags and validate responseGet entity and validate updated usage flagstest2_updateUsageFlagsCreate <ORGANIZATION> and validate responseGet entities using filter (Country & Uri) and validate if <ORGANIZATION> existsGet entities using filter (<PERSON>) and validate if <ORGANIZATION> existsUpdate usage flags and validate responseGet entity and validate updated usage flagstest3_updateUsageFlagsCreate <ORGANIZATION> with 2 addresses (COMPANYAddressId=3001 and 3002) and validate responseGet entities using filter (Country & Uri) and validate if <ORGANIZATION> existsGet entities using filter (<PERSON>) and validate if <ORGANIZATION> existsUpdate usage flags (COMPANYAddressId = 3002, action=set) and validate responseUpdate usage flags (COMPANYAddressId = 3001, action=set) and validate responseGet entity and validate updated usage flagsRemove usage flag and validate responseGet entity and validate updated usage flagsClear usage flag and validate responseget entity and validate updated usage flags "
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/MDM+Factory",
|
||
"content": "\nMDM Client Factory was implemented in <ORGANIZATION> manager to select a specific <ORGANIZATION> (Reltio/Nucleus) based on a client selector configuration. Factory allows to register multiple MDM Clients on runtime and choose it based on country. To register Factory the following example configuration needs to be defined:\n\n\tclientDecisionTable\n\n\n\nBased on this configuration a specific request will be processed by Reltio or <LOCATION>. Each selector has to define default view for a specific client. For example, 'ReltioAllSelector' has a definition of a default and PforceRx view which corresponds to two factory clients with different user name to Reltio.\n\n\n\tmdmFactoryConfig\n\n\n\nThis map contains <ORGANIZATION>. Each client has a specific unique name and a configuration with URL, username, ●●●●●●●●●●●● other specific values defined for a Client. This unique name is used in decision table to choose a factory client based on country in request.\n "
|
||
},
|
||
{
|
||
"title": "Mulesoft integration",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Mulesoft+integration",
|
||
"content": "DescriptionMulesoft platform is integration portal that is used to integrate Clients from inside and outside of COMPANY network with <ORGANIZATION>. <PERSON> integrationAPI Endpoints/search/hcp : The operation allows to search for HCPs in a country with multiple filter <URL><PERSON> compiles the final data for a Profile (Golden Profile) when the data for it is requested./search/hco: The operation allows to search for HCOs in a country with multiple filter criteria./hcp : The <ORGANIZATION> allows management of HCPs in <ORGANIZATION>. (Get, Create, Update)/hco : The <ORGANIZATION> allows management of HCOs in <ORGANIZATION>. (Get, Create, Update)/lookups : This operation allows to fetch the list of values configured in <ORGANIZATION>/subscriptions/hcp : This operation allows to 'subscribe to' multiple <ORGANIZATION> in a singlerequest. The subscription is done by allowing a source create a 'crosswalk' of the source systemon the profile. It also allows the source system to insert all data that the source system has for therespective profile in <ORGANIZATION> while subscribing. The request specification is same as /hcp <ORGANIZATION> but itexpects an array of profiles. The subscription works in conjunction with <PERSON> events that aretriggered from <ORGANIZATION> for any 'subscribed' profiles that are modified by any other source system./entities/{countryType} : This operation directly allows to query <PERSON> for Entity withcustom Filter criteria. It allows to decide if the response needs to be formatted or if data isrequired without formatting - as it is provided by <ORGANIZATION>/hcp: This resource allows management of multiple HCPs in MDM at a time. (Create,<ORGANIZATION>: This resource allows management of multiple HCOs in MDM at a time. (Create,Update)/search/connection: This resource allows to view relationships an object (<ORGANIZATION>, <ORGANIZATION>) has onelevel in selected direction (up, down, both)MuleSoft API Catalog:Requests routing on <PERSON> sideBelow values can change. Please check in source <ORGANIZATION> URL Configuration - AIS Application Integration Solutions Mule - ConfluenceAPI Country MappingTenantDevTest (QA)StageProdUSUSUSUSUSEMEAUK,IE,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,QA,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,ET,ZW,<ORGANIZATION>,<ORGANIZATION>LB,<LOCATION>,<LOCATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,MR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,CD,<PERSON>,<ORGANIZATION>,<PERSON>,BF,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,YE,<ORGANIZATION>,<ORGANIZATION>,IT,<ORGANIZATION>,<LOCATION>,PM,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,RE,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,PF,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,TR,AT,BE,<PERSON>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,PL,RO,<LOCATION>,<LOCATION>,<PERSON>,AM,<LOCATION>,<ORGANIZATION>,IS,<LOCATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,IE,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,QA,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,ET,ZW,<ORGANIZATION>,<ORGANIZATION>LB,<LOCATION>,<LOCATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,MR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,CD,<PERSON>,<ORGANIZATION>,<PERSON>,BF,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,YE,<ORGANIZATION>,<ORGANIZATION>,IT,<ORGANIZATION>,<LOCATION>,PM,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,RE,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,PF,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,TR,AT,BE,<PERSON>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,PL,RO,<LOCATION>,<LOCATION>,<PERSON>,AM,<LOCATION>,<ORGANIZATION>,IS,<LOCATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,IE,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,QA,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,ET,ZW,<ORGANIZATION>,<ORGANIZATION>LB,<LOCATION>,<LOCATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,MR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,CD,<PERSON>,<ORGANIZATION>,<PERSON>,BF,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,YE,<ORGANIZATION>,<ORGANIZATION>,IT,<ORGANIZATION>,<LOCATION>,PM,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,RE,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,PF,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,TR,AT,BE,<PERSON>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,PL,RO,<LOCATION>,<LOCATION>,<PERSON>,AM,<LOCATION>,<ORGANIZATION>,IS,<LOCATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,IE,<ORGANIZATION>,<ORGANIZATION>,BF,<LOCATION>,<LOCATION>,<PERSON>,<LOCATION>,CD,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,ET,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,IQ,<ORGANIZATION>,<PERSON>,<LOCATION>,<LOCATION>,LB,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,MR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,QA,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,YE,<ORGANIZATION>,<ORGANIZATION>,ZW,<ORGANIZATION>,<ORGANIZATION>,IT,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<LOCATION>,PM,RE,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<LOCATION>,<LOCATION>,TR,AT,BE,<PERSON>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<PERSON>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,PL,RO,<LOCATION>,<ORGANIZATION>,BR,AR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,BO,<ORGANIZATION>,BR,AR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,BO,<ORGANIZATION>,BR,AR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,BO,<ORGANIZATION>,BR,AR,<ORGANIZATION>,<LOCATION>,<LOCATION>,IN,<LOCATION>,<LOCATION>,<LOCATION>,ID,MY,PK,PH,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,IN,<LOCATION>,<LOCATION>,<LOCATION>,ID,MY,PK,PH,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>, <ORGANIZATION>,<LOCATION>,BN,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<LOCATION>,<LOCATION>,IN,<LOCATION>,ID,MY,PK,PH,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>, <ORGANIZATION>,<LOCATION>,BN,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<LOCATION>,<LOCATION>,IN,<LOCATION>,ID,MY,PK,PH,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>, <ORGANIZATION>,<LOCATION>,<ORGANIZATION> (<ORGANIZATION> elseAPI URLsMuleSoft <ORGANIZATION> URLsEnvironmentCloud <ORGANIZATION> can be found under below url:<ORGANIZATION> documentation referenceSolution Profiles/MDM <URL> <ORGANIZATION> URL Configuration<URL> <ORGANIZATION> for API AuthenticationDescribed how to use OAuth2How to use an <NRP> how to request access to <ORGANIZATION> and how to use itConsumer On-boardingDescribed consumer onboarding process"
|
||
},
|
||
{
|
||
"title": "Multi view",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Multi+view",
|
||
"content": "\nDuring getEntity or getRelation operation "ViewAdapterService" is activated. This feature contains two steps:\n\n\tAdapt\n\n\n\nBased on the following map each entity will be checked before return:\n\nThis means that for PforceRx view, only entities with source <ORGANIZATION> will be returned. Otherwise getEntity or <ORGANIZATION> operations will return "404" EntityNotFound exception. \nWhen entity can be returned with success the next step is started: \n\n\tFilter\n\n\n\nEach entity is filtered based on attribute <PERSON> list provided in <LOCATION> list.\nThe process will take each attribute from entity and will check if this attribute exists in restricted for specific source crosswalk attribute list. When this attribute is not on restricted list, then it will be removed from entity. This way we will receive entity for specific view only with attribute restricted for specific source.\nMDM publishing HUB has an additional configuration for multi view process. When an entity with a specific country suits the configuration, <ORGANIZATION> operation is invoked with country and view name parameter. Then <ORGANIZATION> is activated, and entity is returned from a specific <ORGANIZATION> instance and saved in a mongo collection suffixed with a view name.\n \nFor this configuration entities from BR country will be saved in entityHistory and entityHistory_PforceRx mongo collections. In the view collection entities will be adapted and filtered by <ORGANIZATION>. "
|
||
},
|
||
{
|
||
"title": "Playbook",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Playbook",
|
||
"content": "The document depicts how to request access to different sources. "
|
||
},
|
||
{
|
||
"title": "Issues list",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Issues+list",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Add a user to a new group.",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "To create a request you need to use a link:<URL> choose as follow:Than search a group and click request access:As the last step, you need to choose <ORGANIZATION> button and submit your request. "
|
||
},
|
||
{
|
||
"title": "Snowflake new schema/group/role creation",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "Connect with: <ORGANIZATION> button.3. Then click that <DATE_TIME>. And as a next <NRP>. Now you are on create ticket site. The most important thing is to place a proper queue name in a detailed description place. For example a queue name for <ORGANIZATION> issues looks like this: gbl-atp-commercial snowflake domain admin. I recommend to you to place it as a first line. And then the request text is required.6. There is a typical request for a new schema:<ORGANIZATION>-commercial snowflake domain adminHello,\nI'd like to ask to create a new schema and new roles on <ORGANIZATION> side.\nNew schema name: PTE_SL\nEnvironments: DEV, QA, <ORGANIZATION>, PROD, details below:\nDEV\t\nSnowflake instance: <URL>\t\nSnowflake DB name:COMM_GBL_MDM_DMART_DEV_DB\nQA\t\nSnowflake instance: <URL>\t\nSnowflake DB name: COMM_GBL_MDM_DMART_QA_DB\nSTG\t\nSnowflake instance: <URL>\t\nSnowflake DB name:COMM_GBL_MDM_DMART_STG_DB\nPROD\t\nSnowflake instance: <URL>\t\nSnowflake DB name: <ORGANIZATION> new roles with names (one for each environment): <ORGANIZATION> read-only acces on <ORGANIZATION> PTE_SL\nand\nadd a roles with full acces to new schema with names (one for each environment) <ORGANIZATION>Prod]_DEVOPS_ROLE - like in customer_sl schema7. If you are requesting for a new role too - like in an example above - you need to request to add this role to AD. In this case you need to provide primary and secondary owner details for all groups to be created. You can send a primary <PERSON> a secondary owner data or write that the ownership should be set like in another existing role. 8. Ticket example: <URL> "
|
||
},
|
||
{
|
||
"title": "AWS ELB NLB configuration request",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/AWS+ELB+NLB+configuration+request",
|
||
"content": "To create a ticket use this link: <URL> follow this link if you want to know all the specific steps and click: Snowflake new schema/group/role creationRemember to add a proper queue <PERSON> a request please attached full list of general information:<ORGANIZATION> incoming traffic fromThen please add a specific <ORGANIZATION> NLB information FOR EACH <ORGANIZATION> you requested for - even if the information is the same and obvious:<ORGANIZATION> No of ELBTypeEnvironmentELB Health CheckTarget Group additional information: e.x: 1 <ORGANIZATION> group with 3 servers:portWhere to add a Listener: e.x.: Listener to be added in <ORGANIZATION> informationAdditional information: e.x: IP ●●●●●●●●●●●● mdm-event-handler (Prod) should be able to access this ELBTicket example: <URL> request text:VPC: Public\nELB Type: Network Load Balancer\nHealth Checks: Passive\nAllowed incoming traffic from:\n●●●●●●●●●●●● mdm-event-handler (Prod)\n\<US_DRIVER_LICENSE>. API\nListener:\<URL>:8443\n\nTarget Group:\<URL>:8443\<URL>:8443\<URL>:8443\n\<US_DRIVER_LICENSE>. KAFKA\n\<US_DRIVER_LICENSE>.1\nListener:\<URL>:9095\nTG:\<URL>:9095\<URL>:9095\<URL>:9095\n\<US_DRIVER_LICENSE>.2\nListener:\<URL>:9095\nTG:\<URL>:9095\n\<US_DRIVER_LICENSE>.3\nListener:\<URL>:9095\nTG:\<URL>:9095\n\<US_DRIVER_LICENSE>.4\nListener:\<URL>:9095\nTG:\<URL>:9095\n\nGBL-BTI-EXT HOSTING AWS CLOUD"
|
||
},
|
||
{
|
||
"title": "To open a traffic between hosts",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/To+open+a+traffic+between+hosts",
|
||
"content": "To create a ticket using this link: <URL> follow this link if you want to know all the specific steps and click: Snowflake new schema/group/role creationRemember to add a proper queue <PERSON> a request please attached the full list of general information:SourceIP rangeIP range....Targets - remember to add each targets instancesTarget1NameCnameAddressPortTarget2........Example ticket: <URL> request text:Source:\<US_DRIVER_LICENSE>. IP range: ●●●●●●●●●●●●●\<US_DRIVER_LICENSE>. IP range: ●●●●●●●●●●●●●\n\nTarget1:\nLoadBalancer:\<URL> canonical name = <URL>.\nName: <URL>\nAddress: ●●●●●●●●●●●●●●\nName: <URL>\nAddress: ●●●●●●●●●●●●●●\nTarget port: 443\n\nTarget2:\nhosts:\<URL>(●●●●●●●●●●●●●●)\<URL>(●●●●●●●●●●●●●)\<URL>(●●●●●●●●●●●●●●)\ntarget port: <DATE_TIME>"
|
||
},
|
||
{
|
||
"title": "Support information with queue and <ORGANIZATION> names",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/Support+information+with+queue+and+DL+names",
|
||
"content": "There are a few places when you can send your request:<URL> When we are adding a new client to our architecture there is a MUST to get from him a support <URL> queuesSystem/component/area nameDedicated queueSupport DLAdditional notesRapid, <ORGANIZATION>, GCP etcGBL-EPS-CLOUD OPS FULL SUPPORTEPS-CloudOps@<URL>AWS Global, <ORGANIZATION> environmentsIOD <ORGANIZATION> TeamGBL-BTI-IOD AWS FULL <EMAIL_ADDRESS> (same as <ORGANIZATION>, not a mistake)Rotating <ORGANIZATION> keys, AWS GBL US, <ORGANIZATION> FULL OS SUPPORT (<ORGANIZATION> CloudFLEX TeamGBL-F&BO-MAST AMM SUPPORTDL-<ORGANIZATION>, file transfer issues in <ORGANIZATION> Interface Team (FLEX)GBL-SS SAP SALES ORDER <ORGANIZATION> regarding <ORGANIZATION> input filesSAP Master Date Team (FLEX)Dianna.OConnell@<URL>Queries regarding data in <ORGANIZATION> TeamGBL-NETWORK DDIAll domain and <ORGANIZATION> changesFirewall TeamGBL-NETWORK <EMAIL_ADDRESS>"Big" firewall changesSnowflakeGBL-ATP-COMMERCIAL SNOWFLAKE DOMAIN ADMINMDM Hub - non-prodGBL-ADL-ATP GLOBAL MDM - HUB DEVOPSDL-ATP_MDMHUB_SUPPORT@<URL>MDM Hub - prodGBL-ADL-ATP GLOBAL MDM - HUB DEVOPSDL-ATP_MDMHUB_SUPPORT_PROD@<URL>PDKSGBL-BAP-Kubernetes Service L2PDCSOps@<URL>PDKS Kubernetes cluster, ie. new <ORGANIZATION> NPRODGo to <URL> "PDKS Get Help" for details.<ORGANIZATION> TeamGBL-<ORGANIZATION> provisioning/modification issues with <ORGANIZATION>GBLUS Reltio - COMPANYGBL-ADL-ATP GLOBAL MDM - RELTIODL-ADL-ATP-GLOBAL_MDM_RELTIO@<URL>Team responsible for <ORGANIZATION> and <ORGANIZATION> batch <URL><ORGANIZATION>/USFLEX Reltio - IQVIAGBL-MDM APP SUPPORTCOMPANY-MDM-Support@<URL>DL-Global-MDM-Support@<URL>Reltio consultingN/<PERSON> consulting (NO support)<URL>ngh@<URL>ngh@<URL>It is no support, we can use that contact on technical issues level (API implementation etc) Reltio UI with data accesuse request manager: <URL> <PERSON> Customer MDM - GBLPing FederateDL-CIT-PXEDOperations@<URL>Ping Federate/OAuth2 supportMAPP NavigatorGBL-FBO-MAPP NAVIGATOR <EMAIL_ADDRESS> (rarely respond)MAPP Nav issuesHarmony BitbucketGBL-CBT-GBI HARMONY SERVICESDL-GBI-Harmony-Support@<URL>Confluence page:<ORGANIZATION>, JiraGBL-DA-DEVSECOPS TOOLS SUPPORTDL-SESRM-ATLASSIAN-SUPPORT <<EMAIL_ADDRESS>>ArtifactoryGBL-SESRM-ARTIFACTORY SUPPORTDL-SESRM-ARTIFACTORY-SUPPORT@<URL>Mule integration team supportDL-AIS Mule Integration Support DL-AIS-Mule-Integration-Support@<URL>Used to integrate with mule proxy <ORGANIZATION>.Koudstaal@<URL>POC if <PERSON> did not send an input file for the <ORGANIZATION> DCR process for 24 hoursExample: there is a description how to request with <URL> a ticket assigned to one of groups above. Snowflake new schema/group/role creation"
|
||
},
|
||
{
|
||
"title": "Global Clients",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Global+Clients",
|
||
"content": "ClientContactCICRProbably <PERSON>; <PERSON> <<EMAIL_ADDRESS>>; <URL>lanc@<URL>JOShweta.Kulkarni@<EMAIL_ADDRESS>; <URL>lanc@<URL>MAPPDL-BTAMS-MAPP-Navigator@<URL>; <URL><PERSON><URL>hvaryu@<URL>ODSDL-<ORGANIZATION>-PFORCERX_ODS_Support@<EMAIL_ADDRESS>;<URL>alapati@<URL>PFORCEOLChristopher.Fani@<EMAIL_ADDRESS>;dl-pforcerx-support@<URL><ORGANIZATION> <EMAIL_ADDRESS> <ORGANIZATION>, <PERSON> <<EMAIL_ADDRESS>>; QianRu.<ORGANIZATION>,<PERSON> (<LOCATION> - Mumbai)<<EMAIL_ADDRESS>><PERSON>, Maanasa (<LOCATION> - Hyderabad) <<EMAIL_ADDRESS>>NEXUS <EMAIL_ADDRESS>;DL-Acc-GBICC-Team@<URL>IMPROMPTUPRAWDOPODOBNIE <LOCATION>, <LOCATION> <<EMAIL_ADDRESS>>Balan, Sakthi <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><ORGANIZATION>, <PERSON> <<EMAIL_ADDRESS>><PERSON>, <PERSON><EMAIL_ADDRESS>><PERSON>, <ORGANIZATION> <<EMAIL_ADDRESS>>EVENTHUBSNOWFLAKEClientContactC360DL-C360_Support@<URL>PT<EMAIL_ADDRESS>>; <PERSON>, <PERSON> <<EMAIL_ADDRESS>><EMAIL_ADDRESS>;dl-atp-dq-ops@<URL>accentureDL-Acc-GBICC-Team@<URL>Big <URL>shmukh@<URL>Mikhail.Komarov@<EMAIL_ADDRESS>"
|
||
},
|
||
{
|
||
"title": "How to login to Service Manager",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/How+to+login+to+Service+Manager",
|
||
"content": "How to add a user to Service Manager toolChoose link: <URL> yourselfClick "Next >>"Choose proper role: Service desk analyst – and click „Needs training”When you have your training succeeded, there is a need to choose groups to which you want to be added :GBL-ADL-ATP GLOBAL MDM - HUB DEVOPSYou do it here:Please remember when you click “Add selected group to cart” there is a second approval step – click: “SUBMIT”.When permissions will be granted you can explore Service Manager possibilities here: <URL>"
|
||
},
|
||
{
|
||
"title": "How to Escalate btondemand Ticket Priority",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/How+to+Escalate+btondemand+Ticket+Priority",
|
||
"content": "Below is a copy of: <ORGANIZATION> → How to Escalate Ticket PriorityHow to Escalate Ticket PriorityTickets will be opened as low priority by default and response time will align to the restoration and resolution times listed in the <ORGANIZATION> below. If your request priority needs to be change follow these instructions:Use the Chat function at <ORGANIZATION> (or call the Service Desk at <PHONE_NUMBER>)Select Get SupportSelect "Click here to continue without selecting a ticket option."Select <ORGANIZATION> the existing ticket number you already openedAsk that ticket Priority be raised to Medium, High or Critical based on the issue and utilize one of the following key phrases to help set priority:Issue is <ORGANIZATION> is being impactedBatch is unable to proceedLife safety or physical security is impactedDevelopment work stopped awaiting resolution"
|
||
},
|
||
{
|
||
"title": "How to get AWS Account ID",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/How+to+get+AWS+Account+ID",
|
||
"content": "<ORGANIZATION> components are deployed in different <ORGANIZATION> Accounts. In a ticket support process, you might be asked about the AWS Account ID of the host, load balancer, or other resources. You can get it quickly in at least two ways described <URL>ing <ORGANIZATION> Console: <URL> (How to access <ORGANIZATION> Console) you can find the <ORGANIZATION> ID in any resource's <ORGANIZATION> Name (ARN).Using curlSSH to a host and run this curl command, same for all <ORGANIZATION> accounts:[ec2-user@euw1z2pl116 ~]$ curl http://<IP_ADDRESS>/latest/dynamic/instance-identity/document{"accountId" : "<US_BANK_NUMBER>","architecture" : "x86_64","availabilityZone" : "eu-west-1b","billingProducts" : null,"devpayProductCodes" : null,"marketplaceProductCodes" : null,"imageId" : "ami-05c4f918537788bab","instanceId" : "i-030e29a6e5aa27e38","instanceType" : "<US_DRIVER_LICENSE>.2xlarge","kernelId" : null,"pendingTime" : "<DATE_TIME>" : "<IP_ADDRESS>","ramdiskId" : null,"region" : "eu-west-1","version" : "<DATE_TIME>"}"
|
||
},
|
||
{
|
||
"title": "How to push <PERSON> image to <URL>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/How+to+push+Docker+image+to+<URL>",
|
||
"content": "I am using the <ORGANIZATION> image as an example.Login to <URL>Log in with COMPANY credentials: <URL> Identity Token: <URL> COMPANY username and generated Identity Token in "docker login <URL>"marek@CF-19CHU8:~$ docker login <URL>Authenticating with existing credentials...Login SucceededPull, tag, and pushmarek@CF-19CHU8:~$ docker pull tchiotludo/akhq:<IP_ADDRESS>.1: Pulling from tchiotludo/akhq...<PERSON>: sha256:b7f21a6a60ed1e89e525f57d6f06f53bea6e15c087a64ae60197d9a220244e9cStatus: Downloaded newer image for tchiotludo/akhq:<URL> docker tag tchiotludo/akhq:0.14.1 <URL> docker push <URL> push refers to repository [<URL> digest: sha256:b7f21a6a60ed1e89e525f57d6f06f53bea6e15c087a64ae60197d9a220244e9c size: 1577And that's all, you can now use this image from <URL>!"
|
||
},
|
||
{
|
||
"title": "Emergency contact list",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Emergency+contact+list",
|
||
"content": "In case of emergency please inform the person from the list attached to each environment.EMEA:<ORGANIZATION>, <PERSON> <<EMAIL_ADDRESS>>; <PERSON>, <PERSON> <<EMAIL_ADDRESS>>; <PERSON>, <PERSON> <<EMAIL_ADDRESS>>; <PERSON>, <PERSON> <<EMAIL_ADDRESS>>; <PERSON>, <NRP> <<EMAIL_ADDRESS>>; <ORGANIZATION> <<EMAIL_ADDRESS>>; <ORGANIZATION>, <PERSON> <<EMAIL_ADDRESS>>; <PERSON>, Bhavanya <<EMAIL_ADDRESS>>; <PERSON>, <PERSON><EMAIL_ADDRESS>>GBL:TO-DOGBL US:TO-DOEMEA:TO-DOAMER:TO-DO"
|
||
},
|
||
{
|
||
"title": "How to handle issues reported to <ORGANIZATION>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/How+to+handle+issues+reported+to+DL",
|
||
"content": "Create a ticket in JiraName: "DL: {{ email title }}"Epic: BAUFix Version(s): BAUUse below template:<ORGANIZATION> all the red placeholders. Fill in the table where you can, based on original <URL>spond to the email, requesting additional details if any of the table rows could not be filled in.Update the ticket:<ORGANIZATION> the filled tableAdjust the priority based on the "Business impact details" row"
|
||
},
|
||
{
|
||
"title": "Sample estimation for jira tickets",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Sample+estimation+for+jira+tickets",
|
||
"content": "1<URL>(Disable keycloak by default)<URL>(Investigate server git hooks in BitBucket)<URL>(Lack of changelog when build from master)<URL>(pvc-autoresizer deployment on PRODs)<URL>(Dashboards adjustments)2<URL> (Move kong-mdm-external-oauth-plugin to mdm-utils repo)<URL> (Alert about not ready ScaledObject)<URL> (Reduce number of stored <NRP> metrics and labels)<URL> (Old monitoring host decomissioning)<URL> (Quality Gateway: deploy publisher changes to PRODs)<URL> (Write article to describe <ORGANIZATION> upgrade procedure)<URL> (Fluentd - improve deployment time and downtime)<URL> (Turn on compression in reconciliation service)3<URL> (POC: Create local git hook with secrets verification)<URL> (Replace hardcoded rate intervals)<URL> (Investigate and plan fix for different version of monitoring CRDs)<URL> (Fluentbit: deploy NPRODs)<URL> (Move jenkins agents containers definition to inbound-services repo)5<URL> (Implement integration with Grafana)<URL> (<ORGANIZATION> - configuration creation and deployment)<URL> (<PERSON> dashboards backup process)<URL> (POC: Store transaction logs for 6 months)8<URL> (Implement integration with Kibana)<URL> (Prepare <PERSON> upgrade plan to version 3.3.2)<URL> (Process analysis)<URL> (Implement Reltio mock)<URL> (Mongo backup process: implement backup process)"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> - Frequently Asked Questions",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/FAQ+-+Frequently+Asked+Questions",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/API",
|
||
"content": "Is there an MDM Hub API Documentation?Of course - it is available for each component:Manager/API Router: <URL> Service: <URL> Service: <URL> is the difference between /api-emea-prod and /api-gw-emea-prod <ORGANIZATION> endpoints?Both of these endpoints are leading to different <ORGANIZATION> Components:/api-emea-prod is the API Router endpoint/api-gw-emea-prod is the Manager endpointBoth of these <ORGANIZATION>' APIs can be used in similar way. The main difference is:<ORGANIZATION> allows routing <ORGANIZATION> Requests to the <ORGANIZATION> component: /api-emea-prod/dcr endpoint leads to <ORGANIZATION> API.API Router allows routing <ORGANIZATION> requests to other <ORGANIZATION> tenants, based on the search query filter's Country parameter.Example 1: We are trying to find HCPs named "<PERSON>" in the <LOCATION> market. We can only use the EMEA HUB API:Sending an HTTP request:GET <URL>(type, 'configuration/entityTypes/<ORGANIZATION>') and equals(<URL>untry, '<LOCATION>') and equals(<URL>rstName, 'John')returns nothing, because we are using the /api-gw-emea-prod/* endpoint - the Manager. It is connected directly to <ORGANIZATION>, which does not contain the <LOCATION> <URL>nding an HTTP request:GET <URL>(type, 'configuration/entityTypes/<ORGANIZATION>') and equals(<URL>untry, '<LOCATION>') and equals(<URL>rstName, 'John')routes the search to the GBLUS PROD Reltio, and returns results from there.Example 2: We are trying to find HCPs named "<PERSON>" in the <LOCATION>, <LOCATION>, IE and <LOCATION> markets. We can only use the EMEA HUB API:Sending an HTTP request:GET <URL>(type, 'configuration/entityTypes/<ORGANIZATION>') and in(<URL>untry, '<LOCATION>,<LOCATION>,IE,AU') and equals(<URL>rstName, 'John')searches for <NRP>, <NRP>, <NRP> or <NRP> HCPs in <ORGANIZATION>. <LOCATION> is available in this tenant, so it returns results, but only limited to this marketSending an HTTP request:GET <URL>(type, 'configuration/entityTypes/<ORGANIZATION>') and in(<URL>untry, '<LOCATION>,<LOCATION>,IE,AU') and equals(<URL>rstName, 'John')splits the search into three separate searches:- search for <NRP> HCPs in the GBLUS PROD Reltio- search for <NRP> or <NRP> HCPs in the EMEA PROD Reltio- search for <NRP> HCPs in <ORGANIZATION> returns aggregated results.What is the difference between /api-emea-prod and /ext-api-emea-prod <ORGANIZATION> <NRP> endpoints use different Authentication methods:when using /api-emea-prod you are using an API Key authentication. Your requests must contain the apikey header with the secret that you received from <ORGANIZATION> Team.when using /ext-api-emea-prod you are using an <ORGANIZATION> authentication. You must fetch your token from the COMPANY <ORGANIZATION> and send it in your request's Authorization: Bearer <URL> is recommended that all the API Users use <PERSON> and /ext-api-emea-prod endpoint, leaving <ORGANIZATION> for support and debugging purposes.When should I use a GET Entity operation, when should I use a SEARCH Entity operation?There are two main ways of fetching an <ORGANIZATION> using HUB API:GET Entity:Sending GET /entities/{Reltio ID}It is the simplest and cheapest operation. Use it when you know the exact Reltio ID of the entity you want to <URL>ARCH Entity:Sending GET /entities?filter=equals()<URL> allows finding one or more profiles by their attributes' values. Use it when you do not know the exact Reltio ID or do not know how many results you <URL>ad more about Search filters here: <URL> two requests correspond to each other:GET <LOCATION>, 'entities/0TWPf9d')Although both are quick, <ORGANIZATION> recommends only using the first one to find and entity by URI:GET Entity gets passed to Reltio as-is and results are returned straight awaySEARCH Entity gets analyzed on the <ORGANIZATION> side first. If the search filter does not specify a country (a required parameter!), a full list of allowed countries is fetched from the <ORGANIZATION> User's configuration and, as a result, the request may end up being sent to every single <ORGANIZATION> tenant.What is the difference between <ORGANIZATION> and PATCH /hcp, /hco, /entities operations?The key difference is:If we POST a record (crosswalk + attributes) to <ORGANIZATION>, it is created in <ORGANIZATION> straight away:if the crosswalk already existed in <ORGANIZATION>, it gets overwrittenif the record already existed in <ORGANIZATION>, the attributes get completely overwritten:attribute values that did not exist in Reltio before, now are addedattributes that had different values in Reltio before, now are updatedattribute values that were present in Reltio before, but did not exist in the POSTed record, now are removedIf we PATCH a record (crosswalk + attributes) to Hub:we check whether this crosswalk already exists in Reltio. If it does not, we return an HTTP Bad Request error response.If the record already existed in <ORGANIZATION>, only the PATCHed subset of attributes is updated:attribute values that did not exist in Reltio before, now are addedattributes that had different values in Reltio before, now are updatedattribute values that were present in Reltio before, but did not exist in the PATCHed record, are left untouchedPOST should be used if we are sending the full JSON - crosswalk + all <URL>TCH should be used if we are only sending incremental changes to a pre-existing profile."
|
||
},
|
||
{
|
||
"title": "Merging Into Existing Entities",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Merging+Into+Existing+Entities",
|
||
"content": "Can I post a profile and merge it to one already existing in MDM?Yes, there are 3 ways you can do that:Merge-On-The-FlyContributor MergeManual MergeMerge-On-The-Fly - DetailsMerge-on-the-fly is a <ORGANIZATION> mechanism using matchGroups configuration. <ORGANIZATION> contain lists of requirements that two entities must pass in order to be merged. There are two types of matchGroups: "suspect" and "automatic". Suspects merely display as potential matches in <ORGANIZATION>, but <NRP> groups trigger automatic merges of the objects.Example of an <ORGANIZATION> automatic matchGroup from <ORGANIZATION>'s configuration (EMEA PROD):\n {\n "uri": "configuration/entityTypes/<ORGANIZATION>/matchGroups/ExctONEKEYID",\n "label": "(iii) Auto Rule - Exact Source Unique Identifier(ReferBack ID)",\n "type": "automatic",\n "useOvOnly": "true",\n "rule": {\n "and": {\n "exact": [\n "configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/ID",\n "configuration/entityTypes/<ORGANIZATION>/attributes/Country"\n ],\n "in": [\n {\n "values": [\n "OneKey ID"\n ],\n "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Type"\n },\n {\n "values": [\n "ONEKEY"\n ],\n "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/OriginalSourceName"\n },\n {\n "values": [\n "Yes"\n ],\n "uri": "configuration/entityTypes/<ORGANIZATION>/attributes/Identifiers/attributes/Trust"\n }\n ]\n }\n },\n "scoreStandalone": 100,\n "scoreIncremental": 0\n \nAbove example merges two entities having same Country attribute and same Identifier of type "<ORGANIZATION> ID". Identifier must have the Trusted flag and the OriginalSourceName must be "ONEKEY".When posting a record to <ORGANIZATION>, matchGroups are evaluated. If an automatic matchGroup is matched, <ORGANIZATION> will perform a Merge-On-The-Fly, adding the posted crosswalk to an existing <URL><PERSON> posting an object to Reltio, we can use its Crosswalk contributorProvider/dataProvider mechanism to bind posted crosswalk to an existing one.If we know that a crosswalk exists in <ORGANIZATION>, we can add it to the crosswalks array with contributorProvider=true and dataProvider=false flags. Crosswalk marked like that serves as an indicator of an object to bind <URL>e other crosswalk must have the flags set the other way around: contributorProvider=false and dataProvider=true. This is the crosswalk that will de facto provide the attributes and be considered for the Hub's ingestion rules.Example - we are sending data with an <ORGANIZATION> crosswalk and binding that crosswalk to the existing <ORGANIZATION> crosswalk:\n{\n "hcp": {\n "type": "configuration/entityTypes/HCP",\n "attributes": {\n "FirstName": [\n {\n "value": "John"\n }\n ],\n "LastName": [\n {\n "value": "Doe"\n }\n ],\n "Country": [\n {\n "value": "ES"\n }\n ]\n },\n "crosswalks": [\n {\n "type": "configuration/sources/MAPP",\n "value": "B53DFCEA-8231-<US_DRIVER_LICENSE>-24F8-7E72C62C0147",\n "contributorProvider": false,\n "dataProvider": true\n },\n {\n "type": "configuration/sources/ONEKEY",\n "value": "WESR04566503",\n "contributorProvider": true,\n "dataProvider": false\n }\n ]\n }\n}\nEvery MDM record also has a crosswalk of type "Reltio" and value equal to Reltio ID. We can use that to bind our record to the entity:\n{\n "hcp": {\n "type": "configuration/entityTypes/HCP",\n "attributes": {\n "FirstName": [\n {\n "value": "John"\n }\n ],\n "LastName": [\n {\n "value": "Doe"\n }\n ],\n "Country": [\n {\n "value": "ES"\n }\n ]\n },\n "crosswalks": [\n {\n "type": "configuration/sources/MAPP",\n "value": "B53DFCEA-8231-<US_DRIVER_LICENSE>-24F8-7E72C62C0147",\n "contributorProvider": false,\n "dataProvider": true\n },\n {\n "type": "configuration/sources/Reltio",\n "value": "00TnuTu",\n "contributorProvider": true,\n "dataProvider": false\n }\n ]\n }\n}\nThis approach has a downside: crosswalks are bound, so they cannot be unmerged later <URL>nual Merge - DetailsLast approach is simply creating a record in <ORGANIZATION> and straight away merging it with another.Let's use the previous example. First, we are simply posting the <PERSON> data:\n{\n "hcp": {\n "type": "configuration/entityTypes/HCP",\n "attributes": {\n "FirstName": [\n {\n "value": "John"\n }\n ],\n "LastName": [\n {\n "value": "Doe"\n }\n ],\n "Country": [\n {\n "value": "ES"\n }\n ]\n },\n "crosswalks": [\n {\n "type": "configuration/sources/MAPP",\n "value": "B53DFCEA-8231-<US_DRIVER_LICENSE>-24F8-7E72C62C0147"\n }\n ]\n }\n}\nResponse:\n{\n "uri": "entities/0zu5sHM",\n "status": "created",\n "errorCode": null,\n "errorMessage": null,\n "COMPANYGlobalCustomerID": "<PHONE_NUMBER>",\n "crosswalk": {\n "type": "configuration/sources/MAPP",\n "value": "B53DFCEA-8231-<US_DRIVER_LICENSE>-24F8-7E72C62C0147",\n "updateDate": <US_BANK_NUMBER>,\n "deleteDate": ""\n }\n}\nWe can now use the <ORGANIZATION> from response to merge the new record into existing one:\nPOST /entities/0zu5sHM/_merge?uri=00TnuTu\n"
|
||
},
|
||
{
|
||
"title": "Quality rules",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Quality+rules",
|
||
"content": "Quality engine is responsible for preprocessing Entity when a specific precondition is met. This engine is started in the following cases:Rest operation (<ORGANIZATION>) on /hco endpoint on <ORGANIZATION> operation (<ORGANIZATION>) on /hcp endpoint on <PERSON> a validationOn parameter is set to true the first step in <ORGANIZATION> request processing is quality engine validation. MDM Manager Configuration should contain the following quality rules:hcpQualityRulesConfigshcoQualityRulesConfigshcpAffiliatedHCOsQualityRulesConfigsThese properties are able to accept a list of yaml files. Each file has to be added in environment repository in /config_files/<env_name>/mdm_mananger/config/.*quality-rules.yaml. Then each of these files has to be added to these variables in inventory /<env_name>/group_vars/gw-services/mdm_manager.yml. For <ORGANIZATION> request processing, files are loaded in the following order:hcpQualityRulesConfigshcpAffiliatedHCOsQualityRulesConfigsFor <ORGANIZATION> request processing, files are loaded only from the following configuration:hcoQualityRulesConfigsIt is a good practice to divide files in a common logic and a specific logic for countries. For example, <ORGANIZATION> Rules file names should have the following structure:hcp/hcp/affiliatedhco | common/country-* | quality-rules.yamlhcp-common-quality-rules.yamlhcp-country-<LOCATION>-quality-rules.yamlQuality rules yaml file is a set of rules, which will be applied on Entity. Each rule should have the following yaml structure: preconditionsmatch – the condition is met when the attribute matches the pattern or string value provided in values' list. e.g. source – the condition is met when the crosswalk type ends with the values provided in the list. e.g. default – (Empty)/Default value for precondition is "True" value. The preconditions section in yaml file is not <URL>eckmandatory – this type of check evaluates if the attribute is mandatory. When the check is correctly evaluated, then the action will be performed. <URL>ndatoryGroup – this check will pass when all attributes provided in the list will not be empty. e.g. mandatoryArray – this check will pass when the array provided in the list will contain at least minimum number of values. e.g. actionWhen the precondition and check are properly evaluated then a specific action can be invoked on entity <NRP> – this action replaces attribute values which match the specific pattern with the value from replacement parameter. e.g. reject – this action rejects the entity when the precondition is met. e.g. remove- based on the madatoryGroup attributes list, this action removes these attributes from entity. e.g. set – this action sets the value provided in parameter on the specific attribute. e.g. modify – this action sets the value on the specific attribute based on attributes in entity. To reference entity's attributes, use curly braces {}. This rule adds country prefix for each element in specialties array. e.g. chineseNamesToEnglish – this action translates the attribute from source (<NRP>) to target attribute (English). e.g. addressDigest – this action counts MD5 based on <PERSON> attributes and creates Crosswalk for MD5 digest. e.g. autofillSourceName - this action adds SourceName if it not exists to given attributeaction: type: autofillSourceName attribute: AddressesThe logic of the quality engine rule check is as follows:The precondition is checked (if precondition section is not defined, then the default value is True)Then the check is evaluated on specified Entity (if check section is not defined, then by default the action will be executed without check evaluating)If the check will return attributes to process, then the action is executed.Quality rules DOC: "
|
||
},
|
||
{
|
||
"title": "Relation replacer",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Relation+replacer",
|
||
"content": "After getRelation operation is invoked, "Relation Replacer" feature can be activated on returned relation entity object. When entity is merged, <ORGANIZATION> sometimes does not replace objectUri id with new updated value. This process will detect such situation and replace objectUri with correct URI from crosswalk. Relation replacer process operates under the following conditions:Relation replacer will check <ORGANIZATION> and StartObject sections.When objectUri is different from each entity id from crosswalks section, then objectURI is replaced with entity id from crosswalks.When crosswalks contain multiple entries in list and there is a situation that crosswalks list contains different entity uri, relation replacer process ends with the following warning: "Object has more than one possible uri to replace" – it is not possible to decide which entity should be pointed as <ORGANIZATION> or <ORGANIZATION> after merge."
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> server",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/SMTP+server",
|
||
"content": "Access to <ORGANIZATION> server is granted for each region separately:AMERDestination Host: <URL><ORGANIZATION>: 25Authentication: NONEEMEADestination Host: <URL><ORGANIZATION>: 25Authentication: NONEAPACDestination Host: <URL><ORGANIZATION>: 25Authentication: NONETo request access to <ORGANIZATION> server there is need to fill in the <ORGANIZATION> relay registration form through <URL> portal."
|
||
},
|
||
{
|
||
"title": "Airflow",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Airflow",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Overview",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Overview",
|
||
"content": "ConfigurationAirflow is deployed on kubernetes cluster using official airflow helm chart:<PERSON> airflow chart adjustments(creting <ORGANIZATION>'s, k8s jobs, etc.) are located in components repository.Environment's specific configuration is located in cluster configuration <URL>ploymentLocal deploymentAirflow can be easily deployed on local kubernetes cluster for testing purposes. All you have to do is:If deployment is performed on windows machine please make sure that <URL>, <URL>, <URL> and .config files have unix line endings. Otherwise it will cause deployment errors.Edit .config file to enable airflow deployment(and any other component you want. To enable component it needs to have assigned value greater than 0\nenable_airflow=1\nRun ./<URL> file located in main helm directory\n./<URL>\nEnvironment deploymentEnvironment deployment should be performed with great care.If deployment is performed on windows machine please make sure that <URL>, <URL>, <URL> and .config files have unix line endings. Otherwise it will cause deployment errors.Environment deployemnt can be performed after connecting local machine to remote kubernetes <URL>epare airflow configuration in cluster env <URL>just .config file to update airflow(and any other service you want)\nenable_airflow=1\nRun ./<URL> script to update kuberntes clusterCheck if all airflow pods are working correctlyHelm chart configurationYou can find described available configuration in values.yaml file in airflow github repository.<PERSON> chart adjustmentsAdditionally to base airflow kubernetes resources there are created:Kubernetes job used to create additional usersPersistent volume claim for airflow dags data(for each prod/nonprod tenant)Secrets from <URL>cretsWebserver ingressDefinitions: helm templatesDags deploymentDags are deployed using <ORGANIZATION> playbook: install_mdmgw_airflow_services_k8s.ymlPlaybook uses kubectl command to work with airflow <URL> can run this playbook locally:To modify lists of dags that should be deployed during playbook run you have to adjust airflow_components list:e.g.\nairflow_components:\n - lookup_values_export_to_s3\nRun playbook(adjust environment)e.g.\nansible-playbook install_mdmgw_airflow_services.yml -i inventory/emea_dev/inventory\nOr with <PERSON> job:<URL>"
|
||
},
|
||
{
|
||
"title": "Airflow DAGs",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Airflow+DAGs",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "●●●●●●●●●●●●●●● [<URL>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "DescriptionDag used to prepare data from FLEX(US) tenant to be lodaed into <ORGANIZATION> tenant.<ORGANIZATION> kafka connector on FLEX enironment uploads files everyday to <US_DRIVER_LICENSE> bucket as multiple small files. This <ORGANIZATION> takes those multiple files and concatenate them into one. <ORGANIZATION> team downloads this concatenated file from <ORGANIZATION> bucket and upload it into <ORGANIZATION> tenant via batch service.Example<URL>"
|
||
},
|
||
{
|
||
"title": "active_hcp_ids_report",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/active_hcp_ids_report",
|
||
"content": "<ORGANIZATION> report of active hcp's from defined countries.Example<URL> mongo collection from query on entity_history collectionExport collection to excel formatExport report to <ORGANIZATION> directory"
|
||
},
|
||
{
|
||
"title": "<LOCATION> reports",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/China+reports",
|
||
"content": "DescriptionSet of dags that produces <LOCATION> reports on gbl environment that are later sent via email:Single reports are generated by executing the defined queries on mongo, then extracts are published on <ORGANIZATION>. Then main dags download exports from <ORGANIZATION> and send an email with all <URL>in dag example:Report generating <ORGANIZATION> example:Dags listDags executed <DATE_TIME>:china_generate_reports_gbl_prod - main dag that triggers the restchina_affiliation_status_report_gbl_prodchina_dcr_statistics_report_gbl_prodchina_hcp_by_source_report_gbl_prodchina_import_and_gen_dcr_statistics_report_gbl_prodchina_import_and_gen_merge_report_gbl_prodchina_merge_report_gbl_prodDags executed <DATE_TIME>:china_monthly_generate_reports_gbl_prod - main dag that triggers the rest china_monthly_hcp_by_channel_report_gbl_prodchina_monthly_hcp_by_city_type_report_gbl_prodchina_monthly_hcp_by_department_report_gbl_prodchina_monthly_hcp_by_gender_report_gbl_prodchina_monthly_hcp_by_hospital_class_report_gbl_prodchina_monthly_hcp_by_province_report_gbl_prodchina_monthly_hcp_by_source_report_gbl_prodchina_monthly_hcp_by_SubTypeCode_report_gbl_prodchina_total_entities_report_gbl_prod"
|
||
},
|
||
{
|
||
"title": "clear_batch_service_cache",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/clear_batch_service_cache",
|
||
"content": "DescriptionThis dag is used to clear batch-service cache(mongo batchEntityProcessStatus collection). It deletes all records specified in csv file for specified <URL> clear cache batch-service batchController/{batch_name}/_clearCache endpoint is used.Dag used by <LOCATION><URL>put parameters:batchNamefileName\n{\n "fileName": "inputFile.csv",\n "batchName": "testBatchTAGS"\n}\nMain stepsDownload input file from <ORGANIZATION> directorySplits the file so that is has maximum of $partSize recordsExecutes request to batch-service batchController/{batch_name}/_clearCacheMove input file to <ORGANIZATION> archive directoryDeletes temporary workspace from <ORGANIZATION> report with information how many records have been deleted \n{'removedRecords': 1}\n\nExample<URL>"
|
||
},
|
||
{
|
||
"title": "distribute_nucleus_extract",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/distribute_nucleus_extract",
|
||
"content": "DEPRECATEDDescriptionDistributes extracts that are sent by nucleus to <ORGANIZATION> directory between multiple directories for the respective countries that are later used by inc_batch_* dagsInput and output directories are configured in dags configuration file:Dag:<URL>"
|
||
},
|
||
{
|
||
"title": "export_merges_from_reltio_to_s3",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/export_merges_from_reltio_to_s3",
|
||
"content": "DescriptionDag used to schedule Reltio merges export, adjust file format and then uload file to <ORGANIZATION> snowflake <URL>eps:Clearing workspace after previous runCalculating time range for incremental loads. For full exports(eg. export_merges_from_reltio_to_s3_full_emea_prod) this step sets start and end date as None. This way full extract is produced. For incremental loads start and end dates are calculated using last_days_count variableScheduling reltio exportWaiting for reltio export file(<US_DRIVER_LICENSE> sensor).Postprocessing fileUpload file to snowflake directoryExample<URL>"
|
||
},
|
||
{
|
||
"title": "get_rx_audit_files",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/get_rx_audit_files",
|
||
"content": "<ORGANIZATION> files from:SFTP server(external)<US_DRIVER_LICENSE> directory(internal - constant)Files are the uploaded to defined <ORGANIZATION> directory that is later used by inc_batch_rx_audit dag.Example<URL> linksRX_AUDIT"
|
||
},
|
||
{
|
||
"title": "historical_inactive",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/historical_inactive",
|
||
"content": "DescriptionDag used to implement history inactive processSteps:Download csv file with crosswalks of entities to recreateRecreate entities and upload to <ORGANIZATION> directory as <ORGANIZATION> stored procedureExample<URL> History Inactive"
|
||
},
|
||
{
|
||
"title": "hldcr_reconciliation",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/hldcr_reconciliation",
|
||
"content": "DescriptionHL <ORGANIZATION> flow occasionally blocked some <ORGANIZATION>' statuses from being sent to PforceRx in an outbound file, because <ORGANIZATION> has not received an event from <ORGANIZATION>, informing about Change Request resolution. The exact event expected is CHANGE_REQUEST_<URL> prevent the above, HLDCR Reconciliation process runs regularly, doing the following steps:Query MongoDB store (Collection DCRRequests) for <ORGANIZATION> in CREATED status. Export result as <URL>r each VR from the list, generate a CHANGE_REQUEST_CHANGED event and post it to <PERSON>.Further processing is as usual - DCR Service enriches the event with current changeRequest state. If the changeRequest has been resolved, it updates the status in <LOCATION>"
|
||
},
|
||
{
|
||
"title": "HUB Reconciliation process",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/HUB+Reconciliation+process",
|
||
"content": "The reconciliation process was created to synchronize Reltio with HUB. Because Reltio sometimes does not generate events, and therefore these events are not consumed by HUB from the <ORGANIZATION> queue and the HUB platform is out of sync with <ORGANIZATION> data. External Clients dose not receive the required changes, which cause that multiple systems are not consistent. To solve this problem this process was designed. The fully automated reconciliation process generates these missing events. Then these events are sent to the inbound <PERSON> topic, HUB platform process these events, updates mongo collection and route the events to external Clients <URL>rflowThe following diagram presents the reconciliation process steps:This directed acyclic diagram presents the steps that are taken to compare <ORGANIZATION> and HUB and produce the missing events. This diagram is divided into the following sections:Initialization and Reltio Data preparation - in this section the process invokes the Reltio export, and upload full export to <URL>ean_dirs_before_init, init_dirs, timestamp – these 3 tasks are responsible for the directory structure preparation required in the further steps and timestamp capture required for the reconciliation process. Reltio and HUB data changes in time and the export is made at a specific point in time. We need to ensure that during comparison only entities that were changed before <ORGANIZATION> are compared. This requirement guarantee that only correct events are generated and consistent data is compared. entities_export – the task invokes the Reltio Export API and triggers the export job in Reltio sensor_s3_reltio_file – this task is an <ORGANIZATION> bucket sensor. Because the Reltio export job is an asynchronous task running in the background, the file sensor checks the <ORGANIZATION> location ‘hub_reconciliation/<ENV>/RELTIO/inbound/’ and waits for export. When the success criteria are met, the process exits with success. The timeout for this job is set to <DATE_TIME>, the poke interval is set to <DATE_TIME>. download_reltio_s3_file, unzip_reltio_export, mongo_import_json_array, generate_mongo_indexes – these 4 tasks are invoked after successful export generation. Zip is downloaded and extracted to the <ORGANIZATION> file, then this file is uploaded to mongo collection. The generate_mongo_indexes task is responsible for generating mongo indexes in the newly uploaded collection. The indexes are created to optimize performance. archive_flex_s3_file_name – After successful mongo import Reltio export is archived for future reference. HUB validation - Reltio ↔ HUB comparison - the main comparison and events generation logic is invoked in this SUB DAG. The details are described in the section below. Events generation - after data comparison, generated events are sent to selected <PERSON> <URL>en standard events processing begins. The details are described in HUB <URL>ease check the following documents to find more details: Entity change events processing (Reltio)Event filtering and routing rulesProcessing events on client sideHUB validation - Reltio ↔ HUB comparisonThis directed acyclic diagram (SUB DAG) presents the steps that are taken to compare HUB and <ORGANIZATION> data in both directions. Because <ORGANIZATION> data is already uploaded and HUB (“entityHistory”) collection is always available we can immediately start the comparison process. mongo_find_reltio_hub_differnces - this process compares <ORGANIZATION> data to HUB data. <PERSON> aggregation pipeline matches the entities from Reltio export to HUB profiles located in mongo collection by entity URI (ID). All Reltio profiles that are not presented in Reltio export data are marked as missing. All attributes in <ORGANIZATION> are compared to HUB profile attributes - based on this when the difference is found, it means that the profile is out of sync and new even should be generated. Based on these changes the HCP_CHANGED or HCO_CHANGED events are generated.When the profile is missing the HCP_CREATED or HCO_CREATED events are generated. mongo_find_hub_reltio_differnces - this process compares HUB entities to <ORGANIZATION> data. The process is designed to find only missing entities in <ORGANIZATION>, based on these changes the HCP_REMOVED or HCO_REMOVED events are generatedMongo aggregation pipeline matches the entities from HUB mongo collection to Reltio profiles by entity URI (ID). All HUB profiles that are not presented in Reltio export data are marked as missing for future reference. mongo_generate_hub_events_differences - this task is related to the automated reconciliation process. The full process is described in this <URL>nfiguration and schedulingThe process can be started in <ORGANIZATION> on demand. The configuration for this process is stored in the MDM Environment configuration repository. The following section is responsible for the HUB Reconciliation process activation on the selected environment:\nactive_dags:\n gbl_dev:\n - hub_<URL>\nThe file is available in "inventory/scheduler/group_vars/all/all.yml"To activate the Reconciliation process on the new environment the new environment should be added to "active_dags" <URL>en the "ansible-playbook install_airflow_dags.yml" needs to be invoked. After this new process is ready for use in <ORGANIZATION>. Reconciliation process To synchronize Reltio with HUB and therefore synchronize profiles in <ORGANIZATION> with external Clients the fully automated process is started after full HUB<->Reltio comparison. this is the "mongo_generate_hub_events_differences" task. The automated reconciliation process generates events. Then these events are sent to the inbound <PERSON> topic, HUB platform process these events, updates mongo collection and route the events to flex <URL>e following diagram presents the reconciliation steps:Automated reconciliation process generates events:The following events are generated during this process:HCO_CHANGED / HCP_CHANGED - In this case, <ORGANIZATION> has not generated ENTITY_CHANGED event for the entityBased on Reltio to HUB comparison, when the comparison result contains ATTRIBUTE_VALUE_MISSING or <PERSON> for the entity the event is <URL>e events are aggregated based on <ORGANIZATION> so only one change event for the selected entity is generatedHCO_CREATED / HCP_CHANGED - In this case, <ORGANIZATION> has not generated ENTITY_CREATED event for the entityBased on Reltio to HUB comparison when the comparison result contains ENTITY_MISSING difference the create event is generated. It means that <ORGANIZATION> contains the entity and this entity is missing HUB mongo collection, so there is a need to generate and send missing CREATED events.HCO_REMVED - In this case, <ORGANIZATION> has not generated ENTITY_REMOVED event for the entityBased on HUB to Reltio comparison when the comparison result contains ENTITY_MISSING difference the delete event is generated. It means that the HUB cache contains an additional entity that was deactivated/removed from the <ORGANIZATION> system, so there is a need to generate and send the missing REMOVED events.HCO_MERGED and HCO_LOST_MERGE - In this case, <ORGANIZATION> has not generated an ENTITY_MERGED event for the winner entity and <ORGANIZATION> for the looser <URL>sed on Reltio extracted data and HUB mongo cache these events are generated.Entities from source <ORGANIZATION> data are matched by crosswalk value with <ORGANIZATION> data.When Reltio entity <ORGANIZATION> does not match the Mongo Entity URI and <ORGANIZATION> does not contain entity presented in <PERSON> and data that was matched by crosswalk value, it means that this entity was merged in <URL>en MERGED and <LOCATION> event is generated for these entities.2. Next, Event Publisher receives events from the internal <PERSON> topic and calls <PERSON> to retrieve the latest state of <ORGANIZATION>. Entity data in <ORGANIZATION> is added to the event to form a full event. For REMOVED events, where Entity data is by definition not available in Reltio at the time of the event, Event Publisher fetches the cached Entity data from <PERSON> database instead.3. Event Publisher extracts the metadata from Entity (type, country of origin, source system).4. Entity data is stored in the MongoDB database, for later use5. For every Reltio event, there are two <ORGANIZATION> events created: one in Simple mode and one in <ORGANIZATION> (full) mode. Based on the metadata, and Routing Rules provided as a part of application configuration, the list of the target destinations for those events is created. The event is sent to all matched destinations to the target topic (<env>-out-full-<client>) when the event type is full or (<env>-out-simple-<client>) when the event type is simple. "
|
||
},
|
||
{
|
||
"title": "HUB Reconciliation Process <US_DRIVER_LICENSE>",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/HUB+Reconciliation+Process+<US_DRIVER_LICENSE>",
|
||
"content": "Hub reconciliation process is starting from downloading <URL>perties file with following information:reconciliationType - reconciliation type - possible values: FULL_RECONCILIATION or <PERSON> (since last run)eventType - event type - it is used in in generating events for kafka - possible values: FULL or CROSSWALK_ONLYreconcileEntities - if set to true entities will be reconciliatedreconcileRelations - if set to true relations will be reconciliatedreconcileMergeTree - if set to true mergeTree will be reconciliatedSets hub reconciliation properties in the processIf reconcileEntities is set to true that process for reconciliate entities is started<entities_get_last_timestamp> Process gets last timestamp when entities was lately exported<entities_export> Entities export is triggered from Reltio - this step is done by groovy script<entities_export_sensor> Process is checking if export is finished by verifing if the file <ORGANIZATION> with <PERSON> exists on <ORGANIZATION> folder /us/<env>/inboud/hub/hub_reconciliation/entities/inbound/entities_export_<timestamp><entities_set_last_timestamp> In this step process is setting timestamp for future reconciliation of entities - it is set in airflow variables<entities_generate_hub_reconciliation_events> this step is responsible for checking which entities has been changed and generate events for changed entitiesfirstly we get export file from <ORGANIZATION> folder /us/<env>/inboud/hub/hub_reconciliation/entities/inbound/entities_export_<timestamp>we unzip the file in bash scriptfor the unzipped file we there are two optionsif we <ORGANIZATION> than calculateChecksum groovy script is executed which calculates checksum for exported entities and generates <ORGANIZATION> only with checksumif we don't <ORGANIZATION> than <ORGANIZATION> is generated with whole entityin the last step we send those generated events to specified kafka topics Events from topic will be processed by reconciliation serviceReconciliation service is checking basing on checksum change/changes if <ORGANIZATION> should be generated it compares checksum if it exists from <ORGANIZATION> with the one that we have in entityHistory tableit compares entity objects from <ORGANIZATION> with the one that we have in mongo in entityHistory table if checksum is absent - objects on both sides are normalized before compare processit compares SimpleCrosswalkOnlyEntity objects if CROSSWALK_ONLY reconciliation event type is choosen<entities_export_archive> - move export folder on <ORGANIZATION> from inbound to archive <PERSON>. If reconcileRelations is set to true that process for reconciliate relations is started<relations_get_last_timestamp> Process gets last timestamp when relations was lately exported<relations_export> Relations export is triggered from Reltio - this step is done by groovy script<relations_export_sensor> Process is checking if export is finished by verifing if the file <ORGANIZATION> with <PERSON> exists on <ORGANIZATION> folder /us/<env>/inboud/hub/hub_reconciliation/relations/inbound/relations_export_<timestamp><relations_set_last_timestamp> In this step process is setting timestamp for future reconciliation of relations - it is set in airflow variables<relations_generate_hub_reconciliation_events> this step is responsible for checking which relations has been changed and generate events for changed relationsfirstly we get export file from <ORGANIZATION> folder /us/<env>/inboud/hub/hub_reconciliation/relations/inbound/relations_export_<timestamp>we unzip the file in bash scriptfor the unzipped file we there are two optionsif we <ORGANIZATION> than calculateChecksum groovy script is executed which calculates checksum for exported relations and generates <ORGANIZATION> only with checksumif we don't <ORGANIZATION> than <ORGANIZATION> is generated with whole relationin the last step we send those generated events to specified kafka topic Events from topic will be processed by reconciliation serviceReconciliation service is checking basing on checksum change/object changes if <ORGANIZATION> should be generated it compares checksum if it exists from <ORGANIZATION> with the one that we have in mongo in entityRelation <LOCATION> compares relation objects from <ORGANIZATION> with the one that we have in mongo in entityRelation table if checksum is absent - objects on both sides are normalized before compare processit compares SimpleCrosswalkOnlyRelation objects if CROSSWALK_ONLY reconciliation event type is choosen<relations_export_archive> - move export folder on <ORGANIZATION> from inbound to archive <ORGANIZATION>. If reconcileMergeTree is set to true that process for reconciliate relations is started<merge_tree_get_last_timestamp> Process gets last timestamp when merge tree was lately exported<merge_tree_export> Merge tree export is triggered from Reltio - this step is done by groovy script<merge_tree_export_sensor> Process is checking if export is finished by verifing if the file <ORGANIZATION> with <PERSON> exists on <ORGANIZATION> folder /us/<env>/inboud/hub/hub_reconciliation/merge_tree/inbound/merge_tree_export_<timestamp><merge_tree_set_last_timestamp> In this step process is setting timestamp for future reconciliation of merge tree - it is set in airflow variables<merge_tree_generate_hub_reconciliation_events> this step is responsible for checking which merge tree has been changed and generate events for changed merge tree objectsfirstly we get export file from <ORGANIZATION> folder /us/<env>/inboud/hub/hub_reconciliation/merge_tree/inbound/merge_tree_export_<timestamp>we unzip the file in bash scriptfor the unzipped file we there are two optionsif we <ORGANIZATION> than calculateChecksum groovy script is executed which creates ReconciliationMergeEvent with uri of the main object and list of loosers uriif we don't <ORGANIZATION> than <ORGANIZATION> is generated with whole merge tree objectin the last step we send those generated events to specified kafka topic Events from topic will be processed by reconciliation serviceReconciliation service is sending merge and lost_merger PublisherEvent for winner and every looser<merge_tree_export_archive> - move export folder on <ORGANIZATION> from inbound to archive folder"
|
||
},
|
||
{
|
||
"title": "import_merges_from_reltio",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/import_merges_from_reltio",
|
||
"content": "DescriptionSchedules reltio merges export, and imports it into <URL>is <ORGANIZATION> is scheduled by china_import_and_gen_merge_report and data imported into mongo are used by china_merge_report to generate <LOCATION> raport filesExample<URL>"
|
||
},
|
||
{
|
||
"title": "import_pfdcr_from_reltio",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/import_pfdcr_from_reltio",
|
||
"content": "DescriptionSchedules reltio entities export, download it from <ORGANIZATION>, make small changes in export and import into <URL>is <ORGANIZATION> is scheduled by china_import_and_gen_dcr_statistics_report and data imported into mongo is used by china_dcr_statistics_report to generate <LOCATION> raport filesExample<URL>"
|
||
},
|
||
{
|
||
"title": "inc_batch",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "DescriptionProces used to load idl files stored on <ORGANIZATION> into <ORGANIZATION>. This dags is basing on mdmhub inc_batch_channel <URL><ORGANIZATION> batch instance in mongo using batch-service /batchController endpointDownload idl files from <ORGANIZATION> directoryExtract compressed archivesPreprocess files(eg. dos2unix )Run inc_batch_channel componentArchive input files and reportsExample<URL>"
|
||
},
|
||
{
|
||
"title": "Initial events generation process",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Initial+events+generation+process",
|
||
"content": "Newly connected clients doesn't have konwledge about entities which was created in MDM before theirs connecting. Due to this the initial event loading process was designed. Process loads events about already existing entities to client's kafka topic. Thanks this the new client is synced with <URL>rflowThe process was implemented as <ORGANIZATION>'s DAG:Process steps:prepareWorkingDir - prepares directories structure required for the process,getLastTimestamp - gets time marked of last process execution. This marker is used to determine which of events has been sent by previously running process. If the process is run first time the marker has always 0 value,getTimestamp - gets current time marker,generatesEvents - generates events file based on current <PERSON> state. Data used to prepare event messages is selected based on condition <URL>stModificationDate > lastTimestamp,divEventsByEventKind - divides events file based on event kind: simple or full,loadFullEvents* - it is a group of steps that populates full events to specific topic. The amount of this steps is based on amount of topics specified in configuration,loadSimpleEvents* - similar to above, those steps populates simple events to specific topic. The amount of this steps is based on amount of topics specified in configuration,setLastTimestamp - save current time marker. It will be used in the next process execution as last time <URL>nfiguration and schedulingThe process can be started on <URL>e <ORGANIZATION>'s configuration is stored in the MDM Environment configuration <URL> enable the process on specific environment:Its should be valid with template "generate_events_for_[client name]" and added to the list "airflow_components" which is defined in "inventory/[env name]/group_vars/gw-airflow-services/all.yml" file,Create configuration file in "inventory/[env name]/group_vars/gw-airflow-services/generate_events_for_[client name].yml" with content as below:The process configuration\n---\n\ngenerate_events_for_test_name: "generate_events_for_test" #Process name. It has to be the same as in "airflow_components" list avaiable in all.yml\ngenerate_events_for_test_base_dir: "{{ install_base_dir }}/{{ generate_events_for_test_name }}"\ngenerate_events_for_test:\n dag: #Airflow's DAG configuration section\n template: "generate_<URL>" #do not change\n variables:\n DOCKER_URL: "tcp://<URL>:2376" #do not change\n dataDir: "{{ generate_events_for_test_base_dir }}/data" #do not change\n configDir: "{{ generate_events_for_test_base_dir }}/config" #do not change\n logDir: "{{ generate_events_for_test_base_dir }}/log" #do not change\n tmpDir: "{{ generate_events_for_test_base_dir }}/tmp" #do not change\n user:\n id: "7000" #do not change\n name: "mdm" #do not change\n groupId: "<DATE_TIME>" #do not change\n groupName: "docker" #do not change\n mongo: #mongo configuration properties\n host: "localhost"\n port: "27017"\n user: "mdm_gw"\n password: "{{ secret_generate_events_for_<URL>ssword }}" #password is taken from the secret.yml file\n authDB: "reltio"\n kafka: #kafka configuration properties\n username: "hub"\n password: "{{ secret_generate_events_for_<URL>ssword }}" #password is taken from the secret.yml file\n servers: "<IP_ADDRESS>:9094"\n properties:\n "<URL>tocol": SASL_SSL\n "<URL>chanism": PLAIN\n "<URL>uststore.location": /opt/kafka_utils/config/kafka_truststore.jks\n "<URL>ssword": "{{ secret_generate_events_for_<URL>perties.sslTruststorePassword }}" #password is taken from the secret.yml file\n "<PERSON>": ""\n countries: #Events will be generated only for below countries\n - CR\n - BR\n targetTopics: #Target topics list. It is array of pairs topic name and event Kind. Only simple and full event kind are allowed.\n - topic: dev-out-simple-int_test\n eventKind: simple\n - topic: dev-out-full-int_test\n eventKind: full\n\n...\nthen the playbook install_mdmgw_services.yml needs to be invoked to update runtime configuration."
|
||
},
|
||
{
|
||
"title": "lookup_values_export_to_s3",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/lookup_values_export_to_s3",
|
||
"content": "<ORGANIZATION> used to extract lookup values from mongo and upload it to <ORGANIZATION>. The file from <ORGANIZATION> i then pulled into snowflake.Example<URL>"
|
||
},
|
||
{
|
||
"title": "MAPP IDL Export process",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/MAPP+IDL+Export+process",
|
||
"content": "<ORGANIZATION> used to generate excel with entities export. Export is based on two monogo collections: lookupValues and entityHistory. Excel files are then uploaded into <US_DRIVER_LICENSE> directoryExcels are used in <ORGANIZATION> process on gbl_prod environment.Example<URL>"
|
||
},
|
||
{
|
||
"title": "mapp_update_idl_export_config",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/mapp_update_idl_export_config",
|
||
"content": "<ORGANIZATION> is used to update configuration of mapp_idl_excel_template dags stored in <URL>nfiguration is stored in mappExportConfig collection and consists of information about configuration and crosswalks order for each country.Example<URL>"
|
||
},
|
||
{
|
||
"title": "merge_unmerge_entities",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/merge_unmerge_entities",
|
||
"content": "DescriptionThis dag implements batch <ORGANIZATION> merge & unmerge process. It download file from <ORGANIZATION> with list of files to merge or unmerge and then process documents. To process documents batch-service is used. After documents are processed report is generated and transferred to <ORGANIZATION> directory.FlowBatch service batch creationDownloading source file from s3Input file conversion to unix formatFile processingRecords are sent to batch service using /bulkService <URL>ter all entities are sent then <PERSON> stage is closed and statistics are written to stage statisticsWaiting for batch to be completedrecords sent to batch service are then transferred to manager internal topic and then processed by manager which sends requests to Reltio. If all events are processed then batch processing stage is closed which causes whole batch to be <URL> is generated using batchEntittyProcessStatus mongo collection and saved in temporary report collectionReport is exported and saved in <ORGANIZATION> bucket altogether with input fileInput directory is cleared Tmp report mongo collection is dropped <PERSON>"
|
||
},
|
||
{
|
||
"title": "micro_bricks_reload",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/micro_bricks_reload",
|
||
"content": "DescriptionDag extract data from snowflake table that contains microbricks exceptions. Data is then <NRP> in git repository from where it will be pulled by consul and loaded into mdmhub components.If microbricks mapping file has changed since <DATE_TIME> run then we'll wait for mapping reload and copy events from {{ env_name }}-internal-microbricks-changelog-events topic into {{ env_name }}-internal-microbricks-changelog-reload-events"Example<URL>"
|
||
},
|
||
{
|
||
"title": "move_ods_",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "DescriptionDag copies files from external source <US_DRIVER_LICENSE> buckets and uploads them to our internal <US_DRIVER_LICENSE> bucket to the desired location. This data is later used in inc_batch_* dagsExample<URL>"
|
||
},
|
||
{
|
||
"title": "rdm_errors_report",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/rdm_errors_report",
|
||
"content": "DEPRECATEDDescriptionThis dags generate report with all rdm errors from <ORGANIZATION> collection and publish it to <US_DRIVER_LICENSE> bucket.Example<URL>"
|
||
},
|
||
{
|
||
"title": "reconcile_entities",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/reconcile_entities",
|
||
"content": "Details:Process allowing export data from mongo based on query and generate <URL> request for each package or generate a flat file from exported entities and push to <PERSON> <URL>eps:Pull config from requeste.g. {'entitiesQuery': {'country': {'$in': ['FR']}, 'sources': {'$in': ['ONEKEY']}}}Drop mongo collections used in previous runGenerating list of entities and/or relations to reconcile using provided queryTrigger /reconciliation/entities and/or /reconciliation/relations endpoint for all entities and relations from the list from previous step. This will cause generating Reltio event and sending it to <ORGANIZATION> processing.Example<URL>"
|
||
},
|
||
{
|
||
"title": "reconciliation_ptrs",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/reconciliation_ptrs",
|
||
"content": "DEPRECATEDDetailsProcess allowing to reconcile events for ptrs source.Logic: Reconciliation processSteps:Downloading input file with checksums from <ORGANIZATION> directoryDrop mongo collections used in previous runInporting input file into mongo reconciliation_ptrs collection and prepare output collection reconciliationRecords_ptrsTrigger /resendLastEvent publisher endpoint to resend event for each entity from input file that checksum differs. This will cause event to be generated to ptrs output topicExample<URL>"
|
||
},
|
||
{
|
||
"title": "reconciliation_snowflake",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/reconciliation_snowflake",
|
||
"content": "<ORGANIZATION> allowing to reconcile events for snowflake topic.Logic: Reconciliation processSteps:Downloading input file with entities checksums from <ORGANIZATION> directoryDrop mongo collections used in previous runInporting input file into mongo reconciliation_snowflake collection and prepare output collection reconciliationRecords_snowflakeTrigger /resendLastEvent publisher endpoint to resend event for each entity from input file that checksum differs. This will cause event to be generated to snowflake topic and consumed by snowflake kafka connectorExample<URL>"
|
||
},
|
||
{
|
||
"title": "Kubernetes",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Platform Overview",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Platform+Overview",
|
||
"content": "In the latest physical architecture, <ORGANIZATION> services are deployed in <LOCATION> clusters managed by <ORGANIZATION> (PDKS)There are non-prod and prod cluster for each region: <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> ArchitectureThe picture below presents the layout of HUB services in <LOCATION> cluster managed by <ORGANIZATION> NodesThere are two groups of nodes:Static, stateful nodes that have <ORGANIZATION> storage configured dedicated for running backend stateful servicesInstance Type: <US_DRIVER_LICENSE>.2xlargeNode labels: <URL> nodes - dedicated for stateless services that are dynamically scaledInstance Type: <US_DRIVER_LICENSE>.2xlargeNode labels: <URL> storage appliance is used to manage persistence volumes required by stateful <URL>nfiguration: Default storage Class: pwx-repl2-scReplication: 2Operators MDM HUB uses <US_DRIVER_LICENSE> operators to manage applications like:Application NameOperator (with <ORGANIZATION> operator0.6.2KafkaStrimzi0.27.xElasticSearchElasticsearch operator1.9.0PrometheusPrometheus operator8.7.3MonitoringCluster are monitored by local <ORGANIZATION> service integrated with central Prometheus and <PERSON> services For details got to monitoring section.Logging All logs from HUB components are sent to Elastic service and can be discovered by <PERSON> <URL>r details got to <PERSON> dashboard section. Backend componentsNameVersionMongoDB4.2.6Kafka2.8.1ElasticSearch7.13.1Prometheus2.15.2Scaling TO BE ImplementationKubernetes objects are implemented using helm - package manager for <ORGANIZATION>. There are several modules that connected together makes the <PERSON> application:operators - delivers a set of operators used to manage backend components of <PERSON>: Mongo operator, <PERSON> operator, <ORGANIZATION> operator, <LOCATION> operator and <ORGANIZATION> operator,consul - delivers consul server instance, user management tools and git2consul - the tool used to synchronize consul key-value registry with a git repository,airflow - deploys an instance of Airflow server,eck - using <ORGANIZATION> operator creates EFK stack - Kibana, <ORGANIZATION> and <PERSON>,<PERSON> - installs <PERSON> server,kafka-resources - installs <PERSON> topics, <PERSON> connector instances, managed users and <ORGANIZATION>,<LOCATION> - using <LOCATION> operators installs a <LOCATION> server,<LOCATION>-resources - delivers basic <LOCATION> configuration: users, plugins etc,mongo - installs mongo server instance, configures users and their permissions,monitoring - install <ORGANIZATION> server and exporters used to monitors resources, components and endpoints,migration - a set of tools supported migration from old (<ORGANIZATION> based environments) to new <ORGANIZATION> infrastructure,mdmhub - delivers the <ORGANIZATION> components, their configuration and <URL>l above modules are stored in application source code as a part of module <URL>nfigurationThe runtime configuration is stored in mdm-hub-cluster-env repository. Configuration has following structure:[region]/ - MDMHUB rerion eg: <LOCATION>, amer, <ORGANIZATION> <NRP> - cluster class. <PERSON> or prod values are possible, namespaces/ - logical spaces where <PERSON> coponents are deployed monitoring/ - configuration of prometheus stack service-monitors/ values.yaml - namespace level variables [region]-dev/ - specific configuration for dev env eg.: <PERSON>, hub components configuration config_files/ - MDMHUB components configuration files all|mdm-manager|batch-service|.../ values.yaml - variables specific for dev env. kafka-topics.yaml - kafka topic configuration [region]-qa/ - specific configuration for qa env config_files/ all|mdm-manager|batch-service|.../ [region]-stage/ - specific configuration for stage env config_files/ all|mdm-manager|batch-service|.../ values.yaml kafka-topics.yaml [region]-prod/ - specific configuration for prod env config_files/ all|mdm-manager|batch-service|.../ values.yaml kafka-topics.yaml [region]-backend/ - backend services configuration: EFK stack, <PERSON>, <PERSON> etc. <PERSON> #eck specific files values.yaml kong/ - configuration of <LOCATION> proxy values.yaml airflow/ - configuration of <ORGANIZATION> scheduler values.yaml users/ #users configuration mdm_test_user.yaml callback_service_user.yaml ... values.yaml #cluster level variables secrets.yaml #cluster level sensitive data values.yaml #region level variablesvalues.yaml #values common for all environments and <URL> #implementation of deployment procedureApplication is deployed by <URL> script. The script does this in the following steps:Decrypt sensitive data: passwords, certificates, token, etc,Prepare the order of values and secrets precedence (the last listed variables override all other variables):common values for all environments,region values,cluster variables,users values,namespace <URL> helm package,Do some package customization if required,Install helm package to the selected <URL>ploymentBuildJob: mdm-hub-inbound-services/feature/kubernatesDeployAll Kubernetes deployment jobsAMER:Deploy backend: <LOCATION>, <PERSON>, mongoDB, EFK, Consul, <ORGANIZATION>, <ORGANIZATION> MDM HUBAdministrationAdministration tasks and standard operating procedures were described here."
|
||
},
|
||
{
|
||
"title": "Migration guide",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Migration+guide",
|
||
"content": "Phase 0Validate configuration:validate if all configuration was moved correctly - compare application.yml files, check topic name prefix (on k8s env the prefix has 2 parts), check Reltio confguration etc,Check if reading event from <ORGANIZATION> is disabled on k8s - reltio-subscriber,Check if reading evets from MAP <ORGANIZATION> is disabled on k8s - map-channel,Check if event-publisher is configured to publish events to old <PERSON> - all client topics (*-out-*) without <URL>eck if network traffic is opened:from old servers to new REST api endpoint,from k8s cluster to old <PERSON>,from k8s cluster to old REST <ORGANIZATION> endpoint,Make a mongo dump of data collections from mongo - remember start date and time:find mongo-migration-* pod and run shell on <URL> /opt/mongo_utils/datamkdir datacd datanohup <URL> <source database schema> &start date is shown in the first line of log file:head <ORGANIZATION> nohup.out #example output → [Mon Jul 4 12:09:32 UTC 2022] Dumping all collections without: entityHistory, entityMatchesHistory, entityRelations and <ORGANIZATION> from source database mongovalidate the output of dump tool by:cd /opt/mongo_utils/data/data <ORGANIZATION> tail -f nohup.outRestore dumped collections in the new mongo instance:cd /opt/mongo_utils/data/datamv nohup.out nohup.out.dumpnohup <URL> dump/ <target database schema> <source database schema> &tail -f nohup.out #validate the outputValidate the target database and check if only entityHistory, entityMatchesHistory, entityRelations and <ORGANIZATION> coolections were copied from source. If there are more collections than mentioned, you can delete <URL>eate a new consumer group ${new_env}-event-publisher for sync-event-publisher component on topic ${old_env}-internal-reltio-proc-events located on old <PERSON> instance. Set offset to start date and time of mongo dump - do this by command line client because <PERSON> has a problem with this action,Configure and run sync-event-publisher - it is responsible for the synchronization of mongo DB with the old environment. The component has to be connected with the old <PERSON> and Manager and the routing rules list has to be empty,Phase 1(External clients are still connected to old endpoints of rest services and kafka):Check if something is waiting for processing on kafka topics and there are active batches in batch service,If there is a data on kafka topics stop subscriber and wait until all data in enricher, callback and publisher will be processed. Check it out by monitoring input topics of these components,Wait unit all data will be processed by the snowflake connector,Disable <PERSON> jobs,Stop outbound (mdmhub) components,Stop inbound (mdmgw) components,Disable all <ORGANIZATION>'s DAGs assigned to the migrated environment,Turn off the snowflake connector at the old environment,Turn off sync-event-publisher on k8s environment,<ORGANIZATION> to copy mongo databases - copy only collections with caches, data collections were synced before (mongodump + sync-event-publisher). Before start check collections in old mongo instance. You can delete all temporary collections lookup_values_export_to_s3_*, reconciliation_* etc.#dumpingcd /opt/mongo_utils/datamkdir non_datacd non_datanohup <URL> <source database schema> &tail -f nohup.out #validate the output#restoringnohup <URL> dump/ <target database schema> <source database schema> &tail -f nohup.out #validate the outputEnable reltio subscriber on <PERSON> - check <ORGANIZATION> credentials and turn on <ORGANIZATION> route,Enable processing events on MAP <ORGANIZATION> queues - if map-channel exists on migrated environment,<LOCATION>:forward all incoming traffic to the new instance of <NRP> rules for <ORGANIZATION> paths from: \n MR-3140\n -\n Getting issue details...\n STATUS\n Delete all plugins <ORGANIZATION> and key-auth plugins <URL> might be required to remove routes, when <ORGANIZATION> playbook will throw a duplication error <URL> Snowflake connector located at k8s cluster, Turn on components (without sync-event-publisher) on k8s environment,Change api url and secret (manager apikey) in snowflake deployment configuration (Ansible)Chnage api key in depenedent <ORGANIZATION> <URL>stall <PERSON> dashboards,Add mappings to <ORGANIZATION>,Add transaction topics to <URL>ase 2 (Environment run in K8s):Run Kibana Migration Tool to copy indexes, - after migration,<ORGANIZATION> to copy all data from old output topics to new <URL>ase 2 (All external clients confirmed that they switched their applications to new endpoints):Wait until all clients will be switched to new endpoints,Phase 3 (All environments are migrated to kubernetes):Stop old mongo instance,Stop fluentd and kibana,<PERSON> and <LOCATION> at old environment,Decommission old environment <URL> remember after migrationReview <ORGANIZATION> requests on k8s <URL> + Resource management for components - doneMongoDB on k8s has only 1 instanceKong <ORGANIZATION> delete plugin - <URL> add consul-server service to ingress - consul ui already exposes <ORGANIZATION> <URL> UI redirect doesn't work due to consul being stubborn about using /ui path. Decision: skip this, send client new consul address Fix issue with <ORGANIZATION> manage and batch-service <ORGANIZATION> user being duplicated in mappings - doneVerify if mdm hub components are using external api address and switch to internal k8s service address - checked, confirmed nothing is using external addressesCheck if Portworx requires setting affinity rules to be running only on 3 nodesakhq - disable default k8s token automount - done"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> tests",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/PDKS+Cluster+tests",
|
||
"content": "<ORGANIZATION> used in testsAPI: <URL> resources3 static EC2 nodesCPU reserved >67%RAM reserved >67%0-4 dynamic EC2 nodes in <ORGANIZATION>, scaled based on loadEach <ORGANIZATION> app deployed in 1 replica, so no <URL>over testsExpected resultsNo downtimes of <ORGANIZATION> and all services exposed to <URL>enarioOne EKS node downForce node drain with timeout and grace period set to low <DATE_TIME>. ResultsOne EKS node <ORGANIZATION> was unavailable for ~1 or ~3 minutes. Unavailability was handled correctly by <LOCATION> by sending HTTP 500 responsesStatic nodes resources were reserved in more than 67%, so draining 1 of 3 nodes caused scaling up dynamic nodesEvery time <PERSON> managed to start new pod and heal all servicesThere was no need for manual operational work to fix anythingConclusionsTest was partially successfulFailover workedAPI downtime was shortNo operational work was requiredTo remove risk of services unavailabilityIncrease number of <ORGANIZATION> instancesTo reduce time of services unavailabilityTest if reducing <ORGANIZATION> time of a Pod to less than 60s could workScale testsExpected resultsEKS node scaling up and down should be automatic based on cluster capacity. ScenariosScale pods up, to overcome capacity of static <ORGANIZATION>, then scale <URL>sultsScale up and down test was carried out while doing failover tests. When 1 of 3 static nodes became unavailable, <ORGANIZATION> scaled up number of dynamic instances. First to 1 and then to 2. After a static node was once again operational, <ORGANIZATION> scaled down dynamic nodes to <URL>nclusions"
|
||
},
|
||
{
|
||
"title": "Portworx - storage administration guide",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Portworx+-+storage+administration+guide",
|
||
"content": "<ORGANIZATION> is not longer used in <ORGANIZATION> clustersPortworx, what is it?Commercial product, validated storage solution and a standard for <ORGANIZATION> clusters. It uses AWS EBS volumes, adds a replication and provides a k8s storage class as a result. It then can be used just as any k8s storage by defining PVC. What problem does it solve?How to:use Portworx storageConfigure Persistent Volume Claim to use one of <ORGANIZATION> configured on <ORGANIZATION> classes are availablepwx-repl2-sc - storage has 2 replicas - use on non-prodpwx-repl3-sc - storage has 3 replicasextend volumesIn <PERSON> just change PVC requested size and deploy changes to a cluster with a <PERSON> job. No other action should be required. Example change: MR-3124 change persistent volumes claimscheck status, statistics and alertsTBDOne of the tools should provide volume status and statistics:<URL> is responsible for what is described in the table below. In short: if any change in <ORGANIZATION> setup is required, create a support ticket to a queue found on Support information with queues names <URL><ORGANIZATION> (If link doesn't work, go to <URL> search in "PDKS Docs" section for "WTST-0299 <ORGANIZATION> Platform Standards")Kubernetes Portworx storage class documentationPortworx on <LOCATION> docs"
|
||
},
|
||
{
|
||
"title": "Resource management for components",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Resource+management+for+components",
|
||
"content": "<ORGANIZATION> components resources are managed automatically by the Vertical Pod Autoscaler - table below is no longer applicableK8s resource requests vs limits Quotes on how to understand <ORGANIZATION> resource limitsrequests is a guarantee, limits is an obligationGalo NavarroWhen you create a Pod, the <ORGANIZATION> scheduler selects a node for the Pod to run on. Each node has a maximum capacity for each of the resource types: the amount of <ORGANIZATION> and memory it can provide for Pods. The scheduler ensures that, for each resource type, the sum of the resource requests of the scheduled containers is less than the capacity of the node. Note that although actual memory or <ORGANIZATION> resource usage on nodes is very low, the scheduler still refuses to place a Pod on a node if the capacity check fails. This protects against a resource shortage on a node when resource usage later increases, for example, during a <DATE_TIME> peak in request <URL> Pods with resource requests are <ORGANIZATION> resource configuration per componentIMPORTANT: table is outdated. The current <ORGANIZATION> and memory configuration are in mdm-hub-cluster-env git repository.<ORGANIZATION> [m]Memory [Mi]ComponentRequestLimitRequestLimitmdm-callback-servi<MEDICAL_LICENSE>16002560mdm-hub-reltio-subscriber2001000400640mdm-hub-event-publisher20020008001280mdm-hub-entity-enricher20020008001280mdm-api-rout<MEDICAL_LICENSE>8001280mdm-manag<MEDICAL_LICENSE>10002000mdm-reconciliation-servi<MEDICAL_LICENSE>16002560mdm-batch-service20020008001280Kafka500400010000 (<PERSON> agent200400200500Elasticsearch5002000800020000Kibana100200010241536Airflow - scheduler2007005122048Airflow - webserver2007002561024Airflow - postgresql250-256-Airflow - stat<MEDICAL_LICENSE>56512Consul100500256512git2consul100500256512Kong10020005122048Prometheus200100015363072Legendrequires tuningproposaldeployedUseful linksLinks helpful when talking about k8s resource management:<ORGANIZATION> and ContainersHow Pods with resource requests are scheduledSizing <ORGANIZATION> pods for <ORGANIZATION> apps without fearing <ORGANIZATION> cluster configuration git repository"
|
||
},
|
||
{
|
||
"title": "Standards and rules",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Standards+and+rules",
|
||
"content": "<PERSON> definitionLimit size for <ORGANIZATION> has to be defined in "m" (milliCPU), ram in "Mi" (mibibytes) and storage in "Gi" (Gibibytes). More details about resource limits you can find on <URL> vs GiB: What’s the Difference Between Gigabytes and Gibibytes?At its most basic level, one <LOCATION> is defined as <DATE_TIME> (1,000,000,000) bytes and one <ORGANIZATION> as 1024³ (1,073,741,824) bytes. That means one <LOCATION> equals 0.93 GiB. Source: <URL> check current resource configuration, check: Resource management for <LOCATION> secure our images from changing of remote images which come from remote registries such as <URL> before using remote these as a base image in the implementation, you have to publish the remote image in our private registry <URL> objects naming standardsKafka topicsName template: <$envName>-$<topicType>-$<name>Topic Types: in - topics for producing events by external systemsout - topics for consuming events by external systemsinternal - topics used by <ORGANIZATION> servicesConsumer <ORGANIZATION> template: <$envName>-<$componentName>-[$processName]Standardized environment <URL>andardized component namesbatch-servicecallback-servicemdm-managerevent-publisherapi-routerreconciliation-servicereltio-subscriber"
|
||
},
|
||
{
|
||
"title": "Technical details",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Technical+details",
|
||
"content": "<ORGANIZATION> nameSubnet maskRegionDetailssubnet-07743203751be58b910.9.64.0/18amersubnet-0dec853f7c9e507dd10.9.0.0/18amersubnet-018f9a3c441b24c2b●●●●●●●●●●●●●●●apacsubnet-06e1183e436d67f2910.116.176.0/20apacsubnet-0e485098a41ac03ca10.90.144.0/20emeasubnet-067425933ced0e77f10.90.128.0/20emea"
|
||
},
|
||
{
|
||
"title": "SOPs",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/SOPs",
|
||
"content": "Standard operation procedures are available here."
|
||
},
|
||
{
|
||
"title": "Downstream system migration guide",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Downstream+system+migration+guide",
|
||
"content": "This chapter describes steps that you have to take if you want to switch your application to new <ORGANIZATION> <URL> channel (Rest services)If you use the direct channel to communicate with <ORGANIZATION> the only thing that you should do is changing of <ORGANIZATION> endpoint addresses. The authentication mechanism, based on <ORGANIZATION> serving by <PERSON> stays unchanged. Please remember that probably network traffic between your services and <PERSON> has to be opened before switching your application to new HUB <URL>e following table presents old endpoints and their substitutes in the new environment. Everyone who wants to connect with <PERSON> has to use new endpoints.EnvironmentOld endpointNew endpointAffected <ORGANIZATION>/STAGE<URL><LOCATION>/v1<URL> DEV<URL>:8443/dev-ext<URL> ENGAGE, KOL_ONEVIEW, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> APIGBLUS QA<URL>:8443/qa-ext<URL> ENGAGE, KOL_ONEVIEW, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION><URL> ENGAGE, KOL_ONEVIEW, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION> PROD<URL> PROD<URL> ENGAGE, KOL_ONEVIEW, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, MULEManager APIGBLUS PROD<URL> APIEMEA DEV/QA/STAGE<URL><LOCATION>/v1<URL> DEV<URL>:8443/dev-ext<URL> <LOCATION>, PforceRx, JORouter APIEMEA DEV<URL>:8443/dev-ext/gw<URL> <ORGANIZATION> <PERSON><URL> <LOCATION>, PforceRx, JORouter APIEMEA QA<URL>:8443/qa-ext/gw<URL> <ORGANIZATION> QA<URL>:8443/qa-batch-ext<URL> APIEMEA STAGE<URL>:8443/stage-ext<URL> <LOCATION>, PforceRx, JORouter APIEMEA STAGE<URL>:8443/stage-ext/gw<URL> APIEMEA STAGE<URL>:8443/stage-batch-ext<URL> APIEMEA <PERSON><URL> <LOCATION>, PforceRxRouter APIEMEA PROD<URL>:8443/prod-ext/gw<URL> <ORGANIZATION> PROD<URL>:8443/prod-batch-ext<URL> APIGBL DEV<URL>:8443/dev-ext<URL> <LOCATION>, <PERSON>, KOL_ONEVIEW, <ORGANIZATION>, <ORGANIZATION>, <PERSON>, PTRS, VEEVA_FIELD,Manager APIGBL QA (MAPP)<URL>:8443/mapp-ext<URL> <LOCATION>, <PERSON>, KOL_ONEVIEW, <ORGANIZATION>, <ORGANIZATION>, <PERSON>, PTRS, VEEVA_FIELD,Manager APIGBL STAGE<URL>:8443/stage-ext<URL> <LOCATION>, <PERSON>, KOL_ONEVIEW, <ORGANIZATION>, <PERSON>, PTRS, VEEVA_FIELDManager APIGBL PROD<URL> <LOCATION>, <PERSON>, KOL_ONEVIEW, <ORGANIZATION>, <ORGANIZATION>, <PERSON>, PTRS, VEEVA_FIELDManager APIGBL PROD<URL> APIEXTERNAL GBL DEV<URL>:8443/dev-ext<URL> <ORGANIZATION>, <ORGANIZATION> (MAPP)<URL>:8443/mapp-ext<URL> <ORGANIZATION>, <NRP> APIEXTERNAL GBL STAGE<URL>:8443/stage-ext<URL> <ORGANIZATION>, <ORGANIZATION><URL> <ORGANIZATION>, <ORGANIZATION><URL> <ORGANIZATION>, MAPPRouter <ORGANIZATION><URL> <ORGANIZATION>, MAPPRouter <ORGANIZATION><URL> <ORGANIZATION>, <ORGANIZATION><URL> <ORGANIZATION>, <ORGANIZATION> channel (Kafka)Switching to a new environment requires configuration change on your side:Change the <PERSON>'s broker address,Change JAAS configuration - in the new architecture, we decided to change JAAS authentication mechanisms to SCRAM. To be sure that you are using the right authentication you have to change a few parameters in <PERSON>'s connection:JAAS login config file which path is specified in "<URL>nfig" java property. It should look like below:KafkaClient { <URL>ramLoginModule required username="<user>" ●●●●●●●●●●●●●●●●●●●>";}; b. change the value of "<URL>chanism" property to "SCRAM-SHA-512" c. if you configure <PERSON> login using "<URL>nfig" property you have to change its value to "<URL><PERSON> required username="<user>" ●●●●●●●●●●●●●●●●●●●>";"You should receive new credentials (username and password) in the email about changing <PERSON> endpoints. In another case to get the proper username and ●●●●●●●●●●●●●●● contact our support <URL>e following table presents old endpoints and their substitutes in the new environment. Everyone who wants to connect with <PERSON> has to use new endpoints.EnvironmentOld endpointNew endpointAffected <ORGANIZATION>/<URL>:<URL>:9094ENGAGE, KOL_ONEVIEW, <LOCATION>, <ORGANIZATION>, MULEKafkaGBLUS <URL>:9094,<URL>:9094,<URL>:<URL>:9094ENGAGE, KOL_ONEVIEW, <LOCATION>, <ORGANIZATION>, <ORGANIZATION>/<URL>:<URL>:9094 (external)<URL>:9094MAP (external), PforceRx, <ORGANIZATION> <URL>:9094,<URL>:9094,<URL>:<URL>:9094,<URL>:9094,<URL>:<URL>:9095,<URL>:9095,<URL>:9095 (external)<URL>:9094MAP (external), PforceRx, MULEKafkaGBL DEV/QA/<URL>:<URL>:9094 (external)<URL>:9094MAP (external), <LOCATION>, KOL_ONEVIEW, PTRS, <ORGANIZATION>, ENGAGE, <ORGANIZATION>,KafkaGBL <URL>:9094,<URL>:9094,<URL>:<URL>:9094,<URL>:9094,<URL>:9094 (external)<URL>:9094MAP (external), <LOCATION>, KOL_ONEVIEW, PTRS, ENGAGE, <ORGANIZATION>,KafkaEXTERNAL GBL <ORGANIZATION> (Snowflake)There are no changes required if you use <ORGANIZATION> to get <PERSON> data."
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/MDM+HUB+Log+Management",
|
||
"content": "MDM HUB has built in a log management solution that allows to trace data going through the system (incoming and outgoing events).It improves:<ORGANIZATION> to trace input and output dataCompliance requirementsSecurityAny user activity is recordedThreat protection and discoveryMonitoringOutages & performance bottlenecks detectionAnalytics Metrics & trends in real-timeAnomalies detectionThe solution is based on EFK stack:<ORGANIZATION> - provides storage and indexing and search capabilitiesFluentd - ships, transforms and loads logsKibana - provides <ORGANIZATION> for <NRP> solutions is presented on the picture below: HUB microservices generetes log events and place them on <PERSON> monitoring topics.<PERSON> processes events from topics and store them in <ORGANIZATION>. <PERSON> presents data to users. "
|
||
},
|
||
{
|
||
"title": "EFK Environments",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/EFK+Environments",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Elastic Cloud on Kubernetes in MDM HUB",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Elastic+Cloud+on+Kubernetes+in+MDM+HUB",
|
||
"content": "Overview<graphic0>After migration on <LOCATION> platform from on premise solutions we started to use Elastic Cloud on Kubernetes (ECK).<URL> With <ORGANIZATION> we can streamline critical operations, such as:Setting up hot-warm-cold <URL>viding lifecycle policies for logs and transactions, snapshots of obsolete/older/less utility <URL>eating dashboards visualising data of <ORGANIZATION> core processes.Logs, transactions and mongo collectionsWe splitted all the data entering the Elastic Stack cluster into different categories listed as follows:1. <ORGANIZATION> services logsFor forwarding <ORGANIZATION> logs we use <ORGANIZATION> where its used as a sidecar/agent container inside the mdmhub service <URL>e sidecar/agents send data directly to a backend service on <ORGANIZATION> cluster.2. Backend logs and transactionsFor backend logs and transactions forwarding we use <PERSON> as a forwarder and aggregator, lightweight pod instance deployed on <URL> case of <ORGANIZATION> unavailability, secondary output is defined on <ORGANIZATION> storage to not miss any data coming from services.3. MongoDB collectionsIn this scenario we decided to use <ORGANIZATION>, sync daemon written in Go that continously indexes MongoDB collections into <ORGANIZATION>.We use it to mirror <ORGANIZATION> data gathered in MongoDB collections in <ORGANIZATION> as a backup and a source for <PERSON>'s dashboards visualisations.Data streamsMDM HUB services and backend logs and transactions are managed by Data streams mechanism.A data stream lets us store append-only time series data (logs/transactions) across multiple indices while giving a single named resource for <URL> lifecycle policies and snapshots managementIndex templates, index lifecycle policies and snapshots for index management are enirely covered by the <ORGANIZATION> built-in <URL>scription of the index lifecycle divided into phases:Index rollover - logs and transactions are stored in hot-tiersIndex rollover - logs and transactions are moved to delete phaseSnapshot - deleted logs and transactions from elasticsearch are snapshotted on <ORGANIZATION> bucketSnapshot - logs and transactions are deleted from <ORGANIZATION> bucket - index is no longer availableAll snapshotted indices may be restored and recreated on <ORGANIZATION> <URL>ximum sizes and ages for the indexes rollovers and snapshots are included in the following tables:<ORGANIZATION> environmentstypeindex rollover hot phaseindex rollover delete phasesnapshot phase MDM HUB logsage: 7dsize: 100gbage: 30dage: 180dBackend logsage: 7dsize: 100gbage: 30dage: 180dKafka transactionsage: 7dsize: 25gbage: 30dage: 180dPROD environmentstypeindex rollover hot phaseindex rollover delete phasesnapshot phase MDM HUB logsage: 7dsize: 100gbage: 90dage: 365dBackend logsage: 7dsize: 100gbage: 90dage: 365dKafka transactionsage: 7dsize: 25gbage: 180dage: 365dAditionally, we execute full snapshot policy on <DATE_TIME> basis. It is responsible for incremental storing all the <ORGANIZATION> indexes on <ORGANIZATION> buckets as a backup. Snapshots locationsenvironmentS3 <PERSON> <ORGANIZATION>/archive/elastic/fullEMEA PRODpfe-atp-eu-<US_DRIVER_LICENSE>-prod-mdmhub-backupemaasp202207120811emea/archive/elastic/fullAMER NPRODgblmdmhubnprodamrasp100762amer/archive/elastic/fullAMER PRODpfe-atp-us-<US_DRIVER_LICENSE>-prod-mdmhub-backupamrasp202207120808amer/archive/elastic/fullAPAC NPRODglobalmdmnprodaspasp202202171347apac/archive/elastic/fullAPAC PRODpfe-atp-ap-se1-prod-mdmhub-backuaspasp202207141502apac/archive/elastic/fullMongoDB collections data are stored on <ORGANIZATION> permanently, they are not covered by the index lifecycle <URL><PERSON> dashboardsKibana <PERSON>"
|
||
},
|
||
{
|
||
"title": "<PERSON>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Kibana+Dashboards",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Tracing areas",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Tracing+areas",
|
||
"content": "Log data are generated in the following actions:<ORGANIZATION> calls request timestampoperation namerequest payloadresponse statusMDM events timestampmdm nameevent typeevent payload"
|
||
},
|
||
{
|
||
"title": "MDM HUB Monitoring",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/MDM+HUB+Monitoring",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "AKHQ",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/AKHQ",
|
||
"content": "<PERSON> (<URL>) is a tool for browsing, changing and monitoring <PERSON>'s <URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "KIBANAUS PROD <URL>:5601/app/kibanaUser: kibana_dashboard_viewUS NONPROD <URL>:5601/app/kibanaUser: kibana_dashboard_view=====GBL PROD <URL>GBL <ORGANIZATION> <URL><ORGANIZATION><URL>EMEA <ORGANIZATION> <URL>=====GBLUS PROD <URL>GBLUS <ORGANIZATION> <URL><ORGANIZATION><URL>AMER <ORGANIZATION> <URL>=====APAC PROD <URL>APAC NONPROD <URL>GRAFANA<URL>KeePass - download <DATE_TIME> password to the KeePass is sent in a separate email to improve the security level of credentials <URL> get access, you only need to download the <PERSON> application 2.50 version (<URL>) and use a password that is sent to log in to <URL>ter you do it you will see a screen like:Then just click a title that you are interested in. And you get a window like:Here you have a user name, and a proper link and when you click 3 dots = red square you will get the password."
|
||
},
|
||
{
|
||
"title": "Grafana Dashboard Overview",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Grafana+Dashboard+Overview",
|
||
"content": "<ORGANIZATION> <PERSON> is deployed on the <ORGANIZATION> host and is available under the following URL:<URL>All the dashboards are built using <ORGANIZATION>'s metrics."
|
||
},
|
||
{
|
||
"title": "Alerts Monitoring PROD&NON_PROD",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "PROD: <URL> PROD: <URL> <ORGANIZATION> contains firing alerts and last Airflow DAG runs statuses for <ORGANIZATION> (left side) and <ORGANIZATION> (right <ORGANIZATION>., e. number of alerts firingb., f. turns red when one or more DAG JOBS have failedc., <PERSON> currently firingd., <PERSON> table containing all the DAGs and their run count for each of the statuses"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/AWS+SQS",
|
||
"content": "Dashboard: <URL> dashboard is describing the <ORGANIZATION> queue used in Reltio→MDM HUB <URL>e dashboard is divided into following sections:a. Approximate number of messages - how many messages are currently waiting in the queueb. Approximate number of messages delayed - how many messages are waiting to be added in the queuec. Approximate number of messages invisible - how many messages are not timed out nor deleted"
|
||
},
|
||
{
|
||
"title": "Docker Monitoring",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/Docker+Monitoring",
|
||
"content": "Dashboard: <URL> dashboard is describing the <ORGANIZATION> containers running on hosts in each environment. Switch currently viewed environment/host using the variables at the top of the dashboard ("env", "host").The dashboard is divided into following sections:a. Running containers - how many containers are currently running on this hostb. Total Memory Usagec. Total CPU Usaged. CPU Usage - over time <ORGANIZATION> use per containere. Memory Usage - over time Memory use per containerf. Network Rx - received bytes per container over timeg. Network Tx - transmited bytes per container over time"
|
||
},
|
||
{
|
||
"title": "Host Statistics",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Host+Statistics",
|
||
"content": "\n\n\n\nDashboard: <URL> template source: <URL> dashboard is describing various statistics related to hosts' resource usage. It uses metrics from the node_exporter. You can change the currently viewed environment and host using variables at the top of the dashboard.\n\n\n\n\n\nBasic CPU / Mem / Disk Gaugea. <ORGANIZATION> Busyb. Used RAM Memoryc. Used SWAP - hard disk memory used for swappingd. Used Root FSe. CPU System Load (1m avg)f. <ORGANIZATION> (5m avg)\n\n\n\n\n\nBasic <ORGANIZATION>. <ORGANIZATION>. Total RAMc. Total SWAPd. Total RootFSe. System Load (1m avg)f. Uptime - time since last restart\n\n\n\n\n\nBasic CPU / Mem Grapha. CPU Basic - CPU state %b. Memory Basic - memory (SWAP + RAM) use\n\n\n\n\n\nBasic <ORGANIZATION>. Network Traffic Basic - network traffic in bytes per interfaceb, Disk Space Used Basic - disk usage per mount\n\n\n\n\n\nCPU Memory Net Diska. <ORGANIZATION> - percentage use per status/operationb. Memory Stack - use per status/operationc. Network Traffic - detailed network traffic in bytes per interface. Negative values correspond to transmited bytes, positive to received.d. Disk Space Used - disk usage per mounte. Disk <NRP> - disk operations per partition. Negative values correspond to write operations, positive - read operations.f. I/O Usage Read / Write - bytes read(positive)/written(negative) per partitiong. I/O Usage Times - time of I/O operations in <DATE_TIME> per partition\n\n\n\n\n\<URL> the dashboard template is a publicaly-available project, the panels/graphs are sufficiently described and do not require further explanation.\n\n\n"
|
||
},
|
||
{
|
||
"title": "HUB Batch Performance",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/HUB+Batch+Performance",
|
||
"content": "\n\n\n\nDashboard: <URL> Batch loading rateb. Batch loading latencyc. Batch sending rated. Batch sending latencye. Batch processing rate - batch processing in ops/sf. Batch processing latency - batch processing time in secondsg. Batch loading max gauge - max loading time in secondsh. Batch sending max gauge - max sending time in secondsi. Batch processing max gauge - max processing in seconds\n\n\n"
|
||
},
|
||
{
|
||
"title": "HUB Overview Dashboard",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/HUB+Overview+Dashboard",
|
||
"content": "\n\n\n\nDashboard: <URL> dashboard contains information about <PERSON> topics/consumer groups in HUB - downstream from Reltio.\n\n\n\n\n\na. Lag by <ORGANIZATION> - lag on each <NRP> consumer groupb. Message consume per minute - messages consumed by each INBOUND consumer groupc. Message in per minute - inbound messages count by each <NRP> topicd. Lag by <ORGANIZATION> - lag on each OUTBOUND consumer groupe. Message consume per minute - messages consumed by each OUTBOUND consumer groupf. Message in per minute - inbound messages count by each OUTBOUND topicg. Lag by <ORGANIZATION> - lag on each <ORGANIZATION> BATCH consumer grouph. Message consume per minute - messages consumed by each <ORGANIZATION> BATCH consumer groupi. Message in per minute - inbound messages count by each <ORGANIZATION> BATCH topic\n\n\n"
|
||
},
|
||
{
|
||
"title": "HUB Performance",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/HUB+Performance",
|
||
"content": "\n\n\n\nDashboard: <URL> <PERSON>. Read Rate - API Read operations in <ORGANIZATION> rateb. Read Latency - API Read operations latency in <DATE_TIME> for 50/75/99th percentile of requests. <ORGANIZATION> response time, processing time and total timec. Write Rate - API Write operations in <ORGANIZATION> rated. Write Latency - API Write operations latency in <DATE_TIME> for 50/75/99th percentile of requests per each <ORGANIZATION> operation\n\n\n\n\n\nPublishing Performancea. Event Preprocessing Total Rate - Publisher's preprocessed events <ORGANIZATION> rate divided for entity/relation eventsb. Event Preprocessing Total Latency - preprocessing time in <DATE_TIME> for 50/75/99th percentile of events\n\n\n\n\n\nSubscribing <LOCATION>. MDM Events Subscribing Rate - Subscriber's events rateb. MDM Events Subscribing Latency - Subscriber's event processing (passing downstream) rate\n\n\n"
|
||
},
|
||
{
|
||
"title": "JMX Overview",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/JMX+Overview",
|
||
"content": "Dashboard: <URL> dashboard organizes and displays data extracted from each component by a JMX exporter - related to this component's resource usage. You can switch currently viewed environment/component/node using variables on the top of the dashboard.a. Memoryb. Total RAMc. Used SWAPd. Total SWAPe. CPU System Load(1m avg)f. <ORGANIZATION> Load(5m avg)g. <ORGANIZATION>. <ORGANIZATION> Usagei. Memory Heap/NonHeapj. Memory Pool Usedk. Threads usedl. Class loadingm. Open File Descriptorsn. <ORGANIZATION> time / 1 min. rate - <ORGANIZATION> time rate/mino. <ORGANIZATION> count - <ORGANIZATION> operations count"
|
||
},
|
||
{
|
||
"title": "Kafka Overview",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Kafka+Overview",
|
||
"content": "Dashboard: <URL> dashboard describes <PERSON>'s per node resource usage.a. <ORGANIZATION>. <ORGANIZATION>. <ORGANIZATION> spent in GCd. Messages in Per Topice. Bytes in Per Topicf. Bytes Out Per Topic"
|
||
},
|
||
{
|
||
"title": "Kafka Overview - Total",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Kafka+Overview+-+Total",
|
||
"content": "Dashboard: <URL> dashboard describes <PERSON>'s total (all node summary) resource usage per environment.a. <ORGANIZATION>. <ORGANIZATION>. <ORGANIZATION> spent in GCd. Messages ratee. Bytes in Ratef. Bytes Out Rate"
|
||
},
|
||
{
|
||
"title": "Kafka Topics Overview",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Kafka+Topics+Overview",
|
||
"content": "Dashboard: <URL> dashboard describes <PERSON> topics and consumer groups in each environment.a. Topics purge <ORGANIZATION> in <DATE_TIME> time it should take for each consumer group to process all the events on their topicb. Lag by <ORGANIZATION>. Message in per minute - per topicd. Message consume per minute - per consumer groupe. Message in per second - per topic"
|
||
},
|
||
{
|
||
"title": "Kong Dashboard",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Kong+Dashboard",
|
||
"content": "Dashboard: <URL> dashboard describes the <LOCATION> component statistics.a. Total requests per secondb. DB reachabilityc. Requests per serviced. Requests by HTTP status codee. Total Bandwidthf. Egress per service (All) - traffic exiting the <ORGANIZATION> network in bytesg. Ingress per service (All) - traffic entering the <ORGANIZATION> network in bytesh. Kong Proxy Latency across all services - divided on 90/95/99 percentilei. Kong Proxy Latency per service (All) - divided on <DATE_TIME> percentilej. Request Time across all services - divided on 90/95/99 percentilek. Request Time per service (All) - divided on <DATE_TIME> percentilel. <PERSON> across all services - divided on <DATE_TIME> percentilem. Upstream Time per service (All) - divided on 90/95/99 percentileo. Nginx connection statep. Total Connectionsq. Handled Connectionsr. Accepted Connections"
|
||
},
|
||
{
|
||
"title": "MongoDB",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/MongoDB",
|
||
"content": "Dashboard: <URL> <PERSON>. Document Operationsc. Document <PERSON>. Member Healthe. Member <PERSON>. Replica <PERSON>. Uptimeh. Available Connectionsi. Open Connectionsj. <PERSON>. Memoryl. Network I/Om. <PERSON>. Disk I/O Utilizationo. Disk Reads Completedp. Disk Writes Completed"
|
||
},
|
||
{
|
||
"title": "Snowflake Tasks",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Snowflake+Tasks",
|
||
"content": "Dashboard: <URL> dashboard describes tasks running on each <ORGANIZATION> <URL>ease keep in mind that metrics supporting this dashboard are scraped rarely (every 8h on nprod, every 2h on prod), so keep the Time since last scrape gauge in mind when reviewing the results.a. Time since last scrape - time since the metrics were last scraped - it marks dashboard freshnessb. Last Task Runs - table contains:task's name,date&time of last recorded run,visualisation of how long ago was the last run,state of last run,duration of last run (processing time)c. Processing time - visualizes how the processing time of each task was changing over time"
|
||
},
|
||
{
|
||
"title": "Kibana Dashboard Overview",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Kibana+Dashboard+Overview",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> Calls Dashboard",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/API+Calls+Dashboard",
|
||
"content": "The dashboard contains summary of <ORGANIZATION> calls in the chosen time <URL>e it to:find a certain <ORGANIZATION> call by entity/timestamp/username,check which host this request was sent to,check request processing time <URL>e dashboard is divided into the following sections:a. Total requests count - how many requests have been logged in this time range (or passed the filter if that's the case)b. Controls - allows user to filter requests based on username and operationc. Requests by operation - how many requests have been sent per each operationd. Average response time - how long the response time was on average per each actione. Request per client - how many requests have been sent per each clientf. Response status - how many requests have resulted with each statusg. Top 10 processing times - summary of 10 requests that have been processed the longest in this time range. Contains transaction ID, related entity URI, operation type and duration in ms.681pxh. Logs - summary of all the logged requests"
|
||
},
|
||
{
|
||
"title": "Batch Loads Dashboard",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Batch+Loads+Dashboard",
|
||
"content": "The dashboard contains information about files processed by the <ORGANIZATION> <URL>e this dashboard to:check whether the files were delivered on schedule,check processing time,verify that the files have been processed <URL>e dashboard is divided into following sections:a. File by type - summary of how many files of each type were delivered in this time range.b. File load status count - visualisation of how many entities were extracted from each file type and what was the result of their processing.c. File load count - visualisation of loaded files in this time range. Use it to verify that the files have been delivered on schedule.d. File load summary - summary of the processing of each loaded file. e. Response status load summary - summary of processing result for each file type."
|
||
},
|
||
{
|
||
"title": "HL <ORGANIZATION> Dashboard",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/HL+DCR+Dashboard",
|
||
"content": "This dashboard contains information related to the HL <ORGANIZATION> flow (<ORGANIZATION> Service).Use it to:track issues related to the HL <ORGANIZATION> <URL>e dashboard is divided into following sections:a. DCR Status - summary of how many DCRs have each of the statusesb. Reltio DCR Stats - summary of how many DCRs that have been processed and sent to <ORGANIZATION> have each of the statusesc. DCRRequestProcessing report - list of <ORGANIZATION> reports generated in this time ranged. <ORGANIZATION> state - list of DCRs and their current statuses"
|
||
},
|
||
{
|
||
"title": "HUB Events Dashboard",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/HUB+Events+Dashboard",
|
||
"content": "Dashboard contains information about the Publisher component - events sent to clients or internal components (ex. Callback Service).Use it to:track issues related to Publisher's event processing (filtering/publishing),find information about Publisher's event processing time,find potential issues with events not being published from one topic or being constantly skipped <URL>e dashboard is divided into following sections:a. Count - how many events have been processed by the Publisher in this time rangeb. Event count - visualisation of how many events have been processed over timec. Simple events in time - visualisation of how many simple events have been processed (published) over time per each outbound topicd. Skipped events in time - visualisation of how many events have been skipped (filtered) for each reason over timee. Full events in time - visualisation of how many full events have been published over time per each topicf. Processing time - visualisation of how long the processing of entities/relations events tookg. Events by country - summary of how many events were related to each countryh. Event types - summary of how many events were of each typei. Full events by Topics - visualisation of how many full events of each type were published on each of the topicsj. Simple events by Topics - visualisation of how many simple events of each type were published on each of the topicsk. Publisher Logs - list containing all the useful information extracted from the Publisher logs for each event. Use it to track issues related to Publisher's event processing."
|
||
},
|
||
{
|
||
"title": "HUB Store Dashboard",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/HUB+Store+Dashboard",
|
||
"content": "Summary of all entities in the <ORGANIZATION> in this environment. Contains summary information about entities count, countries and sources. The dashboard is divided into following sections:a. Entities count - how many entities are there currently in MDMb. Entities modification count - how many entity modifications (create/update/delete) were there over timec. Status - summary of how many entities have each of the statusesd. Type - summary of how many entities are <ORGANIZATION> (<ORGANIZATION>) or <ORGANIZATION> (Health Care Professional)e. MDM - summary of how many MDM entities are in <ORGANIZATION>. Entities country - visualisation of country to entity countg. Entities source - visualisation of source to entity counth. Entities by country source type - visualisation of how many entities are there from each country with each sourcei. World Map - visualisation of how many entities are there from each countryj. Source/Country Heat Map - another visualisation of Country-Source distribution"
|
||
},
|
||
{
|
||
"title": "MDM Events Dashboard",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/MDM+Events+Dashboard",
|
||
"content": "This dashboard contains information extracted from the Subscriber <URL>e it to:confirm that a certain event was received from <ORGANIZATION>,check the consume <URL>e dashboard is divided into following sections:a. Total events count - how many events have been received and published to an internal topic in this time rangeb. Event types - visualisation of how many events processed were of each typec. Event count - visualisation of how many events were processed over timed. Event destinations - visualisation of how many events have been passed to each of internal topics over timee. Average consume time - visualisation of how long it took to process/pass received events over timef. Subscriber Logs - list containing all the useful information extracted from the Subscriber logs. Use it to track potential issues"
|
||
},
|
||
{
|
||
"title": "Profile Updates Dashboard",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Profile+Updates+Dashboard",
|
||
"content": "This dashboard contains information about <ORGANIZATION>/<ORGANIZATION> profile updates via <ORGANIZATION><URL>e it to:check how many updates have been processed,check processing results (statuses),track an issue related to the <LOCATION> <URL>te, that the <LOCATION> is not only used by the external vendors, but also by <ORGANIZATION>'s components (Callback Service).The dashboard is divided into following sections:a. Count - how many profile updates have been logged in this time periodb. Updates by status - how many updates have each of the statusesc. Updates count - visualisation of how many updates were received by the <LOCATION> over timed. Updates by country source status - visualisation of how many updates were there for each country, from each source and with each statuse. Updates by source - summary of how many profile updates were there from each sourcef. Updates by country source status - another visualisation of how many updates were there for each country, source, <ORGANIZATION>. World Map - visualisation of how many updates were there on profiles from each of the countriesh. Gateway Logs - list containing all the useful information extracted from the <LOCATION> components' logs. Use it to track issues related to the MDM Gateway"
|
||
},
|
||
{
|
||
"title": "Reconciliation metrics Dashboard",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Reconciliation+metrics+Dashboard",
|
||
"content": "The Reconciliation Metrics Dashboard shows reasons why the <ORGANIZATION> object (entity or relation) was <URL>e it to:Check how many records were reconciled,Find the reasons for <URL>rrently, the dashboard can show the following reasons:<URL>ror - new lookup error was added. Caused by changes in RDM <URL>anged - lookup code was changed. Caused by changes in RDM <URL>anged - entity updateTime changed <URL>anged - Any description attribute changed. Checks attribute path for .*[Dd]escription.* <URL>anged - Addresses, Stateprovince value changed <URL>anged - Workplace changed <URL>anged - /attributes/Rank changed <URL>anged - /startObject/label or /endObject/label changed reconciliation.object.missed - Object was removed <URL>ded - Object was added <URL>anged - Specialities changed(added/removed/replaced) <URL>anged - Specialities label changed(added/removed/replaced) <URL>anged - /attributes/MainHCO changed(added/removed/replaced) <URL>anged - Any field under Address changed(added/removed/replaced) <URL>anged - Any reference entity changed('^/attributes/.*refEntity.+$' - added/removed/replaced) <URL>anged - Any reference relationchanged('^/attributes/.*refRelation.+$' - added/removed/replaced) <URL>ange - Crosswalk attributes changed(added/removed/replaced) <URL>anged - directionalLabel changed(added/removed/replaced) <URL>anged - Any attribute changed(added/removed/replaced) <URL>ason - Non clasified reason - other cases The dashboard consists of a few diagrams:{ENV NAME} Reconciliation reasons - shows the most often existing reasons for reconciliation,Number by country - general number of reconciliation reasons divided by countries,Number by types - shows the general number of reconciliation reasons grouped by MDM object type,Reason list - reconciliation reasons with the number of their occurrences,{ENV NAME} Reconciliation metrics - detail view that shows data generated by Reconciliation Metrics flow. Data has detailed information about what exactly changed on specific MDM object."
|
||
},
|
||
{
|
||
"title": "Prometheus Alerts",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Prometheus+Alerts",
|
||
"content": "DashboardsThere are 2 dashboards available for problems overview: <ORGANIZATION> DashboardAlertsENVNameAlertCause (Expression)TimeSeverityAction to be takenALLMDMhigh_load> 30 load130mwarningDetect why load is increasing. Decrease number of threads on components or turn off some of <URL>LMDMhigh_load> 30 load12hcriticalDetect why load is increasing. Decrease number of threads on components or turn off some of <URL>LMDMmemory_usage> 90% used1hcriticalDetect the component which is causing high memory usage and restart <URL>LMDMdisk_usage< 10% free2mhighRemove or archive old component <URL>LMDMdisk_usage< 5% free2mcriticalRemove or archive old component <URL>LMDMkong_processor_usage> 120% <ORGANIZATION> used by container10mhighCheck the <LOCATION> containerALLMDMcpu_usage> 90% <ORGANIZATION> used1hcriticalDetect the cause of high <ORGANIZATION> use and take appropriate measuresALLMDMsnowflake_task_not_successful_nprodLast <ORGANIZATION> task run has state other than "SUCCEEDED"1mhighInvestigate whether the task failed or was skipped, and what caused <URL>tric value returned by the alert corresponds to the task state:0 - FAILED1 - SUCCEEDED2 - SCHEDULED3 - SKIPPEDALLMDMsnowflake_task_not_successful_prodLast Snowflake task run has state other than "SUCCEEDED"1mhighInvestigate whether the task failed or was skipped, and what caused <URL>tric value returned by the alert corresponds to the task state:0 - FAILED1 - SUCCEEDED2 - SCHEDULED3 - SKIPPEDALLMDMsnowflake_task_not_started_24hSnowflake task has not started in <DATE_TIME> (+ 8h scrape time)1mhighInvestigate why the task was not scheduled/did not <URL>LMDMreltio_response_timeReltio response time to entities/get requests is >= 3 <ORGANIZATION> for 99th percentile20mhighNotify <ORGANIZATION><URL>N PRODMDMservice_downup{env!~".*_prod"} == 020mwarningDetect the not working component and start <URL>N PRODMDMkafka_streams_client_statekafka streams client state != 21mhighCheck and restart <ORGANIZATION><URL><ORGANIZATION> unreachable20mwarningCheck the <LOCATION> DB <URL>N PRODKongkong_http_500_status_rateHTTP 500 > 10%5mwarningCheck Gateway components' <URL>N PRODKongkong_http_502_status_rateHTTP 502 > 10%5mwarningCheck <LOCATION>'s port <URL>N PRODKongkong_http_503_status_rateHTTP 503 > 10%5mwarningCheck the <LOCATION> <URL>N PRODKongkong_http_504_status_rateHTTP 504 > 10%5mwarningCheck Reltio response rates. Check Gateway components for <URL>N PRODKongkong_http_401_status_rateHTTP 401 > 30%20mwarningCheck <LOCATION> logs. Notify the authorities in case of suspected break-in <URL>L NON PRODKafkainternal_reltio_events_lag_dev> 500 00030minfoCheck why lag is increasing. Restart the Event <URL><ORGANIZATION> NON PRODKafkainternal_reltio_relations_events_lag_dev> 500 00030minfoCheck why lag is increasing. Restart the Event <URL><ORGANIZATION> NON PRODKafkainternal_reltio_events_lag_stage> 500 00030minfoCheck why lag is increasing. Restart the Event <URL>L NON PRODKafkainternal_reltio_relations_events_lag_stage> 500 00030minfoCheck why lag is increasing. Restart the Event <URL>L NON PRODKafkainternal_reltio_events_lag_qa> 500 00030minfoCheck why lag is increasing. Restart the Event <URL><ORGANIZATION> NON PRODKafkainternal_reltio_relations_events_lag_qa> 500 00030minfoCheck why lag is increasing. Restart the Event <URL>L NON PRODKafkakafka_jvm_heap_memory_increasing> 1000<ORGANIZATION> memory use predicted in 5 hours20mhighCheck if <PERSON> is rebalancing. Check the Event <URL>L NON PRODKafkafluentd_dev_kafka_consumer_group_members0 EFK consumergroup members30mhighCheck Fluentd logs. Restart <URL>LUS NON PRODKafkainternal_reltio_events_lag_gblus_dev> 500 00040minfoCheck why lag is increasing. Restart the Event <URL>LUS NON PRODKafkainternal_reltio_events_lag_gblus_qa> 500 00040minfoCheck why lag is increasing. Restart the Event <URL>LUS NON PRODKafkainternal_reltio_events_lag_gblus_stage> 500 00040minfoCheck why lag is increasing. Restart the Event <URL>LUS NON PRODKafkakafka_jvm_heap_memory_increasing> 3100<ORGANIZATION> memory use predicted in 5 hours20mhighCheck if <PERSON> is rebalancing. Check the Event <URL>LUS NON PRODKafkafluentd_gblus_dev_kafka_consumer_group_members0 EFK consumergroup members30mhighCheck Fluentd logs. Restart <URL><ORGANIZATION> PRODMDMservice_downcount(up{env=~"gbl_prod"} == 0) by (env,component) == 15mhighDetect the not working component and start <URL><ORGANIZATION> PRODMDMservice_downcount(up{env=~"gbl_prod"} == 0) by (env,component) > 15mcriticalDetect the not working component and start <URL>L PRODMDMservice_down_kafka_connect0 Kafka Connect Exporters up in the environment5mcriticalCheck and start the Kafka Connect <URL>L PRODMDMservice_downOne or more <PERSON> instances down5mcriticalCheck and start he <PERSON><URL><ORGANIZATION> PRODMDMdcr_stuck_on_prepared_statusDCR has been PREPARED for 1h1hhighDCR has not been processed downstream. Notify <URL>L PRODMDMdcr_processing_failureDCR processing failed in <DATE_TIME> 24 hoursCheck <ORGANIZATION>, <ORGANIZATION> <URL>L PRODCron Jobsmongo_automated_script_not_startedMongo Cron Job has not started1hhighCheck the <URL>L <ORGANIZATION> the <LOCATION> DB <URL><ORGANIZATION> PRODKongkong_http_500_status_rateHTTP 500 > 10%5mwarningCheck Gateway components' <URL><ORGANIZATION> PRODKongkong_http_502_status_rateHTTP 502 > 10%5mwarningCheck <LOCATION>'s port <URL><ORGANIZATION> PRODKongkong_http_503_status_rateHTTP 503 > 10%5mwarningCheck the <LOCATION> <URL><ORGANIZATION> PRODKongkong_http_504_status_rateHTTP 504 > 10%5mwarningCheck Reltio response rates. Check Gateway components for <URL>L PRODKongkong_http_401_status_rateHTTP 401 > <LOCATION> logs. Notify the authorities in case of suspected break-in <URL><ORGANIZATION> PRODKafkainternal_reltio_events_lag_prod> 1 000 00030minfoCheck why lag is increasing. Restart the Event <URL><ORGANIZATION> PRODKafkainternal_reltio_relations_events_lag_prod> 1 000 00030minfoCheck why lag is increasing. Restart the Event <URL><ORGANIZATION> PRODKafkaprod-out-full-snowflake-all_no_consumersprod-out-full-snowflake-all has lag and has not been consumed for 2 hours1mhighCheck and restart the Kafka Connect Snowflake <URL>L PRODKafkainternal_gw_gcp_events_deg_lag_prod> 50 00030minfoCheck the Map Channel <URL><ORGANIZATION> PRODKafkainternal_gw_gcp_events_raw_lag_prod> 50 00030minfoCheck the Map Channel <URL>L PRODKafkainternal_gw_grv_events_deg_lag_prod> 50 00030minfoCheck the Map Channel <URL>L PRODKafkainternal_gw_grv_events_deg_lag_prod> 50 00030minfoCheck the Map Channel <URL>L PRODKafkaforwarder_mapp_prod_kafka_consumer_group_membersforwarder_mapp_prod consumer group has 0 members30mcriticalCheck the <ORGANIZATION> Events <URL><ORGANIZATION> PRODKafkaigate_prod_kafka_consumer_group_membersigate_prod consumer group members have decreased (still > 20)15minfoCheck the <LOCATION> <URL><ORGANIZATION> PRODKafkaigate_prod_kafka_consumer_group_membersigate_prod consumer group members have decreased (still > 10)15mhighCheck the <LOCATION> <URL><ORGANIZATION> PRODKafkaigate_prod_kafka_consumer_group_membersigate_prod consumer group has 0 members15mcriticalCheck the <LOCATION> <URL><ORGANIZATION> PRODKafkahub_prod_kafka_consumer_group_membershub_prod consumer group members have decreased (still > 100)15minfoCheck the Hub <URL><ORGANIZATION> PRODKafkahub_prod_kafka_consumer_group_membershub_prod consumer group members have decreased (still > 50)15minfoCheck the Hub <URL><ORGANIZATION> PRODKafkahub_prod_kafka_consumer_group_membershub_prod consumer group has 0 members15minfoCheck the Hub <URL><ORGANIZATION> PRODKafkakafka_jvm_heap_memory_increasing> 2100<ORGANIZATION> memory use on node 1 predicted in 5 hours20mhighCheck if <PERSON> is rebalancing. Check the Event <URL><ORGANIZATION> PRODKafkakafka_jvm_heap_memory_increasing> <DATE_TIME><ORGANIZATION> memory use on nodes 2&3 predicted in 5 hours20mhighCheck if <PERSON> is rebalancing. Check the Event <URL>L PRODKafkafluentd_prod_kafka_consumer_group_membersFluentd consumergroup has 0 members30mhighCheck and restart <URL><ORGANIZATION> is not running5mcriticalStart the Batch ChannelUS PRODMDMservice_down1 component is not running5mhighDetect the not working component and start <URL> PRODMDMservice_down>1 component is not running5mcriticalDetect the not working components and start <URL> PRODCron Jobsarchiver_not_startedArchiver has not started in 24 hours1hhighCheck the <URL> PRODKafkainternal_reltio_events_lag_us_prod> 500 0005mhighCheck why lag is increasing. Restart the Event <URL> PRODKafkainternal_reltio_events_lag_us_prod> 1 000 0005mcriticalCheck why lag is increasing. Restart the Event <URL> PRODKafkahin_kafka_consumer_lag_us_prod> 100015mcriticalCheck why lag is increasing. Restart <ORGANIZATION><URL> PRODKafkaflex_kafka_consumer_lag_us_prod> 100015mcriticalCheck why lag is increasing. Restart <ORGANIZATION><URL> PRODKafkasap_kafka_consumer_lag_us_prod> 100015mcriticalCheck why lag is increasing. Restart <ORGANIZATION><URL> PRODKafkadea_kafka_consumer_lag_us_prod> 100015mcriticalCheck why lag is increasing. Restart <ORGANIZATION><URL> PRODKafkaigate_prod_hco_create_kafka_consumer_group_members>= <DATE_TIME> and lag > 100015minfoCheck why the number of consumers is decreasing. Restart <ORGANIZATION><URL> PRODKafkaigate_prod_hco_create_kafka_consumer_group_members>= <DATE_TIME> and lag > 100015mhighCheck why the number of consumers is decreasing. Restart <ORGANIZATION><URL> PRODKafkaigate_prod_hco_create_kafka_consumer_group_members== 0 and lag > 100015mcriticalCheck why the number of consumers is decreasing. Restart <ORGANIZATION><URL> PRODKafkahub_prod_kafka_consumer_group_members>= <DATE_TIME> and lag > 100015minfoCheck why the number of consumers is decreasing. Restart the Event <URL> PRODKafkahub_prod_kafka_consumer_group_members>= 10 < 30 and lag > 100015mhighCheck why the number of consumers is decreasing. Restart the Event <URL> PRODKafkahub_prod_kafka_consumer_group_members== 0 and lag > 100015mcriticalCheck why the number of consumers is decreasing. Restart the Event <URL> PRODKafkafluentd_prod_kafka_consumer_group_membersEFK consumer group has 0 members30mhighCheck and restart <URL> PRODKafkaflex_prod_kafka_consumer_group_membersFLEX <PERSON> has 0 consumers10mcriticalNotify the FLEX TeamGBLUS PRODMDMservice_downcount(up{env=~"gblus_prod"} == 0) by (env,component) == 15mhighDetect the not working component and start <URL>LUS PRODMDMservice_downcount(up{env=~"gblus_prod"} == 0) by (env,component) > 15mcriticalDetect the not working component and start <URL>LUS PRODKongkong_database_downKong DB unreachable20mwarningCheck the <LOCATION> DB <URL>LUS PRODKongkong_http_500_status_rateHTTP 500 > 10%5mwarningCheck Gateway components' <URL><ORGANIZATION> PRODKongkong_http_502_status_rateHTTP 502 > 10%5mwarningCheck <LOCATION>'s port <URL><ORGANIZATION> PRODKongkong_http_503_status_rateHTTP 503 > 10%5mwarningCheck the <LOCATION> <URL><ORGANIZATION> PRODKongkong_http_504_status_rateHTTP 504 > 10%5mwarningCheck Reltio response rates. Check Gateway components for <URL>LUS PRODKongkong_http_401_status_rateHTTP 401 > <LOCATION> logs. Notify the authorities in case of suspected break-in <URL>LUS PRODKafkainternal_reltio_events_lag_prod> 1 000 00030minfoCheck why lag is increasing. Restart the Event <URL><ORGANIZATION> PRODKafkaigate_async_prod_kafka_consumer_group_membersigate_async_prod consumer group members have decreased (still > 20)15minfoCheck the <LOCATION> <URL><ORGANIZATION> PRODKafkaigate_async_prod_kafka_consumer_group_membersigate_async_prod consumer group members have decreased (still > 10)15mhighCheck the <LOCATION> <URL><ORGANIZATION> PRODKafkaigate_async_prod_kafka_consumer_group_membersigate_async_prod consumer group has 0 members15mcriticalCheck the <LOCATION> <URL><ORGANIZATION> PRODKafkahub_prod_kafka_consumer_group_membershub_prod consumer group members have decreased (still > 20)15minfoCheck the Hub <URL><ORGANIZATION> PRODKafkahub_prod_kafka_consumer_group_membershub_prod consumer group members have decreased (still > 10)15mhighCheck the Hub <URL><ORGANIZATION> PRODKafkahub_prod_kafka_consumer_group_membershub_prod consumer group has 0 members15mcriticalCheck the Hub <URL><ORGANIZATION> PRODKafkabatch_service_prod_kafka_consumer_group_membersbatch_service_prod consumer group has 0 members15mcriticalCheck the <ORGANIZATION> <URL>LUS PRODKafkabatch_service_prod_ack_kafka_consumer_group_membersbatch_service_prod_ack consumer group has 0 members15mcriticalCheck the <ORGANIZATION> <URL>LUS PRODKafkafluentd_gblus_prod_kafka_consumer_group_membersEFK consumer group has 0 members30mhighCheck Fluentd. Restart if <URL>LUS PRODKafkakafka_jvm_heap_memory_increasing> 3100<ORGANIZATION> memory use predicted in 5 hours20mhighCheck if <PERSON> is rebalancing. Check the Event Publisher."
|
||
},
|
||
{
|
||
"title": "Security",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Security",
|
||
"content": "\nThere are following aspects supporting security implemented in the solution:\n\n\tAll server nodes are in COMPANY VPN.\n\tExternal endpoints (<PERSON>, KONG API) are exposed to cloud services (MAP, <NRP>) through the AWS ELB.\n\tEach endpoint has secured transport established using TLS 1.2 – see <LOCATION> section.\n\tOnly authenticated clients can access MDM services.\n\tAccess to resources is controlled by built-in authorization process.\n\tEvery <ORGANIZATION> call is logged in access log. It is a standard <ORGANIZATION> access log format.\n\n"
|
||
},
|
||
{
|
||
"title": "Authentication",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Authentication",
|
||
"content": "\nAPI Authentication\nAPI authentication is provided by <LOCATION>. There are two methods supported:\n\n\tOAuth2 internal\n\tOAuth 2 external – <PERSON> (recommended)\n\tAPI key\n\n\n\nOAuth2 method is recommended, especially for cloud services. The gateway uses Client Credentials grant type variant of <ORGANIZATION>. The method is supported by <ORGANIZATION> plugin. Client secrets are managed by <LOCATION> and stored in <PERSON> configuration database.\nAPI key authentication is a deprecated method, its usage should be avoided for new services. Keys are unique, randomly generated with 32 characters length managed by <LOCATION> – please see <LOCATION> documentation for details."
|
||
},
|
||
{
|
||
"title": "Authorization",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Authorization",
|
||
"content": "\nRest <ORGANIZATION> to exposed services is controlled with the following algorithm:\n\n\tREST channel component reads user authorization configuration based on X-Consumer-Username header passed by KONG.\n\tAuthorization configuration contains:\n\t\n\t\tList of roles user can access. Roles express operation/logic user can execute.\n\t\tList of countries user can read or write.\n\t\tList of source systems (related to crosswalk type) that data can come from.\n\t\n\t\n\tOperation level authorization – system checks if user can execute an operation.\n\tData level authorization – system checks if user can read or modify entities:\n\t\n\t\tDuring read operation by crosswalk – it is checked if country attribute value is on the allowed country list, otherwise system throws access forbidden error.\n\t\tDuring search operation, filter is modified restriction on country attribute are added) to limit countries user has no access to.\n\t\tDuring write operation, system validates if country attribute and crosswalk type are authorized.\n\n\nTable 12. Role definitions\n \n\n\nRole name\nDescription\n\n\nPOST_HCP\nAllows user to create a new HCP entity\n\n\nPATCH_HCP\nAllows user to update <ORGANIZATION> entity\n\n\nPOST_HCO\nAllows user to create a new <ORGANIZATION> entity\n\n\nPATCH_HCO\nAllows user to update HCO entity\n\n\nGET_ENTITY\nAllows user to get data of single Entity, specified by ID\n\n\nSEARCH_ENTITY\nAllows user to search for Entities by search criteria\n\n\nRESPONSE_DCR\nAllows user to send <ORGANIZATION> response to Gateway\n\n\nDELETE_CROSSWALK\nAllows user to delete crosswalk, effectively removing one datasource from Entity\n\n\nGET_LOV\nAllows user to get dictionary data (<ORGANIZATION> authorization configuration for <ORGANIZATION> are protected by <ORGANIZATION> mechanism, clients are granted permission to read only from topics dedicated to them. Complexity of <PERSON> is hidden behind Ansible – permissions are defined in <ORGANIZATION> file, in the following format:\n \nType and description of each parameter is specified in table below.\n\n\nTable 13. Topic configuration parameters\n \n \n\n\nParameter\nType\nDescription \n\n\nname\nString\nTopic name\n\n\npartitions\nInteger\nNumber of partitions to create\n\n\nreplicas\nInteger\nReplication factor for partitions\n\n\nproducers\nList of <NRP> of usernames that are allowed to publish message to <DATE_TIME>, String\nConsumers that are allowed to consume from this topic. Map entries are in format "username":"consumer_group_id"\n\n\n\n\t\n\t\n"
|
||
},
|
||
{
|
||
"title": "<LOCATION> external <ORGANIZATION> plugin",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/KONG+external+OAuth2+plugin",
|
||
"content": "\nTo integrate with <PERSON> token validation process, external <LOCATION> plugin was implemented. Source code and instructions for installation and configuration of local environment were published on <ORGANIZATION>. \nCheck <URL> readme file for more information.\nThe role of plugin: \nValidate access tokens sent by developers using a third-party OAuth 2.0 Authorization Server (RFC 7662). The flow of plugin, request, and response from <ORGANIZATION> have to be compatible with RFC 7622 specification. To get more information about this specification check <URL> .Plugin assumes that the <ORGANIZATION> already has an access token that will be validated against a third-party <ORGANIZATION> 2.0 server – <PERSON>. \nFlow of the plugin:\n\n\tClient invokes Gateway API providing token generated from PING API\n\tKONG plugin introspects this token\n\t\n\t\tif the token is active, plugin will fill X-Consumer-Username header\n\t\tif the token is not active, the access to the specific uri will be <ORGANIZATION> Plugin configuration:\n \n\nTo define a mdm-external-oauth plugin the following parameters have to be defined:\n\n\tintrospection_url – url address to ping federate <ORGANIZATION> with access to introspect oauth2 tokens\n\tauthorization_value – username and ●●●●●●●●●●●●●●●● to "Basic <value>" format which is authorized to invoke introspect API.\n\thide_credentials – if true, the token provided in request will be removed from request after validation to obtain more security specifications.\n\tusers_map – this map contains comma separated list of values. The first value is user name defined in <PERSON> the second value separated by colon is the user name defined in mdm-manager application. This map is used to correctly map and validate tokens received in request. Additionally, when <ORGANIZATION> introspect token, it returns the username. This username is mapped on existing user in mdm-manager, so there is no need to define additional users in mdm-manager – it is enough to fill users_map configuration with appropriate values.\n\n\n\nKAFKA authentication\nKafka access is protected using SASL framework. Clients are required to specify user and ●●●●●●●●●●● the configuration. Credentials are sent over <ORGANIZATION> transport."
|
||
},
|
||
{
|
||
"title": "Transport",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Transport",
|
||
"content": "\nCommunication between <ORGANIZATION> and external systems is secured by setting up an encrypted connection with the following specifications:\n\n\tCiphersuites: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCMSHA384:ECDHE-ECDSA-CHACHA20-POLY1305:<ORGANIZATION>-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256\n\tVersions: TLSv1.2\n\tTLS curves: prime256v1, secp384r1, secp521r1\n\tCertificate type: ECDSA\n\tCertificate curve: prime256v1, secp384r1, secp521r1\n\tCertificate signature: sha256WithRSAEncryption, ecdsa-with-SHA256, ecdsa-with-SHA384, ecdsa-with-SHA512\n\tRSA key size: 2048 (if not ecdsa)\n\tDH Parameter size: None (disabled entirely)\n\tECDH Parameter size: 256\n\tHSTS: <PERSON>-age=<US_BANK_NUMBER>\n\tCertificate switching: None\n\n\n\n"
|
||
},
|
||
{
|
||
"title": "User management",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/User+management",
|
||
"content": "\nUser accounts are managed by the respective components of the Gateway and Hub. \nAPI <PERSON> are managed by <LOCATION> and stored in <PERSON> database. There are two ways of adding a new user to <LOCATION> configuration:\n\n\tUsing configuration repository and Ansible\n\n\n\nAnsible tool, which is used to deploy <ORGANIZATION>, has a plugin that supports <LOCATION> user management. User configuration is kept in <ORGANIZATION> configuration files (passwords being encrypted using built-in <LOCATION> encryption). Adding a new user requires adding the following section to the appropriate configuration file:\n \n\n\tDirectly, using <LOCATION> REST API\n\n\n\nThis method requires access to COMPANY VPN and to machine that hosts <ORGANIZATION>, since REST endpoints are only bound to "localhost", and not exposed to the outside world. URL of the endpoint is:\n It can be accessed via cURL commandline tool. To list all the users that are currently defined use the following command:\n \nTo create a new user:\n To set an API Key for the user:\n A new <ORGANIZATION> key will be automatically generated by <LOCATION> and returned in response.\nTo create <ORGANIZATION> credentials use the following call instead:\n client_id and client_secret are login credentials, redirect_uri should point to HUB <ORGANIZATION> endpoint. Please see <LOCATION> documentation for details.\n\nKAFKA users\nKafka users are managed by brokers. Authentication method used is <ORGANIZATION> Authentication and Authorization Service (JAAS) with <ORGANIZATION> module. User configuration is stored inside kafka_server_<URL>nf file, that is present in each broker. File has the following structure:\n \nProperties "username" and "password" define credentials to use to secure inter-broker communication. Properties in format "user_<username>" are actual definitions of users. So, adding a new user named "bob" would require addition of the following property to <ORGANIZATION> file:\n\n \n\nCAUTION! Since JAAS configuration file is only read on <PERSON> broker startup, adding a new user requires restart of all brokers. In multi-broker environment this can be achieved by restarting one broker at a time, which should be transparent for end users, given <PERSON> fault-tolerance capabilities. This limitation might be overcome in future versions by using external user store or custom login module, instead of <URL>e process of adding this entry and distributing <ORGANIZATION> file is automated with Ansible: usernames and ●●●●●●●●●●●● kept in <ORGANIZATION> configuration file, encrypted using Ansible Vault (with <ORGANIZATION> encryption). \nMongoDB users\nMongoDB is used only internally, by <ORGANIZATION> modules and is not exposed to external users, therefore there is no need to create accounts for them. For operational purposes there might be some administration/technical accounts created using standard Mongo commandline tools, as described in MongoDB documentation."
|
||
},
|
||
{
|
||
"title": "SOP HUB",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/SOP+HUB",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Hub Configuration",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Hub+Configuration",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>:",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Setup APM integration in <LOCATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Setup+APM+integration+in+Kibana",
|
||
"content": "To setup <ORGANIZATION> integration in <PERSON> you need to deploy fleet server first. To do so you need to enable it in mdm-hub-cluster-env repository(eg. in <LOCATION>/nprod/namespaces/emea-backend/values.yaml)After deploying it open kibana <ORGANIZATION>. And got to <URL>rify if fleet-server is properly configured:Go to <ORGANIZATION> Add the APM IntegrationClick Add Elastic APMChange host to <IP_ADDRESS>:8200In section 2 choose Existing hosts and choose desired agent-policy(Fleet server on <ORGANIZATION> policy)Save changesAfter configuring your service to connect to apm-server it should be visible in <LOCATION>.<ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Consul:",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Updating Dictionary",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Updating+Dictionary",
|
||
"content": "To update dictionary from excelConvert excel to csv formatChange <ORGANIZATION> to Unix Put file in appropriate path in mdm-config-registry repository in config-extCheck Updating ETL Dictionaries in Consul page for appropriate Consul UI URL (You need to have a security token set in <ORGANIZATION> section)"
|
||
},
|
||
{
|
||
"title": "Updating ETL Dictionaries in Consul",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Updating+ETL+Dictionaries+in+Consul",
|
||
"content": "Configuration repository has dedicated directories that store dictionaries used by the <ORGANIZATION> engine during loading data with batch service. The content of directories is published in Consul. The table shows the <ORGANIZATION> name and consul's key under which data in posted:Dir nameConsul keyconfig-ext/dev_gblus<URL> update Consul values you have to:Make changes in the desired directory and push them to the master git branch,git2consul will synchronize the git repo to Consul Please be advised that proper <ORGANIZATION> token is required to access key/value path you desire. Especially important for <ORGANIZATION>/GBLUS directories. "
|
||
},
|
||
{
|
||
"title": "Environment Setup:",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Configuration (<PERSON>)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "Configuration steps:Configure mongo permissions for users mdm_batch_service, <PERSON>, and mdmgw. Add permissions to database schema related to new environment:---users: mdm_batch_service: mongo: databases: reltio_amer-dev: roles: - "readWrite" reltio_[tenant-env]: - "readWrite"2. Add directory with environment configuration files in <LOCATION>/nprod/namespaces/. You can just make a copy of the existing amer-dev configuration.3. Change file [tenant-env]/values.yaml:Change the value of "env" property,Change the value of "logging_index" property,Change the address of <ORGANIZATION> service - "kong_<URL>m_external_<URL>rospection_url" property. Use value from below table:Env classoAuth introspection URLDEV<URL> Change file [tenant-env]/kafka-topics.yaml by changing the prefix of topic names.5. Add kafka connect instance for newly added environment - add the configuration section to kafkaConnect property located in <LOCATION>/nprod/namespaces/amer-backend/values.yaml5.1 Add secrets - kafkaConnect.[tenant-env].connectors.[tenant-env]<URL>ssphrase and kafkaConnect.[tenant-env].connectors.[tenant-env]<URL>y6. Configure Consul (<PERSON>/nprod/namespaces/amer-backend/values.yaml and amer/nprod/namespaces/amer-backend/secrets.yaml):Add repository to git2consul - property <URL>pos,Add policies - property consul_acl.policies,And policy binding - property consul_<URL>metl-token.policiesAdd secrets - <URL>pos.[tenant-env]<URL>ername: and <URL>pos.[tenant-env]<URL>sswordCreate proper branch in mdm-hub-env-config repo, like in an example: config/dev_amer - <URL> Modify components configuration:Change [tenant-env]/config_files/all/config/application.yamlchange "env" property,change "<URL>seURL" property,change "mdmConfig.rdmURL" property,change "<URL>flow.url" property,Change [tenant-env]/config_files/event-publisher/config/application.yaml:Change "local_env" propertyChange [tenant-env]/config_files/reltio-subscriber/config/application.yaml:Change "<ORGANIZATION>" properties according to Reltio configuration,check and confirm if secrets for this component needn't be changed - changing of <ORGANIZATION> queue could cause changing of <ORGANIZATION> credentials - verify with <ORGANIZATION>'s tenant configuration,Change [tenant-env]/config_files/mdm-manager/config/application.yaml:Change "<URL>incipalMappings" according the correct topic <URL><ORGANIZATION> tenants details for the above properties:8. Add transaction topics in fluentd configuration - amer/nprod/namespaces/amer-backend/values.yaml and change <URL>ics list.9. <PERSON>) Add additional service monitor to <PERSON>/nprod/namespaces/monitoring/service-monitors.yaml configuration file:- namespace: [tenant-env] name: sm-[tenant-env]-services selector: matchLabels: prometheus: [tenant-env]-services endpoints: - port: <PERSON>interval: 30s scrapeTimeout: 30s - port: prometheus-fluent-bit path: "/api/<US_DRIVER_LICENSE>/metrics/prometheus" interval: 30s scrapeTimeout: 30sb) Add Snowflake database details to <PERSON>/nprod/namespaces/monitoring/jdbc-exporter.yaml configuration file:jdbcExporters: <ORGANIZATION>: db: url: "jdbc:snowflake://<URL>" username: "[ USERNAME ]"Add ●●●●●●●●●●● amer/nprod/namespaces/monitoring/secrets.yamljdbcExporters: <ORGANIZATION>: db: password: "[ ●●●●●●●●●●●10. <PERSON> job responsible for deploying backend services - to apply mongo and fluentd changes.11. Connect to mongodb server and create scheme reltio_[tenant-env].11.1 Create collections and indexes in the newly added schemas: <URL>eateCollection("entityHistory") <URL>eateIndex({country: -1}, {background: true, name: "idx_country"});<URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});<URL>eateIndex({entityType: -1}, {background: true, name: "idx_entityType"});<URL>eateIndex({status: -1}, {background: true, name: "idx_status"});<URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});<URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});<URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"});<URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"});<URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"});<URL>eateIndex({mdmSource: -1}, {background: true, name: "idx_mdmSource"});<URL>eateIndex({entityChecksum: -1}, {background: true, name: "idx_entityChecksum"});<URL>eateIndex({parentEntityId: -1}, {background: true, name: "idx_parentEntityId"});<URL>eateIndex({COMPANYGlobalCustomerID: -1}, {background: true, name: "idx_COMPANYGlobalCustomerID"});<URL>eateCollection("entityRelations")<URL>eateIndex({country: -1}, {background: true, name: "idx_country"});<URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});<URL>eateIndex({relationType: -1}, {background: true, name: "idx_relationType"});<URL>eateIndex({status: -1}, {background: true, name: "idx_status"});<URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});<URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});<URL>eateIndex({startObjectId: -1}, {background: true, name: "idx_startObjectId"});<URL>eateIndex({endObjectId: -1}, {background: true, name: "idx_endObjectId"});<URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"}); <URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"}); <URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"}); <URL>eateIndex({mdmSource: -1}, {background: true, name: "idx_mdmSource"}); <URL>eateCollection("LookupValues")<URL>eateIndex({updatedOn: 1}, {background: true, name: "idx_updatedOn"});<URL>eateIndex({countries: 1}, {background: true, name: "idx_countries"});<URL>eateIndex({mdmSource: 1}, {background: true, name: "idx_mdmSource"});<URL>eateIndex({type: 1}, {background: true, name: "idx_type"});<URL>eateIndex({code: 1}, {background: true, name: "idx_code"});<URL>eateIndex({valueUpdateDate: 1}, {background: true, name: "idx_valueUpdateDate"});<URL>eateCollection("ErrorLogs")<URL>eateIndex({plannedResubmissionDate: -1}, {background: true, name: "idx_plannedResubmissionDate_-1"});<URL>eateIndex({timestamp: -1}, {background: true, name: "idx_timestamp_-1"});<URL>eateIndex({exceptionClass: 1}, {background: true, name: "idx_exceptionClass_1"});<URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});<URL>eateCollection("batchEntityProcessStatus")<URL>eateIndex({batchName: -1, sourceId: -1}, {background: true, name: "idx_findByBatchNameAndSourceId"});<URL>eateIndex({batchName: -1, deleted: -1, objectType: -1, sourceIngestionDate: -1}, {background: true, name: "idx_EntitiesUnseen_SoftDeleteJob"});<URL>eateIndex({batchName: -1, deleted: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResult_ProcessingJob"});<URL>eateIndex({batchName: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResultAll_ProcessingJob"});<URL>eateCollection("batchInstance")<URL>eateCollection("relationCache")<URL>eateIndex({startSourceId: -1}, {background: true, name: "idx_findByStartSourceId"});<URL>eateCollection("DCRRequests")<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});<URL>eateIndex({entityURI: -1, <URL>: -1}, {background: true, name: "idx_entityURIStatusNameFind_SubmitVR"});<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});<URL>eateCollection("entityMatchesHistory")<URL>eateIndex({_id: -1, "<URL>tchObjectUri": -1, "<URL>tchType": -1}, {background: true, name: "idx_findAutoLinkMatch_CleanerStream"});<URL>eateCollection("DCRRegistry")<URL>eateIndex({"<URL>angeDate": -1}, {background: true, name: "idx_changeDate_FindDCRsBy"});<URL>eateIndex({extDCRRequestId: -1}, {background: true, name: "idx_extDCRRequestId_FindByExtId"});<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});<URL>eateCollection("sequenceCounters")<URL>sertOne({_id: "COMPANYAddressIDSeq", sequence: NumberLong([sequence start number])}) //NOTE!!!! replace text [sequence start count] with value from below <NRP> start numberemea5000000000amer6000000000apac700000000012. <PERSON> job to deploy kafka resources and mdmhub components for the new environment.13. Create paths on <ORGANIZATION> bucket required by <ORGANIZATION> and <ORGANIZATION>'s DAGs.14. Configure <PERSON>:Add index patterns,Configure retention,Add dashboards.15. Configure basic Airflow DAGs (ansible <ORGANIZATION>,hub_reconciliation_v2,lookup_values_export_to_s3,reconciliation_snowflake.16. Deploy DAGs (NOTE: check if your kubectl is configured to communicate with the cluster you wanted to change):ansible-playbook <NRP> -i inventory/[tenant-env]/inventory17. Configure Snowflake for the [tenant-env] in mdm-hub-env-config as in example inventory/dev_amer/group_vars/snowflake/*. Verification pointsCheck <ORGANIZATION>'s configuration - get reltio tenant configuration:Check if you are able to execute <ORGANIZATION>'s operations using credentials of the service user,Check if streaming processing is enable - <URL>stinations.enabled = true, <URL>reamingEnabled=true, <URL>reamingAPIEnabled=true,Check if cassanda export is configured - <URL>condaryDsEnabled = <URL>eck <PERSON>:Check if you are able to connect to <PERSON> server using command line client running from your local <URL>eck <PERSON>:Users mdmgw, <PERSON> and mdm_batch_service - permissions for the newly added database (readWrite),Indexes,Verify if correct start value is set for sequance COMPANYAddressIDSeq - collection sequenceCounters _id = <URL>eck MDMHUB API:Check mdm-manager <ORGANIZATION> with apikey authentication by executing one of read operations: GET {{ manager_url }}/entities?filter=equals(type, 'configuration/entityTypes/<ORGANIZATION>'). The request should execute properly (HTTP status code 200) and returns some <ORGANIZATION> objects. The empty response is also possible in the case when there is no <ORGANIZATION> data in <ORGANIZATION>,Run the same operation using oAuth2 authentication - remember that the manager url is different,Check mdm-manager <ORGANIZATION> with apikey authentication by executing write operation:curl --location --request POST '{{ manager_url }}/hcp' \\--header 'apikey: {{ api_key }}' \\--header 'Content-Type: application/json' \\--data-raw '{ "hcp" : { "type" : "configuration/entityTypes/<ORGANIZATION>", "attributes" : { "Country" : [ { "value" : "{{ country }}" } ], "FirstName" : [ { "value" : "Verification Test MDMHUB" } ], "LastName" : [ { "value" : "Verification Test MDMHUB" } ] }, "crosswalks" : [ { "type" : "configuration/sources/{{ source }}", "value" : "verification_test_mdmhub" } ] }}'Replace all placeholders in the above request using the correct values for the configured environment. The response should return HTTP code 200 and a URI of the created object. After verification deleted created object by running: curl --location --request DELETE '{{ manager_url }}/entities/crosswalk?type={{ source }}&value=verification_test_mdmhub' --header 'apikey: {{ api_key }}'Run the same operations using oAuth2 authentication - remember that the mdm manager url is different,Verify api-router <ORGANIZATION> with apikey authentication using search operation: GET {{ api_router_url }}/entities?filter=equals(type, 'configuration/entityTypes/<ORGANIZATION>'). The request should execute properly (HTTP status code 200) and returns some <ORGANIZATION> objects. Empty response is also possible in the case when there is no <ORGANIZATION> data in <ORGANIZATION>,Check api-router <ORGANIZATION> with apikey authentication by executing write operation:curl --location --request POST '{{ api_router_url }}/hcp' \\--header 'apikey: {{ api_key }}' \\--header 'Content-Type: application/json' \\--data-raw '{ "hcp" : { "type" : "configuration/entityTypes/<ORGANIZATION>", "attributes" : { "Country" : [ { "value" : "{{ country }}" } ], "FirstName" : [ { "value" : "Verification Test MDMHUB" } ], "LastName" : [ { "value" : "Verification Test MDMHUB" } ] }, "crosswalks" : [ { "type" : "configuration/sources/{{ source }}", "value" : "verification_test_mdmhub" } ] }}'Replace all placeholders in the above request using the correct values for the configured environment. The response should return HTTP code 200 and a URI of the created object. After verification deleted created object by running: curl --location --request DELETE '2/entities/crosswalk?type={{ source }}&value=verification_test_mdmhub' --header 'apikey: {{ api_key }}'Run the same operations using oAuth2 authentication - remember that the api router url is different,Check batch service <ORGANIZATION> with apikey authentication by executing following operation GET {{ batch_service_url }}/batchController/<ORGANIZATION>/instances/<ORGANIZATION>. The request should return 403 HTTP Code and body:{ "code": "403", "message": "Forbidden: <URL>thorizationException: Batch '<ORGANIZATION>' is not allowed."}The request doesn't create any <URL> the same operation using oAuth2 authentication - remember that the batch service url is different,Verify of component logs: mdm-manager, <ORGANIZATION> and batch-service url. Focus on errors and <PERSON> - rebalancing, authorization problems, topic existence warnings <URL><PERSON> streaming services:Check logs of reltio-subscriber, entity-enricher, callback-service, event-publisher and mdm-reconciliation-service components. Verify if there is no errors and kafka warnings related with rebalancing, authorization problems, topic existence warnings etc,Verify if lookup refresh process is working properly - check existance of mongo collection LookupValues. It should have data,Airflow:Check if DAGs are enabled and have a defined schedule,Run DAGs: export_merges_from_reltio_to_s3_full_{{ env }}, hub_reconciliation_v2_{{ env }}, lookup_values_export_to_s3_{{ env }}, reconciliation_snowflake_{{ env }}.Wait for their finish and validate <URL>owflake:Check snowflake connector logs,Check if tables HUB_KAFKA_DATA, LOV_DATA, MERGE_TREE_DATA exist at LANDING schama and has data,Verify if mdm-hub-snowflake-dm package is deployed,What else?Monitoring:Check grafana dashboards:HUB Performance,<PERSON>,Host Statistics,<ORGANIZATION>,<LOCATION>,<URL>eck <PERSON> index patterns:{{env}}-internal-batch-efk-transactions*,{{env}}-internal-gw-efk-transactions*,{{env}}-internal-publisher-efk-transactions*,{{env}}-internal-subscriber-efk-transactions*,{{env}}-mdmhub,Check <PERSON> dashboards:{{env}} API calls,{{env}} Batch Instances,{{env}} Batch loads,{{env}} Error Logs Overview,{{env}} Error Logs RDM,{{env}} HUB Store{{env}} HUB events,{{env}} MDM Events,{{env}} <ORGANIZATION>,Check alerts - How?"
|
||
},
|
||
{
|
||
"title": "Configuration (<PERSON>)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "Configuration steps:Copy mdm-hub-cluster-env/amer/nprod directory into mdm-hub-cluster-env/amer/nprod <URL>place ...CertificatesGenerate private-keys, CSRs and request <LOCATION> certificate (<LOCATION>/config_files/certs).\nmarek@CF-19CHU8:~$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <URL>.csr\nGenerating a <ORGANIZATION> private key\n.....+++++\n.....................................................+++++\nwriting new private key to '<URL>y'\n-----\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left <ORGANIZATION> (2 letter code) [AU]:\nState or Province Name (full name) [Some-State]:\nLocality Name (eg, city) []:\nOrganization Name (eg, company) [Internet <ORGANIZATION> Pty Ltd]:COMPANY Incorporated\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []: <URL>\nEmail Address []:<EMAIL_ADDRESS>\n\nPlease enter the following 'extra' <LOCATION> be sent with your certificate request\nA challenge <a href=<URL>>●●●●●●●●●●●●</a>\nAn optional company name []:\nGenerate private-keys, CSRs and request <PERSON> certificate (<ORGANIZATION>-backend/secret.yaml\nmarek@CF-19CHU8:~$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <URL>.csr\nGenerating a <ORGANIZATION> private key\n..........................+++++\n.....+++++\nwriting new private key to '<URL>y'\n-----\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left <ORGANIZATION> (2 letter code) [AU]:\nState or Province Name (full name) [Some-State]:\nLocality Name (eg, city) []:\nOrganization Name (eg, company) [Internet <ORGANIZATION> Pty Ltd]:COMPANY Incorporated\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []:<URL>\nEmail Address []:<EMAIL_ADDRESS>\n\nPlease enter the following 'extra' <LOCATION> be sent with your certificate request\nA challenge <a href=<URL>>●●●●●●●●●●●●</a>\nAn optional company name []:\nBELOW IS <PERSON> COPY WE USE AS A REFERENCEConfiguration steps:Configure mongo permissions for users mdm_batch_service, <PERSON>, and mdmgw. Add permissions to database schema related to new environment:---users: mdm_batch_service: mongo: databases: reltio_amer-dev: roles: - "readWrite" reltio_[tenant-env]: - "readWrite"2. Add directory with environment configuration files in <LOCATION>/nprod/namespaces/. You can just make a copy of the existing amer-dev configuration.3. Change file [tenant-env]/values.yaml:Change the value of "env" property,Change the value of "logging_index" property,Change the address of <ORGANIZATION> service - "kong_<URL>m_external_<URL>rospection_url" property. Use value from below table:Env classoAuth introspection URLDEV<URL> Change file [tenant-env]/kafka-topics.yaml by changing the prefix of topic names.5. Add kafka connect instance for newly added environment - add the configuration section to kafkaConnect property located in <LOCATION>/nprod/namespaces/amer-backend/values.yaml5.1 Add secrets - kafkaConnect.[tenant-env].connectors.[tenant-env]<URL>ssphrase and kafkaConnect.[tenant-env].connectors.[tenant-env]<URL>y6. Configure Consul (<PERSON>/nprod/namespaces/amer-backend/values.yaml and amer/nprod/namespaces/amer-backend/secrets.yaml):Add repository to git2consul - property <URL>pos,Add policies - property consul_acl.policies,And policy binding - property consul_<URL>metl-token.policiesAdd secrets - <URL>pos.[tenant-env]<URL>ername: and <URL>pos.[tenant-env]<URL>sswordCreate proper branch in mdm-hub-env-config repo, like in an example: config/dev_amer - <URL> Modify components configuration:Change [tenant-env]/config_files/all/config/application.yamlchange "env" property,change "<URL>seURL" property,change "mdmConfig.rdmURL" property,change "<URL>flow.url" property,Change [tenant-env]/config_files/event-publisher/config/application.yaml:Change "local_env" propertyChange [tenant-env]/config_files/reltio-subscriber/config/application.yaml:Change "<ORGANIZATION>" properties according to Reltio configuration,check and confirm if secrets for this component needn't be changed - changing of <ORGANIZATION> queue could cause changing of <ORGANIZATION> credentials - verify with <ORGANIZATION>'s tenant configuration,Change [tenant-env]/config_files/mdm-manager/config/application.yaml:Change "<URL>incipalMappings" according the correct topic <URL><ORGANIZATION> tenants details for the above properties:8. Add transaction topics in fluentd configuration - amer/nprod/namespaces/amer-backend/values.yaml and change <URL>ics list.9. <PERSON>) Add additional service monitor to <PERSON>/nprod/namespaces/monitoring/service-monitors.yaml configuration file:- namespace: [tenant-env] name: sm-[tenant-env]-services selector: matchLabels: prometheus: [tenant-env]-services endpoints: - port: <PERSON>interval: 30s scrapeTimeout: 30s - port: prometheus-fluent-bit path: "/api/<US_DRIVER_LICENSE>/metrics/prometheus" interval: 30s scrapeTimeout: 30sb) Add Snowflake database details to <PERSON>/nprod/namespaces/monitoring/jdbc-exporter.yaml configuration file:jdbcExporters: <ORGANIZATION>: db: url: "jdbc:snowflake://<URL>" username: "[ USERNAME ]"Add ●●●●●●●●●●● amer/nprod/namespaces/monitoring/secrets.yamljdbcExporters: <ORGANIZATION>: db: password: "[ ●●●●●●●●●●●10. <PERSON> job responsible for deploying backend services - to apply mongo and fluentd changes.11. Connect to mongodb server and create scheme reltio_[tenant-env].11.1 Create collections and indexes in the newly added schemas: <URL>eateCollection("entityHistory") <URL>eateIndex({country: -1}, {background: true, name: "idx_country"});<URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});<URL>eateIndex({entityType: -1}, {background: true, name: "idx_entityType"});<URL>eateIndex({status: -1}, {background: true, name: "idx_status"});<URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});<URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});<URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"});<URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"});<URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"});<URL>eateIndex({mdmSource: -1}, {background: true, name: "idx_mdmSource"});<URL>eateIndex({entityChecksum: -1}, {background: true, name: "idx_entityChecksum"});<URL>eateIndex({parentEntityId: -1}, {background: true, name: "idx_parentEntityId"});<URL>eateIndex({COMPANYGlobalCustomerID: -1}, {background: true, name: "idx_COMPANYGlobalCustomerID"});<URL>eateCollection("entityRelations")<URL>eateIndex({country: -1}, {background: true, name: "idx_country"});<URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});<URL>eateIndex({relationType: -1}, {background: true, name: "idx_relationType"});<URL>eateIndex({status: -1}, {background: true, name: "idx_status"});<URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});<URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});<URL>eateIndex({startObjectId: -1}, {background: true, name: "idx_startObjectId"});<URL>eateIndex({endObjectId: -1}, {background: true, name: "idx_endObjectId"});<URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"}); <URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"}); <URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"}); <URL>eateIndex({mdmSource: -1}, {background: true, name: "idx_mdmSource"}); <URL>eateCollection("LookupValues")<URL>eateIndex({updatedOn: 1}, {background: true, name: "idx_updatedOn"});<URL>eateIndex({countries: 1}, {background: true, name: "idx_countries"});<URL>eateIndex({mdmSource: 1}, {background: true, name: "idx_mdmSource"});<URL>eateIndex({type: 1}, {background: true, name: "idx_type"});<URL>eateIndex({code: 1}, {background: true, name: "idx_code"});<URL>eateIndex({valueUpdateDate: 1}, {background: true, name: "idx_valueUpdateDate"});<URL>eateCollection("ErrorLogs")<URL>eateIndex({plannedResubmissionDate: -1}, {background: true, name: "idx_plannedResubmissionDate_-1"});<URL>eateIndex({timestamp: -1}, {background: true, name: "idx_timestamp_-1"});<URL>eateIndex({exceptionClass: 1}, {background: true, name: "idx_exceptionClass_1"});<URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});<URL>eateCollection("batchEntityProcessStatus")<URL>eateIndex({batchName: -1, sourceId: -1}, {background: true, name: "idx_findByBatchNameAndSourceId"});<URL>eateIndex({batchName: -1, deleted: -1, objectType: -1, sourceIngestionDate: -1}, {background: true, name: "idx_EntitiesUnseen_SoftDeleteJob"});<URL>eateIndex({batchName: -1, deleted: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResult_ProcessingJob"});<URL>eateIndex({batchName: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResultAll_ProcessingJob"});<URL>eateCollection("batchInstance")<URL>eateCollection("relationCache")<URL>eateIndex({startSourceId: -1}, {background: true, name: "idx_findByStartSourceId"});<URL>eateCollection("DCRRequests")<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});<URL>eateIndex({entityURI: -1, <URL>: -1}, {background: true, name: "idx_entityURIStatusNameFind_SubmitVR"});<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});<URL>eateCollection("entityMatchesHistory")<URL>eateIndex({_id: -1, "<URL>tchObjectUri": -1, "<URL>tchType": -1}, {background: true, name: "idx_findAutoLinkMatch_CleanerStream"});<URL>eateCollection("DCRRegistry")<URL>eateIndex({"<URL>angeDate": -1}, {background: true, name: "idx_changeDate_FindDCRsBy"});<URL>eateIndex({extDCRRequestId: -1}, {background: true, name: "idx_extDCRRequestId_FindByExtId"});<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});<URL>eateCollection("sequenceCounters")<URL>sertOne({_id: "COMPANYAddressIDSeq", sequence: NumberLong([sequence start number])}) //NOTE!!!! replace text [sequence start count] with value from below <NRP> start numberemea5000000000amer6000000000apac700000000012. <PERSON> job to deploy kafka resources and mdmhub components for the new environment.13. Create paths on <ORGANIZATION> bucket required by <ORGANIZATION> and <ORGANIZATION>'s DAGs.14. Configure <PERSON>:Add index patterns,Configure retention,Add dashboards.15. Configure basic Airflow DAGs (ansible <ORGANIZATION>,hub_reconciliation_v2,lookup_values_export_to_s3,reconciliation_snowflake.16. Deploy DAGs (NOTE: check if your kubectl is configured to communicate with the cluster you wanted to change):ansible-playbook <NRP> -i inventory/[tenant-env]/inventory17. Configure Snowflake for the [tenant-env] in mdm-hub-env-config as in example inventory/dev_amer/group_vars/snowflake/*. Verification pointsCheck <ORGANIZATION>'s configuration - get reltio tenant configuration:Check if you are able to execute <ORGANIZATION>'s operations using credentials of the service user,Check if streaming processing is enable - <URL>stinations.enabled = true, <URL>reamingEnabled=true, <URL>reamingAPIEnabled=true,Check if cassanda export is configured - <URL>condaryDsEnabled = <URL>eck <PERSON>:Users mdmgw, <PERSON> and mdm_batch_service - permissions for the newly added database (readWrite),Indexes,Verify if correct start value is set for sequance COMPANYAddressIDSeq - collection sequenceCounters _id = <URL>eck MDMHUB API:Check mdm-manager <ORGANIZATION> with apikey authentication by executing one of read operations: GET {{ manager_url }}/entities?filter=equals(type, 'configuration/entityTypes/<ORGANIZATION>'). The request should execute properly (HTTP status code 200) and returns some <ORGANIZATION> objects. The empty response is also possible in the case when there is no <ORGANIZATION> data in <ORGANIZATION>,Run the same operation using oAuth2 authentication - remember that the manager url is different,Verify api-router <ORGANIZATION> with apikey authentication using search operation: GET {{ api_router_url }}/entities?filter=equals(type, 'configuration/entityTypes/<ORGANIZATION>'). The request should execute properly (HTTP status code 200) and returns some <ORGANIZATION> objects. Empty response is also possible in the case when there is no <ORGANIZATION> data in <ORGANIZATION>,Run the same operation using oAuth2 authentication - remember that the api router url is different,Check batch service <ORGANIZATION> with apikey authentication by executing following operation GET {{ batch_service_url }}/batchController/<ORGANIZATION>/instances/<ORGANIZATION>. The request should return 403 HTTP Code and body:{ "code": "403", "message": "Forbidden: <URL>thorizationException: Batch '<ORGANIZATION>' is not allowed."}The request doesn't create any <URL> the same operation using oAuth2 authentication - remember that the batch service url is different,Verify of component logs: mdm-manager, <ORGANIZATION> and batch-service url. Focus on errors and <PERSON> - rebalancing, authorization problems, topic existence warnings <URL><PERSON> streaming services:Check logs of reltio-subscriber, entity-enricher, callback-service, event-publisher and mdm-reconciliation-service components. Verify if there is no errors and kafka warnings related with rebalancing, authorization problems, topic existence warnings etc,Verify if lookup refresh process is working properly - check existance of mongo collection LookupValues. It should have data,<ORGANIZATION>:Run DAGs: export_merges_from_reltio_to_s3_full_{{ env }}, hub_reconciliation_v2_{{ env }}, lookup_values_export_to_s3_{{ env }}, reconciliation_snowflake_{{ env }}.Wait for their finish and validate <URL>owflake:Check snowflake connector logs,Check if tables HUB_KAFKA_DATA, LOV_DATA, MERGE_TREE_DATA exist at LANDING schama and has data,Verify if mdm-hub-snowflake-dm package is deployed,What else?Monitoring:Check grafana dashboards:HUB Performance,<PERSON>,Host Statistics,<ORGANIZATION>,<LOCATION>,<URL>eck <PERSON> index patterns:{{env}}-internal-batch-efk-transactions*,{{env}}-internal-gw-efk-transactions*,{{env}}-internal-publisher-efk-transactions*,{{env}}-internal-subscriber-efk-transactions*,{{env}}-mdmhub,Check <PERSON> dashboards:{{env}} API calls,{{env}} Batch Instances,{{env}} Batch loads,{{env}} Error Logs Overview,{{env}} Error Logs RDM,{{env}} HUB Store{{env}} HUB events,{{env}} MDM Events,{{env}} <ORGANIZATION>,Check alerts - How?"
|
||
},
|
||
{
|
||
"title": "Configuration (<ORGANIZATION> k8s)",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "Installation of new <ORGANIZATION> non-prod cluster basing on <ORGANIZATION> non-prod <URL>py mdm-hub-cluster-env/amer directory into mdm-hub-cluster-env/<ORGANIZATION> <URL>ange dir names from "amer" to "apac".Replace everything in files in <ORGANIZATION> directory: "amer"→"apac".CertificatesGenerate private-keys, CSRs and request <LOCATION> certificate (<LOCATION>/config_files/certs).\nanuskp@CF-<US_DRIVER_LICENSE>$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <URL>.csr\nGenerating a <ORGANIZATION> private key\n..................+++++\n.........................+++++\nwriting new private key to '<URL>y'\n-----\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left <ORGANIZATION> (2 letter code) [AU]:\nState or Province Name (full name) [Some-State]:\nLocality Name (eg, city) []:\nOrganization Name (eg, company) [Internet <ORGANIZATION> Pty Ltd]:COMPANY Incorporated\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []:<URL>\nEmail Address []:<EMAIL_ADDRESS>\n\nPlease enter the following 'extra' <LOCATION> be sent with your certificate request\nA challenge <a href=<URL>>●●●●●●●●●●●●</a>\nAn optional company name []:<ORGANIZATION>:<ORGANIZATION> Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>Place private-key and signed certificate in <LOCATION>/config_files/certs. Git-ignore them and encrypt them into .encrypt <URL>nerate private-keys, CSRs and request <PERSON> certificate (<ORGANIZATION>-backend/secret.yaml)\nanuskp@CF-<US_DRIVER_LICENSE>$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <URL>.csr\nGenerating a <ORGANIZATION> private key\n................................................................+++++\n.......................................+++++\nwriting new private key to '<URL>y'\n-----\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left <ORGANIZATION> (2 letter code) [AU]:\nState or Province Name (full name) [Some-State]:\nLocality Name (eg, city) []:\nOrganization Name (eg, company) [Internet <ORGANIZATION> Pty Ltd]:COMPANY Incorporated\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []:<URL>\nEmail Address []:<EMAIL_ADDRESS>\n\nPlease enter the following 'extra' <LOCATION> be sent with your certificate request\nA challenge <a href=<URL>>●●●●●●●●●●●●</a>\nAn optional company name []:<ORGANIZATION>:<ORGANIZATION> Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>After receiving the certificate, encode it with base64 and paste into <ORGANIZATION>-backend/secrets.yaml: -> <URL>y -> <URL>t (*) Since this is a new environment, remove everything under "migration" key in <ORGANIZATION>-backend/<URL>place all user_passwords in <ORGANIZATION>/<ORGANIZATION>. for each ●●●●●●●●●●●●●●●●● a new, 32-char one and globally replace it in all <ORGANIZATION> configs.Go through <ORGANIZATION>/config_files one by one and adjust settings such as: Reltio, <ORGANIZATION> etc.(*) Change <PERSON> topics and consumergroup names to fit naming standards. This is a one-time activity and does not need to be repeated if next environments will be built based on <ORGANIZATION> config.Export amer-nprod CRDs into yaml file and import it in <ORGANIZATION>-nprod:\n$ kubectx <ORGANIZATION> kubectl get crd -A -o yaml > ~/crd-definitions-amer.yaml\n$ kubectx <ORGANIZATION>-apac\n$ kubectl apply -f ~/crd-definitions-amer.yaml\nCreate config dirs for git2consul (mdm-hub-env-config):\n$ git checkout config/dev_amer\n$ git pull\n$ git branch config/dev_apac\n$ git checkout config/dev_apac\n$ git push origin config/dev_apac\nRepeat for qa and <URL>stall operators:\n$ ./<URL> -l operators -r <ORGANIZATION> -c nprod -e apac-dev -v 3.9.4\nInstall backend:\n$ ./<URL> -l backend -r <ORGANIZATION> -c nprod -e apac-dev -v 3.9.4\nLog into mongodb (use port forward if there is no connection to <LOCATION>: run "kubectl port-forward mongo-0 -n apac-backend 27017" and connect to mongo on <ORGANIZATION>). Run below script:\<URL>eateCollection("entityHistory") \<URL>eateIndex({country: -1}, {background: true, name: "idx_country"});\<URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});\<URL>eateIndex({entityType: -1}, {background: true, name: "idx_entityType"});\<URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\<URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\<URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\<URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"});\<URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"});\<URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"});\<URL>eateIndex({mdmSource: -1}, {background: true, name: "idx_mdmSource"});\<URL>eateIndex({entityChecksum: -1}, {background: true, name: "idx_entityChecksum"});\<URL>eateIndex({parentEntityId: -1}, {background: true, name: "idx_parentEntityId"});\n\<URL>eateIndex({COMPANYGlobalCustomerID: -1}, {background: true, name: "idx_COMPANYGlobalCustomerID"});\n\<URL>eateCollection("entityRelations")\<URL>eateIndex({country: -1}, {background: true, name: "idx_country"});\<URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});\<URL>eateIndex({relationType: -1}, {background: true, name: "idx_relationType"});\<URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\<URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\<URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\<URL>eateIndex({startObjectId: -1}, {background: true, name: "idx_startObjectId"});\<URL>eateIndex({endObjectId: -1}, {background: true, name: "idx_endObjectId"});\<URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"}); \<URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"}); \<URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"}); \<URL>eateIndex({mdmSource: -1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({updatedOn: 1}, {background: true, name: "idx_updatedOn"});\<URL>eateIndex({countries: 1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({mdmSource: 1}, {background: true, name: "idx_mdmSource"});\<URL>eateIndex({type: 1}, {background: true, name: "idx_type"});\<URL>eateIndex({code: 1}, {background: true, name: "idx_code"});\<URL>eateIndex({valueUpdateDate: 1}, {background: true, name: "idx_valueUpdateDate"});\n\<URL>eateCollection("ErrorLogs")\<URL>eateIndex({plannedResubmissionDate: -1}, {background: true, name: "idx_plannedResubmissionDate_-1"});\<URL>eateIndex({timestamp: -1}, {background: true, name: "idx_timestamp_-1"});\<URL>eateIndex({exceptionClass: 1}, {background: true, name: "idx_exceptionClass_1"});\<URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});\n\<URL>eateCollection("batchEntityProcessStatus")\<URL>eateIndex({batchName: -1, sourceId: -1}, {background: true, name: "idx_findByBatchNameAndSourceId"});\<URL>eateIndex({batchName: -1, deleted: -1, objectType: -1, sourceIngestionDate: -1}, {background: true, name: "idx_EntitiesUnseen_SoftDeleteJob"});\<URL>eateIndex({batchName: -1, deleted: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResult_ProcessingJob"});\<URL>eateIndex({batchName: <ORGANIZATION>, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResultAll_ProcessingJob"});\n\<URL>eateCollection("batchInstance")\n\<URL>eateCollection("relationCache")\<URL>eateIndex({startSourceId: -1}, {background: true, name: "idx_findByStartSourceId"});\n\<URL>eateCollection("DCRRequests")\<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});\<URL>eateIndex({entityURI: -1, <URL>: -1}, {background: true, name: "idx_entityURIStatusNameFind_SubmitVR"});\<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});\n\<URL>eateCollection("entityMatchesHistory")\<URL>eateIndex({_id: -1, "<URL>tchObjectUri": -1, "<URL>tchType": -1}, {background: true, name: "idx_findAutoLinkMatch_CleanerStream"});\n\<URL>eateCollection("DCRRegistry")\<URL>eateIndex({"<URL>angeDate": -1}, {background: true, name: "idx_changeDate_FindDCRsBy"});\<URL>eateIndex({extDCRRequestId: -1}, {background: true, name: "idx_extDCRRequestId_FindByExtId"});\<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});\n\<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});\n\<URL>eateCollection("sequenceCounters")\<URL>sertOne({_id: "COMPANYAddressIDSeq", sequence: NumberLong<PHONE_NUMBER>)}) // NOTE: <PHONE_NUMBER> is <ORGANIZATION>-specific\nLog into <PERSON>. Export dashboards/indices from <ORGANIZATION> and import them in <ORGANIZATION> ./<URL> -l mdmhub -r <ORGANIZATION> -c nprod -e apac-dev -v 3.9.4\nTickets:<ORGANIZATION> names ticket:Ticket queue: <ORGANIZATION>-NETWORK <NRP>: Add domains to <ORGANIZATION>:Hi <PERSON> add below <ORGANIZATION><URL>\<URL>\<URL>\<URL><LOCATION><URL>\<URL>\<URL>\<URL>\<URL>\<URL>\<URL>\n\nas CNAMEs of our ELB:\<URL>Also, please add one CNAME for each one of below <ORGANIZATION>: <URL>\nELB: <URL>\n\nCNAME: <URL>\nELB: <URL>\n\nCNAME: <URL>\nELB: <URL>\n\nCNAME: <URL>\nELB: <URL>Best Regards,PiotrMDM <ORGANIZATION> whitelistingTicket queue: <ORGANIZATION>-NETWORK ECSTitle: Firewall exceptions for new <ORGANIZATION> PDKS clusterDescription:Hi <ORGANIZATION> open all traffic listed in attached Excel sheet.\nIn case this is not the queue where I should request Firewall changes, kindly point me in the right direction.\n\nBest <PERSON> excel:SourceSource IPDestinationDestination <ORGANIZATION> monitoring (<URL>)CI/CD server (<URL>)<IP_ADDRESS>/<URL>-443MDM Hub monitoring (<URL>)CI/CD server (<URL>)EMEA NPROD MDM Hub10.90.98.0/24APAC <ORGANIZATION> cluster●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●4439094Global <PERSON> Hub10.90.96.0/24APAC <ORGANIZATION> cluster●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●443APAC <ORGANIZATION> cluster●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●Global NPROD MDM Hub10.90.96.0/248443APAC <ORGANIZATION> cluster●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●EMEA NPROD MDM Hub10.90.98.0/248443Integration tests:In mdm-hub-env-config prepare inventory/kube_dev_apac (copy <DATE_TIME> and adjust variables)run "prepare_int_tests" <PERSON> prepare_int_tests.yml -i inventory/kube_dev_apac/inventory -e src_dir="/mnt/c/Users/panu/gitrep/mdm-hub-inbound-services-all"\nin mdm-hub-inbound-services confirm test resources (citrus properties) for mdm-integration-tests have been replaced and run two <ORGANIZATION> tasks:-mdm-gateway/mdm-interation-tests/Tasks/verification/commonIntegrationTests-mdm-gateway/mdm-interation-tests/Tasks/verification/integrationTestsForCOMPANYModel"
|
||
},
|
||
{
|
||
"title": "Configuration (<ORGANIZATION>)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "Installation of new <ORGANIZATION> prod cluster basing on <ORGANIZATION> prod <URL>py mdm-hub-cluster-env/amer/prod directory into mdm-hub-cluster-env/<ORGANIZATION> <URL>ange dir names from "amer" to "<ORGANIZATION>" - apac-backend, <ORGANIZATION>-prodReplace everything in files in <ORGANIZATION> directory: "amer"→"apac".CertificatesGenerate private-keys, CSRs and request <LOCATION> certificate (<LOCATION>/config_files/certs).\nanuskp@CF-<US_DRIVER_LICENSE>$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <URL>.csr\nGenerating a <ORGANIZATION> private key\n..................+++++\n.........................+++++\nwriting new private key to '<URL>y'\n-----\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left <ORGANIZATION> (2 letter code) [AU]:\nState or Province Name (full name) [Some-State]:\nLocality Name (eg, city) []:\nOrganization Name (eg, company) [Internet <ORGANIZATION> Pty Ltd]:COMPANY Incorporated\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []:<URL>\nEmail Address []:<EMAIL_ADDRESS>\n\nPlease enter the following 'extra' <LOCATION> be sent with your certificate request\nA challenge <a href=<URL>>●●●●●●●●●●●●</a>\nAn optional company name []:<ORGANIZATION>:<ORGANIZATION> Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>Place private-key and signed certificate in <LOCATION>/config_files/certs. Git-ignore them and encrypt them into .encrypt <URL>nerate private-keys, CSRs and request <PERSON> certificate (<ORGANIZATION>-backend/secret.yaml)\nanuskp@CF-<US_DRIVER_LICENSE>$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <URL>.csr\nGenerating a <ORGANIZATION> private key\n................................................................+++++\n.......................................+++++\nwriting new private key to '<URL>y'\n-----\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left <ORGANIZATION> (2 letter code) [AU]:\nState or Province Name (full name) [Some-State]:\nLocality Name (eg, city) []:\nOrganization Name (eg, company) [Internet <ORGANIZATION> Pty Ltd]:COMPANY Incorporated\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []:<URL>\nEmail Address []:<EMAIL_ADDRESS>\n\nPlease enter the following 'extra' <LOCATION> be sent with your certificate request\nA challenge <a href=<URL>>●●●●●●●●●●●●</a>\nAn optional company name []:<ORGANIZATION>:<ORGANIZATION> Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>DNS Name=<URL>After receiving the certificate, encode it with base64 and paste into <ORGANIZATION>-backend/secrets.yaml: -> <URL>y -> <URL>t Raise a ticket via Request Manager (*) Since this is a new environment, remove everything under "migration" key in <ORGANIZATION>-backend/<URL>place all user_passwords in <ORGANIZATION>/prod/secrets.yaml. for each ●●●●●●●●●●●●●●●●● a new, 40-char one and globally replace it in all <ORGANIZATION> configs.Go through <ORGANIZATION>/config_files one by one and adjust settings such as: Reltio, <ORGANIZATION> etc.(*) Change <PERSON> topics and consumergroup names to fit naming standards. This is a one-time activity and does not need to be repeated if next environments will be built based on <ORGANIZATION> config.Export amer-prod CRDs into yaml file and import it in <ORGANIZATION> kubectx <ORGANIZATION> kubectl get crd -A -o yaml > ~/crd-definitions-amer.yaml\n$ kubectx <ORGANIZATION> kubectl apply -f ~/crd-definitions-amer.yaml\nCreate config dirs for git2consul (mdm-hub-env-config):\n$ git checkout config/dev_amer\n$ git pull\n$ git branch config/dev_apac\n$ git checkout config/dev_apac\n$ git push origin config/dev_apac\nRepeat for qa and <URL>stall operators:\n$ ./<URL> -l operators -r <ORGANIZATION> -c prod -e apac-dev -v 3.9.4\nInstall backend:\n$ ./<URL> -l backend -r <ORGANIZATION> -c prod -e apac-dev -v 3.9.4\<US_DRIVER_LICENSE> Log into mongodb (use port forward if there is no connection to <LOCATION>: run "kubectl port-forward mongo-0 -n apac-backend 27017" and connect to mongo on localhost:27017) orretrieve ip address from <ORGANIZATION> service and add it to Windows hosts file as <ORGANIZATION> name (example. ●●●●●●●●●●●● <URL>) and connect to mongo on <URL>:<US_DRIVER_LICENSE> Run below script:\<URL>eateCollection("entityHistory") \<URL>eateIndex({country: -1}, {background: true, name: "idx_country"});\<URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});\<URL>eateIndex({entityType: -1}, {background: true, name: "idx_entityType"});\<URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\<URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\<URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\<URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"});\<URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"});\<URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"});\<URL>eateIndex({mdmSource: -1}, {background: true, name: "idx_mdmSource"});\<URL>eateIndex({entityChecksum: -1}, {background: true, name: "idx_entityChecksum"});\<URL>eateIndex({parentEntityId: -1}, {background: true, name: "idx_parentEntityId"});\n\<URL>eateIndex({COMPANYGlobalCustomerID: -1}, {background: true, name: "idx_COMPANYGlobalCustomerID"});\n\<URL>eateCollection("entityRelations")\<URL>eateIndex({country: -1}, {background: true, name: "idx_country"});\<URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});\<URL>eateIndex({relationType: -1}, {background: true, name: "idx_relationType"});\<URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\<URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\<URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\<URL>eateIndex({startObjectId: -1}, {background: true, name: "idx_startObjectId"});\<URL>eateIndex({endObjectId: -1}, {background: true, name: "idx_endObjectId"});\<URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"}); \<URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"}); \<URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"}); \<URL>eateIndex({mdmSource: -1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({updatedOn: 1}, {background: true, name: "idx_updatedOn"});\<URL>eateIndex({countries: 1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({mdmSource: 1}, {background: true, name: "idx_mdmSource"});\<URL>eateIndex({type: 1}, {background: true, name: "idx_type"});\<URL>eateIndex({code: 1}, {background: true, name: "idx_code"});\<URL>eateIndex({valueUpdateDate: 1}, {background: true, name: "idx_valueUpdateDate"});\n\<URL>eateCollection("ErrorLogs")\<URL>eateIndex({plannedResubmissionDate: -1}, {background: true, name: "idx_plannedResubmissionDate_-1"});\<URL>eateIndex({timestamp: -1}, {background: true, name: "idx_timestamp_-1"});\<URL>eateIndex({exceptionClass: 1}, {background: true, name: "idx_exceptionClass_1"});\<URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});\n\<URL>eateCollection("batchEntityProcessStatus")\<URL>eateIndex({batchName: -1, sourceId: -1}, {background: true, name: "idx_findByBatchNameAndSourceId"});\<URL>eateIndex({batchName: -1, deleted: -1, objectType: -1, sourceIngestionDate: -1}, {background: true, name: "idx_EntitiesUnseen_SoftDeleteJob"});\<URL>eateIndex({batchName: -1, deleted: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResult_ProcessingJob"});\<URL>eateIndex({batchName: <ORGANIZATION>, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResultAll_ProcessingJob"});\n\<URL>eateCollection("batchInstance")\n\<URL>eateCollection("relationCache")\<URL>eateIndex({startSourceId: -1}, {background: true, name: "idx_findByStartSourceId"});\n\<URL>eateCollection("DCRRequests")\<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});\<URL>eateIndex({entityURI: -1, <URL>: -1}, {background: true, name: "idx_entityURIStatusNameFind_SubmitVR"});\<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});\n\<URL>eateCollection("entityMatchesHistory")\<URL>eateIndex({_id: -1, "<URL>tchObjectUri": -1, "<URL>tchType": -1}, {background: true, name: "idx_findAutoLinkMatch_CleanerStream"});\n\<URL>eateCollection("DCRRegistry")\<URL>eateIndex({"<URL>angeDate": -1}, {background: true, name: "idx_changeDate_FindDCRsBy"});\<URL>eateIndex({extDCRRequestId: -1}, {background: true, name: "idx_extDCRRequestId_FindByExtId"});\<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});\n\<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});\n\<URL>eateCollection("sequenceCounters")\<URL>sertOne({_id: "COMPANYAddressIDSeq", sequence: NumberLong<PHONE_NUMBER>)}) // NOTE: <PHONE_NUMBER> is <ORGANIZATION>-specific\nRegionSeq start numberamer6000000000apac7000000000emea5000000000Log into <PERSON>. Export dashboards/indices from <ORGANIZATION> and import them in <URL>e the following playbook:- change values in <ORGANIZATION> repository:inventory/jenkins/group_vars/all/all.yml → #CHNG- run playbook: <ORGANIZATION>-playbook install_kibana_objects.yml -i inventory/jenkins/inventory --vault-password-file=../vault -vInstall mdmhub:\n$ ./<URL> -l mdmhub -r apac -c prod -e apac-dev -v 3.9.4\nTickets:<ORGANIZATION> names ticket:Ticket queue: <ORGANIZATION>-NETWORK <NRP>: Add domains to <ORGANIZATION>:Hi Team,Please add below domains:<URL>as CNAMEs of our <ORGANIZATION>:<URL>Also, please add one CNAME for each one of below ELBs:CNAME: <URL>ELB: <URL>CNAME: <URL>ELB: <URL>CNAME: <URL>ELB: <URL>CNAME: <URL>ELB: <URL><ORGANIZATION>,<ORGANIZATION> whitelistingTicket queue: <ORGANIZATION>-NETWORK ECSTitle: Firewall exceptions for new <ORGANIZATION> PDKS clusterDescription:Hi <ORGANIZATION> open all traffic listed in attached Excel sheet.\nIn case this is not the queue where I should request Firewall changes, kindly point me in the right direction.\n\nBest <PERSON> excel:SourceSource IPDestinationDestination <ORGANIZATION> monitoring (<URL>)CI/CD server (<URL>)<IP_ADDRESS>/<URL>-443MDM Hub monitoring (<URL>)CI/CD server (<URL>)EMEA prod MDM Hub10.90.98.0/24APAC prod - PDKS cluster●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●4439094Global prod MDM Hub10.90.96.0/24APAC prod - PDKS cluster●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●443APAC prod - PDKS cluster●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●Global prod MDM Hub10.90.96.0/248443APAC prod - PDKS cluster●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●EMEA prod MDM Hub10.90.98.0/248443Integration tests:In mdm-hub-env-config prepare inventory/kube_dev_apac (copy <DATE_TIME> and adjust variables)run "prepare_int_tests" <PERSON> prepare_int_tests.yml -i inventory/kube_dev_apac/inventory -e src_dir="/mnt/c/Users/panu/gitrep/mdm-hub-inbound-services-all"\nin mdm-hub-inbound-services confirm test resources (citrus properties) for mdm-integration-tests have been replaced and run two <ORGANIZATION> tasks:-mdm-gateway/mdm-interation-tests/Tasks/verification/commonIntegrationTests-mdm-gateway/mdm-interation-tests/Tasks/verification/integrationTestsForCOMPANYModel"
|
||
},
|
||
{
|
||
"title": "Configuration (emea)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "Setup Mongo Indexes and Collections:<URL>eateIndex({COMPANYGlobalCustomerID: -1}, {background: true, name: "idx_COMPANYGlobalCustomerID"});DCR Service 2 Indexes:<ORGANIZATION> Indexes\<URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});\n\<URL>eateIndex({"<URL>angeDate": -1}, {background: true, name: "idx_changeDate_FindDCRsBy"});\<URL>eateIndex({extDCRRequestId: -1}, {background: true, name: "idx_extDCRRequestId_FindByExtId"});\<URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});\n"
|
||
},
|
||
{
|
||
"title": "Configuration (gblus prod)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "Config file: gblmdm-hub-us-spec_v05.xlsxAWS ResourcesResource NameResource TypeSpecificationAWS RegionAWS Availability ZoneDependen onDescriptionComponentsHUBGWInterfaceGBL <ORGANIZATION> Svr1 - amraelp00007844EC2r5.2xlargeus-east-1bEBS APP DATA MDM PROD SVR1EBS DOCKER DATA <ORGANIZATION> SVR1- Mongo - data redundancy and high availability primary, secondary, tertiary needs to be hosted on a separated server and zones - high availability if one zone is offline- <ORGANIZATION>: Mount 50G - /var/lib/docker/ - docker installation directory Mount 750<LOCATION> - /app/ - docker applications local storage OS: Red Hat Enterprise Linux Server release 7.4mongoEFK-DATAGBL MDM US <ORGANIZATION> APP DATA MDM PROD SVR2EBS DOCKER DATA <ORGANIZATION> SVR2- Mongo - data redundancy and high availability primary, secondary, tertiary needs to be hosted on a separated server and zones - high availability if one zone is offline- <ORGANIZATION>: Mount 50G - /var/lib/docker/ - docker installation directory Mount 750<LOCATION> - /app/ - docker applications local storage OS: Red Hat Enterprise Linux Server release 7.4mongoEFK-DATAGBL MDM US HUB Prod Data Svr3 - amraelp00007847EC2r5.2xlargeus-east-1bEBS APP DATA MDM PROD SVR3EBS DOCKER DATA MDM PROD SVR3- Mongo - data redundancy and high availability primary, secondary, tertiary needs to be hosted on a separated server and zones - high availability if one zone is offline- <ORGANIZATION>: Mount 50G - /var/lib/docker/ - docker installation directory Mount 750<LOCATION> - /app/ - docker applications local storage OS: Red Hat Enterprise Linux Server release 7.4mongoEFK-DATAGBL MDM <LOCATION> HUB Prod Svc Svr1 - amraelp00007848EC2r5.2xlargeus-east-1bEBS APP SVC MDM PROD SVR1EBS DOCKER SVC MDM PROD SVR1- <PERSON> and zookeeper - Kong and <PERSON> replication factory set to 3 – <LOCATION> proxy high availability Load balancer for <ORGANIZATION>: Mount 50G - /var/lib/docker/ - docker installation directory Mount 450<LOCATION> - /app/ - docker applications local storage OS: Red Hat Enterprise Linux Server release 7.4KafkaZookeeperKongCassandraHUBGWinboundoutboundGBL <ORGANIZATION> Prod Svc Svr2 - amraelp00007849EC2r5.2xlargeus-east-1bEBS APP SVC MDM PROD SVR2EBS DOCKER SVC MDM PROD SVR2- <PERSON> and zookeeper - Kong and <PERSON> replication factory set to 3 – <LOCATION> proxy high availability Load balancer for <ORGANIZATION>: Mount 50G - /var/lib/docker/ - docker installation directory Mount 450<LOCATION> - /app/ - docker applications local storage OS: Red Hat Enterprise Linux Server release 7.4KafkaZookeeperKongCassandraHUBGWinboundoutboundGBL <ORGANIZATION> Svr3 - amraelp00007871EC2r5.2xlargeus-east-1eEBS APP SVC MDM PROD SVR3EBS DOCKER <PERSON> SVR3- <PERSON> and zookeeper - Kong and <PERSON> replication factory set to 3 – <LOCATION> proxy high availability Load balancer for <ORGANIZATION> Disks: Mount 50G - /var/lib/docker/ - docker installation directory Mount 450<LOCATION> - /app/ - docker applications local storage OS: Red Hat Enterprise Linux Server release 7.4KafkaZookeeperKongCassandraHUBGWinboundoutboundEBS APP DATA <ORGANIZATION> GB XFSus-east-1bmount to /app on <ORGANIZATION> MDM <LOCATION> <ORGANIZATION> Svr1 - amraelp00007844EBS APP DATA <ORGANIZATION> to /app on <ORGANIZATION> MDM <LOCATION> <ORGANIZATION> Svr2 - amraelp00007870EBS APP DATA MDM Prod Svr3EBS750 GB XFSus-east-1bmount to /app on <ORGANIZATION> MDM <LOCATION> HUB Prod Data Svr3 - amraelp00007847EBS <ORGANIZATION> DATA <ORGANIZATION> GB XFSus-east-1bmount to <PERSON> on <ORGANIZATION> MDM <LOCATION> <ORGANIZATION> Svr1 - amraelp00007844EBS <ORGANIZATION> DATA <ORGANIZATION> GB XFSus-east-1emount to docker devicemapper on <ORGANIZATION> MDM <LOCATION> <ORGANIZATION> Svr2 - amraelp00007870EBS <NRP> DATA <PERSON> Svr3EBS50 GB XFSus-east-1bmount to <PERSON> on <ORGANIZATION> MDM <LOCATION> HUB Prod Data Svr3 - amraelp00007847EBS APP SVC MDM Prod Svr1EBS450 <LOCATION> to /app on <ORGANIZATION> MDM <LOCATION> HUB Prod Svc Svr1 - amraelp00007848EBS APP SVC MDM Prod Svr2EBS450 GB XFSus-east-1bmount to /app on <ORGANIZATION> MDM <LOCATION> HUB Prod Svc Svr2 - amraelp00007849EBS APP SVC MDM Prod Svr3EBS450 GB XFSus-east-1emount to /app on <ORGANIZATION> MDM <LOCATION> HUB Prod Svc Svr3 - amraelp00007871EBS DOCKER SVC MDM Prod Svr1EBS50 GB XFSus-east-1bmount to <PERSON> on <ORGANIZATION> MDM <LOCATION> HUB Prod Svc Svr1 - amraelp00007848EBS DOCKER SVC MDM Prod Svr2EBS50 GB XFSus-east-1bmount to <PERSON> on <ORGANIZATION> MDM <LOCATION> HUB Prod Svc Svr2 - amraelp00007849EBS DOCKER SVC MDM Prod Svr3EBS50 GB XFSus-east-1emount to docker devicemapper on <ORGANIZATION> MDM <LOCATION> HUB Prod Svc Svr3 - amraelp00007871GBLMDMHUB <LOCATION> <ORGANIZATION> Bucketgblmdmhubprodamrasp101478S3us-east-1Load BalancerELBELBGBL MDM <LOCATION> HUB Prod Svc Svr1GBL <ORGANIZATION> Svr2GBL MDM <LOCATION> HUB Prod Svc Svr3MAP 443 - 8443 (only <ORGANIZATION>) - ssl offloading on KONGDomain: <URL>NAME: <ORGANIZATION>-CLB-ATP-MDMHUB-US-PROD-001DNS Name : <URL>SSL cert for doiman domain <URL>CertificateDomain : domain <URL>DNS RecordDNSAddress: <URL> -> Load BalancerRolesNameTypePrivilegesMember ofDescriptionReqeusts IDProvided accessUNIX-universal-awscbsdev-mdmhub-us-prod-computers-<ORGANIZATION> to hosts:<ORGANIZATION> MDM <LOCATION> <ORGANIZATION> Svr1GBL <ORGANIZATION> Svr2GBL <ORGANIZATION> Svr3GBL <ORGANIZATION> Svr1GBL <ORGANIZATION> Svr2GBL MDM <LOCATION> HUB Prod Svc Svr3Computer role including all <ORGANIZATION> servers-UNIX-GBLMDMHUB-US-PROD-ADMINUser Role- dzdo root - access to docker- access to docker-engine (systemctl) – restart, stop, start docker engineUNIX-GBLMDMHUB-US-PROD-U Admin role to manage all resource on servers-KUCR - 20200519090759337WARECP - 20200519083956229GENDEL - 20200519094636480MORAWM03 - 20200519084328245PIASEM - 20200519095309490UNIX-GBLMDMHUB-US-PROD-HUBROLEUser Role- Read only for logs- dzdo docker <ORGANIZATION> - list docker container- dzdo docker logs * - check docker container logs- Read access to /app/* - check docker container logsUNIX-GBLMDMHUB-US-PROD-U role without root access, read only for logs and check docker status. It will be used by monitoring-UNIX-GBLMDMHUB-US-PROD-SEROLEUser Role- dzdo docker * UNIX-GBLMDMHUB-US-PROD-U service role - it will be used to run microservices from <PERSON> CD pipeline-Service Account - GBL32452299imdmuspr mdmhubuspr - 20200519095543524UNIX-GBLMDMHUB-US-PROD-UUser Role- Read only for logs- Read access to /app/* - check docker container logsUNIX-GBLMDMHUB-US-PROD-U -Ports - Security Group PFE-SG-GBLMDMHUB-US-APP-PROD-001 Port ApplicationWhitelisted8443Kong (<ORGANIZATION> proxy)ALL from COMPANY VPN7000Cassandra (<LOCATION> DB) - inter-node communicationALL from COMPANY VPN7001Cassandra (<LOCATION> DB) - inter-node communicationALL from <ORGANIZATION>) - client portALL from COMPANY VPN9094Kafka - SASL_SSL protocolALL from COMPANY VPN9093Kafka - <ORGANIZATION> protocolALL from <ORGANIZATION>-broker communication ALL from COMPANY VPN2181ZookeeperALL from COMPANY VPN2888Zookeeper - intercommunicationALL from COMPANY VPN3888Zookeeper - intercommunicationALL from COMPANY VPN27017MongoALL from COMPANY VPN9999HawtIO - administration consoleALL from COMPANY VPN9200ElasticsearchALL from COMPANY VPN9300Elasticsearch TCP - cluster communication portALL from COMPANY VPN5601KibanaALL from <ORGANIZATION> exportersALL from COMPANY VPN9542Kong exporterALL from COMPANY VPN2376Docker encrypted communication with the daemonALL from COMPANY VPNDocumentationService Account ( <PERSON> / server access )<URL> - UNIX - user access to Servers:<URL> to add user access to UNIX-GBLMDMHUB-US-PROD-ADMINlog in to <URL> <ORGANIZATION> - UNIXuser access to Servers - <URL> to Request Manager -> Request Catalog Search <ORGANIZATION> Requests for <URL>ntinueFill Formula Add user access details formualAccount <ORGANIZATION>, MikolajAD Username-MORAWM03User Domain-EMEARequestID-20200310100151888Request Details BelowRoleName: YesDescription:requestorCommentsList:Hi Team,I created the request to add account (<ORGANIZATION>) to the <ORGANIZATION> role on the following servers:amraelp00007844amraelp00007870amraelp00007847amraelp00007848amraelp00007849amraelp00007871Role name: UNIX-GBLMDMHUB-US-PROD-ADMIN-U -> member of: UNIX-universal-awscbsdev-mdmhub-us-prod-computers-U (UNIX-GBLMDMHUB-US-PROD-U)Could you please verify if I provided all required information?Regards,MikolajaccessToSpecificServerList_roleLst_2: <ORGANIZATION>:<ORGANIZATION> access toGBL <ORGANIZATION> Svr1 - amraelp00007844GBL <ORGANIZATION> - amraelp00007870GBL <ORGANIZATION> HUB Prod Data Svr3 - amraelp00007847GBL <ORGANIZATION> Prod Svc Svr1 - amraelp00007848GBL <ORGANIZATION> - amraelp00007849GBL <ORGANIZATION> HUB Prod Svc Svr3 - amraelp00007871regarding Fletcher projectserverLocationList: Not ApplicablenisDomainOtherList: OtherroleGroupAccount_roleLst_6: Add to Role Group(s)roleGroupNameList: UNIX-GBLMDMHUB-US-PROD-ADMIN-UaccountPrivilegeList_roleLst_7: Add PrivilegesaccountList_roleLst_8: <ORGANIZATION> group membershipunixGroupNameList: UNIX-GBLMDMHUB-US-PROD-ADMIN-USubmit requestHow to add/create new Service Account with access to UNIX-GBLMDMHUB-US-PROD-SEROLEService Account NameUNIX group <ORGANIZATION> mdmusprmdmhubusprService Account Name has to contain max 8 <PERSON> Requires Additional Information (GBL32099918i).msglog in to <URL> <ORGANIZATION> - UNIXuser access to Servers - <URL> to Request Manager -> Request Catalog Search <ORGANIZATION> Requests for <URL><PERSON> -> LegacyYesExistingLegacyamraelp00007844amraelp00007870amraelp00007847amraelp00007848amraelp00007849amraelp00007871N/AOtherTo manage the <ORGANIZATION> account and <ORGANIZATION> for the MDM HUBIt will be used to run microservices from <PERSON> CD pipelinePrimary: VARGAA08Secondary: TIRUMS05Service AccountService Account Name: <ORGANIZATION> group namePROD:mdmuspr <ORGANIZATION> Account Name have to contain 8 charactersMDM <ORGANIZATION> access (related to <ORGANIZATION> microservices and <PERSON> CD) forGBL MDM US HUB Prod Data Svr1 - amraelp00007844GBL <ORGANIZATION> - amraelp00007870GBL <ORGANIZATION> HUB Prod Data Svr3 - amraelp00007847GBL <ORGANIZATION> Prod Svc Svr1 - amraelp00007848GBL <ORGANIZATION> - amraelp00007849GBL <ORGANIZATION> HUB Prod Svc Svr3 - amraelp00007871regarding <ORGANIZATION>,I am trying to create the request to create <ORGANIZATION> for the following two servers. amraelp00007844amraelp00007870amraelp00007847amraelp00007848amraelp00007849amraelp00007871I want to provide the privileges for this Service Account:Role name: UNIX-GBLMDMHUB-US-PROD-SEROLE-U -> member of: UNIX-GBLMDMHUB-US-PROD-U -> UNIX-universal-awscbsdev-mdmhub-us-prod-computers-U- docker * - folder access read/writeComputer role related: UNIX-universal-awscbsdev-mdmhub-us-prod-computers-UCould you please verify if I provided all the required information and this Request is correct?Regards,<ORGANIZATION> DIR: /app/mdmusprHow to open ports / create new <ORGANIZATION> - PFE-SG-GBLMDMHUB-US-APP-PROD-001<URL> create a new security group:Create server Security Group and Open Ports on <LOCATION> queue Name: GBL-BTI-IOD AWS FULL SUPPORTlog in to <URL> go to Get Support Search for queue: <ORGANIZATION> FULL SUPPORTSubmit Request to this queue:<ORGANIZATION>,Could you please create a new security group and assign it with these <URL><ORGANIZATION> MDM <LOCATION> <ORGANIZATION> Svr1 - <URL>GBL <ORGANIZATION> Svr3 - <URL>GBL <ORGANIZATION> HUB Prod Svc Svr1 - <URL>GBL <ORGANIZATION> MDM <LOCATION> HUB Prod Svc Svr3 - <URL>Please add the following owners:Primary: VARGAA08Secondary: TIRUMS05(please let me know if approval is <ORGANIZATION> group Requested: <ORGANIZATION>-APP-PROD-001Please Open the following ports:<ORGANIZATION> (<ORGANIZATION> proxy) ALL from COMPANY VPN7000 Cassandra (<LOCATION> DB) - inter-node communication ALL from COMPANY VPN7001 Cassandra (<LOCATION> DB) - inter-node communication ALL from COMPANY VPN9042 Cassandra (<LOCATION> DB) - client port ALL from COMPANY VPN9094 Kafka - SASL_SSL protocol ALL from COMPANY VPN9093 <PERSON> protocol ALL from COMPANY VPN9092 KAFKA - Inter-broker communication ALL from <ORGANIZATION> ALL from COMPANY VPN2888 Zookeeper - intercommunication ALL from COMPANY VPN3888 Zookeeper - intercommunication ALL from COMPANY VPN27017 Mongo ALL from COMPANY VPN9999 HawtIO - administration console ALL from <ORGANIZATION> Elasticsearch ALL from COMPANY VPN9300 Elasticsearch TCP - cluster communication port ALL from <ORGANIZATION> ALL from <ORGANIZATION> exporters ALL from COMPANY VPN9542 Kong exporter ALL from <ORGANIZATION> VPN2376 <ORGANIZATION> encrypted communication with the daemon ALL from COMPANY <ORGANIZATION> this group to the following servers:<ORGANIZATION>,MikolajThis will create a new Security Group<URL> these security groups have to be assigned to servers through the <ORGANIZATION> portal by the Servers <URL> open new ports:log in to <URL> go to Get Support Search for queue: <ORGANIZATION> FULL SUPPORTSubmit Request to this queue:RequestHi,Could you please modify the below security group and open the following <URL>D security group:Security group: <ORGANIZATION>-APP-PROD-001Port: 2376(this port is related to <PERSON> for encrypted communication with the daemon)The host related to this:amraelp00007844amraelp00007870amraelp00007847amraelp00007848amraelp00007849amraelp00007871Regards,<ORGANIZATION> ConfigurationKafka GO TO:How to Generate JKS Keystore and Truststorekeytool -genkeypair -alias <URL> -keyalg <LOCATION> -keysize 2048 -keystore <URL>ystore.jks -dname "CN=<URL>, O=COMPANY, L=mdm_gbl_us_hub, C=US"keytool -certreq -alias <URL> -file <URL>.csr -keystore <URL>ystore.jksSAN:<URL>●●●●●●●●●●●●●●<URL>●●●●●●●●●●●●●<URL>●●●●●●●●●●●●●●<LOCATION> guest_user for <PERSON> - "CN=<URL>est_<URL>, O=COMPANY, L=GBLMDMHUB-US-PROD-KAFKA, C=US":GO TO: How to Generate JKS Keystore and Truststorekeytool -genkeypair -alias guest_user -keyalg RSA -keysize 2048 -keystore guest_<URL>ystore.jks -dname "CN=<URL>est_<URL>, O=COMPANY, L=GBLMDMHUB-US-PROD-KAFKA, C=US"keytool -certreq -alias guest_user -file <URL>est_<URL>.csr -keystore guest_<URL>ystore.jksKongopenssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out gbl-mdm-hub-us-prod.csrSubject Alternative <URL>●●●●●●●●●●●●●●<URL>●●●●●●●●●●●●●<URL>●●●●●●●●●●●●●●EFKPROD_GBL_USopenssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <PERSON><URL>Subject Alternative Names <URL>●●●●●●●●●●●●●●<URL>●●●●●●●●●●●●●●<URL>●●●●●●●●●●●●●esnode1openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out mdm-esnode1-gbl-us-prod.csr <URL> - Elasticsearch esnode1Subject Alternative Names <URL>●●●●●●●●●●●●●●esnode2openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out mdm-esnode2-gbl-us-prod.csr <URL> - Elasticsearch esnode2Subject Alternative Names <URL>●●●●●●●●●●●●●●esnode3openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out mdm-esnode3-gbl-us-prod.csr <URL> - Elasticsearch esnode3Subject Alternative Names <URL>●●●●●●●●●●●●●Domain Configuration:Example request: GBL30514754i "Register domains "mdm-log-management*"log in to <URL> can we help you with? - Search for "Network Team Ticket"Select the most relevant topic - "<ORGANIZATION> Request"Submit a ticket to this queue.Ticket Details: - GBL32508266iRequestHi,Could you please register the following domains:ADD the below <ORGANIZATION> entry:========================<URL> Alias Record to <URL>[●●●●●●●●●●●●●]Kind regards,MikolajRequest DNSHi,Could you please register the following domains:ADD the below <ORGANIZATION> entry for the <ORGANIZATION>: PFE-CLB-ATP-MDMHUB-US-PROD-001:========================<URL> Alias Record to <ORGANIZATION> Name : <URL>Referenced <ORGANIZATION> creation ticket: GBL32561307iKind regards,MikolajEnvironment InstallationDISC:server1 amraelp00007844 APP DISC: nvme1n1 DOCKER DISC: nvme2n1server2 amraelp00007870 APP DISC: nvme2n1 DOCKER DISC: nvme1n1server3 amraelp00007847 APP DISC: nvme2n1 DOCKER DISC: nvme1n1server4 amraelp00007848 APP1 DISC: <PERSON>: nvme3n1 DOCKER DISC: nvme1n1server5 <PERSON>: nvme3n1 DOCKER DISC: nvme1nserver6 <PERSON> APP1 DISC: <PERSON>: nvme3n1 DOCKER DISC: nvme1n1Pre:umount /var/lib/dockerlvremove /dev/datavg/varlibdockervgreduce datavg /dev/nvme1n1vi /etc/fstabRM - /dev/mapper/datavg-varlibdocker /var/lib/docker ext4 defaults 1 2rmdir /var/lib/ -> dockermkdir /app/dockerln <PERSON> /app/docker /var/lib/dockerStart docker service after prepare_env_airflow_certs playbook run is completedClear content of /etc/sysconfig/docker-storage to DOCKER_STORAGE_OPTIONS="" to use deamon.json fileAnsible:ansible-playbook prepare_env_gbl_us.yml -i inventory/prod_gblus/inventory --limit server1 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/prod_gblus/inventory --limit server1 --vault-password-file=~/vault-password-fileCN_NAME=<URL>SUBJECT_ALT_NAME= IP - ●●●●●●●●●●●●●●ansible-playbook prepare_env_gbl_us.yml -i inventory/prod_gblus/inventory --limit server2 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/prod_gblus/inventory --limit server2 --vault-password-file=~/vault-password-fileCN_NAME=<URL>SUBJECT_ALT_NAME= IP - ●●●●●●●●●●●●●●ansible-playbook prepare_env_gbl_us.yml -i inventory/prod_gblus/inventory --limit server3 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/prod_gblus/inventory --limit server3 --vault-password-file=~/vault-password-fileCN_NAME=<URL>SUBJECT_ALT_NAME= IP - ●●●●●●●●●●●●●ansible-playbook prepare_env_gbl_us.yml -i inventory/prod_gblus/inventory --limit server4 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/prod_gblus/inventory --limit server4 --vault-password-file=~/vault-password-fileCN_NAME=<URL>SUBJECT_ALT_NAME= IP - ●●●●●●●●●●●●●●ansible-playbook prepare_env_gbl_us.yml -i inventory/prod_gblus/inventory --limit server5 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/prod_gblus/inventory --limit server5 --vault-password-file=~/vault-password-fileCN_NAME=<URL>SUBJECT_ALT_NAME= IP - ●●●●●●●●●●●●●ansible-playbook prepare_env_gbl_us.yml -i inventory/prod_gblus/inventory --limit server6 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/prod_gblus/inventory --limit server6 --vault-password-file=~/vault-password-fileCN_NAME=<PERSON>Docker Version:amraelp00007844:root:[04:57 AM]:/home/morawm03> docker <ORGANIZATION> version 1.13.1, build b2f74b2/1.13.1amraelp00007870:root:[04:57 AM]:/home/morawm03> docker <ORGANIZATION> version 1.13.1, build b2f74b2/1.13.1amraelp00007847:root:[04:57 AM]:/home/morawm03> docker <ORGANIZATION> version 1.13.1, build b2f74b2/1.13.1amraelp00007848:root:[04:57 AM]:/home/morawm03> docker <ORGANIZATION> version 1.13.1, build b2f74b2/1.13.1amraelp00007849:root:[04:57 AM]:/home/morawm03> docker <ORGANIZATION> version 1.13.1, build b2f74b2/1.13.1amraelp00007871:root:[05:00 AM]:/home/morawm03> docker <ORGANIZATION> version 1.13.1, build b2f74b2/1.13.1Configure Registry Login (<URL>):ansible-playbook prepare_registry_config.yml -i inventory/prod_gblus/inventory --limit server1 --vault-password-file=~/vault-password-fileansible-playbook prepare_registry_config.yml -i inventory/prod_gblus/inventory --limit server2 --vault-password-file=~/vault-password-fileansible-playbook prepare_registry_config.yml -i inventory/prod_gblus/inventory --limit server3 --vault-password-file=~/vault-password-fileansible-playbook prepare_registry_config.yml -i inventory/prod_gblus/inventory --limit server4 --vault-password-file=~/vault-password-fileansible-playbook prepare_registry_config.yml -i inventory/prod_gblus/inventory --limit server5 --vault-password-file=~/vault-password-fileansible-playbook prepare_registry_config.yml -i inventory/prod_gblus/inventory --limit server6 --vault-password-file=~/vault-password-fileRegistry (manual config): Copy certs: /etc/docker/certs.d/<URL> from (mdm-reltio-handler-env\\ssl_certs\\registry) <PERSON> login <URL> (login on service account too) user/pass: mdm/**** (check <PERSON>-handler-env\\group_vars\\all\\secret.yml)Playbooks installation order:Install node_exporter (run on user with root access - systemctl node_exprter installation): <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/prod_gblus/inventory --limit prometheus1 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/prod_gblus/inventory --limit prometheus2 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/prod_gblus/inventory --limit prometheus3 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/prod_gblus/inventory --limit prometheus4 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/prod_gblus/inventory --limit prometheus5 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/prod_gblus/inventory --limit prometheus6 --vault-password-file=~/vault-password-fileInstall <PERSON> ansible-playbook install_hub_broker_cluster.yml -i inventory/prod_gblus/inventory --vault-password-file=~/vault-password-fileInstall Kafka TOPICS: <ORGANIZATION>-playbook install_hub_broker_cluster.yml -i inventory/prod_gblus/inventory --limit <ORGANIZATION> --vault-password-file=~/vault-password-fileInstall <PERSON> ansible-playbook install_hub_mongo_rs_cluster.yml -i inventory/prod_gblus/inventory --vault-password-file=~/vault-password-fileInstall <LOCATION> ansible-playbook install_mdmgw_gateway_v1.yml -i inventory/prod_gblus/inventory --vault-password-file=~/vault-password-fileUpdate <ORGANIZATION> Config <ORGANIZATION>-playbook update_kong_api_v1.yml -i inventory/prod_gblus/inventory --limit kong_v1_01 --vault-password-file=~/vault-password-fileVerification: openssl s_client -connect <URL>:8443 -servername <URL> -CAfile /mnt/d/dev/mdm/GBL_US_NPROD/root_inter/<PERSON>openssl s_client -connect <URL>:8443 -servername <URL> -CAfile /mnt/d/dev/mdm/GBL_US_NPROD/root_inter/<PERSON>openssl s_client -connect <URL>:8443 -servername <URL> -CAfile /mnt/d/dev/mdm/GBL_US_NPROD/root_inter/<PERSON><ORGANIZATION>-playbook install_efk_stack.yml -i inventory/prod_gblus/inventory --vault-password-file=~/vault-password-fileInstall <LOCATION> services : mongo_exporter: <ORGANIZATION>-playbook <LOCATION> -i inventory/prod_gblus/inventory --limit mongo3_exporter --vault-password-file=~/vault-password-file <PERSON>: <ORGANIZATION>-playbook install_prometheus_stack.yml -i inventory/prod_gblus/inventory --limit prometheus1 --vault-password-file=~/vault-password-file ansible-playbook install_prometheus_stack.yml -i inventory/prod_gblus/inventory --limit prometheus2 --vault-password-file=~/vault-password-file ansible-playbook install_prometheus_stack.yml -i inventory/prod_gblus/inventory --limit prometheus3 --vault-password-file=~/vault-password-file ansible-playbook install_prometheus_stack.yml -i inventory/prod_gblus/inventory --limit prometheus4 --vault-password-file=~/vault-password-file ansible-playbook install_prometheus_stack.yml -i inventory/prod_gblus/inventory --limit prometheus5 --vault-password-file=~/vault-password-file ansible-playbook install_prometheus_stack.yml -i inventory/prod_gblus/inventory --limit prometheus6 --vault-password-file=~/vault-password-file sqs_exporter: <ORGANIZATION>-playbook install_prometheus_stack.yml -i inventory/prod_gblus/inventory --limit prometheus6 --vault-password-file=~/vault-password-fileInstall Consul <ORGANIZATION>-playbook install_consul.yml -i inventory/prod_gblus/inventory --vault-password-file=~/vault-password-file# After operation get SecretID from consul container. On the container execute the following <PERSON> consul <ORGANIZATION> bootstrapand copy it as mgmt_token to consul secrets.ymlAfter install consul step run update consul playbook with proper mgmt_token (secret.yml) in every execution for each node.Update Consul <ORGANIZATION>-playbook update_consul.yml -i inventory/prod_gblus/inventory --limit consul1 --vault-password-file=~/vault-password-file -v ansible-playbook update_consul.yml -i inventory/prod_gblus/inventory --limit consul2 --vault-password-file=~/vault-password-file -v ansible-playbook update_consul.yml -i inventory/prod_gblus/inventory --limit consul3 --vault-password-file=~/vault-password-file <PERSON> and Collections:Create Collections and Indexes\nCreate <ORGANIZATION> and Indexes:\n entityHistory\n\n <URL>eateIndex({country: -1}, {background: true, name: "idx_country"});\n <URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});\n <URL>eateIndex({entityType: -1}, {background: true, name: "idx_entityType"});\n <URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\n <URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\n <URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\n <URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"});\n <URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"});\n <URL>eateIndex({mdmSource: -1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({entityChecksum: -1}, {background: true, name: "idx_entityChecksum"});\n <URL>eateIndex({parentEntityId: -1}, {background: true, name: "idx_parentEntityId"}); \n \n \n \n\n entityRelations\n <URL>eateIndex({country: -1}, {background: true, name: "<ORGANIZATION>: -1}, {background: true, name: "idx_sources"});\n <URL>eateIndex({relationType: -1}, {background: true, name: "idx_relationType"});\n <URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\n <URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\n <URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\n <URL>eateIndex({startObjectId: -1}, {background: true, name: "idx_startObjectId"});\n <URL>eateIndex({endObjectId: -1}, {background: true, name: "idx_endObjectId"});\n <URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"}); \n <URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"}); \n <URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"}); \n <URL>eateIndex({mdmSource: -1}, {background: true, name: "idx_mdmSource"});\n\n\n\n LookupValues\n <URL>eateIndex({updatedOn: 1}, {background: true, name: "idx_updatedOn"});\n <URL>eateIndex({countries: 1}, {background: true, name: "idx_countries"});\n <URL>eateIndex({mdmSource: 1}, {background: true, name: "idx_mdmSource"});\n <URL>eateIndex({type: 1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({code: 1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({valueUpdateDate: 1}, {background: true, name: "idx_valueUpdateDate"});\n\n\n ErrorLogs\n <URL>eateIndex({plannedResubmissionDate: -1}, {background: true, name: "idx_plannedResubmissionDate_-1"});\n <URL>eateIndex({timestamp: -1}, {background: true, name: "idx_timestamp_-1"});\n <URL>eateIndex({exceptionClass: 1}, {background: true, name: "idx_exceptionClass_1"});\n <URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});\n\n\tbatchEntityProcessStatus\n \<URL>eateIndex({batchName: -1, sourceId: -1}, {background: true, name: "idx_findByBatchNameAndSourceId"});\n\t <URL>eateIndex({batchName: -1, deleted: -1, objectType: -1, sourceIngestionDate: -1}, {background: true, name: "idx_EntitiesUnseen_SoftDeleteJob"});\n\t\<URL>eateIndex({batchName: -1, deleted: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResult_ProcessingJob"});\n\t\<URL>eateIndex({batchName: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResultAll_ProcessingJob"});\n\n\n batchInstance\n\t\t- create collection\n\n\trelationCache\n\t\<URL>eateIndex({startSourceId: -1}, {background: true, name: "idx_findByStartSourceId"});\n\n <LOCATION> <URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});\n <URL>eateIndex({entityURI: -1, <URL>: -1}, {background: true, name: "idx_entityURIStatusNameFind_SubmitVR"});\n <URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});\n \n entityMatchesHistory \n <URL>eateIndex({_id: -1, "<URL>tchObjectUri": -1, "<URL>tchType": -1}, {background: true, name: "idx_findAutoLinkMatch_CleanerStream"});\n\n <NRP> ENV with Prometheus:Prometheus config\nnode_exporter\n - targets:\n - "<URL>:9100"\n - "<URL>:9100"\n - "<URL>:9100"\n - "<URL>:9100"\n - "<URL>:9100"\n - "<URL>:9100"\n labels:\n env: gblus_prod\n component: node\n \n\nkafka\n - targets:\n - "<URL>:9101"\n labels:\n env: gblus_prod\n node: 1\n component: kafka\n - targets:\n - "<URL>:9101"\n labels:\n env: gblus_prod\n node: 2\n component: kafka\n - targets:\n - "<URL>:9101"\n labels:\n env: gblus_prod\n node: 3\n component: kafka\n <ORGANIZATION>\nkafka_exporter\n - targets:\n - "<URL>:9102"\n labels:\n trade: gblus\n node: 1\n component: kafka\n env: gblus_prod\n - targets:\n - "<URL>:9102"\n labels:\n trade: gblus\n node: 2\n component: kafka\n env: gblus_prod\n - targets:\n - "<URL>:9102"\n labels:\n trade: gblus\n node: 3\n component: kafka\n env: gblus_prod \n \n \nComponents:\n jmx_manager\n - targets:\n - "<URL>:9104"\n labels:\n env: gblus_prod\n node: 1\n component: manager\n - targets:\n - "<URL>:9104"\n labels:\n env: gblus_prod\n node: 2\n component: manager\n - targets:\n - "<URL>:9104"\n labels:\n env: gblus_prod\n node: 3\n component: manager \n \n jmx_event_publisher\n - targets:\n - "<URL>:9106"\n labels:\n env: gblus_prod\n node: 1\n component: publisher\n - targets:\n - "<URL>:9106"\n labels:\n env: gblus_prod\n node: 2\n component: publisher\n - targets:\n - "<URL>:9106"\n labels:\n env: gblus_prod\n node: 3\n component: publisher\n \n jmx_reltio_subscriber\n - targets:\n - "<URL>:9105"\n labels:\n env: gblus_prod\n node: 1\n component: subscriber\n - targets:\n - "<URL>:9105"\n labels:\n env: gblus_prod\n node: 2\n component: subscriber\n - targets:\n - "<URL>:9105"\n labels:\n env: gblus_prod\n node: 3\n component: subscriber\n \n jmx_batch_service\n - targets:\n - "<URL>:9107"\n labels:\n env: gblus_prod\n node: 1\n component: batch_service\n - targets:\n - "<URL>:9107"\n labels:\n env: gblus_prod\n node: 2\n component: batch_service\n - targets:\n - "<URL>:9107"\n labels:\n env: gblus_prod\n node: 3\n component: batch_service\n \n batch_service_actuator\n - targets:\n - "<URL>:9116"\n labels:\n env: gblus_prod\n node: 1\n component: batch_service\n - targets:\n - "<URL>:9116"\n labels:\n env: gblus_prod\n node: 2\n component: batch_service\n - targets:\n - "<URL>:9116"\n labels:\n env: gblus_prod\n node: 3\n component: batch_service\n \n \nsqs_exporter \n - targets:\n - "<URL>:9122"\n labels:\n env: gblus_prod\n component: sqs_exporter\n\n \n \ncadvisor\n \n - targets:\n - "<URL>:9103"\n labels:\n env: gblus_prod\n node: 1\n component: cadvisor_exporter\n - targets:\n - "<URL>:9103"\n labels:\n env: gblus_prod\n node: 2\n component: cadvisor_exporter \n - targets:\n - "<URL>:9103"\n labels:\n env: gblus_prod\n node: 3\n component: cadvisor_exporter \n - targets:\n - "<URL>:9103"\n labels:\n env: gblus_prod\n node: 4\n component: cadvisor_exporter \n - targets:\n - "<URL>:9103"\n labels:\n env: gblus_prod\n node: 5\n component: cadvisor_exporter \n - targets:\n - "<URL>:9103"\n labels:\n env: gblus_prod\n node: 6\n component: cadvisor_exporter <ORGANIZATION>\nmongodb_exporter\n \n - targets:\n - "<URL>:9120"\n labels:\n env: gblus_prod\n component: mongodb_exporter\n \n \nkong_exporter\n - targets:\n - "<URL>:9542"\n labels:\n env: gblus_prod\n node: 1\n component: kong_exporter\n - targets:\n - "<URL>:9542"\n labels:\n env: gblus_prod\n node: 2\n component: kong_exporter\n - targets:\n - "<URL>:9542"\n labels:\n env: gblus_prod\n node: 3\n component: kong_exporter\n"
|
||
},
|
||
{
|
||
"title": "Configuration (gblus)",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "Config file: gblmdm-hub-us-spec_v04.xlsxAWS <ORGANIZATION> TypeSpecificationAWS RegionAWS Availability ZoneDependen onDescriptionComponentsHUBGWInterfaceGBL <ORGANIZATION> HUB nProd Svr1 amrae<MEDICAL_LICENSE>4PFE-<ORGANIZATION>-MULTI-AZ-DEV-us-east-1EC2r5.2xlargeus-east-1bEBS APP DATA <PERSON> DOCKER DATA <PERSON> SVR1- Mongo - no data redundancy for <ORGANIZATION>: Mount 50G - docker installation directory Mount 1000GB - /app/ - docker applications local storageOS: Red Hat Enterprise Linux Server release 7.3 (Maipo)mongoEFKHUBoutboundGBL MDM <LOCATION> HUB nProd Svr2 amrae<MEDICAL_LICENSE>5PFE-AWS-MULTI-AZ-DEV-us-east-1EC2r5.2xlargeus-east-1bEBS APP DATA <PERSON> SVR2EBS DOCKER DATA <PERSON> SVR2- <PERSON> and zookeeper - Kong and Cassandra- Disks: Mount 50G - docker installation directory Mount 500<LOCATION> - /app/ - docker applications local storageOS: Red Hat Enterprise Linux Server release 7.3 (<ORGANIZATION> APP DATA <ORGANIZATION> to /app on amrae<MEDICAL_LICENSE>4EBS APP DATA <ORGANIZATION> to /app on amrae<MEDICAL_LICENSE>5EBS <ORGANIZATION> DATA <PERSON> GB XFSus-east-1bmount to <PERSON> on amrae<MEDICAL_LICENSE>4EBS DOCKER DATA <PERSON> GB XFSus-east-1bmount to <PERSON> on <ORGANIZATION> cert for doiman domain <URL>CertificateDomain : domain <URL>DNS RecordDNSAddress: <URL>RolesNameTypePrivilegesMember ofDescriptionReqeusts <PERSON>-global-mdmhub-us-nprod-computers-<ORGANIZATION> to hosts: <ORGANIZATION> MDM <LOCATION> HUB nProd Svr1GBL <ORGANIZATION> HUB nProd Svr2Computer role including all <ORGANIZATION> Role- dzdo root - access to docker- access to docker-engine (systemctl) – restart, stop, start docker engineUNIX-GBLMDMHUB-US-NPROD-COMPUTERS-UAdmin role to manage all resource on serversNSA-UNIX: 20200303065003900KUCR - GBL32099554iWARECP - GENDEL - G<MEDICAL_LICENSE>7iMORAWM03 - GBL32097468iUNIX-GBLMDMHUB-US-NPROD-HUBROLE-UUser Role- Read only for logs- dzdo docker <ORGANIZATION> - list docker container- dzdo docker logs * - check docker container logs- Read access to /app/* - check docker container logsUNIX-GBLMDMHUB-US-NPROD-COMPUTERS-Urole without root access, read only for logs and check docker status. It will be used by monitoringNSA-UNIX: 20200303065731900UNIX-GBLMDMHUB-US-NPROD-SEROLE-UUser Role- dzdo docker * UNIX-GBLMDMHUB-US-NPROD-COMPUTERS-Uservice role - it will be used to run microservices from <PERSON> CD pipelineNSA-UNIX: 20200303070216948Service <ORGANIZATION> only for logs- Read access to /app/* - check docker container logsUNIX-GBLMDMHUB-US-NPROD-COMPUTERS-UNSA-UNIX: 20200303070544951Ports - Security Group PFE-SG-GBLMDMHUB-US-APP-NPROD-001 Port ApplicationWhitelisted8443Kong (<ORGANIZATION> proxy)ALL from COMPANY VPN9094Kafka - SASL_SSL protocolALL from COMPANY VPN9093Kafka - <ORGANIZATION> protocolALL from COMPANY VPN2181ZookeeperALL from COMPANY VPN27017MongoALL from COMPANY VPN9999HawtIO - administration consoleALL from COMPANY VPN9200ElasticsearchALL from COMPANY VPN5601KibanaALL from <ORGANIZATION> exportersALL from COMPANY VPN9542Kong exporterALL from COMPANY VPN2376Docker encrypted communication with the daemonALL from <ORGANIZATION> ports between <PERSON> and <ORGANIZATION> to <EMAIL_ADDRESS> and <EMAIL_ADDRESS> - this is required to open ports between WBS<>IOD blocked traffic ( the requests take some time to finish so request at the beginning) A connection is required from <URL> (●●●●●●●●●●●●●) to <URL> (●●●●●●●●●●●●●) port <DATE_TIME>. This connection is between airflow and docker host to run gblus DAGs. to <URL> (●●●●●●●●●●●●●) port 22. This connection is between airflow and docker host to run gblus DAGs. 2. A connection is required from the <PERSON> instance (gbinexuscd01 - ●●●●●●●●●●●●●). to <URL> (●●●●●●●●●●●●●) port 22. This connection is between <PERSON> and the target host required for code deployment <URL>cumentationService Account ( <PERSON> / server access )<URL> - UNIX - user access to Servers:<URL> to add user access to <ORGANIZATION> in to <URL> <ORGANIZATION> - UNIXuser access to Servers - <URL> to Request Manager -> Request Catalog Search <ORGANIZATION> Requests for <URL>ntinueFill Formula Add user access details formualAccount <ORGANIZATION>, MikolajAD Username-MORAWM03User Domain-EMEARequestID-20200310100151888Request Details BelowRoleName: YesDescription:requestorCommentsList: Hi Team,I created the request to add account (EMEAMORAWM03 to the <ORGANIZATION> role on the following servers:amrae<MEDICAL_LICENSE>4amrae<MEDICAL_LICENSE>5Role name: UNIX-GBLMDMHUB-US-NPROD-ADMIN-U -> member of: UNIX-GBLMDMHUB-US-NPROD-COMPUTERS-U -> NSA-UNIX: 20200303065003900Could you please verify if I provided all required information?Regards,MikolajaccessToSpecificServerList_roleLst_2: <ORGANIZATION>: <ORGANIZATION> access toGBL <ORGANIZATION> HUB nProd Svr1 (amrae<MEDICAL_LICENSE>4) - PFE-AWS-MULTI-AZ-DEV-us-east-1andGBL MDM <LOCATION> HUB nProd Svr2 (<PERSON>) - PFE-AWS-MULTI-AZ-DEV-us-east-1regarding <ORGANIZATION>: Not ApplicablenisDomainOtherList: OtherroleGroupAccount_roleLst_6: Add to Role Group(s)roleGroupNameList: UNIX-GBLMDMHUB-US-NPROD-ADMIN-UaccountPrivilegeList_roleLst_7: Add PrivilegesaccountList_roleLst_8: <ORGANIZATION> group membershipunixGroupNameList: UNIX-GBLMDMHUB-US-NPROD-ADMIN-USubmit requestHow to add/create new Service Account with access to <ORGANIZATION>-GBLMDMHUB-US-NPROD-SEROLE-UService Account NameUNIX group <ORGANIZATION> mdmusnprmdmhubusnprService Account Name has to contain max 8 charactersGBL32099918iRE Requires Additional Information (GBL32099918i).msglog in to <URL> <ORGANIZATION> - UNIXuser access to Servers - <URL> to Request Manager -> Request Catalog Search <ORGANIZATION> Requests for <URL><PERSON> -> LegacyYesExistingLegacyamrae<MEDICAL_LICENSE>4amrae<MEDICAL_LICENSE>5N/<ORGANIZATION> manage the <ORGANIZATION> account and <ORGANIZATION> for the MDM HUBIt will be used to run microservices from <PERSON> CD pipelinePrimary: VARGAA08Secondary: TIRUMS05Service AccountService Account Name: <ORGANIZATION> group nameNPROD:mdmusnpr <ORGANIZATION> Account Name have to contain 8 charactersMDM <ORGANIZATION> access (related to <ORGANIZATION> microservices and <PERSON> CD) forGBL MDM <LOCATION> HUB nProd Svr1 (amrae<MEDICAL_LICENSE>4) - PFE-AWS-MULTI-AZ-DEV-us-east-1andGBL MDM <LOCATION> HUB nProd Svr2 (<PERSON>) - PFE-AWS-MULTI-AZ-DEV-us-east-1regarding <ORGANIZATION>,I am trying to create the request to create <ORGANIZATION> for the following two servers. <LOCATION> want to provide the privileges for this Service Account:Role name: UNIX-GBLMDMHUB-US-NPROD-SEROLE-U -> member of: UNIX-GBLMDMHUB-US-NPROD-COMPUTERS-U -> NSA-UNIX: <US_BANK_NUMBER>- dzdo docker * - folder access read/writeComputer role related: UNIX-IoD-global-mdmhub-us-nprod-computers-UCould you please verify if I provided all required information and this Request is correct?Regards,MikolajHow to open ports / create new <ORGANIZATION> - PFE-SG-GBLMDMHUB-US-APP-NPROD-001<URL> create a new security group:Create server Security Group and Open Ports on <LOCATION> queue Name: GBL-BTI-IOD AWS FULL SUPPORTlog in to <URL> go to Get Support Search for queue: <ORGANIZATION> FULL SUPPORTSubmit Request to this queue:<ORGANIZATION>,Could you please create a new security group and assign it with two <URL><ORGANIZATION> MDM <LOCATION> HUB nProd Svr1 (amrae<MEDICAL_LICENSE>4) - PFE-AWS-MULTI-AZ-DEV-us-east-1andGBL MDM <LOCATION> HUB nProd Svr2 (<PERSON>) - PFE-AWS-MULTI-AZ-DEV-us-east-1Please add the following owners:Primary: VARGAA08Secondary: TIRUMS05(please let me know if approval is <ORGANIZATION> group Requested: <ORGANIZATION>-APP-NPROD-001Please Open the following ports:Port Application Whitelisted8443 Kong (<ORGANIZATION> proxy) ALL from COMPANY VPN9094 Kafka - SASL_SSL protocol ALL from COMPANY VPN9093 <PERSON> - SASL_SSL protocol ALL from <ORGANIZATION> ALL from COMPANY VPN 27017 Mongo ALL from COMPANY VPN9999 HawtIO - administration console ALL from <ORGANIZATION> Elasticsearch ALL from <ORGANIZATION> ALL from <ORGANIZATION> exporters ALL from COMPANY <ORGANIZATION> this group to the following servers:amrae<MEDICAL_LICENSE>4amrae<MEDICAL_LICENSE>5Regards,MikolajThis will create a new Security Group<URL> these security groups have to be assigned to servers through the <ORGANIZATION> portal by the Servers <URL> open new ports:log in to <URL> go to Get Support Search for queue: <ORGANIZATION> FULL SUPPORTSubmit Request to this queue:RequestHi,Could you please modify the below security group and open the following <URL><ORGANIZATION> security group:Security group: <ORGANIZATION>-APP-NPROD-001Port: 2376(this port is related to <PERSON> for encrypted communication with the daemon)The host related to this:amrae<MEDICAL_LICENSE>4amrae<MEDICAL_LICENSE>5Regards,MikolajCertificates ConfigurationKafka - GBL32139266i GO TO:How to Generate JKS Keystore and Truststorekeytool -genkeypair -alias <URL> -keyalg RSA -keysize 2048 -keystore <URL>ystore.jks -dname "CN=<URL>, O=COMPANY, L=mdm_gbl_us_hub, C=US"keytool -certreq -alias <URL> -file <URL>.csr -keystore <URL>ystore.jksSAN:<URL>●●●●●●●●●●●●<URL>●●●●●●●●●●●●<LOCATION> guest_user for <PERSON> - "CN=<URL>est_<URL>, O=COMPANY, L=GBLMDMHUB-US-NONPROD-KAFKA, C=US":GO TO: How to Generate JKS Keystore and Truststorekeytool -genkeypair -alias guest_user -keyalg RSA -keysize 2048 -keystore guest_<URL>ystore.jks -dname "CN=<URL>est_<URL>, O=COMPANY, L=GBLMDMHUB-US-NONPROD-KAFKA, C=US"keytool -certreq -alias guest_user -file <URL>est_<URL>.csr -keystore guest_<URL>ystore.jksKong - GBL32144418iopenssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <PERSON>-us-nprod.csrSubject Alternative <URL>●●●●●●●●●●●●<URL>●●●●●●●●●●●●EFK - GBL32139762i , <PERSON> rsa:2048 -sha256 -keyout <URL>y -out mdm-log-management-gbl-us-nonprod.csr <URL>Subject Alternative Names <URL>●●●●●●●●●●●●<URL>●●●●●●●●●●●●openssl req -nodes -newkey rsa:2048 -sha256 -keyout <URL>y -out <PERSON> Names <URL>●●●●●●●●●●●●<URL>●●●●●●●●●●●●Domain Configuration:Example request: GBL30514754i "Register domains "mdm-log-management*"log in to <URL> can we help you with? - Search for "Network Team Ticket"Select the most relevant topic - "<ORGANIZATION> Request"Submit a ticket to this queue.Ticket Details:RequestHi,Could you please register the following domains:ADD the below <ORGANIZATION> entry:========================<URL> Alias Record to <URL>[●●●●●●●●●●●●]<URL> Alias Record to <URL>[●●●●●●●●●●●●]Kind regards,MikolajEnvironment InstallationPre:rmdir /var/lib/ -> dockerln <PERSON> /app/docker /var/lib/dockerumount /var/lib/dockerlvremove /dev/datavg/varlibdockervgreduce datavg /dev/nvme1n1Clear content of /etc/sysconfig/docker-storage to DOCKER_STORAGE_OPTIONS="" to use deamon.json fileAnsible:ansible-playbook prepare_env_gbl_us.yml -i inventory/dev_gblus/inventory --limit server1 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/dev_gblus/inventory --limit server1 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_gbl_us.yml -i inventory/dev_gblus/inventory --limit server2 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/dev_gblus/inventory --limit server2 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_gbl_us.yml -i inventory/dev_gblus/inventory --limit server3 --vault-password-file=~/vault-password-fileansible-playbook prepare_env_airflow_certs.yml -i inventory/dev_gblus/inventory --limit server3 --vault-password-file=~/vault-password-filecopy daemon_docker_tls_overlay.json.<US_DRIVER_LICENSE> to /etc/docker/daemon.jsonFIX using - <URL> sudo cp /lib/systemd/system/<URL>rvice /etc/systemd/system/\n$ sudo sed -i 's/\\ -H\\ fd:\\/\\///g' /etc/systemd/system/<URL>rvice\n$ sudo systemctl daemon-reload\n$ sudo service docker restartDocker Version:amrae<MEDICAL_LICENSE>4:root:[10:10 AM]:/app> docker <ORGANIZATION> version 1.13.1, build b2f74b2/1.13.1amrae<MEDICAL_LICENSE>5:root:[10:04 AM]:/app> docker <ORGANIZATION> version 1.13.1, build b2f74b2/1.13.1[root@amraelp00008810 docker]# docker <ORGANIZATION> version <DATE_TIME>-ce, build 4484c46Configure Registry Login (<URL>):ansible-playbook prepare_registry_config.yml -i inventory/dev_gblus/inventory --limit server1 --vault-password-file=~/vault-password-file - using ●●●●●●●●●●●●● root accessansible-playbook prepare_registry_config.yml -i inventory/dev_gblus/inventory --limit server2 --vault-password-file=~/vault-password-fileansible-playbook prepare_registry_config.yml -i inventory/dev_gblus/inventory --limit server3 --vault-password-file=~/vault-password-fileansible-playbook prepare_registry_config.yml -i inventory/dev_gblus/inventory --limit prometheus1 --vault-password-file=~/vault-password-file - using ●●●●●●●●●●●● service accountansible-playbook prepare_registry_config.yml -i inventory/dev_gblus/inventory --limit prometheus2 --vault-password-file=~/vault-password-fileansible-playbook prepare_registry_config.yml -i inventory/dev_gblus/inventory --limit prometheus3 --vault-password-file=~/vault-password-fileRegistry (manual config): Copy certs: /etc/docker/certs.d/<URL> from (mdm-reltio-handler-env\\ssl_certs\\registry) docker login <URL> (login on service account too) user/pass: mdm/**** (check <PERSON>-handler-env\\group_vars\\all\\secret.yml)Playbooks installation order:Install node_exporter: <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/dev_gblus/inventory --limit prometheus1 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/dev_gblus/inventory --limit prometheus2 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_node_exporter.yml -i inventory/dev_gblus/inventory --limit prometheus3 --vault-password-file=~/vault-password-fileInstall <PERSON> ansible-playbook install_hub_broker.yml -i inventory/dev_gblus/inventory --limit broker --vault-password-file=~/vault-password-fileInstall <PERSON> <ORGANIZATION>-playbook install_hub_db.yml -i inventory/dev_gblus/inventory --limit mongo --vault-password-file=~/vault-password-fileInstall <LOCATION> <ORGANIZATION>-playbook install_mdmgw_gateway_v1.yml -i inventory/dev_gblus/inventory --limit kong_v1_01 --vault-password-file=~/vault-password-fileUpdate KONG Config (IT NEEDS TO BE UPDATED ON EACH ENV (DEV, QA, STAGE)!!) <ORGANIZATION>-playbook update_kong_api_v1.yml -i inventory/dev_gblus/inventory --limit kong_v1_01 --vault-password-file=~/vault-password-file Verification: openssl s_client -connect <URL>:8443 -servername <URL> -CAfile /mnt/d/dev/mdm/GBL_US_NPROD/root_inter/<PERSON><ORGANIZATION>-playbook install_efk_stack.yml -i inventory/dev_gblus/inventory --limit efk --vault-password-file=~/vault-password-fileInstall <ORGANIZATION> (without this docker loggin may not work and docker commands will be blocked) <ORGANIZATION>-playbook install_fluentd_forwarder.yml -i inventory/dev_gblus/inventory --limit docker-services --vault-password-file=~/vault-password-fileInstall <LOCATION> services : mongo_exporter: <ORGANIZATION>-playbook <LOCATION> -i inventory/dev_gblus/inventory --limit mongo_exporter1 --vault-password-file=~/vault-password-file <PERSON>: <ORGANIZATION>-playbook install_prometheus_stack.yml -i inventory/dev_gblus/inventory --limit prometheus1 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_stack.yml -i inventory/dev_gblus/inventory --limit prometheus2 --vault-password-file=~/vault-password-file ansible-playbook install_prometheus_stack.yml -i inventory/dev_gblus/inventory --limit prometheus3 --vault-password-file=~/vault-password-file sqs_exporter: <ORGANIZATION>-playbook install_prometheus_stack.yml -i inventory/dev_gblus/inventory --limit prometheus1 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_stack.yml -i inventory/stage_gblus/inventory --limit prometheus1 --vault-password-file=~/vault-password-file <ORGANIZATION>-playbook install_prometheus_stack.yml -i inventory/qa_gblus/inventory --limit prometheus1 --vault-password-file=~/vault-password-fileInstall Consul <ORGANIZATION>-playbook install_consul.yml -i inventory/prod_gblus/inventory --vault-password-file=~/vault-password-file# After operation get SecretID from consul container. On the container execute the following <PERSON> consul <ORGANIZATION> bootstrapand copy it as mgmt_token to consul secrets.ymlAfter install consul step run update consul playbookUpdate Consul <ORGANIZATION>-playbook update_consul.yml -i inventory/prod_gblus/inventory --limit consul1 --vault-password-file=~/vault-password-file -v Setup Mongo Indexes and Collections:Create Collections and Indexes\nCreate <ORGANIZATION> and Indexes:\n entityHistory\n\n <URL>eateIndex({country: -1}, {background: true, name: "idx_country"});\n <URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});\n <URL>eateIndex({entityType: -1}, {background: true, name: "idx_entityType"});\n <URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\n <URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\n <URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\n <URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"});\n <URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"});\n <URL>eateIndex({mdmSource: -1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({entityChecksum: -1}, {background: true, name: "idx_entityChecksum"});\n <URL>eateIndex({parentEntityId: -1}, {background: true, name: "idx_parentEntityId"}); \n \n \n \n\n entityRelations\n <URL>eateIndex({country: -1}, {background: true, name: "<ORGANIZATION>: -1}, {background: true, name: "idx_sources"});\n <URL>eateIndex({relationType: -1}, {background: true, name: "idx_relationType"});\n <URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\n <URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\n <URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\n <URL>eateIndex({startObjectId: -1}, {background: true, name: "idx_startObjectId"});\n <URL>eateIndex({endObjectId: -1}, {background: true, name: "idx_endObjectId"});\n <URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"}); \n <URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"}); \n <URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"}); \n <URL>eateIndex({mdmSource: -1}, {background: true, name: "idx_mdmSource"});\n\n\n\n LookupValues\n <URL>eateIndex({updatedOn: 1}, {background: true, name: "idx_updatedOn"});\n <URL>eateIndex({countries: 1}, {background: true, name: "idx_countries"});\n <URL>eateIndex({mdmSource: 1}, {background: true, name: "idx_mdmSource"});\n <URL>eateIndex({type: 1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({code: 1}, {background: true, name: "<ORGANIZATION><URL>eateIndex({valueUpdateDate: 1}, {background: true, name: "idx_valueUpdateDate"});\n\n\n ErrorLogs\n <URL>eateIndex({plannedResubmissionDate: -1}, {background: true, name: "idx_plannedResubmissionDate_-1"});\n <URL>eateIndex({timestamp: -1}, {background: true, name: "idx_timestamp_-1"});\n <URL>eateIndex({exceptionClass: 1}, {background: true, name: "idx_exceptionClass_1"});\n <URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});\n\n\tbatchEntityProcessStatus\n <URL>eateIndex({batchName: -1, sourceId: -1}, {background: true, name: "idx_findByBatchNameAndSourceId"});\n <URL>eateIndex({batchName: -1, deleted: -1, objectType: -1, sourceIngestionDate: -1}, {background: true, name: "idx_EntitiesUnseen_SoftDeleteJob"});\n <URL>eateIndex({batchName: -1, deleted: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResult_ProcessingJob"});\n <URL>eateIndex({batchName: -1, <PERSON>: -1, updateDateMDM: -1}, {background: true, name: "idx_ProcessingResultAll_ProcessingJob"});\n\n batchInstance\n\t\t- create collection\n\n\trelationCache\n\t\<URL>eateIndex({startSourceId: -1}, {background: true, name: "idx_findByStartSourceId"});\n\n <LOCATION> <URL>eateIndex({type: -1, <URL>: -1}, {background: true, name: "idx_typeStatusNameFind_TraceVR"});\n <URL>eateIndex({entityURI: -1, <URL>: -1}, {background: true, name: "idx_entityURIStatusNameFind_SubmitVR"});\n <URL>eateIndex({changeRequestURI: -1, <URL>: -1}, {background: true, name: "idx_changeRequestURIStatusNameFind_DSResponse"});\n \n entityMatchesHistory \n <URL>eateIndex({_id: -1, "<URL>tchObjectUri": -1, "<URL>tchType": -1}, {background: true, name: "idx_findAutoLinkMatch_CleanerStream"});\n\n\n Connect ENV with <PERSON>:Update config - <ORGANIZATION>-playbook install_prometheus_configuration.yml -i inventory/prod_gblus/inventory --limit prometheus2 --vault-password-file=~/vault-password-filePrometheus config\nnode_exporter\n - targets:\n - "<URL>:9100"\n - "<URL>:9100"\n labels:\n env: gblus_dev\n component: node\n\n\nkafka\n - targets:\n - "<URL>:9101"\n labels:\n env: gblus_dev\n node: 1 \n component: kafka\n \n \nkafka_exporter\n\n - targets:\n - "<URL>:9102"\n labels:\n trade: gblus\n node: 1\n component: kafka\n env: gblus_dev \n\n\nComponents:\n jmx_manager\n - targets:\n - "<URL>:9104"\n labels:\n env: gblus_dev\n node: 1\n component: manager\n - targets:\n - "<URL>:9108"\n labels:\n env: gblus_qa\n node: 1\n component: manager\n - targets:\n - "<URL>:9112"\n labels:\n env: gblus_stage\n node: 1\n component: manager \n jmx_event_publisher\n - targets:\n - "<URL>:9106"\n labels:\n env: gblus_dev\n node: 1\n component: publisher \n - targets:\n - "<URL>:9110"\n labels:\n env: gblus_qa\n node: 1\n component: publisher <ORGANIZATION>- targets:\n - "<URL>:9104"\n labels:\n env: gblus_stage\n node: 1\n component: publisher \n jmx_reltio_subscriber\n - targets:\n - "<URL>:9105"\n labels:\n env: gblus_dev\n node: 1\n component: subscriber\n - targets:\n - "<URL>:9109"\n labels:\n env: gblus_qa\n node: 1\n component: subscriber\n - targets:\n - "<URL>:9113"\n labels:\n env: gblus_stage\n node: 1\n component: subscriber\n jmx_batch_service\n - targets:\n - "<URL>:9107"\n labels:\n env: gblus_dev\n node: 1\n component: batch_service\n - targets:\n - "<URL>:9111"\n labels:\n env: gblus_qa\n node: 1\n component: batch_service\n - targets:\n - "<URL>:9115"\n labels:\n env: gblus_stage\n node: 1\n component: batch_service\n\nsqs_exporter \n - targets:\n - "<URL>:9122"\n labels:\n env: gblus_dev\n component: sqs_exporter\n - targets:\n - "<URL>:9123"\n labels:\n env: gblus_qa\n component: sqs_exporter\n - targets:\n - "<URL>:9124"\n labels:\n env: gblus_stage\n component: sqs_exporter\n\n\ncadvisor\n\n - targets:\n - "<URL>:9103"\n labels:\n env: gblus_dev\n node: 1\n component: cadvisor_exporter\n - targets:\n - "<URL>:9103"\n labels:\n env: gblus_dev\n node: 2\n component: cadvisor_exporter \n\n\n \nmongodb_exporter\n\n - targets:\n - "<URL>:9120"\n labels:\n env: gblus_dev\n component: mongodb_exporter\n \n\nkong_exporter\n - targets:\n - "<URL>:9542"\n labels:\n env: gblus_dev\n component: kong_exporter\n"
|
||
},
|
||
{
|
||
"title": "Getting access to <ORGANIZATION> and Kubernetes clusters",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Getting+access+to+PDKS+Rancher+and+Kubernetes+clusters",
|
||
"content": "Go to <URL> nsa-unix and select first link (<ORGANIZATION>-UNIX)You will see the form for requesting an access which should be fulfilled like on an example below: Do you need to be added to any Role Groups? YESDo you need privileged access to specific Servers in a Role Group? <ORGANIZATION> provide <ORGANIZATION> Other Add to Role Group(s) UNIX-GBLMDMHUB-US-PROD-ADMIN-U or UNIX-GBLMDMHUB-US-NPROD-ADMIN-U (depends on an environment)Please provide information about Account Privileges: Add Privileges Please choose <ORGANIZATION> <ORGANIZATION> group <ORGANIZATION> provide <ORGANIZATION> Name: UNIX-GBLMDMHUB-US-PROD-COMPUTERS-U or UNIX-GBLMDMHUB-US-NPROD-COMPUTERS-UPlease provide a brief Business Justification:For prod:atp-mdmhub-prod-ameratp-mdmhub-prod-emeaatp-mdmhub-prod-apacPDKS EKS clusters regarding project <URL>r nprod:<ORGANIZATION>-nprod-ameratp-mdmhub-nprod-emeaatp-mdmhub-nprod-apacPDKS EKS clusters regarding project <URL>ments or Special Instructions: I am creating this request to have an access to <ORGANIZATION> prod clusters. "
|
||
},
|
||
{
|
||
"title": "UI:",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Add new role and add users to the <ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Add+new+role+and+add+users+to+the+UI",
|
||
"content": "MDM HUB UI roles standards:Here is the role standard that has to be used to get access to the <ORGANIZATION> by specific users:EnvironmentsNON-PRODPRODDEVQASTAGEPRODGBL****EMEA****AMER****APAC****GBLUS****ALL****Use the 'ALL' keyword with connection to the 'NON-PROD' and 'PROD' - using this approach will produce only 2 roles for the <URL>le Schema:<prefix>_<tenant>_<system name>_<application>_<environment>_<system>_<suffix><prefix> - COMM<tenant> - ALL or <ORGANIZATION> e.t.c (recommendation is <LOCATION> name> - MDMHUB <application> - UI <environment> - PROD / NON-PROD or specific based on a table above<system> HUB_ADMIN / PTRS e.t.c Important: <system> name has to be in sync with HUB configuration users in e.g <URL> <suffix> ROLEexample roles:HUB ADMIN → COMM_ALL_MDMHUB_UI_NON-PROD_HUB_ADMIN_ROLE - HUB <ORGANIZATION> group for hub-admin users - access to all clusters, and non-prod <URL>B ADMIN → COMM_ALL_MDMHUB_UI_PROD_HUB_ADMIN_ROLE - HUB <ORGANIZATION> group for hub-admin users - access to all clusters, and prod <URL>RS system → COMM_ALL_MDMHUB_UI_NON-PROD_PTRS_ROLE - HUB UI group for PTRS users - access to all clusters, and non-prod <URL>RS system → COMM_ALL_MDMHUB_UI_PROD_PTRS_ROLE - HUB <ORGANIZATION> group for PTRS users - access to all clusters, and prod <URL>e system is the user name used in HUB. All users related to the specific system can have access to the specific <URL>r example, if someone from the PTRS system wants to have access to the <ORGANIZATION>, how to process such request:Add user to existing <ORGANIZATION> roleGo to <URL> a group:If a role is found in search results you can check current members or request a new memberadd a new user:savego to <ORGANIZATION> <URL> submit the request.If the role does not exist:First, create a new role:click Create a NEW Security Group<URL> -EMEAname - the name of a group primary owner - <ORGANIZATION> owner - Mikołaj MorawskiDescription - e.g. HUB <ORGANIZATION> group for hub-admin users - access to all clusters, and prod <URL> you can add users to this groupSecond, configure roles and access to the user in HUB:Important: <system> name has to be in sync with HUB configuration users in <URL> Users can have access to the following roles and APIs:<URL> and ADMIN roles:MODIFY_KAFKA_OFFSET - "/kafka/offset" allows modifying offset on specific <PERSON> topics related to the systemRESEND_KAFKA_EVENT - "/jobs/hub/resend_events" - resend events to a specific topicUPDATE_IDENTIFIERS - "/jobs/hub/update_identifiers" - starts update identifiers flowMERGE_UNMERGE_ENTITIES - "/jobs/hub/merge_unmerge_entities" - starts merge unmerge flow REINDEX_ENTITIES - "/jobs/mdm/reindex_entities" - executes Reltio Reindex APICLEAR_CACHE_BATCH - "/jobs/hub/clear_batch_cache" - executes clear <ORGANIZATION> batch cache operationHUB ADMIN roles:RESEND_KAFKA_EVENT_COMPLEX - "/jobs/hub/resend_events" - resend events to a specific topic using complex <ORGANIZATION> RECONCILE - "/jobs/hub/reconciliation_entities" - regenerates events to HUB using simple <ORGANIZATION> - starts JOBRECONCILE_COMPLEX - "/jobs/hub/reconciliation_entities_complex" - regenerates events to HUB using complex <ORGANIZATION> - starts the <PERSON> - "/precallback/partials") - list or resubmit partials that stuck in the queueAdd roles and topics to the user:.e.g: <URL> "kafka" section with specific kafka topics:Add mdm admin section with specific roles and access to topics:e.g. mdm_admin: reconciliationTargets: - emea-dev-out-full-ptrs-eu - emea-dev-out-full-ptrs-global2 - emea-qa-out-full-ptrs-eu - emea-qa-out-full-ptrs-global2 - emea-stag-out-full-ptrs-eu - emea-stag-out-full-ptrs-global2 - gbl-dev-out-full-ptrs - gbl-dev-out-full-ptrs-eu - gbl-dev-out-full-ptrs-porind - gbl-qa-out-full-ptrs-eu - gbl-stage-out-full-ptrs - gbl-stage-out-full-ptrs-eu - gbl-stage-out-full-ptrs-porind sources: - ALL countries: - ALL roles: &roles - MODIFY_KAFKA_OFFSET - RESEND_KAFKA_EVENT kafka: *kafkaREMEMBER TO ADD: Add mdm_auth section this will start the <ORGANIZATION> access.Without this section the <ORGANIZATION> will not show HUB Admin tools! mdm_auth: roles: *rolesThe mdm_auth section and roles there will cause the user will only see 2 pages in <ORGANIZATION> - in that case, MODIFY OFFSET and RESET_KAFKA_EVENTSWhen the roles and users are configured on the HUB end go to the first step and add selected users to the selected <URL>arting from this time any new e.g. PTRS user can be added to the COMM_ALL_MDMHUB_UI_NON-PROD_PTRS_ROLE and will be able to log in to <ORGANIZATION> and see the pages and use <ORGANIZATION> through <ORGANIZATION>."
|
||
},
|
||
{
|
||
"title": "Current users and roles",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Current+users+and+roles",
|
||
"content": "EnvironmentClientClusterRoleCOMPANY UsersHUB internal userNON-PRODMDMHUBALLCOMM_ALL_MDMHUB_UI_NON-PROD_HUB_ADMIN_ROLEALL HUB Team Members +<URL>rganin@<URL>ivedi@<URL>e.g. <URL> ALL HUB Team Members+<URL>rganin@<URL><DATE_TIME>. <URL>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> and roles",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/SSO+and+roles",
|
||
"content": "To login to <ORGANIZATION> dashboard You have to be in COMPANY network. sso authorization is made by <ORGANIZATION>, using COMPANY <URL>th flowSSO loginSAML login roleAfter successful authentication with <ORGANIZATION> we are receiving roles from <ORGANIZATION> Manager - distribution list)Then we are decoding roles using following regexp:COMM_(?<tenant>[A-Z]+)_MDMHUB_UI_(?<environment>NON-PROD|PROD)_(?<system>.+)_ROLEWhen role is matching environment and tenant we are getting roles by searching system in user <URL>ckend AD groupsServiceNPROD GroupPROD GroupDescriptionKibanaCOMM_ALL_MDMHUB_KIBANA_NON-PROD_ADMIN_ROLECOMM_ALL_MDMHUB_KIBANA_PROD_ADMIN_ROLECOMM_ALL_MDMHUB_KIBANA_NON-PROD_VIEWER_ROLECOMM_ALL_MDMHUB_KIBANA_PROD_VIEWER_ROLEGrafanaCOMM_ALL_MDMHUB_GRAFANA_PROD_ADMIN_ROLECOMM_ALL_MDMHUB_GRAFANA_PROD_VIEWER_ROLEAkhqCOMM_ALL_MDMHUB_KAFKA_NON-PROD_ADMIN_ROLECOMM_ALL_MDMHUB_KAFKA_PROD_ADMIN_ROLECOMM_ALL_MDMHUB_KAFKA_NON-PROD_VIEWER_ROLECOMM_ALL_MDMHUB_KAFKA_PROD_VIEWER_ROLEMonitoringCOMM_ALL_MDMHUB_ALL_NON-PROD_MON_ROLECOMM_ALL_MDMHUB_ALL_PROD_MON_ROLEThis groups aggregates users that are responsible for monitoring of MDMHUB AirflowCOMM_ALL_MDMHUB_AIRFLOW_NON-PROD_ADMIN_ROLECOMM_ALL_MDMHUB_AIRFLOW_PROD_ADMIN_ROLECOMM_ALL_MDMHUB_AIRFLOW_NON-PROD_VIEWER_ROLECOMM_ALL_MDMHUB_AIRFLOW_PROD_VIEWER_ROLE"
|
||
},
|
||
{
|
||
"title": "UI Connect Guide",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/UI+Connect+Guide",
|
||
"content": "Log in to <ORGANIZATION> and switch <ORGANIZATION> log in to <ORGANIZATION> please use the following link: <URL> in to <ORGANIZATION> using your COMPANY credentials:There is no need to know each <ORGANIZATION> address, you can easily switch between <ORGANIZATION> using the following link (available on the TOP RIGHT corner in <ORGANIZATION> near the USERNAME):What pages are available with the default VIEW roleBy default, you are logged in with the default VIEW role, the following pages are available:HUB StatusYou can use the HUB Dashboard main page that contains HUB platform status: Event processing details, <ORGANIZATION> refresh time, started batches and <ORGANIZATION> to load data to <ORGANIZATION> or get Events from <URL>gestion Services ConfigurationThis page contains the documentation related to the <ORGANIZATION> checks, Source Match Categorization, Cleansing & Formatting, <ORGANIZATION>, and Minimum Viable Profile <URL> can choose a filter to switch between different entity types and use input boxes to filter <URL> can use the 'Category' filter to include the operations that you are interested inYou can use the 'Query' filter and put any text to find what you are looking for (e.g. 'prefix' to find rules with prefix word)You can use the 'Date' filter to find rules created or updated after a specific time - now using this filter you can easily find the rules added after data reload and reload data one more time to reflect changes. This page contains also documentation related to duplicate identifiers and noise <URL> can choose a filter to switch between different entity types and use input boxes to filter resultsIngestion Services TesterThis page contains the <ORGANIZATION> tester, input JSON and click the 'Test' button to check the output JSON with all rules appliedClick the 'Difference' to get only changed sectionsClick the 'Validation result' to get the rules that were <URL>re details here: HUB UI User GuideWhat operations are available in the UIAs a user, you can request access to the technical operations in HUB. The details on how to access more operations are described in the section below.Here you will get to know the different <ORGANIZATION> operations and what can be done using these operations:HUB Admin allows to:<PERSON> operationOn this page user can modify <PERSON> offset on specific consumer groupSystem/User that wants to have access to this page will be allowed to maintain the consumer group offset, change to:latestearliestspecific date timeshift by a specific number of <URL>B ReconciliationTechnical operationUsed internally by <ORGANIZATION><URL>is operation allows us to mimic Reltio events generation - this operation generates the events to the input HUB topic so that we can reprocess the <URL> can use this page and generates events by:provide an input array with entity/relation URIsorprovide the query and select the source/market that you want to reprocess.<PERSON> operationThis operation can be used to generate events for your <PERSON> topicUse case - you are consuming data from HUB and you want to test something on non-prod environments and consume events for a specific market one more time. You want to receive 1000 events for <LOCATION> market for your <URL> can use this page and generates events for the target topic:Specify <ORGANIZATION> and Target Reconciliation topic - as a result, you will receive the <URL>ltio ReindexTechnical operationThis operation executes the Reltio Reindexing operationYou can use this page and generates events by:provide the query and select the source/market that you want to reprocess.orprovide the input file with entity/relation URIs, that will be sent to <ORGANIZATION>Unmerge EntitiesBusiness operationThis operation consumes the input file and executes the merge/unmerge operations in ReltioMore details about the file and process are described here: <ORGANIZATION> unmergeUpdate <ORGANIZATION> operationThis operation consumes the input file and executes the merge/unmerge operations in ReltioMore details about the file and process are described here: <ORGANIZATION> update identifiersClear <ORGANIZATION> operationClear <ORGANIZATION> Batch CacheMore details about the file and process are described here: Batch clear <ORGANIZATION> data load cacheHow to request additional access to new operationsPlease send the following email to the HUB DL: DL-ATP_MDMHUB_SUPPORT@<URL>Subject:HUB UI - Access request for <user-name/system-name>Body:Please provide the access / update the existing access for <user-name/system-name> to HUB Admin <URL>DetailsComments:1Action neededAdd user to the HUB <ORGANIZATION> user in the HUB UI (please provide the existing group name)<any other>2TenantGBL, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>/<LOCATION> - more details in EnvironmentsBy default please select ALL <ORGANIZATION>, but if you need access only to a specified one please select.3Environments PROD / NON-PROD or specific: <ORGANIZATION>PRODBy default please select <ORGANIZATION> environments, but if you need access only to a specified one please select.4Permissions rangeChoose the operation:<PERSON> OffsetHUB ReconciliationKafka Republish EventsReltio ReindexMerge/Unmerge EntitiesUpdate IdentifiersClear Cache5COMPANY TeamETL/COMPANY or <ORGANIZATION> or <ORGANIZATION> e.t.c8Business <PERSON> access to execute merge unmerge operation in <ORGANIZATION> of contactIf you are from the system please provide the <ORGANIZATION> email and system details.7Sources<optional - list of sources to which user should have access>required in Events/Reindex/Reconciliation operations3Countries<optional - list of countries to which user should have access>required in Events/Reindex/Reconciliation operationsThe request will be processed after <EMAIL_ADDRESS> approval. In the response, you will receive the Group Name. Please use this for future reference.e.g. PTRS system roles used in the PTRS system to manage <ORGANIZATION> operations. PTRS system → COMM_ALL_MDMHUB_UI_NON-PROD_PTRS_ROLE - HUB UI group for PTRS users - access to all clusters, and non-prod environments. PTRS system → COMM_ALL_MDMHUB_UI_PROD_PTRS_ROLE - HUB <ORGANIZATION> group for PTRS users - access to all clusters, and prod <URL><ORGANIZATION> will use the following SOP to add you to a selected role: Add a new role and add users to the <NRP> HelpIn case of any questions, the <PERSON> page or full HUB documentation is available here (<ORGANIZATION> page footer):GetHelpWelcome to <ORGANIZATION>!"
|
||
},
|
||
{
|
||
"title": "Users:",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Add Direct API User to HUB",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Add+Direct+API+User+to+HUB",
|
||
"content": "To add a new user to <ORGANIZATION> direct <ORGANIZATION> a few steps must be done. That document describes what activities must be fulfilled and who is responsible fot <URL>eate PingFederate user - client's responsibility If the client's authentication method is <ORGANIZATION> then there is a need to create <ORGANIZATION> <URL> add a user you must have a <PERSON> user created: How to Request PingFederate (PXED) External OAuth 2.0 Account Caution: If the authentication method is key auth then <ORGANIZATION> generates it and sends it securely way to the <URL>nd a request to <ORGANIZATION> that contains all necessary data - client's responsibility Send a request to create a new user with direct <ORGANIZATION> access to <ORGANIZATION>: dl-atp_mdmhub_support@<URL>The request must contain as follows:1Action needed2PingFederate username3Countries4Tenant5Environments6Permissions range7Sources8Business justification9Point of contact10GatewayDescriptionAction needed – this is a place where you decide if you want to create a new user or modify the existing one.PingFederate username – you need to create a user on the <ORGANIZATION> side. Its username is crucial to authenticate on the HUB side. If you do not have a <ORGANIZATION> user please check: <URL> - list of countries that access to will be grantedTenant – a tenant or list of tenants where the user will be created. Please notice that if you have a connection from open internet only <ORGANIZATION> is possible. If you have a local application split to Reltio Region it is recommended to request a local tenant. If you have a global solution you can call <ORGANIZATION> and your requests will be routed by HUB.Environments – list of environment instances – <ORGANIZATION> range – do you need to write or read/write? To which entities do you need access? <ORGANIZATION> – to which sources do you need to have access?Business justification – please describeWhy do you have a connection with HUB?Why the user must be created/modified?What’s the project name?Who’s the project manager?Point of contact – please add a <ORGANIZATION> group name - in case of any issues connected with that userWhich <ORGANIZATION> you want to call: <ORGANIZATION>, <ORGANIZATION>, <ORGANIZATION>,etcPrepare new user on <ORGANIZATION> side - HUB Team Responsibility Store clients' request in dedicated confluence space: ClientsIn the COMPANY tenants, there is a need to connect the new user with <ORGANIZATION> <URL>ange <ORGANIZATION> router configuration, and add a new user with:user <ORGANIZATION> name or when the user uses key auth add <ORGANIZATION> key to secrets.yamlsourcescountriesrolesChange Manager configuration, addsourcescountriesChange <ORGANIZATION> service configuration - if applicabledcrServiceConfig- initTrackingDetailsStatus, initTrackingDetail, dcrTyperoles - CREATE_DCR, GET_DCRYou need to check how the request will be routed. If there is a need to make a routing configuration, follow these steps:change <ORGANIZATION> configuration by adding new countries to proper tenantschange Manager configuration in destinated tenant by addingsourcescountries"
|
||
},
|
||
{
|
||
"title": "Add External User to <ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Add+External+User+to+MDM+Hub",
|
||
"content": "Kong configurationFirstly You need to have users logins from <PERSON> for every envGo folder inventory/{{ kong_env }}/group_vars/kong_v1 in repository mdm-hub-env-configFind section PLUGINS in file <LOCATION>_{{ env }}.yml and then rule with name mdm-external-oauthin this section find "users_map"add there new entry with following rule:\n- "<user_name_from_ping_federate>:<user_name_in_mdm_hub>"\nchange False to True in create_or_update setting for this rule\ncreate_or_update: True\nRepeat this steps( a-c ) for every environment {{ env }} you want to apply changes to(e.g., dev, qa, stage){{ kong_env }} - environment on which <LOCATION> instance is deployed{{ env }} - environment on which <ORGANIZATION> instance is <LOCATION>, <LOCATION>, stageprodproddev_gblusdev_gblus, qa_gblus, stage_gblusprod_gblusprod_gblusdev_usdev_usprod_usprod_usGo to folder inventory/{{ env }}/group_vars/gw-servicesIn file gw_users.yml add section with new user after last added user, specify roles and sources needed for this user. E.g.,User configuration\n- name: "<user_name_in_mdm_hub>"\n description: "<Some description>"\n defaultClient: "ReltioAll"\n getEntityUsesMongoCache: <LOCATION> <ORGANIZATION>: <LOCATION> roles:\n - <specify_only_roles_that_are_required_for_this_user>\n countries:\n - US\n sources: \n\t- <specify_only_sources_needed by this user>\nRepeat this step for every environment {{ env }} you want to apply changes to( e.g., dev, qa, stage)After configuration changes You need to update <LOCATION> using following commandfor nonprod gblus envsGBLUS <ORGANIZATION> update\nansible-playbook update_kong_api_v1.yml -i inventory/dev_gblus/inventory --limit kong_v1_01 --vault-password-file=~/<URL>cret\nfor prod gblus envGBLUS PROD - kong update\nansible-playbook update_kong_api_v1.yml -i inventory/prod_gblus/inventory --limit kong_v1_01 --vault-password-file=~/<URL>cret\nfor nprod gbl envsGBL <ORGANIZATION> update\nansible-playbook update_kong_api_v1.yml -i inventory/dev/inventory --vault-password-file=~/<URL>cret\nfor prod gbl envGBL PROD - kong update\nansible-playbook update_kong_api_v1.yml -i inventory/prod/inventory --vault-password-file=~/<URL>cret\nfor nprod <LOCATION> envUS <ORGANIZATION> update\nansible-playbook update_kong_api_v1.yml -i inventory/dev_us/inventory --vault-password-file=~/<URL>cret\nfor prod <ORGANIZATION> update\nansible-playbook update_kong_api_v1.yml -i inventory/prod_us/inventory --vault-password-file=~/<URL>cret\nTroubleshootingIn case when there will be a problem with deploying You need to set create_or_update as True also for route and manager <URL><ORGANIZATION> secretTo use this script You need to have <URL>cret file created in your home directory or adjust vault-password-file if <URL>other option is to change --vault-password-file to --ask-vault and provide ansible vault during the <URL>fore commiting changes find all occurrences where You set create_or_update to true and change it again to:\ncreate_or_update: False\nThen commit changesRedeploy gateway services on all modified envs. Before deploying please verify if there is no batch running in progressJenkins job to deploy gateway services:<URL>"
|
||
},
|
||
{
|
||
"title": "Add new Batch to HUB",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Add+new+Batch+to+HUB",
|
||
"content": "To add a new batch to <ORGANIZATION> a few steps must be done. That document describes what activities must be fulfilled and who is responsible for <URL>eck source and country configurationThe first step is to check if <ORGANIZATION> rules and <ORGANIZATION> are configured for the new source. Repository: mdm-config-registry; Path: \\config-hub\\<env_tenant>\\mdm-manager\\quality-service\\quality-rules\\If not you have to immediately send an email to a person that requested a new batch. This condition is usually performed on a separate task as prerequisite to adding the batch configuration."This is a new source. You have to send <ORGANIZATION> and <ORGANIZATION> requirements for a new source to <PERSON> and <PERSON>. Based on it a new HUB requirement deck will be prepared. When we received it the task can be planned. Until that time the task is blocked." The same exercise has to be made when we get requirements for a new <URL>thorization and authenticationClients use mdmetl batch service user to populate data to Reltio. There is no changes <URL>nd a request to <ORGANIZATION> that contains all necessary data - client's responsibility Send a request to create a new batch to <ORGANIZATION>: dl-atp_mdmhub_support@<URL>The request must contain as follows:subject arealist of stages <ORGANIZATION> sourcecountries listsource <ORGANIZATION>/incrementalfrequencybussines justificationsingle point of contact on client sidePrepare new batch on <ORGANIZATION> side - HUB Team Responsibility Repository: mdm-hub-cluster-envChanges on manager levelIn mdmetl.yaml configuration must be extended with:Path: \\<tenant>\\<env>\\users\\mdmetl.yamlNew sourcesNew countriesAdd new batch with stages to batch_service, example:batch_service: defaultClient: "ReltioAll" description: "<ORGANIZATION> Informatica IICS User - BATCH loader" batches: "<ORGANIZATION>": <- new batch name - "<NRP>" <- new stage - "HCOLoading" <- new stage - "RelationLoading" <- new stageIn the <ORGANIZATION> manager config, if the batch includes <ORGANIZATION> stage then add to the refAttributesEnricher configuration relationType: ProviderAffiliationsrelationType: ContactAffiliationsrelationType: ACOAffiliationsNew sourcesNew countriesChanges in batch-service levelBased on stages that are adding there is a need to change a batch-service <URL>th: \\<tenant>\\<env>\\namespaces\\<namespace>\\config_files\\batch-service\\config\\application.ymlAdd configuration in <ORGANIZATION>, example:- batchName: "PFORCERX_ODS" batchDescription: "PFORCERX_ODS - HCO, <ORGANIZATION>, <ORGANIZATION> entities loading" stages: - stageName: "HCOLoading" - stageName: "HCOSending" softDependentStages: [ "HCOLoading" ] processingJobName: "SendingJob" - stageName: "HCOProcessing" dependentStages: [ "HCOSending" ] processingJobName: "ProcessingJob" # -------------------------------- - stageName: "HCPLoading" - stageName: "HCPSending" softDependentStages: [ "HCPLoading" ] processingJobName: "SendingJob" - stageName: "HCPProcessing" dependentStages: [ "HCPSending" ] processingJobName: "ProcessingJob" # ------------------ - stageName: "RelationLoading" - stageName: "RelationSending" dependentStages: [ "HCOProcessing", "HCPProcessing" ] softDependentStages: [ "RelationLoading" ] processingJobName: "SendingJob" - stageName: "RelationProcessing" dependentStages: [ "RelationSending" ] processingJobName: "<ORGANIZATION> batch is full load than two additional stages must be configured, it destination is to allows deletating profiles:- stageName: "EntitiesUnseenDeletion" dependentStages: [ "HCOProcessing" ] processingJobName: "DeletingJob"- stageName: "HCODeletesProcessing" dependentStages: [ "EntitiesUnseenDeletion" ] processingJobName: "ProcessingJob"2. Add configuration to bulkConfiguration, example:"PFORCERX_ODS": HCOLoading: bulkLimit: 25 destination: topic: "${env}-internal-batch-pforcerx-ods-hco" maxInFlightRequest: 5 HCPLoading: bulkLimit: 25 destination: topic: "${env}-internal-batch-pforcerx-ods-hcp" maxInFlightRequest: 5 RelationLoading: bulkLimit: 25 destination: topic: "${env}-internal-batch-pforcerx-ods-rel" maxInFlightRequest: 5All new dedicated topic must be configured. There is a need to add configuration in kafka-topics.yml, example:emea-prod-internal-batch-pulse-kam-hco: partitions: 6 replicas: 33. Add configuration in sendingJob, example:PFORCERX_ODS: HCOSending: source: topic: "${env}-internal-batch-pforcerx-ods-hco" maxInFlightRequest: 5 bulkSending: false bulkPacketSize: 10 reltioRequestTopic: "${env}-internal-async-all-mdmetl-user" reltioReponseTopic: "${env}-internal-async-all-mdmetl-user-ack" <NRP>: source: topic: "${env}-internal-batch-pforcerx-ods-hcp" maxInFlightRequest: 5 bulkSending: false bulkPacketSize: 10 reltioRequestTopic: "${env}-internal-async-all-mdmetl-user" reltioReponseTopic: "${env}-internal-async-all-mdmetl-user-ack" RelationSending: source: topic: "${env}-internal-batch-pforcerx-ods-rel" maxInFlightRequest: 5 bulkSending: false bulkPacketSize: 10 reltioRequestTopic: "${env}-internal-async-all-mdmetl-user" reltioReponseTopic: "${env}-internal-async-all-mdmetl-user-ack"4. If a batch is full load then deletingJob must be configured, for example:PULSE_KAM: EntitiesUnseenDeletion: maxDeletesLimit: 10000 queryBatchSize: 10 reltioRequestTopic: "${env}-internal-async-all-mdmetl-user" reltioResponseTopic: "${env}-internal-async-all-mdmetl-user-ack""
|
||
},
|
||
{
|
||
"title": "How to Request PingFederate (PXED) External OAuth 2.0 Account",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/How+to+Request+PingFederate+%28PXED%29+External+OAuth+2.0+Account",
|
||
"content": "This instruction describes the Client steps that should be triggered to create the <ORGANIZATION> account. Referring to security requirements HUB should only know the details about the UserName created by <ORGANIZATION>. HUB is not requesting external accounts, passwords and all the details are shared only with the Client. The client is sharing the user name to HUB and only after the User name is configured Client will gain the access to HUB resources. Contact Persons:<ORGANIZATION>, <PERSON> <<EMAIL_ADDRESS>> / <EMAIL_ADDRESS> - All details related to VCAS Reference number,<ORGANIZATION> ID (<ORGANIZATION> Solution profile number and other details. <ORGANIZATION> (PXED) - DL-CIT-PXED Operations <<EMAIL_ADDRESS>>; <PERSON>, <PERSON><EMAIL_ADDRESS>>Details required to fulfill the <ORGANIZATION> request are in this doc:User Name standard: <SYSTEM_NAME>-MDM_clientSteps:Go to <URL> Search For Application type: PXED Pick - Application enablement with enterprise authentication services (<ORGANIZATION>, LDAP and/or SSO)Fulfill the request and send.Wait for the user name and passwordAfter confirmation share the Client Id with HUB and wait for the grant of access. Do not share the password. EXAMPLE: For the Reference Example request send for <ORGANIZATION> user:Request TicketG<MEDICAL_LICENSE>9iTicket IDNameVarganin, <PERSON> user nameAD UsernameVARGAA08Requested user IdUser DomainAMERRegion (<ORGANIZATION><LOCATION>...)Request ID20200717112252425request IDHosting locationExternalHosting location of the Client services: (<ORGANIZATION> or <ORGANIZATION> Reference <URL>AS Reference numberData FeedNo, <ORGANIZATION>/<ORGANIZATION> - requests send to <ORGANIZATION> then - API/ServicesApplication access methodsWeb <ORGANIZATION> of access for the Client application - (Intranet/Web Browser e.t.c) Application User baseCOMPANY colleaguesContractorsApplication User baseApplication access devicesLaptop/DesktopTablets (<ORGANIZATION> access devicesApplication <ORGANIZATION> (External - Internet / Internal - Intranet)Application Name<EXAMPLE: PFORCEOL (BIOPHARMA)>Requested application name that requires new accountCMDB ID (Production Deployment)<URL><ORGANIZATION> ID (<ORGANIZATION> profile number....<ORGANIZATION> Solution profile numberNumber of users for the <URL>mber of users for the applicationConcurrent <URL>ncurrent UsersCommentsApplication-to-Application Integration using NSA (<ORGANIZATION>.) PTRS will use REST APIs to authenticate to and access <ORGANIZATION><URL>is application will access <ORGANIZATION> (MDM_client) and will need <ORGANIZATION> account (KOL-MDM_client) for access to those APIs/Servicesfull description of requested account and integrationApplication ScopeAll UsersApplication ScopeReferenced tickets (only for example / reference purposes):<URL>"
|
||
},
|
||
{
|
||
"title": "Hub Operations",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Hub+Operations",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Airflow:",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Checking that Process Ends Correctly",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Checking+that+Process+Ends+Correctly",
|
||
"content": "To check that process ended without any issues you need to login into <PERSON> and check the Alerts Monitoring PROD dashboard. You have to check rows in the GBL PROD Airflow DAG's <ORGANIZATION> panel. If you can see red rows (like on blow screenshot) it means that there occured some issues:Details of issues are available in the <ORGANIZATION>."
|
||
},
|
||
{
|
||
"title": "Common Problems",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Common+Problems",
|
||
"content": "Failed task getEarliestUploadedFileDuring reviewing of failed DAG you noticed that the task getEarliestUploadedFile has failed state. In the task's logs you can see the line like this:[<DATE_TIME> 18:44:07,082] {{docker_<URL>:252}} INFO - Unable to find the earliest uploaded file. <ORGANIZATION> directory is empty?The issue is because getEarliestUploadedFile was not able to download the export file. In this case you need to check the <ORGANIZATION> localtion and verify that the correct export file was uploded to valid location."
|
||
},
|
||
{
|
||
"title": "Deploy Airflow Components",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Deploy+Airflow+Components",
|
||
"content": "Deployment procedure is implemented as <ORGANIZATION> playbook. The source code is stored in <ORGANIZATION> configuration repository. The runnable file is available under the path: <URL> and can be run by the command: ansible-playbook install_mdmgw_airflow_services.yml -i inventory/[env name]/inventory Deployment has following steps: Creating directory structure on execution host, Templating configuration files and transferring those to config location, Creating DAG, variable and connections in Apache Airflow, Restarting Airflow instance to apply configuration changes. After successful deployment the dag and configuration changes should be available to trigger in <ORGANIZATION>. "
|
||
},
|
||
{
|
||
"title": "Deploying DAGs",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Deploying+DAGs",
|
||
"content": "To deploy newly created DAG or configuration changes you have to run the deployment procedure implemented as <ORGANIZATION> playbook install_mdmgw_airflow_services.yml:<ORGANIZATION>-playbook install_mdmgw_airflow_services.yml -i inventory/[env name]/inventoryIf you you have access to <PERSON> you can also use <PERSON>' jobs: <URL> Each environment has its own deploy job. Once you choose the right job you have to:1 Click the button "Build Now": 2 After <DATE_TIME> the stage icon "Choose dags to deploy" will be active and will wait for choosing DAG to deploy:3 Choose the DAG you wanted to deploy and approve you <URL>ter this job will deploy all changes made by you to <ORGANIZATION>'s server."
|
||
},
|
||
{
|
||
"title": "Error Grabbing Grapes - hub_reconciliation_v2",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Error+Grabbing+Grapes+-+hub_reconciliation_v2",
|
||
"content": "In hub_reconciliation_v2 airflow <ORGANIZATION>, during stage entities_generate_hub_reconciliation_events grape error might occur:\<URL>ltipleCompilationErrorsException: startup failed:\nGeneral error during conversion: Error grabbing Grapes\n(...)\nCause:That could be caused by connectivity/configuration <URL>around:For this dag dependencies are mounted in container. Mounted directory is located in airflow server on path: /app/airflow/{{ env_name }}/hub_reconciliation_v2/tmp/.groovy/grapes/To solve this problem copy libs from working dag. E.g. <DATE_TIME><URL>"
|
||
},
|
||
{
|
||
"title": "Batches (Batch Service):",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Adding a New Batch",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Adding+a+New+Batch",
|
||
"content": "1. Add batch to batch_service.yml in the following sections- add batch info to section batchWorkflows - add basing on some already defined- add bulk configuration- add to sendingJob- add to deletingJob if needed2. Add source and user for batch to batch_service_users.yml- add for user mdmetl_nprod apropriate source and <ORGANIZATION>. Add user to:for <ORGANIZATION> / GBLUS - /inventory/<env>/group_vars/gw-services/gw_users.ymlfor <ORGANIZATION> - /config_files/<env>manager/config/users- for appropriate source, country and <LOCATION>. Add topic to bundle section in manager/config/application.yml 5. Add kafka topicsWe use <PERSON> manager to add new topics which can be found under directory /inventory/<env>/group_vars/<PERSON>/manager/topics.ymlFirstly set create_or_update to True after creation of topics change to False7. Create topics and redeploy services by using <PERSON><URL> Redeploy gateway on others envs qa, stage, prod only if there is no batch running - check it in mongo on batchInstance collection using following query: {"status" : "STARTED"}9. Ask if new source should be added to dq rules"
|
||
},
|
||
{
|
||
"title": "Cache Address ID Clear (Remove Duplicates) Process",
|
||
"<PERSON>": "<US_DRIVER_LICENSE>",
|
||
"pageLink": "/display/<ORGANIZATION>/Cache+Address+ID+Clear+%28Remove+Duplicates%29+Process",
|
||
"content": "This process is similar to the Cache Address ID Update Process . So the user should load the file to mongo and process it with the following steps: Download the files that were indicated by the user and apply on a specific environment (sometimes only STAGE and sometimes all envs)For example - 3 files - /us/prod/inbound/cdw/one-time-feeds/other/Merge these file to one file - Duplicate_Address_Ids_<date>.txtProceed with the <URL> based on the Cache Address ID Update <ORGANIZATION> load to the removeIdsFromkeyIdRegistry collectionmongoimport --host=localhost:27017 --username=admin --password=zuMMQvMl7vlkZ9XhXGRZWoqM8ux9d08f7BIpoHb --authenticationDatabase=admin --db=reltio_stage --collection=removeIdsFromkeyIdRegistry --type=csv --columnsHaveTypes --fields="_<URL>ring(),<URL>ring(),<URL>ring(),<URL>64(),_<URL>ring()" --file=EXTRACT_Duplicate_Address_Ids_16042021.txt --mode=insertCLEAR keyIdRegistrydocker exec -it mongo_mongo_1 bashcd /data/configdbNPROD - nohup mongo duplicate_address_ids_clear.js &PROD - nohup mongo --host mongo_reltio_repl_set/<URL>:27017,<URL>:27017,<URL>:28017 -u mdm_hub -p <passw>--authenticationDatabase reltio_prod <ORGANIZATION> REFERENCE SCRIPT:\nCLEAR keyIdRegistry\n db = <URL>tSiblingDB('reltio_dev')\n <URL>th("mdm_hub", "<pass>")\n \n db = <URL>tSiblingDB('reltio_prod')\n <URL>th("mdm_hub", "<pass>")\n\n\n\n print("START")\n var start = new Date().getTime();\n\n\n var cursor = <URL>tCollection("removeIdsFromkeyIdRegistry").aggregate( \n [\n \n ], \n { \n "allowDiskUse" : false\n }\n )\n \n <URL>rEach(function (doc){\n <URL>tCollection("keyIdRegistry").remove({"_id": doc._id});\n });\n\n var end = new Date().getTime();\n var duration = end - start;\n print("duration: " + duration + " ms")\n print("END")\n\n\n nohup mongo duplicate_address_ids_clear.js &\n\n nohup mongo --host mongo_reltio_repl_set/<URL>:27017,<URL>:27017,<URL>:28017 -u mdm_hub -p <pass>--authenticationDatabase reltio_prod <ORGANIZATION> batchEntityProcessStatus checksumsdocker exec -it mongo_mongo_1 bashcd /data/configdbNPROD - nohup mongo unset_checsum_duplicate_address_ids_clear.js &PROD - nohup mongo --host mongo_reltio_repl_set/<URL>:27017,<URL>:27017,<URL>:28017 -u mdm_hub -p <pass>--authenticationDatabase reltio_prod <ORGANIZATION> REFERENCE SCRIPT\nCLEAR batchEntityProcessStatus\n\n db = <URL>tSiblingDB('reltio_dev')\n <URL>th("mdm_hub", "<pass>")\n \n db = <URL>tSiblingDB('reltio_prod')\n <URL>th("mdm_hub", "<pass>")\n\n\n print("START")\n var start = new Date().getTime();\n var cursor = <URL>tCollection("removeIdsFromkeyIdRegistry").aggregate( \n [\n ], \n { \n "allowDiskUse" : false\n }\n )\n \n <URL>rEach(function (doc){\n var key = <URL>y <ORGANIZATION>var arrVars = key.split("/");\n \n var type = "configuration/sources/"+arrVars[0]\n var value = arrVars[3];\n \n print(type + " " + value)\n \n var result = <URL>tCollection("batchEntityProcessStatus").update(\n { "batchName" : { $exists : true }, "sourceId" : { "type" : type, "value" : value } },<ORGANIZATION>{ $set: { "checksum": "" } },<ORGANIZATION>{ multi: true}\n )\n \n printjson(result);\n \n });\n \n var end = new Date().getTime();\n var duration = end - start;\n print("duration: " + duration + " ms")\n print("END")\n\n nohup mongo unset_checsum_duplicate_address_ids_clear.js &\n \n nohup mongo --host mongo_reltio_repl_set/<URL>:27017,<URL>:27017,<URL>:28017 -u mdm_hub -p <pass>--authenticationDatabase reltio_prod <ORGANIZATION> nohup outputCheck few rows and verify if these rows do not exist in the KeyIdRegistry collectionCheck few profiles and verify if the checksum was cleared in the BatchEntityProcessStatus collectionISSUE - for the <ORGANIZATION> profiles there is a difference between the generated cache and the corresponding <URL>SUE - for the <LOCATION> profiles there is a difference between the generated cache and the corresponding profile. - check the crosswalks values in COMPANY_ADDRESS_ID_EXTRACT_PAC_files - should be e.g. 00002b9b-<US_DRIVER_LICENSE>-456c-959c-fd5b04ed04b8ISSUE - for the ENGAGE 1.0 profiles there is a difference between the generated cache and the corresponding profile. check the crosswalks values in COMPANY_ADDRESS_ID_EXTRACT_ENG_ files - should be e.g 00002b9b-<US_DRIVER_LICENSE>-456c-959c-fd5b04ed04b8Please check the following example:CUST_SYSTEM,CUST_TYPE,<PERSON>,SRC_CUST_ID,SRC_CUST_ID_TYPE,<ORGANIZATION>,PFZ_CUST_ID,SRC_SYS,MDM_SRC_SYS,EXTRACT_DTPROBLEM : HCPM,HCP,<UK_NHS>,<US_DRIVER_LICENSE>,HCE,<US_BANK_NUMBER>,<US_DRIVER_LICENSE>,HCPS,HCPS,2021-04-15OK : HCPM,<ORGANIZATION>,a012K000022cqBoQAI,0012K00001lCEyYQAW,<PERSON>,VVA,2021-04-15For <ORGANIZATION> the crosswalk is equal to the 001A000001VgOEVIA3 and it is easy to match with the <ORGANIZATION> profile and clear the cache for <ORGANIZATION> the generated row is equal to the - COMPANYAddressIDSeq|ONEKEY/HCP/HCE/<US_DRIVER_LICENSE>/<UK_NHS>,ONEKEY/HCP/HCE/<US_DRIVER_LICENSE>/<UK_NHS>,COMPANYAddressIDSeq,<US_BANK_NUMBER>,<URL>yIdRegistryThe <DATE_TIME> is not a crosswalk so to remove the checksum from the BatchEntityProcessStatus collection there is a need to find the profile in Reltio - crosswalk si WUSM01113231 - and clear the cache in the BatchEntityProcessStatus <URL> my example, there was only one crosswalk. So it was easy to find this profile. For multiple profiles, there is a need to find the solution. ( I think we need to ask <ORGANIZATION> to provide the file for <ORGANIZATION> with an additional crosswalk column, so we will be able to match the crosswalk with the Key and clear the checksum) Solution: once we receive <ORGANIZATION> KeyIdRegstriy Update file ask <ORGANIZATION> to generate crosswalks ids - simple CSV fileThe file received from <ORGANIZATION> does not contain crosswalks id, only COMPANYAddressIds - example input - <URL> DT Team and download CSV fileLoad the file to TMP collection in <PERSON> e.g. - AddressIDCrosswalks_COMPANY_ADDRESS_ID_EXTRACT_HCPS_20210511Execute the <LOCATION> batchEntityProcessStatus based on crosswalks ID list \n\n db = <URL>tSiblingDB('reltio_dev')\n <URL>th("mdm_hub", "<pass>")\n \n db = <URL>tSiblingDB('reltio_prod')\n <URL>th("mdm_hub", "<pass>")\n\n\n print("START")\n var start = new Date().getTime();\n var cursor = <URL>tCollection("AddressIDCrosswalks_COMPANY_ADDRESS_ID_EXTRACT_HCPS_20210511").aggregate( \n [\n ], \n { \n "allowDiskUse" : false\n }\n )\n \n <URL>rEach(function (doc){\n \n var type = "configuration/sources/ONEKEY";\n var value = <URL>PANYcustid_individualeid;\n \n print(type + " " + value)\n \n var result = <URL>tCollection("batchEntityProcessStatus").update(\n { "batchName" : { $exists : true }, "sourceId" : { "type" : type, "value" : value } },<ORGANIZATION>{ $set: { "checksum": "" } },<ORGANIZATION>{ multi: true}\n )\n \n printjson(result);\n \n });\n \n var end = new Date().getTime();\n var duration = end - start;\n print("duration: " + duration + " ms")\n print("END")\n"
|
||
},
|
||
{
|
||
"title": "Changelog of removed duplicates",
|
||
"<PERSON>": "<US_DRIVER_LICENSE>",
|
||
"pageLink": "/display/<ORGANIZATION>/Changelog+of+removed+duplicates",
|
||
"content": "<DATE_TIME> - DROP keys Duplicate_Address_Ids.txt <ORGANIZATION>/Duplicate_Address_Ids.txt > <ORGANIZATION><DATE_TIME> - DROP keys STAGE GBLUS Duplicate_Address_Ids_16042021.txt - 11 380 - 1 <ORGANIZATION>, <ORGANIZATION>, CENTRIS <ORGANIZATION> inbound/Duplicate_Address_Ids_16042021.txt > EXTRACT_Duplicate_Address_Ids_16042021.txt &<DATE_TIME> - DROP STAGE GBLUS Duplicate_Address_Ids_17052021.txt - 25121 - 1 <ORGANIZATION> <ORGANIZATION> inbound/Duplicate_Address_Ids_17052021.txt > EXTRACT_Duplicate_Address_Ids_17052021.txt25.06.2021 - DROP STAGE GBLUS Duplicate_Address_Ids_17052021.txt - 71509, 2 <ORGANIZATION> <ORGANIZATION> inbound/Duplicate_Address_Ids_25062021.txt > <ORGANIZATION> - DROP PROD GBLUS Duplicate_Address_Ids_12072021.txt - 4550 Duplicate_Address_Ids_12072021.txt - us/prod/inbound/cdw/one-time-feeds/<ORGANIZATION> <ORGANIZATION> inbound/Duplicate_Address_Ids_12072021.txt > EXTRACT_Duplicate_Address_Ids_12072021.txt & "
|
||
},
|
||
{
|
||
"title": "Cache Address ID Update Process",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Cache+Address+ID+Update+Process",
|
||
"content": "1. Log using <ORGANIZATION> browser to production bucket <LOCATION> and go to dir /us/prod/inbound/cdw/one-time-feeds/COMPANY-address-id/ and check last update <PERSON>. Log using mdmusnpr service user to server <URL> using <ORGANIZATION>. <ORGANIZATION> files from <ORGANIZATION> using below commanddocker run -u <US_BANK_NUMBER>:<US_BANK_NUMBER> -e "AWS_ACCESS_KEY_ID=<access_key>" -e "AWS_SECRET_ACCESS_KEY=<secret_access_key>" -e "AWS_DEFAULT_REGION=us-east-1" -v /app/mdmusnpr/AddressID/inbound:/src:z mesosphere/aws-cli <US_DRIVER_LICENSE> sync <US_DRIVER_LICENSE>://gblmdmhubprodamrasp101478/us/prod/inbound/cdw/one-time-feeds/COMPANY-address-id/ /src4. After syncing check new files with those two commads replacing new_file_name with name of the file which was updated. Check in script file that SRC_SYS and MDM_SRC_SYS exists, if not something is wrong and probably script needs to be updated ask the person who asked for address id updatecut -d',' -<US_DRIVER_LICENSE> <new_file_name> | sort | uniqcut -d',' -<US_DRIVER_LICENSE> <new_file_name> | sort | <LOCATION>. Remove old extracts from /app/mdmusnpr/AddressIDrm EXTRACT_<new_file_name>6. Run script which will prepare data for mongonohup ./<URL> inbound/<new_file_name> > EXTRACT_<new_file_name> &Wait until processing in foreground finishes. Check after some time using below command:ps ax | grep scriptIf process is marked as done You can continue with next file or if there is no more files You can proceed to next step.7. Log in using Your user to the server <URL> and change to <ORGANIZATION>. Go to /app/mongo/config and remove old extractsrm EXTRACT_<new_file_name>9. Go to /app/mdmusnpr/AddressID and copy new extracts to mongocp EXTRACT_<new_file_name> /app/mongo/config/10. Run mongo shelldocker exec -it mongo_mongo_1 bashcd /data/configdb11. Execute following command for each non prod env and for every new extract file<db_name> - reltio_dev, reltio_qa, reltio_stagemongoimport --host=localhost:27017 --username=admin --password=<db_password> --authenticationDatabase=admin --db=<db_name> --collection=keyIdRegistry --type=csv --columnsHaveTypes --fields="_<URL>ring(),<URL>ring(),<URL>ring(),<URL>64(),_<URL>ring()" --file=EXTRACT_<new_file_name> --mode=upsertWrite into changelog the number of records that were updated - it should be equal on all envs.12. If needed and requested update production using following commandmongoimport --host=mongo_reltio_repl_set/<URL>:27017,<URL>:27017,<URL>:28017 --username=admin --password=<prod_db_password> --authenticationDatabase=admin --db=reltio_prod --collection=keyIdRegistry --type=csv --columnsHaveTypes --fields="_<URL>ring(),<URL>ring(),<URL>ring(),<URL>64(),_<URL>ring()" --file=EXTRACT_<new_file_name> --mode=upsert13. Verify number of entries from input file with updated records number in <LOCATION>. Update changelog15. Respond to email that update is done16. Force merge will be generated - there will be mail about this.17. Download force merge delta from <ORGANIZATION> using <ORGANIZATION> browser and change name to merge_<date>_1.csvbucket: gblmdmhubprodamrasp101478path: us/prod/inbound/HcpmForceMerge/ForceMergeDelta18. Upload file merge_<date>_1.csv tobucket: gblmdmhubprodamrasp101478path: us/prod/inbound/hub/merge_unmerge_entities/input/19. Trigger dag <URL> After <ORGANIZATION> is finished login using <ORGANIZATION> Browser bucket: gblmdmhubprodamrasp101478path: us/prod/inbound/hub/merge_unmerge_entities/output/<most_recent_date>_<most_recent_time>so for date <DATE_TIME> and time 12:11: 39, the file looks like this: us/prod/inbound/hub/merge_unmerge_entities/output/20210517_121139and download result file, check for failed merge and send it in response to email about force merge"
|
||
},
|
||
{
|
||
"title": "Changelog of updated",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Changelog+of+updated",
|
||
"content": "<DATE_TIME> - Loading NEW files:<ORGANIZATION> ENGAGE 1.0nohup ./<URL> inbound/COMPANY_ADDRESS_ID_EXTRACT_PAC_ENG.txt > EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_PAC_ENG.txt &IQVIA_RXnohup ./<URL> inbound/COMPANY_ADDRESS_ID_EXTRACT_HCPS00.txt > <ORGANIZATION> ./<URL> inbound/COMPANY_ACCOUNT_ADDR_ID_EXTRACT.txt > <ORGANIZATION> new file: -> <US_BANK_NUMBER>.12.2020 - Loading new file: PAC_ENG -> 820 document, CAPP-> <DATE_TIME> document16.12.2020 - Loading MILLIMAN_MCO: 10504 document22.12.2020 - Loading CPMRTE: 15686 document, <ORGANIZATION>: 1287, PAC_ENG: 1340, <ORGANIZATION>: <US_BANK_NUMBER>, <ORGANIZATION>: 343, <ORGANIZATION> i <ORGANIZATION> problem, CENTRIS: 41496, <PERSON>: <US_DRIVER_LICENSE>.12.2020 - Loading PAC_ENG: 1260, <ORGANIZATION>: <US_DRIVER_LICENSE>.01.2021 - Loading PAC_ENG: 330, <ORGANIZATION>: 33808.01.2021 - Loading HCPS00: <US_DRIVER_LICENSE>.01.2021 - Loading PAC_ENG: 496, <ORGANIZATION>: 51218.01.2021 - Loading PAC_ENG: 616, <ORGANIZATION>: 79525.01.2021 - Loading PAC_ENG: 1009, <ORGANIZATION>: <PHONE_NUMBER> - Loading PAC_ENG: 884, <ORGANIZATION>: <US_DRIVER_LICENSE>.02.2021 - Loading PAC_ENG: 576, <ORGANIZATION>: 39415.02.2021 - Loading PAC_ENG: 690, <ORGANIZATION>: 69617.02.2021 - Loading VVA: <PHONE_NUMBER>.02.2021 - Loading PAC_ENG: 724, <ORGANIZATION>: 75701.03.2021 - Loading PAC_ENG: 906, <ORGANIZATION>: <PHONE_NUMBER> - Loading PAC_ENG: 738, <ORGANIZATION>: 79511.05.2021 - Loading PAC_ENG: 589, <ORGANIZATION>: 62617.05.2021 - Loading PAC_ENG: 489, <ORGANIZATION>: 61317.05.2021 - Loading - us/prod/inbound/cdw/one-time-feeds/COMPANY-address-id/Prod_Sync_FileSet/COMPANY_ADDRESS_ID_EXTRACT_HCPS_20210511.txt Updated: <US_DRIVER_LICENSE> - customers updated - cleared cache in batchEntityProcessStatus collection for reload Updated: <DATE_TIME>) imported successfully in KeyIdRegistry18.05.2021 - STAGE only <ORGANIZATION> - 43771 document(s) imported successfully COMPANY_ACCOUNT_ADDR_ID_EXTRACT_IMS_20210511.txt - 10076 document(s) imported successfully19.05.3021 - Load 15 Files to PROD and clear cache. Load these files to <ORGANIZATION> and STAGE 2972 <DATE_TIME> <ORGANIZATION>/COMPANY_ACCOUNT_ADDR_ID_EXTRACT_DVA_20210511.txt > <ORGANIZATION> <US_BANK_NUMBER> <DATE_TIME> <ORGANIZATION> > <ORGANIZATION> <US_DRIVER_LICENSE> <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ACCOUNT_ADDR_ID_EXTRACT_IMS_20210511.txt > <ORGANIZATION> <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ACCOUNT_ADDR_ID_EXTRACT_MLM_20210511.txt > Prod_Sync_FileSet/EXTRACT_COMPANY_ACCOUNT_ADDR_ID_EXTRACT_MLM_20210511.txt & <DATE_TIME> <ORGANIZATION>/COMPANY_ACCOUNT_ADDR_ID_EXTRACT_MMIT_20210511.txt > <ORGANIZATION> <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ACCOUNT_ADDR_ID_EXTRACT_SAP_20210511.txt > <ORGANIZATION>73236 <DATE_TIME> <ORGANIZATION>/COMPANY_ADDRESS_ID_EXTRACT_APUS-VVA_20210511.txt > Prod_Sync_FileSet/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_APUS-VVA_20210511.txt & <US_DRIVER_LICENSE> <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ADDRESS_ID_EXTRACT_CENTRIS_20210511.txt > Prod_Sync_FileSet/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_CENTRIS_20210511.txt & 60175 <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ADDRESS_ID_EXTRACT_EMDS-VVA_20210511.txt > Prod_Sync_FileSet/<ORGANIZATION><US_DRIVER_LICENSE> <DATE_TIME> 14:59 <ORGANIZATION> <DATE_TIME> <ORGANIZATION>/COMPANY_ADDRESS_ID_EXTRACT_HCPS_ZIP_20210511.txt > Prod_Sync_FileSet/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_HCPS_ZIP_20210511.txt & <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ADDRESS_ID_EXTRACT_KOL_20210511.txt > Prod_Sync_FileSet/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_KOL_20210511.txt & <US_DRIVER_LICENSE> <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ADDRESS_ID_EXTRACT_PAC_20210511.txt > Prod_Sync_FileSet/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_PAC_20210511.txt & <DATE_TIME> May <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ADDRESS_ID_EXTRACT_SHS_20210511.txt > Prod_Sync_FileSet/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_SHS_20210511.txt & <US_DRIVER_LICENSE> <DATE_TIME> <ORGANIZATION> inbound/Prod_Sync_FileSet/COMPANY_ADDRESS_ID_EXTRACT_SHS_ZIP_20210511.txt > Prod_Sync_FileSet/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_SHS_ZIP_20210511.txt &<DATE_TIME> - Loading PAC_ENG: Dev:1283, QA: 1283, Stage: 1509, Prod: 1283 CAPP: Dev: <DATE_TIME>, QA: 1392, Stage: <DATE_TIME>, Prod: 18731/<DATE_TIME> - Loading PAC_ENG: 379, <ORGANIZATION>: 4339/<DATE_TIME> - Loading PAC_ENG: 38, <ORGANIZATION>: 4714/<DATE_TIME> - Loading PAC_ENG: 83, <ORGANIZATION>: 10216/<DATE_TIME> - Loading COMPANY_ACCT: Prod: 236 <DATE_TIME> - Loading PAC_ENG: Dev:182, QA: 182, Stage: 182, Prod: 646, CAPP: Dev: 215, QA: 215, Stage: 215, Prod: 21502.07.2021 Load 11 Files to PROD and clear cache. Load these files to <ORGANIZATION> and STAGE <ORGANIZATION>/COMPANY_ACCOUNT_ADDR_ID_EXTRACT_HCOS_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ACCOUNT_ADDR_ID_EXTRACT_HCOS_20210630.txt & <ORGANIZATION>/COMPANY_ACCOUNT_ADDR_ID_EXTRACT_IMS_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ACCOUNT_ADDR_ID_EXTRACT_IMS_20210630.txt & <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ACCOUNT_ADDR_ID_EXTRACT_MLM_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ACCOUNT_ADDR_ID_EXTRACT_MLM_20210630.txt & <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ADDRESS_ID_EXTRACT_APUS-VVA_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_APUS-VVA_20210630.txt & <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ADDRESS_ID_EXTRACT_CENTRIS_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_CENTRIS_20210630.txt & <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ADDRESS_ID_EXTRACT_EMDS-VVA_20210630.txt > Prod_Sync_FileSet_3/<ORGANIZATION> <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ADDRESS_ID_EXTRACT_HCPS_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_HCPS_20210630.txt & <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ADDRESS_ID_EXTRACT_HCPS_ZIP_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_HCPS_ZIP_20210630.txt & <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ADDRESS_ID_EXTRACT_KOL_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_KOL_20210630.txt & <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ADDRESS_ID_EXTRACT_SHS_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_SHS_20210630.txt & <ORGANIZATION> inbound/Prod_Sync_FileSet_3/COMPANY_ADDRESS_ID_EXTRACT_SHS_ZIP_20210630.txt > Prod_Sync_FileSet_3/EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_SHS_ZIP_20210630.txt &<DATE_TIME> - Loading PAC_ENG: 39 , <ORGANIZATION>: <PHONE_NUMBER> Load 1 VVA File to PROD and clear cache. Load this file to <ORGANIZATION> and STAGE <ORGANIZATION> inbound/COMPANY_ADDRESS_ID_EXTRACT_VVA_20210715.txt > EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_VVA_20210715.txt &<DATE_TIME> Load 1 VVA File to PROD and clear cache. Load this file to <ORGANIZATION> and STAGE <ORGANIZATION> inbound/COMPANY_ADDRESS_ID_EXTRACT_VVA_20210718.txt > EXTRACT_COMPANY_ADDRESS_ID_EXTRACT_VVA_20210718.txt &GBLUS/Fletcher PROD GO-LIVE COMPANYAddressID sequence - PROD (MAX)<US_SSN> + <US_DRIVER_LICENSE> = <US_PASSPORT>"
|
||
},
|
||
{
|
||
"title": "Manual Cache Clear",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Manual+Cache+Clear",
|
||
"content": "Open Studio 3T and connect to appropriate <PERSON> IntelliShellRun following query for appropriate source - replace <source> with right name\<URL>tCollection("batchEntityProcessStatus").updateMany({"sourceId.type":"configuration/sources/<source>"}, {$set: {"checksum" : ""}})<ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Data Quality",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Data+Quality",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Quality Rules Deployment Process",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Quality+Rules+Deployment+Process",
|
||
"content": "Resource changingThe process regards modifying the resources related to data quality configuration that are stored in Consul and load by mdm-manager, <PERSON>, precallback-service components in runtime. They are present in mdm-config-registry/config-hub location.When modifying data quality rules configuration present at mdm-config-registry/config-hub/<env_name>/mdm-manager/quality-service/quality-rules , the following rules should be applied:Each <ORGANIZATION> file should be formatted in accordance with yamllint rules (See Yamllint validation rules)The attributes createdDate/modifiedDate were deleted from the rules configuration files. They will be automatically set for each rule during the deployment process. (See Deployment of changes)Adding more than one rule with the same value of name attribute is not <URL> validationEvery PR to mdm-config-registry repository is validated for correctness of <ORGANIZATION> syntax (See Yamllint validation rules). Upon PR creation the job is triggered that checks the format of <ORGANIZATION> files using yamllint. The jobs succeeds only when all the yaml files in repository passed the yamllint <URL>e PRs that did not passed validations should not be merged to <URL>ployment of changesAll changes in mdm-config-registry/config-hub should be deployed to consul using <PERSON> JOBS. The separate job exist for deploying changes done on each environment. Eg. job deploy_config_amer_nprod_amer-dev is used to deploy all changes done on <ORGANIZATION> DEV environment (all changes under path mdm-config-registry/config/hub/dev_amer). Jobs allow to deploy configuration from master branch or <ORGANIZATION> to mdm-config-registry <URL>e deployment job flow can be described by the following diagram:<NRP> workspace - wipes workspace of all the files left from previous job <URL>eckout mdm-config-registry - this repository contains files with data quality configuration and yamllint rulesCheckout mdm-hub-cluster-env - this repository contains script for assigning createdDate / modifiedDate attributes to quality rules and <ORGANIZATION> job for running this script and uploading files to <URL>lidate yaml files - runs yamllint validation for every <ORGANIZATION> file at mdm-config-registry/config-hub/<env_name> (See Yamllint validation rules)Get previous quality rules registry files - downloads quality rules registry file produced after previous successfull run of a job. The file is responsible for storing information about modification dates and checksum of quality rules. Decision if modification dates should be update is made based on checksum change, . The registry file is a csv with the following headers:ID - ID for each quality rule in form of <file_name>:<rule_name>CREATED_DATE - stores createdDate attribute value for each ruleMODIFIED_DATE - stores modifiedDate attribute value for each ruleCHECKSUM - stores checksum counted for each ruleUpdate <ORGANIZATION> files - runs <ORGANIZATION> job responsible for:Running script <URL>oovy - responsible for adjusting createdDate / modifiedDate for quality rules based on checksum changes and creating new quality rules registry file.Updating changed quality rules files in Consul kv <URL>ve quality rules registry file - save new registry file in job <URL>gorithm of updating modification datesThe following algorithm is implemented in <URL>oovy script. The main goal of this is to update createdDate/modifiedDate in the case when new quality rule has been added or its definition changed.Yamllint validation rulesTODO"
|
||
},
|
||
{
|
||
"title": "DCRs:",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>:",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Reject pending <ORGANIZATION> transfer to <ORGANIZATION>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "<ORGANIZATION>'s a <ORGANIZATION> request which was sent to <ORGANIZATION> (<ORGANIZATION>) by HUB however it hasn't been processed - we didn't receive information whether is should be ACCEPTED or REJECTED. This causes a couple of things:in <ORGANIZATION> we're having <ORGANIZATION> in status VR Status = OPEN and VR Detailed Status = SENTin <PERSON> in collection <ORGANIZATION> we're having <ORGANIZATION> in status = <PERSON> in collection DCRVeevaRequest we're having <ORGANIZATION> in status = SENTalerts are raised in Prometheus/Karma since we usually should receive response within couple of daysGoalWe want to simulate REJECT response from <ORGANIZATION> which will make <ORGANIZATION> to return to Reltio for further processing by <ORGANIZATION>. This may be realized in a couple of ways: Procedure #1 - (minutes to process) Populate event to topic $env-internal-veeva-dcr-change-events-in which skips VeevaAdapter and simulates response from <ORGANIZATION> → see diagram for more details Veeva DCR flowsProcedure #2 - (hours to process) Create <ORGANIZATION> response ZIP file with specific payload, which needs to be placed to specific <ORGANIZATION> location, which is further ingested by VeevaAdapterProcedure #1Step 1 - Adjust below event template(optional) update eventTime to current timestamp in milliseconds → use <URL>(optional) update countryCode to the on from Request(requited) update dcrId to the one you want JSON event to populate\n{\n "eventType": "CHANGE_REJECTED",\n "eventTime": <US_BANK_NUMBER>,\n "countryCode": "SG",\n "dcrId": "a51f229331b14800846503600c787083",\n "vrDetails": {\n "vrStatus": "CLOSED",\n "vrStatusDetail": "REJECTED",\n "veevaComment": "MDM HUB: Simulated reject response to close DCR.",\n "veevaHCPIds": [],\n "veevaHCOIds": []\n }\n}\nStep 2 - Populate event to topic $env-internal-veeva-dcr-change-events-in (for <ORGANIZATION>-STAGE: apac-stage-internal-veeva-dcr-change-events-in). For this purpose use AKHQ (for <ORGANIZATION>-STAGE: <URL>)Select topic $env-internal-veeva-dcr-change-events-in and use "Produce to Topic" button in bottom rightPaste event details, update Key by providing dcrId and press "Populate"After <DATE_TIME> things should be in effect:<ORGANIZATION> in <ORGANIZATION> should change its status from SENT_TO_VEEVA to DS Action RequiredMongoDB document in collection DCRRegistry will change its status to DS_ACTION_REQUIREDStep 3 - update MongoDB DCRRegistryVeeva collection Connect to Mongo with Studio 3T, find out document using "_id" in collection DCRRegistryVeeva and update its status to REJECTED and changeDate to current <URL>cument update\n{\n $set : {\n <URL> : "REJECTED",\n "<URL>angeDate" : "<DATE_TIME>"\n }\n}\nStep 4 - check Reltio DCRCheck if <ORGANIZATION> status has changed to "DS Action Required" and <ORGANIZATION> Tracing details has been updated with simulated Veeva Reject response. "
|
||
},
|
||
{
|
||
"title": "Close <ORGANIZATION> - override any status",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Close+VOD+DCR+-+override+any+status",
|
||
"content": "This SoP is almost identical to the one in Override VOD Accept to <ORGANIZATION> for <ORGANIZATION> DCR with small updates:In Step 1, please also update target = <ORGANIZATION> to target = Reltio. "
|
||
},
|
||
{
|
||
"title": "Override VOD Accept to <ORGANIZATION> for <ORGANIZATION> DCR",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Override+VOD+Accept+to+VOD+Reject+for+VOD+DCR",
|
||
"content": "<ORGANIZATION>'s a <ORGANIZATION> request which was sent to <ORGANIZATION> (<ORGANIZATION>) and mistakenly ACCEPTED, however business requires such <ORGANIZATION> to be Rejected and redirected to <ORGANIZATION> for processing via Reltio Inbox.GoalWe want to:remove incorrect entries in <ORGANIZATION> Tracking details - usually "Veeva Accepted" and "Waiting for <ORGANIZATION> REJECT response from <ORGANIZATION> which will make <ORGANIZATION> to return to Reltio for further processing by <ORGANIZATION> event to topic $env-internal-veeva-dcr-change-events-in which skips VeevaAdapter and simulates response from <ORGANIZATION> → see diagram for more details Veeva DCR flowsProcedureStep 0 - Assume that VOD_NOT_FOUNDSet retryCounter to 9999Wait for 12hStep 1 - Adjust <ORGANIZATION> document in MongoDB in DCRRegistry collection (Studio3T)Remove incorrect <ORGANIZATION> Tracking entries for your <ORGANIZATION> (trackingDetails section) - usually nested attribute 3 and 4 in this sectionSet retryCounter to 0Set <URL> to "SENT_TO_VEEVA"Step 2 - update MongoDB DCRRegistryVeeva collection <ORGANIZATION> with Studio 3T, find out document using "_id" in collection DCRRegistryVeeva and update its status to REJECTED and changeDate to current <URL>cument update\n{\n $set : {\n <URL> : "REJECTED",\n "<URL>angeDate" : "<DATE_TIME>"\n }\n}\nStep 3 - Adjust below event template(optional) update eventTime to current timestamp in milliseconds → use <URL>(optional) update countryCode to the on from Request(requited) update dcrId to the one you want JSON event to populate\n{\n "eventType": "CHANGE_REJECTED",\n "eventTime": <US_BANK_NUMBER>,\n "countryCode": "SG",\n "dcrId": "a51f229331b14800846503600c787083",\n "vrDetails": {\n "vrStatus": "CLOSED",\n "vrStatusDetail": "REJECTED",\n "veevaComment": "MDM HUB: Simulated reject response to close DCR.",\n "veevaHCPIds": [],\n "veevaHCOIds": []\n }\n}\nStep 4 - Populate event to topic $env-internal-veeva-dcr-change-events-in (for <ORGANIZATION>-STAGE: apac-stage-internal-veeva-dcr-change-events-in). For this purpose use AKHQ (for <ORGANIZATION>-STAGE: <URL>)Select topic $env-internal-veeva-dcr-change-events-in and use "Produce to Topic" button in bottom rightPaste event details, update Key by providing dcrId and press "Populate"After <DATE_TIME> (it depends on the traceVR schedule - it my take up to 6h on PROD) two things should be in effect:<ORGANIZATION> in <ORGANIZATION> should change its status from SENT_TO_VEEVA to DS Action RequiredMongoDB document in collection DCRRegistry will change its status to DS_ACTION_REQUIREDStep 6 - check Reltio DCRCheck if <ORGANIZATION> status has changed to "DS Action Required" and <ORGANIZATION> Tracing details has been updated with simulated Veeva Reject response. "
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> escalation to <ORGANIZATION> (VOD)",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "Integration failIt occasionally happens that <ORGANIZATION> response files from <LOCATION> are not being delivered to <ORGANIZATION> bucket which is used for ingestion by HUB. <ORGANIZATION> provides <ORGANIZATION>/ZIP files <DATE_TIME>, even though there's no actual payload related to DCRs - files contain only <ORGANIZATION> headers. This disruption may be caused by two things: <ORGANIZATION> didn't generate <ORGANIZATION> response and didn't place it on their SFTPGMFT's synchronization job responsible for moving file between <ORGANIZATION> and <ORGANIZATION> stopped working Either way, we need to pin point of the two are causing the <URL>oubleshooting It's usually good to check when the last synchronization took <URL><ORGANIZATION> issueIf there is more than one file (usually this dir should be empty) in outbound directory /globalmdmprodaspasp202202171415/<ORGANIZATION>/prod/outbound/vod/<ORGANIZATION>/DCR_request it means that <ORGANIZATION> job does not push files from <ORGANIZATION> to SFTP. The files which are properly processed by <ORGANIZATION> job are copied to Veeva SFTP and additionally moved to /globalmdmprodaspasp202202171415/<ORGANIZATION>/prod/archive/vod/<ORGANIZATION>/DCR_<URL>eva Open Data issueOnce you are sure it's not <ORGANIZATION> issue, check archive directory for the latest <ORGANIZATION> response file: /globalmdmprodaspasp202202171415/<ORGANIZATION>/prod/archive/vod/APAC/DCR_response/globalmdmprodaspasp202202171415/<ORGANIZATION>/prod/archive/vod/CN/DCR_responseIf the latest file is older that 24h → there's an issue on <ORGANIZATION> side. Who to contact?SFTP, please contact <EMAIL_ADDRESS> or directly to <EMAIL_ADDRESS>, <EMAIL_ADDRESS> and <ORGANIZATION>: <URL>hendran@<URL>Veeva Open data(important one) create ticket in smartsheet: <URL> → you may not have access to this file without prior request to moneem.ahmed@<URL>at the moment <ORGANIZATION> has access to this file(optional) please contact <EMAIL_ADDRESS>, <EMAIL_ADDRESS>, (and for escalation and PROD issues CC: <EMAIL_ADDRESS>, <EMAIL_ADDRESS> and <EMAIL_ADDRESS>)"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> rejects from IQVIA due to missing RDM codes",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/DCR+rejects+from+IQVIA+due+to+missing+RDM+codes",
|
||
"content": "DescriptionSometimes our Clients are being provided with below error message when they are trying to send DCRs to <ORGANIZATION>. This request was not accepted by the IQVIA due to missing RDM code mapping and was redirected to Reltio Inbox. The reason is: 'Target lookup code not found for attribute: <LOCATION>, country: CA, source value: SP.ONCM.'. This means that there is no equivalent of this code in IQVIA code mapping. Please contact MDM Hub <EMAIL_ADDRESS> asking to add this code and click "SendTo3Party" in <ORGANIZATION> after <ORGANIZATION>'s confirmation.WhyThis is caused when PforceRx tries to send <ORGANIZATION> with changes on attribute with Lookup Values. On HUB end we're trying to remap canonical codes from <ORGANIZATION> to source mapping values which are specific to <ORGANIZATION> and understood by them. Usual we are dealing with situation that for each canonical code there is a proper source code mapping mapping. Please refer to below screen (<PERSON> collection LookupValues). However when their is no such mapping like in case below (no <ORGANIZATION> entry in sourceMappings) then we're dealing with problem aboveFor more information about canonical code mapping and the flow to get target code sent to <ORGANIZATION> or <ORGANIZATION>, please refer to → <PERSON>: create <ORGANIZATION> method (<LOCATION>), section "Mapping Reltio canonical codes → <LOCATION> source codes"HowWe should contact people responsible for RDM codes mappings (<ORGANIZATION> team) to add find out correct sourceMapping value for this specific canonical code for specific country. In the end they will contact <ORGANIZATION> to add it to RDM (usually <DATE_TIME>)."
|
||
},
|
||
{
|
||
"title": "Defaults",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Defaults",
|
||
"content": "<ORGANIZATION> defaults map the source codes of the <ORGANIZATION> system to the codes in the <ORGANIZATION> or <ORGANIZATION> (<ORGANIZATION>) system. Occur for specific types of attributes: <LOCATION>, <ORGANIZATION>, <PERSON>, <PERSON>, <NRP>, <ORGANIZATION>. The values are configured in the Consul system. To configure the values: Sort the source (.xlsx) file: Divide the file into separate sheets for each <URL>ve the sheets in separate csv format files - columns separated by <URL>ste the contents of the files into the appropriate files in the consul configuration repository - mdm-config-registry: - each environment has its own folder in the configuration repository - files must have header- Country;CanonicalCode;DefaultFor more information about canonical code mapping and the flow to get target code sent to <ORGANIZATION> or <ORGANIZATION>, please refer to → <PERSON>: create <ORGANIZATION> method (<LOCATION>), section "Mapping Reltio canonical codes → <ORGANIZATION> source codes""
|
||
},
|
||
{
|
||
"title": "Go-Live Readiness",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Go-Live+Readiness",
|
||
"content": "Procedure:"
|
||
},
|
||
{
|
||
"title": "OneKey Crosswalk is Missing and IQVIA Returned Wrong ID in TraceVR Response",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/OneKey+Crosswalk+is+Missing+and+IQVIA+Returned+Wrong+ID+in+TraceVR+Response",
|
||
"content": "This SOP describes how to FIX the case when there is a <ORGANIZATION> in OK_NOT_FOUND status and IQVIA change the individualID from wrong one to correct one (due to human error)Example Case based on EMEA PROD: there is a <ORGANIZATION> - 1fced0be830540a89c30f5d374754accstatus is OK_NOT_FOUNDmessage is Received ACCEPTED status from IQVIA, waiting for <ORGANIZATION> data load, missing crosswalks: WUKM00110951retrycounter reach 14 (7days)IQVIAshared the following trace VR response at firs and we closed the DCR:{"<URL>aceValidationRequestOutputFormatVersion":"1.8","<URL>atus":"SUCCESS","<URL>sultSize":1,"<URL>talNumberOfResults":1,"<URL>ccess":true,"<URL>sults":[{"codBase":"WUK","cisHostNum":"4606","userEid":"04606","requestType":"Q","responseEntityType":"ENT_ACTIVITY","clientRequestId":"1fced0be830540a89c30f5d374754acc","cegedimRequestEid":"fbf706e175c847cb8f39a1873fc4daaf","customerRequest":null,"trace1ClientRequestDate":"<DATE_TIME>","trace2CegedimOkcProcessDate":"<DATE_TIME>","trace3CegedimOkeTransferDate":"<DATE_TIME>","trace4CegedimOkeIntegrationDate":"<DATE_TIME>","trace5CegedimDboResponseDate":"<DATE_TIME>","trace6CegedimOkcExportDate":null,"requestComment":"FY1 Dr working in the stroke care unit at <ORGANIZATION> Livingston","responseComment":"HCP works at <PERSON> involved in this topic:On Reltio side:On IQVIA side: After IQVIA check the TraceVR changed <PERSON> working in the stroke care unit at <ORGANIZATION> Livingston","requestEntityType":"ENT_ACTIVITY","requestFirstname":"Beth","requestLastname":"Mulloy","requestOrigin":"WS","requestProcess":"I","requestStatus":"VAS_FOUND","requestType":"Q","requestUsualWkpName":"Care of the Elderly Department","responseComment":"HCP works at <LOCATION><DATE_TIME>","trace2CegedimOkcProcessDate":"<DATE_TIME>","trace3CegedimOkeTransferDate":"<DATE_TIME>","trace4CegedimOkeIntegrationDate":"<DATE_TIME>","trace5CegedimDboResponseDate":"<DATE_TIME>","trace6CegedimOkcExportDate":null,"lastResponseDate":"<DATE_TIME>","updateDate":"<DATE_TIME>","workplaceEidSource":"WUKH07885517","workplaceEidValidated":"WUKH07885517","userEid":"04606"}}the WUKM00110951 was changed to WUKM00110955This is blocking the DCRThe event that is constantly processing each 12h is in the emea-prod-internal-onekey-dcr-change-events-in The event was already generated so we need to overwrite it to fix the processingSTEPS:Go to <URL> the <ORGANIZATION> by _id and get the latest event:Change the BodyFROM\n{\n "eventType": "DCR_CHANGED",\n "eventTime": <US_BANK_NUMBER>,\n "eventPublishingTime": <US_BANK_NUMBER>,\n "countryCode": "GB",\n "dcrId": "1fced0be830540a89c30f5d374754acc",\n "targetChangeRequest": {\n "vrStatus": "CLOSED",\n "vrStatusDetail": "ACCEPTED",\n "oneKeyComment": "<ORGANIZATION> response comment: <ORGANIZATION> works at St Johns Hospital\\nONEKEY HCP ID: <PERSON> ID: WUKH07885517",\n "individualEidValidated": "WUKM00110951",\n "workplaceEidValidated": "WUKH07885517",\n "vrTraceRequest": "{\\"isoCod2\\":\\"GB\\",\\"<URL>ientRequestId\\":\\"1fced0be830540a89c30f5d374754acc\\"}",\n "vrTraceResponse": "<PERSON> working in the stroke care unit at <ORGANIZATION> Livingston\\",\\"responseComment\\":\\"HCP works at St Johns Hospital\\",\\"individualEidSource\\":null,\\"individualEidValidated\\":\\"WUKM00110951\\",\\"workplaceEidSource\\":\\"WUKH07885517\\",\\"workplaceEidValidated\\":\\"WUKH07885517\\",\\"activityEidSource\\":null,\\"activityEidValidated\\":\\"WUKM0011095101\\",\\"addressEidSource\\":null,\\"addressEidValidated\\":\\"WUK00000092143\\",\\"countryEid\\":\\"GB\\",\\"processStatus\\":\\"REQUEST_RESPONDED\\",\\"requestStatus\\":\\"VAS_FOUND\\",\\"updateDate\\":\\"<DATE_TIME>\\"}]}"\n }\n}\nTO\n{\n "eventType": "DCR_CHANGED",\n "eventTime": <US_BANK_NUMBER>,\n "eventPublishingTime": <US_BANK_NUMBER>,\n "countryCode": "GB",\n "dcrId": "1fced0be830540a89c30f5d374754acc",\n "targetChangeRequest": {\n "vrStatus": "CLOSED",\n "vrStatusDetail": "ACCEPTED",\n "oneKeyComment": "<ORGANIZATION> response comment: <ORGANIZATION> works at St Johns Hospital\\nONEKEY HCP ID: <ORGANIZATION>: WUKH07885517",\n "individualEidValidated": "WUKM00110955",\n "workplaceEidValidated": "WUKH07885517",\n "vrTraceRequest": "{\\"isoCod2\\":\\"GB\\",\\"<URL>ientRequestId\\":\\"1fced0be830540a89c30f5d374754acc\\"}",\n "vrTraceResponse": "<PERSON> working in the stroke care unit at <ORGANIZATION> Livingston\\",\\"responseComment\\":\\"HCP works at <PERSON> }\n}\nThe result is the replace in the individualEidValidated and all the places where ol ID existsPush the new event with new timestamp and same kafka key to the topicNew Case (<DATE_TIME> responded with ACCEPTED with <ORGANIZATION> ID but <ORGANIZATION> response contains: "requestStatus": "VAS_FOUND_BUT_INVALID".<ORGANIZATION> is checking every 12h if <ORGANIZATION> already provided the data to Reltio. We must manually close this <URL>eps:In amer-prod-internal-onekey-dcr-change-events-in topic find the latest event for ID ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●.Change from:\n{\n\t"eventType": "DCR_CHANGED",\n\t"eventTime": <US_BANK_NUMBER>,\n\t"eventPublishingTime": <US_BANK_NUMBER>,\n\t"countryCode": "CA",\n\t"dcrId": "f19305a6e6af4b5aa03d26c1ec1ae5a6",\n\t"targetChangeRequest": {\n\t\t"vrStatus": "CLOSED",\n\t\t"vrStatusDetail": "ACCEPTED",\n\t\t"oneKeyComment": "<ORGANIZATION> response comment: Already Exists-Data Privacy\\nONEKEY HCP ID: <ORGANIZATION> ID: WCAH00052991",\n\t\t"individualEidValidated": "WCAP00028176",\n\t\t"workplaceEidValidated": "WCAH00052991",\n\t\t"vrTraceRequest": "{\\"isoCod2\\":\\"CA\\",\\"<URL>ientRequestId\\":\\"f19305a6e6af4b5aa03d26c1ec1ae5a6\\"}",\n\t\t"vrTraceResponse": "{\\"<URL>aceValidationRequestOutputFormatVersion\\":\\"1.8\\",\\"<URL>atus\\":\\"SUCCESS\\",\\"<URL>sultSize\\":1,\\"<URL>talNumberOfResults\\":1,\\"<URL>ccess\\":true,\\"<URL>sults\\":[{\\"codBase\\":\\"WCA\\",\\"cisHostNum\\":\\"7853\\",\\"userEid\\":\\"07853\\",\\"requestType\\":\\"Q\\",\\"responseEntityType\\":\\"ENT_ACTIVITY\\",\\"clientRequestId\\":\\"f19305a6e6af4b5aa03d26c1ec1ae5a6\\",\\"cegedimRequestEid\\":\\"9d02f7547dbc4e659a9d230c91f96279\\",\\"customerRequest\\":null,\\"trace1ClientRequestDate\\":\\"<DATE_TIME>\\",\\"trace2CegedimOkcProcessDate\\":\\"<DATE_TIME>\\",\\"trace3CegedimOkeTransferDate\\":\\"<DATE_TIME>\\",\\"trace4CegedimOkeIntegrationDate\\":\\"<DATE_TIME>\\",\\"trace5CegedimDboResponseDate\\":\\"<DATE_TIME>\\",\\"trace6CegedimOkcExportDate\\":null,\\"requestComment\\":null,\\"responseComment\\":\\"Already Exists-Data Privacy\\",\\"individualEidSource\\":null,\\"individualEidValidated\\":\\"WCAP00028176\\",\\"workplaceEidSource\\":\\"WCAH00052991\\",\\"workplaceEidValidated\\":\\"WCAH00052991\\",\\"activityEidSource\\":null,\\"activityEidValidated\\":\\"WCAP0002817602\\",\\"addressEidSource\\":null,\\"addressEidValidated\\":\\"W<MEDICAL_LICENSE>6206\\",\\"countryEid\\":\\"CA\\",\\"processStatus\\":\\"REQUEST_RESPONDED\\",\\"requestStatus\\":\\"VAS_FOUND_BUT_INVALID\\",\\"updateDate\\":\\"<DATE_TIME>\\"}]}"\n\t}\n}\nTo:\n{\n\t"eventType": "DCR_CHANGED",\n\t"eventTime": <US_BANK_NUMBER>,\n\t"eventPublishingTime": <US_BANK_NUMBER>,\n\t"countryCode": "CA",\n\t"dcrId": "f19305a6e6af4b5aa03d26c1ec1ae5a6",\n\t"targetChangeRequest": {\n\t\t"vrStatus": "CLOSED",\n\t\t"vrStatusDetail": "REJECTED",\n\t\t"oneKeyComment": "<ORGANIZATION> response comment: Already Exists-Data Privacy\\nONEKEY HCP ID: <ORGANIZATION> ID: WCAH00052991",\n\t\t"individualEidValidated": "WCAP00028176",\n\t\t"workplaceEidValidated": "WCAH00052991",\n\t\t"vrTraceRequest": "{\\"isoCod2\\":\\"CA\\",\\"<URL>ientRequestId\\":\\"f19305a6e6af4b5aa03d26c1ec1ae5a6\\"}",\n\t\t"vrTraceResponse": "{\\"<URL>aceValidationRequestOutputFormatVersion\\":\\"1.8\\",\\"<URL>atus\\":\\"SUCCESS\\",\\"<URL>sultSize\\":1,\\"<URL>talNumberOfResults\\":1,\\"<URL>ccess\\":true,\\"<URL>sults\\":[{\\"codBase\\":\\"WCA\\",\\"cisHostNum\\":\\"7853\\",\\"userEid\\":\\"07853\\",\\"requestType\\":\\"Q\\",\\"responseEntityType\\":\\"ENT_ACTIVITY\\",\\"clientRequestId\\":\\"f19305a6e6af4b5aa03d26c1ec1ae5a6\\",\\"cegedimRequestEid\\":\\"9d02f7547dbc4e659a9d230c91f96279\\",\\"customerRequest\\":null,\\"trace1ClientRequestDate\\":\\"<DATE_TIME>\\",\\"trace2CegedimOkcProcessDate\\":\\"<DATE_TIME>\\",\\"trace3CegedimOkeTransferDate\\":\\"<DATE_TIME>\\",\\"trace4CegedimOkeIntegrationDate\\":\\"<DATE_TIME>\\",\\"trace5CegedimDboResponseDate\\":\\"<DATE_TIME>\\",\\"trace6CegedimOkcExportDate\\":null,\\"requestComment\\":null,\\"responseComment\\":\\"Already Exists-Data Privacy\\",\\"individualEidSource\\":null,\\"individualEidValidated\\":\\"WCAP00028176\\",\\"workplaceEidSource\\":\\"WCAH00052991\\",\\"workplaceEidValidated\\":\\"WCAH00052991\\",\\"activityEidSource\\":null,\\"activityEidValidated\\":\\"WCAP0002817602\\",\\"addressEidSource\\":null,\\"addressEidValidated\\":\\"W<MEDICAL_LICENSE>6206\\",\\"countryEid\\":\\"CA\\",\\"processStatus\\":\\"REQUEST_RESPONDED\\",\\"requestStatus\\":\\"VAS_FOUND_BUT_INVALID\\",\\"updateDate\\":\\"<DATE_TIME>\\"}]}"\n\t}\n}\nand post back to the topic. <ORGANIZATION> will be closed in <URL> Case (<DATE_TIME> need to force close/reject a couple of DCRs which cannot closed themselves. There were sent to <ORGANIZATION>, but for some reasons OK does not recognize them. IQVIA have not generated the TraceVR response and we need to simulate it. To break TRACEVR process for this DCRs we need to manually change the Mongo Status to REJECTED. If we keep SENT we are going to ask IQVIA forever in - TODO - describe this in SOPOpen <PERSON> and update <ORGANIZATION> for selected profiles. Change status to { <URL> : "REJECTED" } Change details to "HUB manual update due to <ticket number MR>"Change from:To: Find the latest event for the chosen id and generate the event in the topic "<env>-internal-onekey-dcr-change-events-in" which will change their status\n "vrStatus": "CLOSED",\n "vrStatusDetail": "REJECTED", \n\n {\n "eventType": "DCR_CHANGED",\n "eventTime": <current_time>,\n "eventPublishingTime": <current_time>,\n "countryCode": "<country>",\n "dcrId": "<dcr_id>",\n "targetChangeRequest": {\n "vrStatus": "CLOSED",\n "vrStatusDetail": "REJECTED",\n "oneKeyComment": "HUB manual update due to MR-<ticket_number>",\n "individualEidValidated": null,\n "workplaceEidValidated": null,\n "vrTraceRequest": "{\\"isoCod2\\":\\"<country>\\",\\"<URL>ientRequestId\\":\\"<dcr_id>\\"}",\n "vrTraceResponse": "{\\"<URL>aceValidationRequestOutputFormatVersion\\":\\"1.8\\",\\"<URL>atus\\":\\"SUCCESS\\",\\"<URL>sultSize\\":1,\\"<URL>talNumberOfResults\\":1,\\"<URL>ccess\\":true,\\"<URL>sults\\":[{\\"codBase\\":\\"W<country>\\",\\"cisHostNum\\":\\"4605\\",\\"userEid\\":\\"HUB\\",\\"requestType\\":\\"Q\\",\\"responseEntityType\\":\\"ENT_ACTIVITY\\",\\"clientRequestId\\":\\"<dcr_id>\\",\\"cegedimRequestEid\\":\\"\\",\\"customerRequest\\":null,\\"trace1ClientRequestDate\\":\\"<DATE_TIME>\\",\\"trace2CegedimOkcProcessDate\\":\\"<DATE_TIME>\\",\\"trace3CegedimOkeTransferDate\\":\\"<DATE_TIME>\\",\\"trace4CegedimOkeIntegrationDate\\":\\"<DATE_TIME>\\",\\"trace5CegedimDboResponseDate\\":\\"<DATE_TIME>\\",\\"trace6CegedimOkcExportDate\\":null,\\"requestComment\\":\\"\\",\\"responseComment\\":\\"HUB manual update due to MR-<ticket_number>\\",\\"individualEidSource\\":null,\\"individualEidValidated\\":null,\\"workplaceEidSource\\":null,\\"workplaceEidValidated\\":null,\\"activityEidSource\\":null,\\"activityEidValidated\\":null,\\"addressEidSource\\":null,\\"addressEidValidated\\":null,\\"countryEid\\":\\"<country>\\",\\"processStatus\\":\\"REQUEST_RESPONDED\\",\\"requestStatus\\":\\"VAS_NOT_FOUND\\",\\"updateDate\\":\\"<DATE_TIME>\\"}]}"\n }\n}\n"
|
||
},
|
||
{
|
||
"title": "CHANGELOG",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/CHANGELOG",
|
||
"content": "List of DCRs:VR-<US_BANK_NUMBER> = 163f209d24d94ea99bd7b47d9108366cVR-<US_BANK_NUMBER> = dbd44964afba4bab84d50669b1ccbac3VR-<US_BANK_NUMBER> = 07c363c5d3364090a2c0f6fdbbbca1ddRe COMPANY RE IM44066249 VR missing <URL>g"
|
||
},
|
||
{
|
||
"title": "Update DCRs with missing comments",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Update+DCRs+with+missing+comments",
|
||
"content": "DescriptionDue to temporary problem with our calls to Reltio workflow <ORGANIZATION> we had multiple DCRs with missing workflow comments. The symptoms of this error were: no changeRequestComment field in DCRRegistry mongo collection and lack of content in Comment field in <ORGANIZATION> while viewing <ORGANIZATION> by entityUrl.We have created a solution allowing to find deficient DCRs and update their comments in database and Reltio.GoalWe want to find all deficient DCRs in a given environment and update their comments in <ORGANIZATION><URL>is can be accomplished by following the procedure described <URL><ORGANIZATION> 1 - Configure the solutionGo to tools/dcr-update-workflow-comments module in mdm-hub-inbound-services <URL>epare env configuration. Provide mongo.dbName and manager.url in application.yaml <URL>eate a file named application-secrets.yaml. Copy the content from application-secretsExample.yaml file and replace mock values with real ones appropriate to a given <URL>epare solution configuration. Provide desired mode (find/repair) and <ORGANIZATION> endTime time limits for deficient DCRs search in application.yaml.Here is an example of update-comments <URL>lication.yaml\nupdate-comments:\n mode: find\n starting: <DATE_TIME> ending: <DATE_TIME> 2 - Find deficient DCRsRun the application using ApplicationServiceRunner.java in find mode with <ORGANIZATION> profile: <URL> a result, dcrs.csv file will appear in resources directory. It contains a list of DCRs to be updated in the next step. Those are DCRs ended within the configuration time limits, with no changeRequestComment field in DCRRegistry and having not empty processInstanceId (that value is needed to retrieve workflow comments from Reltio). This list can be viewed and altered if there is a need to omit a specific <ORGANIZATION> <URL>ep 3 - Repair the DCRsChange <URL>de configuration to repair. Run the application exactly the same as in Step <URL> a result, report.txt file will be created in resources directory. It will contain a log for every <ORGANIZATION> with its update status. If the update fails, it will contain the reason. In case of failed updated, the application can be ran again with dcrs.csv needed adjustments."
|
||
},
|
||
{
|
||
"title": "GBLUS DCRs:",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "ICUE VRs manual load from file",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/ICUE+VRs+manual+load+from+file",
|
||
"content": "This SOP describes the manual load of selected ICUE DCRS to the GBLUS <URL>ope and issue description:On GBLUS PROD VRs(DCRs) are sent to <LOCATION>) for validation using events. The process is responsible for this is described on this page (OK <ORGANIZATION> flows (GBLUS)). <PERSON> receives the data based on singleton profiles. The current flow enables only <LOCATION> and ENGAGE. <ORGANIZATION> was disabled from the flow and requires manual work to load this to IQVIA due to a high number of <ORGANIZATION> standalone profiles created by this system on <DATE_TIME>. More details related to the <ORGANIZATION> issue are here:<ORGANIZATION>_ <LOCATION> IQVIA DRC_VR Request for <URL>gDCR_Counts_GBLUS_PROD.xlsxSteps to add <ORGANIZATION> in the IQVIA validation process:Check if there are no loads on environment GBLUS PROD:Check reltio-* topics and check if there are no huge number of events per minute and if there is no LAG on topics:Pick the input file from a client and after approval from <EMAIL_ADDRESS> proceed with changes:example email and input file:First batch_ Leftover ICUE VRs (<DATE_TIME> March).msgGenerate the events for the VR topic- id: onekey_vr_dcrs_manual destination: "${env}-internal-onekeyvr-in"Reconciliation target ONEKEY_DCRS_MANUALuse the resendLastEvent operation in the publisher (generate CHANGES events)After all events are pushed to topic verify on akhq if generated events are available on desired topicWait for events aggregation window closure(24h).Check if <ORGANIZATION>'s are visible in <NRP> mongo collection. createTime should be within <DATE_TIME>{ "entity.uri" : "entities/<entity_uri>" }\n"
|
||
},
|
||
{
|
||
"title": "HL <ORGANIZATION>:",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "How do we answer to requests about DCRs?",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "EFK:",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "FLEX Environments - Elasticsearch Shard Limit",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/FLEX+Environments+-+Elasticsearch+Shard+Limit",
|
||
"content": "<ORGANIZATION>, below alert gets triggered:This means that <ORGANIZATION> has allocated >80% of allowed number of shards (default 1000 max).Further <ORGANIZATION>, we can check directly on the EFK cluster what is the shard count:Log into <PERSON> and choose "Dev Tools" from the panel on the left:Use one of below <ORGANIZATION> calls:To fetch current cluster status and number of active/unassigned shards (# of active shards + # of unassigned shards = # of allocated shards):GET _cluster/healthTo check the current assigned shards limit:GETSolution: Removing Old Shards/IndicesThis is the preferred solution. Old indices can be removed through <PERSON>.Log into <PERSON> and choose "Management" from the panel on the left:Choose "Index Management":Find and mark indices that can be removed. In my case, I searched for indices containing "2023" in their names:Click "Manage Indices" and "Delete Indices". Confirm:Solution: Increasing the LimitThis is not the preferred solution, as it is not advised to go beyond the default limit of 1000 shards per node - it can lead to worse performance/stability of the <ORGANIZATION> <URL>DO: extend this section when we need to increase the limit somewhere, use this article: <URL>"
|
||
},
|
||
{
|
||
"title": "<PERSON>: How to Restore Data from Snapshots",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Kibana%3A+How+to+Restore+Data+from+Snapshots",
|
||
"content": "NOTE: The time of restoring is based on the amount of data you wanted to restore. Before beginning of restoration you have to be sure that the elastic cluster has a sufficient amount of storage to save restoring <URL> restore data from the snapshot you have to use "Snapshot and Restore" site from <PERSON>. It is one of sites avaiable in "Stack Management" section:Select the snapshot which contains data you are interested in and click the Restore button:In the presented wizard please set up the following options:Disable the option "All data streams and indices" and provide index patterns that match index or data stream you want to restore:It is important to enable option "Rename data streams and indices" and set "Capture pattern" as "(.+)" and "Replacement pattern" as "$1-restored-<idx>", where the idx <1, <DATE_TIME>, <DATE_TIME>, ... , n> - it is required once we restore more than one snapshot from the same datastream. In another case, the restore operation will override current elasticsearch objects and we lost the data:The rest of the options on this page have to be disabled:Click the "Next" button to move to "Index settings" page. Leave all options disabled and go to the next page.On the page "Review restore details" you can see the summary of the restore process settings. Validate them and click the "Restore snapshot" button to start <URL> can track the restoration progress in "Restore Status" section:When data is no longer needed, it should be deleted:"
|
||
},
|
||
{
|
||
"title": "External proxy",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/External+proxy",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "No downtime <LOCATION> restart/upgrade",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "This SOP describes how to perform "no downtime" restart. <ORGANIZATION> console<URL> - ansible playbook <ORGANIZATION> one node instance from target groups (<ORGANIZATION> console)Access <ORGANIZATION> console <ORGANIZATION> in using COMPANY SSOChoose Account: prod-dlp-wbs-rapid (<US_BANK_NUMBER>). Role: WBS-EUW1-GBICC-ALLENV-RO-SSOChange region to <LOCATION> to EC2 → Load Balancing → Target GroupsSearch for target group\n-prod-gbl-mdm\nThere should be 4 target groups visible. 1 for <PERSON> and 3 for KafkaRemove first instance (EUW1Z2DL113) from all 4 target <URL>rform below steps for all target groupsTo do so, open each target group select desired instance and choose 'deregister'. Now this instance should have 'Health status': 'Draining'. Next do the same operation for other target <URL> not remove two instances from consumer group at the same time. It'll cause <ORGANIZATION> <URL>so make sure to remove the same instance from all target groups.Wait for Instance to be removed from target groupWait for target groups to be adjusted. Deregistered instance should eventually be removed from target groupAdditionally you can check <LOCATION> logs directlyFirst instance: \nssh <EMAIL_ADDRESS>\ncd /app/kong/\ndocker-compose logs -f --tail=0\n# Check if there are new requests to exteral api\nSecond isntance: \nssh <EMAIL_ADDRESS>\ncd /app/kong/\ndocker-compose logs -f --tail=0\n# Check if there are new requests to exteral api\nSome internal requests may be still visible, eg. metricsPerform restart of <LOCATION> on removed instance (<ORGANIZATION> ansible playbook inside mdm-hub-cluster-env repository inside 'ansible' directoryFor the first instance:\nansible-playbook install_kong.yml -i inventory/proxy_prod/inventory -l kong_01\nFor the second instance:\nansible-playbook install_kong.yml -i inventory/proxy_prod/inventory -l kong_02\nMake sure that kong_01 is the same instance you've removed from target group(check ansible inventory)Re-add the removed instancePerform this steps for all target groupsSelect target groupChoose 'Register targets'Filter instances to find previously removed instance. Select it and choose 'Include as pending below'. Make sure that correct port is chosenVerify below request and select 'Register pending targets'Instance should be in 'Initial' state in target groupWait for instance to be properly added to target groupWait for all instances to have 'Healthy' status instead of 'Initial'. Make sure everything work as expected (Check <LOCATION> logs)Perform steps 1-5 for second <LOCATION> instanceSecond instance: <URL>Second <LOCATION> host(ansible inventory): <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Full Environment Refresh - Reltio Clone",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Full+Environment+Refresh+-+Reltio+Clone",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Full Environment Refresh",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/Full+Environment+Refresh",
|
||
"content": "IntroductionBelow steps are the record of steps done in <DATE_TIME> due to <ORGANIZATION> between GBLUS PROD → STAGE and <ORGANIZATION> refresh consists of:disabling <ORGANIZATION> componentsfull cleanup of existing STAGE data: <PERSON> and MongoDBidentifying and copying cache collections from PROD to STAGE MongoDBre-enabling <ORGANIZATION> componentsrunning the Hub Reconciliation DAGDisabling Services, <PERSON> out the EFK topics in fluentd configuration:\nmdm-hub-cluster-env\\apac\\nprod\\namespaces\\apac-backend\\values.yaml\nDeploy <ORGANIZATION>-backend through <PERSON>, to apply the fluentd changes:<URL>(fluentd pods in the <ORGANIZATION>-backend namespace should recreate)Block the <ORGANIZATION>-stage mdmhub deployment job in <PERSON>:<URL> the monitoring/support <ORGANIZATION>, that the environment is disabled (in case alerts are triggered or users inquire via <ORGANIZATION> command line tools to uninstall the mdmhub components and <PERSON> topics:use kubectx/kubectl to switch context to <ORGANIZATION>-nprod cluster:use helm to uninstall below two releases from the <ORGANIZATION>-nprod cluster (you can confirm release names by using the "$ helm list <PERSON> helm uninstall <PERSON>-stage\n$ helm uninstall <PERSON>-resources-apac-stage -n apac-backend\nconfirm there are no pods in the <ORGANIZATION>-stage namespace:list remaining <PERSON> topics (kubernetes kafkatopic resources) with "<ORGANIZATION>-stage" prefix:manually remove all the remaining "<ORGANIZATION>-stage" prefixed topics. Note that it is expected that some topics remain - some of them have been created by <PERSON>, for <URL>ngoDB <ORGANIZATION> into <ORGANIZATION> through Studio <URL>ear all the collections in the <ORGANIZATION>-stage database.Exceptions:"batchInstance" collection"quartz-" prefixed collections"shedLock" collectionWait until MongoDB cleans all these collections (could take a few hours):Log into the APAC PROD MongoDB through Studio 3T. You want to have both connections in the same <URL>py below collections from <ORGANIZATION> (Ctrl+C):keyIdRegistryrelationCachesequenceCountersRight click <ORGANIZATION> database "<ORGANIZATION>-stage" and choose "Paste Collections"Dialog will appear - use below options for each collection:Collections Copy Mode: Append to existing target collectionDocuments Copy Mode: Overwrite documents with same _idCopy indices from the source collection: uncheckWait until all the collections are <URL>owflake CleanupCleanup the base tables:\nTRUNCATE TABLE CUSTOMER.ENTITIES;\nTRUNCATE TABLE <URL>LATIONS;\nTRUNCATE TABLE CUSTOMER.LOV_DATA;\nTRUNCATE TABLE <URL>TCHES;\nTRUNCATE TABLE <URL>RGES;\nTRUNCATE TABLE CUSTOMER.HIST_INACTIVE_ENTITIES;\nRun the full materialization jobs:\nCALL <URL>TERIALIZE_FULL_ALL('M', 'CUSTOMER');\nCALL CUSTOMER.HI_MATERIALIZE_FULL_ALL('CUSTOMER');\nCheck for any tables that haven't been cleaned properly:\nSELECT *\nFROM INFORMATION_SCHEMA.TABLES\nWHERE 1=1\nAND TABLE_TYPE = 'BASE TABLE'\nAND TABLE_NAME ILIKE 'M^_%' ESCAPE '^'\nAND ROW_COUNT != 0;\nRun the materialization for those tables specifically or you can run the queries prepared from the bellow query:\nSELECT 'TRUNCATE TABLE ' || TABLE_SCHEMA || '.' || TABLE_NAME || ';'\nFROM INFORMATION_SCHEMA.TABLES\nWHERE 1=1\nAND TABLE_TYPE = 'BASE TABLE'\nAND TABLE_NAME ILIKE 'M^_%' ESCAPE '^'\nAND ROW_COUNT != 0;\nRe-Enabling HubGet a confirmation that the <ORGANIZATION> data cloning process has <URL>-enable the mdmhub <ORGANIZATION>-stage deployment job and perform a deployment of an adequate version.Uncomment previously commented (look: Disabling The Services, <PERSON>, 1.) EFK transaction topic list, deploy <ORGANIZATION>-backend. Fluentd pods in the <ORGANIZATION>-backend namespace should recreate.Wait for both deployments to finish (should be performed one after another).Test the MDM Hub API - try sending a couple of GET requests to fetch some entities that exist in Reltio. Confirm that the result is correct and the requests are visible in <PERSON> (dashboard <ORGANIZATION> Calls):(<DATE_TIME> <PERSON>: we no longer need to do this - <PERSON> now deploys with minimum 1 pod in every environment) Run below command in your local <PERSON> client environment.\<URL> --bootstrap-server <URL>:9094 --group apac-stage-matches-enricher --topic <ORGANIZATION>-stage-internal-reltio-matches-events <URL>nfig <URL>perties\nThis needs to be done to create the consumergroup, so that <PERSON> can scale the deployment in the <URL>ning The Hub ReconciliationAfter confirming that <ORGANIZATION> is up and working correctly, navigate to <ORGANIZATION>:<URL> the hub_reconciliation_v2_apac_stage DAG:To minimize the chances of overfilling the <PERSON> storage, set retention of reconciliation metrics topics to <DATE_TIME>:<PERSON> to APAC NPROD AKHQ:<URL> below topics and navigate to their "Configs" tabs:<ORGANIZATION>-stage-internal-reconciliation-metrics-calculator-in<URL> each topic, find the config <URL> (do not mistake it with <URL>, which is responsible for compaction) and set it to <US_DRIVER_LICENSE>. Apply <URL>nitor the DAG, event processing and <PERSON>/Elasticsearch <URL>ter the <ORGANIZATION> finishes, disable reconciliation jobs (if reconciliations start uncontrollably before the data is fully restored, it will unnecessarily increase the workload):Manually disable the hub_reconciliation_v2_apac_stage DAG: <URL> disable the reconciliation_snowflake_apac_stage DAG: <URL> all reconciliation events are processed, the environment is ready to use. Compare entity/relation counts between Reltio-MongoDB-Snowflake to confirm that everything went <URL>-enable reconciliation jobs from 5."
|
||
},
|
||
{
|
||
"title": "Full Environment Refresh - Legacy (<ORGANIZATION>)",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "Steps to take when a Hub environment needs to be cleaned up or <URL>eparationAdd line <URL>gorithm= to <URL>perties in your kafka_client folder.Having done that go to the <kafka_client path>/bin folder and launch the <PERSON> ./consumer_groups_<URL> --describe --group <group_name> | sortFor every consumer group in this environment. This will list currently connected consumers.If there are external consumers connected they will prevent deletion of topics they're connected to. Contact people responsible for those consumers to disconnect them.2. Stop GW/Hub components: subscriber, publisher, manager, batch_channel$ docker stop <container name>3. Double-check that consumer groups (internal and external) have been disconnected4. Delete all topics:a) Preparation:$ docker exec -it kafka_kafka_1 bash$ export <LOCATION>/kafka_server_<URL>nf$ <URL> --zookeeper zookeeper:2181 --list | grep <env name>b) Deleting the topics:$ <URL> --zookeeper zookeeper:2181 --delete --topic <topic1> || true && \\<URL> --zookeeper zookeeper:2181 --delete --topic <topic2> <ORGANIZATION> \\<URL> --zookeeper zookeeper:2181 --delete --topic <topic3> || true && (...) continue for all <LOCATION>. Check whether topics are deleted on disk and using $ ./<URL> --list 6. Recreate the topics by launching the Ansible playbook with parameter create_or_update: True set for desired topics in topics.yml7. Cleanup MongoDB:Access the collections corresponding to the desired environment and choose option "Clear collections" on the following collections: "entityHistory","gateway_errors", "hub_errors", hub_reconcilliation.8. After confirming everything is ready (in case of environment refresh there has to be a notification from <ORGANIZATION> that it's ready) restart <PERSON> and <ORGANIZATION>. Check component logs to confirm they started up and connected correctly."
|
||
},
|
||
{
|
||
"title": "Hub Application:",
|
||
"<PERSON>": "<US_DRIVER_LICENSE>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Batch Channel: Importing <ORGANIZATION>'s Extract",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Batch+Channel%3A+Importing+MAPP%27s+Extract",
|
||
"content": "To import <ORGANIZATION>'s extract you have to:Have original extract (eg. original.csv) which was uploaded to Teams channel,Open it in Excel and save as "CSV (Comma delimited) (*.csv)",Run dos2unix tool on the <URL> steps from 2 and 3 on extract file (eg. <PERSON>) received form <ORGANIZATION>'s team,Compare original file to file with changes and select only lines which was changed in the second file: ( head <ORGANIZATION> original.csv changes.csv | grep '^>' | sed 's/^> //' ) > result.csvDivide result file into the smaller ones by running <URL> script: ./<URL> result.csv. The script will generate set of files where theirs names will end with _{idx}.{extension} eg.: <LOCATION>, <LOCATION>, result_02.csv etc.Upload the result set of files to <ORGANIZATION> location: <US_DRIVER_LICENSE>://pfe-baiaes-eu-<US_DRIVER_LICENSE>-project/mdm/inbound/mapp/. This action will trigger batch-channel component, which will start loading changes to <PERSON>"
|
||
},
|
||
{
|
||
"title": "Callback Service: How to Find Events Stuck in Partial State",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Callback+Service%3A+How+to+Find+Events+Stuck+in+Partial+State",
|
||
"content": "What is partial state?When an event gets processed by <ORGANIZATION>, if any change is done at the precallback stage, event will not be sent further, to Event Publisher. It is expected that in <DATE_TIME> another event will come, signaling the change done by precallback logic - this one gets passed to Publisher and downstream clients/Snowflake as far as precallback detects no need for a <URL>metimes the second event is not coming - this is what we call a partial state. It means, that update event will actually not reach <ORGANIZATION> and downstream clients. <ORGANIZATION> functionality of <ORGANIZATION> was implemented to monitor such <URL> to identify that an event is stuck in partial state?PartialCounter is counting events which have not been passed down to Event Publisher (identified by Reltio URI) and exporting this count as a Prometheus (Actuator) metric. Prometheus alert "callback_service_partial_stuck_24h" is notifying us that an event has been stuck for <DATE_TIME><URL> to find events stuck in partial state?Use below command to fetch the list of currently stuck events as <ORGANIZATION> array (example for emea-dev). You will have to authorize using mdm_test_user or mdm_admin:\n# curl <URL> details can be found in Swagger Documentation: <URL> to do?Events identified as stuck in partial state should be reconciled."
|
||
},
|
||
{
|
||
"title": "Integration Test - how to run tests locally from your computer to target environment",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/Integration+Test+-+how+to+run+tests+locally+from+your+computer+to+target+environment",
|
||
"content": "Steps:First, choose the environment and go to the <PERSON> integration tests directory:<URL> on <ORGANIZATION> DEV:go to <URL> the latest RUN and click Workspace on the leftClick on /home/jenkins workspace linkGo to /code/mdm-integretion-tests/src/test/resources/ Download 3 <URL>pertieskafka_<URL>nfkafka_truststore.jksEdit <URL>pertieschange local <PERSON> to real URLS and local PATH. Leave other variables as is. in that case, use the KeePass that contains all URLs:<URL> code that is adjusted to <ORGANIZATION> DEVAPI URLs + local PATH to certsThis is just the example from <ORGANIZATION> that contains the C:\\\\Users\\\\mmor\\\\workspace\\\\SCM\\\\mdm-hub-inbound-services\\\\ path - replace this with your own code localization \<URL>nfig=<URL>nfig.SpringConfiguration\n\<URL>nfig=C:\\\\Users\\\\mmor\\\\workspace\\\\SCM\\\\mdm-hub-inbound-services\\\\mdm-integretion-tests\\\\src\\\\test\\\\resources\\\\kafka_<URL>nf\n\nreltio.oauth.url=<URL> go to your local code checkout - mdm-hub-inbound-services\\mdm-integretion-testsCopy 3 files to the mdm-integretion-tests/src/test/resourcesSelect the test and click RUNEND - the result: You are running <PERSON> integration tests from your local computer on target DEV environment. Now you can check logs locally and repeat. "
|
||
},
|
||
{
|
||
"title": "Manager: Reload Entity - Fix COMPANYAddressID Using Reload Action",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Manager%3A+Reload+Entity+-+Fix+COMPANYAddressID+Using+Reload+Action",
|
||
"content": "Before starting check what <ORGANIZATION> rules have -reload action on the list. Now it is SourceMatchCategory and COMPANYAddressIdcheck here - - example dq ruleupdate with -reload operation to reload more <ORGANIZATION> rulesGenerate events using the script : scriptorscript - fix <ORGANIZATION> without ONEKEYthe script gets all ACTIVE entities with Addressesthat have missing COMPANYAddressIdthat <ORGANIZATION> is lower that correct value for each env: emea <US_BANK_NUMBER> <PERSON> <ORGANIZATION> 7000000000Script generate events: example:entities/lwBrc9K|{"targetEntity":{"entityURI":"entities/lwBrc9K","sources":["FUSIONMDM"],"targetType":"entityUri"},"overwrites":[{"uriMask":"COMPANYAddressID"}]}entities/1350l3D6|{"targetEntity":{"entityURI":"entities/1350l3D6","sources":["FUSIONMDM"],"targetType":"entityUri"},"overwrites":[{"uriMask":"COMPANYAddressID"}]}entities/1350kZNI|{"targetEntity":{"entityURI":"entities/1350kZNI","sources":["FUSIONMDM"],"targetType":"entityUri"},"overwrites":[{"uriMask":"COMPANYAddressID"}]}entities/cPSKBB9|{"targetEntity":{"entityURI":"entities/cPSKBB9","sources":["FUSIONMDM"],"targetType":"entityUri"},"overwrites":[{"uriMask":"COMPANYAddressID"}]}Make a fix for <ORGANIZATION> that is lower than the correct value for each envGo to the keyIdRegistry <PERSON> collectionfind all entries that have generatedId lower than emea <US_BANK_NUMBER> <PERSON> <ORGANIZATION> 7000000000increase the generatedId adding the correct value from correct environments using the script - scriptGet the file and push it to the <env>-internal-async-all-reload-entity topic./start_sasl_<URL> <env>-internal-async-all-reload-entityor using the input file ./start_sasl_<URL> <env>-internal-async-all-reload-entity < reload_dev_emea_pack_entities.txt (file that contains each json generated by the <PERSON> script, each row in new line)How to Run a script on docker:example emea DEV:go to - svc-mdmnpr@euw1z2dl111docker exec -it mongo_mongo_1 bashcd /data/configdbcreate script - touch reload_entities_fix_COMPANYaddressid_hub.jsedit header:db = <URL>tSiblingDB("<DB>")<URL>th("mdm_hub", "<PASS>")RUN: nohup mongo --host mongo_dev_emea_reltio_rs/<URL>:27017 -u mdm_hub -p <PASS> --authenticationDatabase reltio_dev <ORGANIZATION> mongo --host mongo_dev_emea_reltio_rs/<URL>:27017 -u mdm_hub -p <PASS> --authenticationDatabase reltio_dev reload_entities_fix_sourcematch_hub_DEV.js > smc_DEV_FIX.out 2>&1 &nohup mongo --host mongo_dev_emea_reltio_rs/<URL>:27017 -u mdm_hub -p <PASS> --authenticationDatabase reltio_qa reload_entities_fix_sourcematch_hub_QA.js > smc_QA_FIX.out 2>&1 &nohup mongo --host mongo_dev_emea_reltio_rs/<URL>:27017 -u mdm_hub -p <PASS> --authenticationDatabase reltio_stage reload_entities_fix_sourcematch_hub_STAGE.js > smc_STAGE_FIX.out 2>&1 &"
|
||
},
|
||
{
|
||
"title": "Manager: Resubmitting Failed Records",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Manager%3A+Resubmitting+Failed+Records",
|
||
"content": "There is new <ORGANIZATION> in manager for getting/resubmitting/removing failed records from batches.1. Get failed records method - it returns list of errors basing on provided <PERSON> /errorsRequestList of <ORGANIZATION> objectsfield - name of the field that is stored in errorqueueoperation - operation that is used to create query, possible options are: Equals, Is, <PERSON>, Lowervalue - the value which we compareii. Example:[ { "field" : "HubAsyncBatchServiceBatchName", "operation" : "Equals", "value" : "testBatchBundle" } ]b. Responsei. List of Error objectsid - identifier of the error batchName - batch nameobjectType - object typebatchInstanceId - batch instance idkey - keyerrorClass - the name of the error class that happen during record submissionerrorMessage - the message of the error that happen during record submissionresubmitted - true/false - it tells if errror was resubmitted or notdeleted - true/false - it tells if error was deleted or not during remove api callii. Example:[ { "id": "5fa93377e720a55f0bb68c99", "batchName": "testBatchBundle", "objectType": "configuration/entityTypes/HCP", "batchInstanceId": "0+3j45V7S1K1GT2i6c3Mqw", "key": "{<DATE_TIME> \\"type\\" : \\"SHS\\",\\r\\n \\"value\\" : \\"TEST:<ORGANIZATION>:b09b6085-28dc-451d-85b6-fe3ce2079446\\"\\r\\n}", "errorClass": "<URL>ientErrorException", "errorMessage": "HTTP 409 Conflict", "resubmitted": false, "deleted": false }, { "id": "5fa93378e720a55f0bb68ca6", "batchName": "testBatchBundle", "objectType": "configuration/entityTypes/HCP", "batchInstanceId": "0+3j45V7S1K1GT2i6c3Mqw", "key": "{<DATE_TIME> \\"type\\" : \\"SHS\\",\\r\\n \\"value\\" : \\"TEST:HCP:25bfc672-9ba1-44a5-b3c1-d657de701d76\\"\\r\\n}", "errorClass": "<URL>ientErrorException", "errorMessage": "HTTP 409 Conflict", "resubmitted": false, "deleted": false }, { "id": "5fa93377e720a55f0bb68c9a", "batchName": "testBatchBundle", "objectType": "configuration/entityTypes/HCP", "batchInstanceId": "0+3j45V7S1K1GT2i6c3Mqw", "key": "{<DATE_TIME> \\"type\\" : \\"SHS\\",\\r\\n \\"value\\" : \\"TEST:<NRP>-07a6-4902-b9e8-1bf2acbc8a6e\\"\\r\\n}", "errorClass": "<URL>ientErrorException", "errorMessage": "HTTP 409 Conflict", "resubmitted": false, "deleted": false }, { "id": "5fa93377e720a55f0bb68c9b", "batchName": "testBatchBundle", "objectType": "configuration/entityTypes/HCP", "batchInstanceId": "0+3j45V7S1K1GT2i6c3Mqw", "key": "{<DATE_TIME> \\"type\\" : \\"SHS\\",\\r\\n \\"value\\" : \\"TEST:<NRP>:e8d05d96-7aa3-4059-895e-ce20550d7ead\\"\\r\\n}", "errorClass": "<URL>ientErrorException", "errorMessage": "HTTP 409 Conflict", "resubmitted": false, "deleted": false }, { "id": "5fa96ba300061d51e822854a", "batchName": "testBatchBundle", "objectType": "configuration/entityTypes/HCP", "batchInstanceId": "iN2LB3TiT3+Sd5dYemDGHg", "key": "{<DATE_TIME> \\"type\\" : \\"SHS\\",\\r\\n \\"value\\" : \\"TEST:HCP:973411ec-33d4-477e-a6ae-aca5a0875abb\\"\\r\\n}", "errorClass": "<URL>ientErrorException", "errorMessage": "HTTP 409 Conflict", "resubmitted": false, "deleted": false }]2. Resubmit failed records - it takes list of <ORGANIZATION> objects and returns list of errors that were resubmitted - if it was correctly resubmitted resubmitted flag is set to truePOST /errors/_resubmita. Requesti. List of <ORGANIZATION> objectsb. Responsei. List of Error objects3. Remove failed records - it takes list of <ORGANIZATION> objects that contains criteria for removing error objects and returns list of errors that were deleted - if it was correctly deleted deleted flag is set to <PERSON> /errors/_removea. Requesti. List of <ORGANIZATION> objectsb. Responsei. List of Error objects"
|
||
},
|
||
{
|
||
"title": "Issues diagnosis",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Issues+diagnosis",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> issues",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/API+issues",
|
||
"content": "Symptomsat least one of the following alert is active:kong_http_500_status_prod,kong_http_502_status_prod,kong_http_503_status_prod,<PERSON>,<LOCATION>,kong3_http_503_status_prod,Clients report problems related to communication with our HTTP <URL><PERSON> confirm if problem with <ORGANIZATION> is really occurring, you have to invoke some operation that is shared by HTTP interface. To do this you can use <PERSON> or other tool that can run <ORGANIZATION> requests. Below you can find a few examples that describe how to check <ORGANIZATION> in components that expose this:mdm-manager:GET {{ manager_url }}/entities?filter=equals(type, 'configuration/entityTypes/<ORGANIZATION>') - The request should execute properly (HTTP status code 200) and returns some HCP objects.api-router:GET {{ api_router_url }}/entities?filter=equals(type, 'configuration/entityTypes/<ORGANIZATION>') - The request should execute properly (HTTP status code 200) and returns some <ORGANIZATION>:GET {{ batch_service_url }}/batchController/<ORGANIZATION>/instances/NA - The request should return 403 HTTP Code and body:{ "code": "403", "message": "Forbidden: <URL>thorizationException: Batch '<ORGANIZATION>' is not allowed."}dcr-service2:<NRP> findingBelow diagram presents the <ORGANIZATION> request processing flow with engaged components:"
|
||
},
|
||
{
|
||
"title": "<PERSON>:",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Client Configuration",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Client+Configuration",
|
||
"content": " 1. InstallationTo install kafka binary version 2.8.1 should be downloaded and installed from<URL> 2. The email from the <ORGANIZATION> TeamIn the email received from the <ORGANIZATION> support team you can find connection parameters like server address, topic name, group name, and the following files:<PERSON> – kafka consumer properties,<LOCATION> – JAAS credentials requiered to authenticate with <PERSON> server,kafka_truststore.jks – java truststore required to build certification path of <ORGANIZATION> connections. 3. Example command to test client and configurationTo connect with <PERSON> using the command line client save delivered files on your disc and run the following command:export KAFKA_OPTS=<URL>nfig={ ●●●●●●●●●●●● <LOCATION> }<URL> --bootstrap-server { kafka server } --group { group } --topic { topic_name } <URL>nfig { consumer config file eg. <URL>perties}For example for amer dev:●●●●●●●●●●● in provided file: kafka_client_<URL>nfKafka server: <URL>:9094Group: dev-muleTopic: dev-out-full-pforcerx-grv-allConsumer config is in provided file: <URL>pertiesexport KAFKA_OPTS=<URL>nfig=kafka_client_<URL> --bootstrap-server <URL>:9094 --group dev-mule --topic dev-out-full-pforcerx-<LOCATION>-all <URL>nfig <URL>perties"
|
||
},
|
||
{
|
||
"title": "Client Configuration in k8s",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Client+Configuration+in+k8s",
|
||
"content": "Each of k8s clusters have installed kafka-client pod. To find this pod you have to list all pods deployed in *-backend namespace and select pod which name starts with kafka-client:\nkubectl get pods --namespace emea-backend | grep kafka-client\nTo run commands on this pod you have to remember its name and use in "kubectl exec" command:Using kubectl exec with kafka client\nkubectl exec --namespace emea-backend <PERSON>55cjm -- <command>\nAs a <command> you can use all of standard <PERSON> client scripts eg. <URL> or one of wrapper scripts which simplify configuration of standard scripts - broker and authentication configuration. They are the following scripts:consumer_<URL> - it's wrapper of kafka-consumer-groups,consumer_groups_<URL> - it's also wrapper of kafka-consumer-groups and can be used only to delete consumer group. Has only one input argument - consumer group name,reset_<URL> - it's also wrapper of kafka-consumer-groups and can be used only to reset offsets of consumer group,start_<URL> - it's wrapper of kafka-console-consumer,start_<URL> - it's wrapper of kafka-console-producer,<URL> - it's wrapper of kafka-topics.<PERSON>-client pod has other kafka tool named kcat. To use this tool you have to run commands on container kafka-kcat unsing wrapper script <URL>:Running <URL> on emea-nprod cluster\nkubectl exec --namespace emea-backend <PERSON>55cjm -c kafka-kcat -- <URL>\nNOTE: Remember that all wrapper scripts work with admin permissions.ExamplesDescribe the current offsets of a groupDescribe group dev_grv_pforcerx on emea-nprod cluster\nkubectl exec --namespace emea-backend <PERSON>55cjm -- consumer_<URL> --describe --group dev_grv_pforcerx\nReset offset of group to earlisetReset offset to earliest for group <ORGANIZATION> and topic gbl-dev-internal-gw-efk-transactions on emea-nprod cluster\nkubectl exec --namespace emea-backend <PERSON>55cjm -- reset_<URL> --group group1 --to-earliest gbl-dev-internal-gw-efk-transactions\nConsumer events from the beginning of topic. It will produce the output where each of lines will have the following format: <message key>|<message body>Read topic gbl-dev-internal-gw-efk-transactions from beginning on emea-nprod cluster\nkubectl exec --namespace emea-backend <PERSON>55cjm -- start_<URL> <ORGANIZATION>-transactions --from-beginning\nSend messages defined in text file to kafka topics. Each of message in file have to have following format: <message key>|<message body>Send all messages from file file_with_messages.csv to topic gbl-dev-internal-gw-efk-transactions\nkubectl exec -i --namespace emea-backend <PERSON> -- start_<URL> gbl-dev-internal-gw-efk-transactions < <ORGANIZATION> consumer group on topicDelete consumer group test on topic gbl-dev-internal-gw-efk-transactions emea-nprod cluster\nkubectl exec --namespace emea-backend <PERSON>55cjm -- consumer_<URL> --delete-offsets --group test gbl-dev-internal-gw-efk-transactions\nList topics and their partitions using kcatList topcis into on emea-nprod cluster\nkubectl exec --namespace emea-backend <PERSON>55cjm -c kafka-kcat -- <URL> -L\n"
|
||
},
|
||
{
|
||
"title": "How to Add a New Consumer Group",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/How+to+Add+a+New+Consumer+Group",
|
||
"content": "These instructions demonstrate how to add an additional consumer group to an existing topic.Open file "topics.yml" located under mdm-reltio-handler-env\\inventory\\<environment_name>\\group_vars\\kafka and find the topic to be updated. In this example new consumer group "flex_dev_prj2" was added to topic "dev-out-full-flex-all". 2. Make sure the parameter "create_or_update" is set to True for the desired topic: 3. Additionally, double-check that the parameter "install_only_topics" in the "all.yml" file is set to True: 4. Save the files after making the changes. Run ansible to update the configuration using the following command: <ORGANIZATION>-playbook install_hub_broker.yml -i inventory/<environment_name>/inventory --limit broker1 --vault-password-file=~/vault-password-file 5. Double-check ansible output to make sure changes have been implemented correctly. 6. Change the "create_or_update" parameter in "topics.yml" back to False. 7. Save the file and upload the new configuration to git. "
|
||
},
|
||
{
|
||
"title": "How to Generate JKS Keystore and Truststore",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "This instruction is based on the current GBL PROD Kafka keystore.jks and trustrore.jks generation. Create a certificate pair using keytool genkeypair command keytool -genkeypair -alias <URL> -keyalg <LOCATION> -keysize 2048 -keystore <URL>ystore.jks -dname "CN=<URL>, O=COMPANY, L=mdm_hub, C=<LOCATION>" set the security password, set the same ●●●●●●●●●●●● the key passphraseNow create a certificate signing request ( <ORGANIZATION> ) which has to be passed on to our external / third party <ORGANIZATION> ).keytool -certreq -alias <URL> -file <URL>.csr -keystore <URL>ystore.jks Send the csr file through the Request Manager:Log in to the BT On DemandGo to Request <URL> "Continue"Search for " Digital Certificates"Select the " Digital Certificates" Application and click "Continue"Click "Checkout"Select "COMPANY SSL Certificate - Internal Only" and fill:Copy <ORGANIZATION> filefill <LOCATION> e.g from the GBL PROD Kafka: <URL>●●●●●●●●●●●●●<URL>●●●●●●●●●●●●●<URL>●●●●●●●●●●●●●<URL>fill email addressselect "No" for additional SSL Cert request, ContinueSend the <ORGANIZATION> reqeust.When you receive the signed certificate verify the certificateCheck the Subject: CN and O should be filled just like in the <URL>eck the SAN: there should be the list of hosts from 3.g.ii.If the certificate is correct CONTINUE:Now we need to import these certificates into <URL>ystore.jks keystore. Import the intermediate certificate first --> then the root certificate --> and then the signed <URL>ytool -importcert -alias inter -file PBACA-<US_DRIVER_LICENSE>.cer -keystore <URL>ystore.jkskeytool -importcert -alias root -file RootCA-<US_DRIVER_LICENSE>.cer -keystore <URL>ystore.jkskeytool -importcert -alias <URL> -file <URL>.cer -keystore <URL>ystore.jksAfter importing all three certificates you should see : "Certificate reply was installed in keystore" <URL> list the keystore and check if all the certificates are imported <DATE_TIME> -keystore <URL>ystore.jksYour keystore contains 3 entriesFor debugging start with "-v" parameterLets create a truststore now. Set the security ●●●●●●●●●● different than the keystorekeytool -import -file PBACA-<US_DRIVER_LICENSE>.cer -alias inter -keystore <URL>uststore.jkskeytool -import -file RootCA-<US_DRIVER_LICENSE>.cer -alias root -keystore <URL>uststore.jksCOMPANY Certificates:PBACA-<US_DRIVER_LICENSE>.cer RootCA-<US_DRIVER_LICENSE>.cer"
|
||
},
|
||
{
|
||
"title": "Reset Consumergroup Offset",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Reset+Consumergroup+Offset",
|
||
"content": "To reset offset on <PERSON> topic you need to have configured the command line client. The tool that can do this action is <URL>. You have to specify a few parameters which determine where you want to reset the offset:--topic - the topic name,--group - the consumer group name,and specify the offset value by proving one of following parameters:1. --shift-byReset offsets shifting current offset by provided number which can be negative or positive:<URL> --bootstrap-server { server } --group { group } -–command-config { <URL>perties } --reset-offsets --shift-by { number from formula } --topic { topic } --execute2. --to-datetimeSwitch which can be used to rest offset from datetime. Date should be in format ‘YYYY-MM-DDTHH:mm:SS.sss’<URL> --bootstrap-server { server }--group { group } -–command-config { <URL>perties } --reset-offsets --to-datetime <DATE_TIME> --topic { topic } --execute3. --to-earliestSwitch which can be used to reset the offsets to the earliest (oldest) offset which is available in the <URL> --bootstrap-server { server }--group { group } -–command-config { <URL>perties } --reset-offsets -–to-earliest --topic { topic } --execute4. --to-latestSwitch which can be used to reset the offsets to the latest (the most recent) offset which is available in the <URL> --bootstrap-server { server }--group { group } -–command-config { <URL>perties } --reset-offsets -–to-latest --topic { topic } --executeExampleLet's assume that you want to have 10000 messages to read by your consumer and the topic has 10 partitions. The first step is moving the current offset to the latest to make sure that there is no messages to read on the topic:<URL> --bootstrap-server { server }--group { group } -–command-config { <URL>perties } --reset-offsets --to-latest --topic { topic } --executeThen calculate the offset you need to shift to achieve requested lag using following formula:-1 * desired_lag / number_of_partitionsIn our example the result will be: -1 * 10000 / 10 = -1000. Use this value in the below command:<URL> --bootstrap-server { server } --group { group } -–command-config { <URL>perties } --reset-offsets --shift-by -1000 --topic { topic } --execute"
|
||
},
|
||
{
|
||
"title": "<LOCATION> gateway",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Kong+gateway",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<LOCATION> gateway migration",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Kong+gateway+migration",
|
||
"content": "Installation procedureDeploy crds\n# Download package with crds to current directory\ntar -xzf crds_to_deploy.tar.gzcd crds_to_deploy/\nbase=$(pwd)\nBackup olds <ORGANIZATION> to proper k8s context\nkubectx atp-mdmhub-nprod-apac\n\n# Get all crds from cluster and saves them into file ${crd_name}_${env}.yaml\n# Args:\n# $1 = env\ncd $base\nmkdir old_apac_nprod\ncd old_apac_nprod\nget_<URL> apac_nprod\n\n\ncreate new crds\ncd $base/new/splitted/\n# create new crds\nfor i in $(ls); do echo $i; kubectl create -f $i ; done\n# apply new crds\nfor i in $(ls); do echo $i; kubectl apply -f $i ; done\n# replace crds that were not properly installed \nfor i in <PERSON>-crds.yaml01 kic-crds.yaml03 kic-crds.yaml05 kic-crds.yaml07 <ORGANIZATION> kic-crds.yaml11; do echo $i ; kubectl replace -f $i; done\nApply new version of gatewayconfigrations \ncd $base/new\nkubectl replace -f gatewayconfiguration-new.yaml\nApply old version of kongingress\ncd $base/old\nkubectl replace <ORGANIZATION> tests is advised to check if everything is workingDeploy operators with version that have <LOCATION>-gateway-operator(4.32.0 or newer)# Performing tests is advised to check if everything is workingMerge configuration<URL> backend (4.33.0-project-boldmove-SNAPSHOT or newer)# Performing tests is advised to check if everything is workingDeploy mdmhub components (4.33.0-project-boldmove-SNAPSHOT or newer)# Performing tests is advised to check if everything is workingTestsChecking all ingresses\n# Change /etc/hosts if <ORGANIZATION>'s are not yet changed. To obtain all hosts that should be modified in /etc/hosts: <ORGANIZATION> to correct k8s context\n# k get ingresses -o custom-columns=host0:<URL>les[0].host -A | tail -n +2 | sort | uniq | tr '\\n' ' '\n# To get <PERSON>: \n# k get svc -n kong -l <URL>(kubectl get ingress -A -o custom-columns="NAME:<URL>,<NRP>,PATH:<URL>les[0]<URL>ths[0].path" | tail -n +2 | awk '{print "https://"$2":443"$3}')\nwhile IFS= read -r line; do echo -e "\\n\\n---- $line ----"; curl -k $line; done <<< $endpoints\nChecking plugins \nexport <LOCATION> reltio_authorization="yyyyyyyyy"\nexport consul_token="zzzzzzzzzzz"\n\n\nkey-auth:\n curl <URL> curl <URL> -H "apikey: $apikey"\n curl <URL> -H 'apikey: $apikey'\n\nmdm-external-oauth:\n curl --location --request POST <URL> --header 'Content-Type: application/x-www-form-urlencoded<ORGANIZATION> "Authorization: Basic $reltio_authorization" | jq .access_token\n curl <URL> --header 'Authorization: Bearer access_token_from_previous_command'\n\ncorrelation-id:\n curl -v <URL> -H "apikey: $apikey" 2>&1 | grep hub-correlation-id \n\nbackend-auth:\n kibana-backend-auth:\n # Web browser \n <URL> # Web browser <ORGANIZATION> # Open debugger console in web browser and check if <LOCATION> cookies are set\n\npre-function:\n k logs -n emea-backend -l app=consul -f --tail=0\n k exec -n airflow airflow-scheduler-0 -- curl -k <URL>uster.local:80/<US_DRIVER_LICENSE>/kv/dev?token=$consul_token\n\nopentelemetry:\n curl <URL> -H "apikey: $apikey"\n +\n # Web browser\n <PERSON> -it <ORGANIZATION>-75bb85fc4c-2msfv -- /bin/bash\n curl localhost:8100/metrics\n\n\nCheck logsGateway operatorKong <LOCATION> pod - proxy and ingress controllerNew kong dataplaneNew kong controlPlaneStatus of <LOCATION> objects: DataplaneControlplaneGateway\nk get <LOCATION>,dataplane,controlplane -n kong\nCheck services in old and <LOCATION> Old kong\nservices=$(k exec -n kong mdmhub-kong-kong-f548788cd-27ltl -c proxy -- curl -k https://localhost:8444/services); echo $services | jq .\nNew kong\n <ORGANIZATION> exec -n kong dataplane-kong-knkcn-bjrc7-5c9f596ff9-t94lf -c proxy -- curl -k https://localhost:8444/services); echo $services | jq .\nReferenceKong operator configuration<URL> gateway operator crd's reference<URL>"
|
||
},
|
||
{
|
||
"title": "MongoDB:",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Mongo-SOP-001: Mongo Scripts",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Mongo-SOP-001%3A+Mongo+Scripts",
|
||
"content": "Create Mongo Indexes\nhub_errors\n <URL>b_<URL>eateIndex({plannedResubmissionDate: -1}, {background: true, name: "idx_plannedResubmissionDate_-1"});\n <URL>b_<URL>eateIndex({timestamp: -1}, {background: true, name: "idx_timestamp_-1"});\n <URL>b_<URL>eateIndex({exceptionClass: 1}, {background: true, name: "idx_exceptionClass_1"});\n <URL>b_<URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});\n\n\ngateway_errors\n <URL>teway_<URL>eateIndex({plannedResubmissionDate: -1}, {background: true, name: "idx_plannedResubmissionDate_-1"});\n <URL>teway_<URL>eateIndex({timestamp: -1}, {background: true, name: "idx_timestamp_-1"});\n <URL>teway_<URL>eateIndex({exceptionClass: 1}, {background: true, name: "idx_exceptionClass_1"});\n <URL>teway_<URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});\n\n\ngateway_transactions\n <URL>teway_<URL>eateIndex({transactionTS: -1}, {background: true, name: "idx_transactionTS_-1"});\n <URL>teway_<URL>eateIndex({status: -1}, {background: true, name: "idx_status_-1"});\n <URL>teway_<URL>eateIndex({requestId: -1}, {background: true, name: "idx_requestId_-1"});\n <URL>teway_<URL>eateIndex({username: -1}, {background: true, name: "idx_username_-1"});\n\n\nentityHistory\n <URL>eateIndex({country: -1}, {background: true, name: "idx_country"});\n <URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"});\n <URL>eateIndex({entityType: -1}, {background: true, name: "idx_entityType"});\n <URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\n <URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\n <URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\n <URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"});\n <URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "<ORGANIZATION>: -1}, {background: true, name: "idx_forceModificationDate"});\n\n\nentityRelations\n <URL>eateIndex({country: -1}, {background: true, name: "<ORGANIZATION>: -1}, {background: true, name: "idx_sources"});\n <URL>eateIndex({entityType: -1}, {background: true, name: "idx_relationType"});\n <URL>eateIndex({status: -1}, {background: true, name: "idx_status"});\n <URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"});\n <URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"});\n <URL>eateIndex({startObjectId: -1}, {background: true, name: "idx_startObjectId"});\n <URL>eateIndex({endObjectId: -1}, {background: true, name: "idx_endObjectId"});\n <URL>eateIndex.({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"}); <ORGANIZATION> <URL>eateIndex.({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"}); <ORGANIZATION> <URL>eateIndex({forceModificationDate: -1}, {background: true, name: "idx_forceModificationDate"});\n\n\n\n\n\n\nFind ACTIVE relations connected to inactive Entities\nvar start = new Date().getTime();\n\nvar result = <ORGANIZATION> Pipeline\n\t[\n\t\t// Stage 1\n\t\t{\n\t\t\t$match: { \n\t\t\t "status" : "ACTIVE"\n\t\t\t}\n\t\t},\n\n//\t\t// Stage 2\n//\t\t{\n//\t\t\t$limit: 1000\n//\t\t},\n\n\t\t// Stage 3\n\t\t{\n\t\t\t$lookup: // Equality Match\n\t\t\t{\n\t\t\t from: "entityHistory",\n\t\t\t localField: "relation.endObject.objectURI",\n\t\t\t foreignField: "_id",\n\t\t\t as: "matched_entity"\n\t\t\t}\n\t\t},\n\n\t\t// Stage 4\n\t\t{\n\t\t\t$match: {\n\t\t\t "$or" : [\n\t\t\t {\n\t\t\t "matched_<URL>atus" : "INACTIVE"\n\t\t\t }, \n\t\t\t {\n\t\t\t "matched_<URL>atus" : "LOST_MERGE"\n\t\t\t },\n\t\t\t {\n\t\t\t "matched_<URL>atus" : "DELETED"\n\t\t\t } \n\t\t\t ]\n\t\t\t}\n\t\t},\n\n\t\t// Stage 5\n\t\t{\n\t\t\t$group: {\n\t\t\t\t\t\t _id:"$matched_<URL>atus", \n\t\t\t\t\t\t count:{$sum:1}, <PERSON> Created with Studio 3T, the <ORGANIZATION> for MongoDB - <URL>);\n\n\n \t\nprintjson(result._batch) \t\n\nvar end = new Date().getTime();\nvar duration = end - start;\nprint("duration: " + duration + " ms")\nprint("END")\nFix <LOCATION> entities with wrong parentEntityId\nprint("START")\nvar start = new Date().getTime();\n\nvar result = <PERSON> // Pipeline\n [\n // Stage 1\n {\n $match: {\n "status" : "LOST_MERGE",\n "$and" : [\n {\n "$or" : [\n {\n "mdmSource" : "RELTIO"\n },\n {\n "mdmSource" : {\n "$exists" : false\n }\n }\n ]\n }\n ]\n }\n },\n\n // Stage 2\n {\n $graphLookup: {\n "from" : "entityHistory",\n "startWith" : "$_id",\n "connectFromField" : "parentEntityId",\n "connectToField" : "_id",\n "as" : "master",\n "maxDepth" : 10.0,\n "depthField" : "depthField"\n }\n },\n\n // Stage 3\n {\n $unwind: {\n "path" : "$master",\n "includeArrayIndex" : "arrayIndex",\n "preserveNullAndEmptyArrays" : false\n }\n },\n\n // Stage 4\n {\n $match: {\n "<URL>atus" : {\n "$ne" : "LOST_MERGE"\n }\n }\n },\n\n // Stage 5\n {\n $redact: {<ORGANIZATION>"$cond" : {\n "if" : {\n "$ne" : [\n "$master._id",\n "$parentEntityId"\n ]\n },<ORGANIZATION> "then" : "$$KEEP",\n "else" : "$$PRUNE"\n }\n }\n },\n\n ]\n\n // Created with Studio 3T, the <ORGANIZATION> for MongoDB - <URL>);\n\n\<URL>rEach(function(obj) {\n var id = obj._id;\n var masterId = <URL>ster._id;\n\n if( masterId !== undefined){\n\n print( id + " " + " " + <URL>rentEntityId +" replaced to "+ masterId);\n var currentTime = new Date().getTime();\n\n var result = db.entityHistory.update( {"_id":id}, {$set: { "parentEntityId":masterId, "forceModificationDate": NumberLong(currentTime) } });\n printjson(result);\n }\n\n});\n\n\nvar end = new Date().getTime();\nvar duration = end - start;\nprint("duration: " + duration + " ms")\nprint("END")\n\n\n\nFind entities based on the FILE with the crosswalks\ndb = <URL>tSiblingDB('reltio')\nvar file = cat('crosswalks.txt'); // read the crosswalks file\nvar crosswalk_ids = file.split('\\n'); // create an array of crosswalks\nfor (var i = 0, l = crosswalk_ids.length; i < l; i++){ // for every crosswalk search it in the entityHistory\n print("ID crosswalk: " + crosswalk_ids[i])\n var result = <URL>nd({\n status: { $eq: "ACTIVE" },\n "<URL>lue": crosswalk_ids[i]\n }).projection({id:1, country:1})\n printjson(<URL>Array());\n}\nFind ACTIVE entities with duplicated crosswalk - missing or wrong LOST_MERGE event\<URL>tCollection("entityHistory").aggregate(\n\n\t// Pipeline\n\t[\n\t\t// Stage 1\n\t\t{\n\t\t\t$match: { status: { $eq: "ACTIVE" }, entityType:"configuration/entityTypes/<ORGANIZATION>" , <ORGANIZATION>: "RELTIO", "lastModificationDate" : {\n\t\t\t "$gte" : NumberLong(<US_BANK_NUMBER>)\n\t\t\t } }\n\t\t},\n\n\t\t// Stage 2\n\t\t{\n\t\t\t$project: { _id: 0, "<URL>osswalks": 1,"entity.uri":2, "entity.updatedTime":3 }\n\t\t},\n\n\t\t// Stage 3\n\t\t{\n\t\t\t$unwind: "$<URL>osswalks"\n\t\t},\n\n\t\t// Stage 4\n\t\t{\n\t\t\t$group: {_id:"$<URL>lue", count:{$sum:1}, entities:{$push: {uri:"$entity.uri", modificationTime:"$entity.updatedTime"}}}\n\t\t},\n\n\t\t// Stage 5\n\t\t{\n\t\t\t$match: { count: { $gte: 2 } }\n\t\t},\n\n\t\t// Stage 6\n\t\t{\n\t\t\t$redact: {\n\t\t\t "$cond" : {\n\t\t\t "if" : {\n\t\t\t "$ne" : [\n\t\t\t "$<URL>lue", \n\t\t\t "$<URL>lue"\n\t\t\t ]\n\t\t\t }, \n\t\t\t "then" : "$$KEEP", \n\t\t\t "else" : "$$PRUNE"\n\t\t\t }\n\t\t\t}\n\t\t},\n\t],\n\n\t// Options\n\t{\n\t\tallowDiskUse: true\n\t}\n\n\t// Created with Studio 3T, the <ORGANIZATION> for MongoDB - <URL>);\n\n\n\nFix LOST_MEREGE entities with missing entityType attribute\nprint("START")\nvar start = new Date().getTime();\n\nvar result = <URL>tCollection("entityHistory").aggregate(\n\t// Pipeline\n\t[\n\t\t// Stage 1\n\t\t{\n\t\t\t$match: {\n\t\t\t "status" : "<LOCATION>", \n\t\t\t "entityType" : {\n\t\t\t "$exists" : false\n\t\t\t }, \n\t\t\t "$and" : [\n\t\t\t {\n\t\t\t "$or" : [\n\t\t\t {\n\t\t\t "mdmSource" : <PERSON>, \n\t\t\t {\n\t\t\t "mdmSource" : {\n\t\t\t "$exists" : false\n\t\t\t }\n\t\t\t }\n\t\t\t ]\n\t\t\t }\n\t\t\t ]\n\t\t\t}\n\t\t},\n\n\t\t// Stage 2\n\t\t{\n\t\t\t$graphLookup: {\n\t\t\t "from" : "entityHistory", \n\t\t\t "startWith" : "$_id", \n\t\t\t "connectFromField" : "parentEntityId", \n\t\t\t "connectToField" : "_id", \n\t\t\t "as" : "master", \n\t\t\t "maxDepth" : 10.0, \n\t\t\t "depthField" : "depthField"\n\t\t\t}\n\t\t},\n\n\t\t// Stage 3\n\t\t{\n\t\t\t$unwind: {\n\t\t\t "path" : "$master", \n\t\t\t "includeArrayIndex" : "arrayIndex", \n\t\t\t "preserveNullAndEmptyArrays" : false\n\t\t\t}\n\t\t},\n\n\t\t// Stage 4\n\t\t{\n\t\t\t$match: {\n\t\t\t "<URL>atus" : {\n\t\t\t "$ne" : "LOST_MERGE"\n\t\t\t }\n\t\t\t}\n\t\t},\n\n\t\t// Stage 5\n\t\t{\n\t\t\t$redact: {\n\t\t\t "$cond" : {\n\t\t\t "if" : {\n\t\t\t "$eq" : [\n\t\t\t "$master._id", \n\t\t\t "$parentEntityId"\n\t\t\t ]\n\t\t\t }, \n\t\t\t "then" : "$$KEEP", \n\t\t\t "else" : "$$PRUNE"\n\t\t\t }\n\t\t\t}\n\t\t}\n\t]\n\n\t// Created with Studio 3T, the <ORGANIZATION> for MongoDB - <URL>);\n\n\t\<URL>rEach(function(obj) {\n var id = obj._id;\n\n var masterEntityType = <PERSON>( masterEntityType !== undefined){\n if(obj.entityType == undefined){\n\t print("entityType is " + obj.entityType + " for " + id +", changing to "+ masterEntityType);\n\t var currentTime = new <ORGANIZATION> result = db.entityHistory.update( {"_id":id}, {$set: { "entityType":masterEntityType, "lastModificationDate": NumberLong(currentTime) } });\n printjson(result);\n }\n\t}\n\n});\n \t\n \t\nvar end = new Date().getTime();\nvar duration = end - start;\nprint("duration: " + duration + " ms")\nprint("END")\nGenerate report from gateway_transaction (<ORGANIZATION> Pipeline\n\t[\n\t\t// Stage 1\n\t\t{\n\t\t\t$match: { \n\t\t\t "$and" : [\n\t\t\t {\n\t\t\t "transactionTS" : {\n\t\t\t "$gte" : NumberLong(<US_BANK_NUMBER>)\n\t\t\t }, \n\t\t\t "username" : "dea_batch"\n\t\t\t }\n\t\t\t ]\n\t\t\t}\n\t\t},\n\n\t\t// Stage 2\n\t\t{\n\t\t\t$group: {\n\t\t\t _id:"$requestId", \n\t\t\t count: { $sum:1 },\n\t\t\t transactions: { $push : "$$ROOT" }\n\t\t\t}\n\t\t},\n\n\t\t// Stage 3\n\t\t{\n\t\t\t$unwind: {\n\t\t\t path : "$transactions",\n\t\t\t}\n\t\t},\n\n\t\t// Stage 4\n\t\t{\n\t\t\t$addFields: {\n\t\t\t \n\t\t\t "statusNumber": { \n\t\t\t $cond: { \n\t\t\t if: { \n\t\t\t $eq: ["$<URL>atus", "failed"] \n\t\t\t }, \n\t\t\t then: 0, \n\t\t\t else: 1 \n\t\t\t }\n\t\t\t } \n\t\t\t \n\t\t\t \n\t\t\t}\n\t\t},\n\n\t\t// Stage 5\n\t\t{\n\t\t\t$sort: {\n\t\t\t "<URL>questId": 1, \n\t\t\t "statusNumber": -1,\n\t\t\t "<URL>ansactionTS": -1 \n\t\t\t}\n\t\t},\n\n\t\t// Stage 6\n\t\t{\n\t\t\t$group: {\n\t\t\t _id:"$_id", \n\t\t\t transaction: { "$first": "$$CURRENT" }\n\t\t\t}\n\t\t},\n\n\t\t// Stage 7\n\t\t{\n\t\t\t$addFields: {\n\t\t\t "<URL>unt": "$<URL>unt" \n\t\t\t}\n\t\t},\n\n\t\t// Stage 8\n\t\t{\n\t\t\t$replaceRoot: {\n\t\t\t newRoot: "$<URL>ansactions"\n\t\t\t}\n\t\t},\n\n\t\t// Stage 9\n\t\t{\n\t\t\t$addFields: {\n\t\t\t "file_raw_line": "$<URL>le_raw_line",\n\t\t\t "filename": "$<URL>lename"\n\t\t\t}\n\t\t},\n\n\t\t// Stage 10\n\t\t{\n\t\t\t$project: {\n\t\t\t requestId : 1,\n\t\t\t count: 2,\n\t\t\t "filename": 3,\n\t\t\t uri: "$mdmUri",\n\t\t\t country: 5,\n\t\t\t source: 6,\n\t\t\t crosswalkId: 7,\n\t\t\t status: 8,\n\t\t\t timestamp: "$transactionTS",\n\t\t\t //"file_raw_line": 10,\n\t\t\t\n\t\t\t}\n\t\t},\n\t],\n\n\t// Options\n\t{\n\t\tallowDiskUse: true\n\t}\n\n\t// Created with Studio 3T, the <ORGANIZATION> for MongoDB - <URL>);\n\n\n\nExport Config for Studio3T - format:<ExportSettings> <VERSION>1</VERSION> <exportSource>CURRENT_QUERY_RESULT</exportSource> <skipValue>0</skipValue> <limitValue>0</limitValue> <exportFormat>CSV</exportFormat> <exportOptions> <VERSION>2</VERSION> <emptyFieldImportStrategy>MAKE_NULL</emptyFieldImportStrategy> <delimiter> </delimiter> <encapsulator>"</encapsulator> <isEscapeControlChars>false</isEscapeControlChars> <exportNullFieldsAsEmptyStrings>true</exportNullFieldsAsEmptyStrings> <isAddColHeaders>true</isAddColHeaders> <selectedFields> <string>_id</string> <string>count</string> <string>country</string> <string>crosswalkId</string> <string>filename</string> <string>requestId</string> <string>source</string> <string>status</string> <string>timestamp</string> <string>uri</string> </selectedFields> <noArrays>false</noArrays> <noNestedFields>false</noNestedFields> <noHeader>false</noHeader> <skipLines>0</skipLines> <parseError>false</parseError> <trimLeadingSpaces>false</trimLeadingSpaces> <trimTrailingSpaces>false</trimTrailingSpaces> <isUnixLF>false</isUnixLF> <csvPreset>Excel</csvPreset> </exportOptions> <selectedFields> <string>_id</string> <string>count</string> <string>country</string> <string>crosswalkId</string> <string>filename</string> <string>requestId</string> <string>source</string> <string>status</string> <string>timestamp</string> <string>uri</string> </selectedFields> <exportTargetType>FILE</exportTargetType> <exportPath>D:\\docs\\FLEX\\REPORT_transaction_log\\10_10_2018\\load_report.csv</exportPath> <noCursorTimeout>true</noCursorTimeout></ExportSettings>Find entities and <ORGANIZATION> BY country\n <URL>gregate([\n {$match: { status: { $eq: "ACTIVE" }, entityType:"configuration/entityTypes/<ORGANIZATION>" } },<ORGANIZATION> {$project: { _id: 1, "country":1 } },<ORGANIZATION> {$group : {_id:"$country", count:{$sum:1},}},\n {$match: { count: { $gte: 2 } } },<ORGANIZATION>],{ allowDiskUse: true } )\nFind Entities where ALL/ANY of the crosswalks array objects has delete date set\n//<URL> find entities where ALL crosswalk array objects has delete date set (not + exists false)\<URL>nd({\n entityType: "configuration/entityTypes/HCP",\n country: "br",\n status: "ACTIVE",\n "<URL>osswalks": { $not: { $elemMatch: { deleteDate: {$exists:false} } } }\n})\n\n// find entities where ANY OF crosswalk array objecst has delete date set\<URL>nd({\n entityType: "configuration/entityTypes/HCP",\n country: "br",\n status: "ACTIVE",\n "<URL>osswalks": { $elemMatch: { deleteDate: {$exists:true} } }\n})\nExample of Multiple Update based on the search query\<URL>tCollection("entityHistory").update(\n { \n "status" : "<LOCATION>", <ORGANIZATION>"entity" : {\n "$exists" : true\n }\n },\n { \n $set: { "lastModificationDate": <LOCATION>) }, <ORGANIZATION>$unset: {entity:""}\n },\n { multi: true }\n)\n\n\n\nGroup RDM exceptions and get details with sample entities <ORGANIZATION> that have been excluded from the aggregation pipeline query\n__3tsoftwarelabs_disabled_aggregation_stages = [\n\n\t{\n\t\t// Stage 2 - excluded\n\t\tstage: 2, source: {\n\t\t\t$limit: 1000\n\t\t}\n\t},\n]\n\<URL>tCollection("hub_errors").aggregate(\n\n\t// Pipeline\n\t[\n\t\t// Stage 1\n\t\t{\n\t\t\t$match: {\n\t\t\t "exceptionClass" : "<URL>cessing.RDMMissingEventForwardedException",\n\t\t\t "status" : "NEW"\n\t\t\t}\n\t\t},\n\n\t\t// Stage 3\n\t\t{\n\t\t\t$project: { \n\t\t\t "entityId":"$exchangeInHeaders.kafka[dot]KEY",\n\t\t\t "attributeName": "$<URL>tributeName",\n\t\t\t "attributeValue": "$<URL>tributeValue", \n\t\t\t "errorCode": "$<URL>rorCode"\n\t\t\t}\n\t\t},\n\n\t\t// Stage 4\n\t\t{\n\t\t\t$group: {\n\t\t\t _id: { entityId:"$entityId", attributeValue: "$attributeValue",attributeName:"$attributeName"}, // can be grouped on multiple properties \n\t\t\t dups: { "$addToSet": "$_id" }, \n\t\t\t count: { "$sum": 1 } \n\t\t\t}\n\t\t},\n\n\t\t// Stage 5\n\t\t{\n\t\t\t$group: {\n\t\t\t //_id: { attributeValue: "$_<URL>tributeValue",attributeName:"$_<URL>tributeName"}, // can be grouped on multiple properties \n\t\t\t _id: { attributeName:"$_<URL>tributeName"}, // can be grouped on multiple properties \n\t\t\t entities: { "$addToSet": "$_id.entityId" }\n\t\t\t}\n\t\t},\n\n\t\t// Stage 6\n\t\t{\n\t\t\t$project: {\n\t\t\t _id: 1,\n\t\t\t sample_entities: { $slice: [ "$entities", 10 ] } \n\t\t\t affected_entities_count: { $size: "$entities" } \n\t\t\t}\n\t\t},\n\t],\n\n\t// Options\n\t{\n\t\tallowDiskUse: true\n\t}\n\n\t// Created with Studio 3T, the <ORGANIZATION> for MongoDB - <URL>);\n\n\n\nMongo SIMPLE searches/filter/lengs/regexp examples\n// GET\<URL>nd({})\n// GET random 20 entities\<URL>gregate( \n [ \n { $match : { status : "ACTIVE" } },<ORGANIZATION>{ \n $sample: {size: 20} \n }, <ORGANIZATION>{<ORGANIZATION> $project: {_id:1}\n },\n\n] )\n \n// entity get by <ORGANIZATION>/rOATtJD"\n})\n\n\ndb.entityHistory_<URL>nd({\n _id: "entities/<ORGANIZATION> exists\<URL>nd({\n "<URL>tributes.Specialities": {<ORGANIZATION> $exists: true\n }<ORGANIZATION> size > 4\<URL>nd({\n "<URL>tributes.Specialities": {\n $exists: true\n },\n $and: [<ORGANIZATION>{$where: "<URL>tributes.Specialities.length > 6"}, <ORGANIZATION>{$where: "<URL>urces.length >= 2"},\n ]\n\n})\<URL>mit(10)\n// only project ID\<URL>jection({id:1})\n\n\n// Address size > 4\<URL>nd({\n "<URL>dress": {\n $exists: true\n },\n $and: [<ORGANIZATION>{$where: "<URL>dress.length > 4"}, <ORGANIZATION>{$where: "<URL>urces.length > 2"},\n ]\n\n})\<URL>mit(10)\n// only project ID\n//.projection({id:1})\n\n\n// Address AddressType size 2\<URL>nd({\n "<URL>dress": {\n $exists: true\n },<ORGANIZATION>"<URL>atus.lookupCode": {\n $exists: true,\n $eq: "ACTV"\n },\n }, {<ORGANIZATION>"<URL>atus": 1\n })\n .limit(10)\n\n\n// Address AddressType size 2\<URL>nd({\n "<URL>dress": {\n $exists: true\n },\n $and: [<ORGANIZATION>{$where: "<URL>dress.length >= 4"}, <ORGANIZATION>{$where: "<URL>urces.length >= 4"},\n ]\n\n})\<URL>mit(2)\n//.projection({id:1})\n// only <ORGANIZATION>"<URL>dress": {\n $exists: true\n },<ORGANIZATION>"<URL><ORGANIZATION>": {\n $exists: true\n }\n})\<URL>mit(2)\n// only project ID\n//.projection({id:1})\n\<URL>nd({\n "<URL>dress": {\n $exists: true\n },<ORGANIZATION>"<URL>lidationStatus": {\n $exists: true\n },<ORGANIZATION>"entityType":"configuration/entityTypes/HCO",\n $and: [{\n $where: "<URL>dress.length > 4"\n \n }]\n })\n .limit(1)\n// only project ID\n//.projection({id:1})\n\n\n\n//SOURCE NAME\<URL>nd({\n "<URL>dress": {\n $exists: true\n },<ORGANIZATION>lastModificationDate: {\n $gt: <US_BANK_NUMBER>\n }\n })\n .limit(10)\n// only project\n\n\n\<URL>nd({\n "<URL>dress": {\n $exists: true\n },<ORGANIZATION>"<URL>fRelation.objectURI": {\n $exists: false\n },\n }).limit(10)\n// only project\n\n\n// Phone exists\<URL>nd({\n "<URL>one": {<ORGANIZATION> $exists: true\n }\n}) .limit(1)\n\n//Specialities exists\<URL>nd({\n "<URL>tributes.Specialities": {\n $exists: true\n },\n country: "mx"\n}).limit(10)\n \n// Speclaity Code\<URL>nd({\n "<URL>tributes.Specialities": {\n $exists: true\n },\n "<URL>lue.Specialty.lookupCode": "<PERSON>country: "<PERSON>\n// <URL>tributes. Identifiers License exists\<URL>nd({\n "<URL>entifiers": {\n $exists: true\n },\n country: "mx"\n}).limit(1)\n \n \n// Name of organization is empty\<URL>nd({\n entityType: "configuration/entityTypes/HCO",\n <URL>: {\n $exists: false\n },\n // "parentEntityId": {\n // $exists: false\n // },\n country: "mx"\n}).limit(10)\n\n\n\n\n// <ORGANIZATION> entity get by ID startObjectID\<URL>nd({\n startObjectId: "entities/14tDdkhy"\n})\n\<URL>nd({\n endObjectId: "entities/14tDdkhy"\n})\n\n\<URL>nd({\n _id: "relations/RJx9ZkM"\n})\n\<URL>nd({\n "<URL><ORGANIZATION>": {\n $exists: true\n }\n}).limit(1)\n\n\n\n// Address size > 4\<URL>nd({\n "<URL>one": {\n $exists: true\n },\n "relationType":"configuration/relationTypes/HasAddress",\n //$and: [\n// {$where: "<URL>dress.length > 3"}, <ORGANIZATION>//{$where: "<URL>urces.length >= 2"},\n //]\n\n})\<URL>mit(10)\n// only project ID\n//.projection({id:1})\n\n\n\n\n// \<URL>nd({\n "<URL>osswalks": {\n $exists: true\n },\n "<URL>leteDate": {\n $exists: true\n }\n\n})\<URL>mit(10)\n// only project ID\n//.projection({id:1})\n\n\<URL>nd({\n "<URL>artObject": {\n $exists: true\n },\n "<URL>artObject.objectURI": {\n $exists: false\n }\n\n})\<URL>mit(1)\n\n\n\n// merge finder\<URL>nd({\n "<URL>artObject": {\n $exists: true\n },\n "relation.endObject": {\n $exists: true\n },\n $and: [<ORGANIZATION>{$where: "<URL>osswalks.length > 2"}, <ORGANIZATION>{$where: "<URL>urces.length >= 1"},\n ]\n\n})\<URL>mit(10)\n// only project ID\n//.projection({id:1})\n\n\n// merge finder\<URL>nd({\n "<URL>artObject": {\n $exists: true\n },<ORGANIZATION>"relation.endObject": {\n $exists: true\n },<ORGANIZATION>//"<URL>osswalks.0.uri": <URL>artsWith("<URL>artObject.objectURI")\n "<URL>osswalks.0.uri": /^<URL>artObject.objectURI.*$/i\n})\<URL>mit(2)\n\n\n\n\n\n// Phone - HasAddress\<URL>nd({\n "<URL>one": {\n $exists: true\n },\n "relationType":"configuration/relationTypes/<ORGANIZATION>"<URL><ORGANIZATION>": {\n $exists: true\n },\n "relationType":"configuration/relationTypes/Activity",\n})\n\n\n// Identifiers - HasAddress\<URL>nd({\n "<URL>entifiers": {\n $exists: true\n },\n "relationType":"configuration/relationTypes/<ORGANIZATION>"<URL><ORGANIZATION>": {\n $exists: true\n },\n "relationType":"configuration/relationTypes/Activity",\n})\n\n\n\n\<URL>nd({\n "<URL>dress": {\n $exists: true\n }\n })\n// only project\n\n\<URL>nd({\n "<URL>dress": {\n $exists: true\n },<ORGANIZATION>"<URL>fRelation.uri": {\n $exists: false\n },<ORGANIZATION>"<URL>fRelation.objectURI": {\n $exists: true\n },\n })\n// only project\n\n\<URL>nd({\n "<URL>dress": {\n $exists: true\n },<ORGANIZATION>"<URL>fRelation.uri": {\n $exists: true\n },<ORGANIZATION>"<URL>fRelation.objectURI": {\n $exists: false\n }\n })\n// only project\n\<URL>nd({\n "<URL>dress": {\n $exists: true\n },<ORGANIZATION>"<URL>fRelation.uri": {\n $exists: true\n },<ORGANIZATION>"<URL>fRelation.objectURI": {\n $exists: true\n },\n })\n\<URL>nd({\n "<URL>dress": {\n $exists: true\n },<ORGANIZATION>lastModificationDate: {\n $gt: <US_BANK_NUMBER>\n }\n })\n .limit(10)\n// only project\n\<URL>nd({})\n// GET random 20 entities\n\n \n// entity get by ID\<URL>nd({\n _id: "entities/Nzn07bq"\n})\n\n\n// Address AddressType size 2\<URL>nd({\n "<URL>dress": {\n $exists: true\n },\n $and: [<ORGANIZATION>{$where: "<URL>dress.length >= 4"}, <ORGANIZATION>{$where: "<URL>urces.length >= 4"},\n ]\n\n})\<URL>mit(2)\n\n\n\n\nGet the <NRP> and the Crosswalks Size - ifNull return 0 elements\<URL>tCollection("entityHistory").aggregate(\n\n\t// Pipeline\n\t[\n\t\t// Stage 1\n\t\t{\n\t\t\t$match: { <ORGANIZATION> mdmSource: "RELTIO" \n\t\t\t}\n\t\t},\n\n\t\t// Stage 2\n\t\t{\n\t\t\t$limit: 1000\n\t\t},\n\n\t\t// Stage 3\n\t\t{\n\t\t\t$addFields: {\n\t\t\t "crosswalksSize": { $size: { "$ifNull": [ "$<URL>osswalks", [] ] } }\n\t\t\t}\n\t\t},\n\n\t\t// Stage 4\n\t\t{\n\t\t\t$project: {\n\t\t\t _id: 1,\n\t\t\t crosswalksSize:1 \n\t\t\t \n\t\t\t}\n\t\t},\n\n\t]\n\n\t// Created with Studio 3T, the <ORGANIZATION> for MongoDB - <URL>);\n\n\nTMP Copy\n// COPY THIS SECTION \n"
|
||
},
|
||
{
|
||
"title": "<PERSON>: Running mongo scripts remotely on k8s cluster",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Mongo-SOP-002%3A+Running+mongo+scripts+remotely+on+k8s+cluster",
|
||
"content": "Get the tool:Go to file <URL> in inbound-services <URL> the file to your <URL>e tool requires kubenetes installed and <ORGANIZATION> (tested on WSL2) for working <URL>age guide:Available commands:./run_mongo_<URL> --helpShows general help message for the script tool:./run_mongo_<URL> exec <ARGS>Execute to run script remotely on pod agent on k8s script. Script will be copied from the given path on local machine to pod and then run on pod. To get details about accepted arguments run ./run_mongo_<URL> exec --help./run_mongo_<URL> get <ARGS>Execute to download script results from pod agent and save in given path on your local machine. To get details about accepted arguments run ./run_mongo_<URL> get --helpExample flow:Save mongo script you want to run in file example_script.js (Script file has to have .js or .mongo extension for tool to run <LOCATION> ./run_mongo_<URL> exec example_script.js emea_dev to run your script on emea_dev environmentUpon complection the path where the script results were saved on pod agent will be returned (eg. /pod/path/result.txt)Run ./run_mongo_<URL> get /pod/path/result.txt local/machine/path/example_script_result.txt emea_dev to save script results on your local <URL>ol editionThe tool was written using bashly - a bash framework for developing <ORGANIZATION> <URL>e tool source is available HERE. Edit files and generate singular output script based on guides available on bashly <URL> NOT EDIT run_mongo_<URL> file MANUALLY (it may result in script not working correctly)."
|
||
},
|
||
{
|
||
"title": "Notifications:",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Sending notification",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Sending+notification",
|
||
"content": "We send notifications to our clients in the case of the following events:Unplanned outage - MDMHUB is not available for our clients - REST <ORGANIZATION>, <PERSON> or <ORGANIZATION> doesn't work properly and clients are not able to connect. Currently, you have to send notification in the case of the following events:kong_http_500_status_prodkong_http_502_status_prodkong_http_503_status_prodkong3_http_500_status_prodkong3_http_502_status_prodkong3_http_503_status_prodkafka_missing_all_brokers_prodPlanned outage - it is maintenance window when we have to do some maintenance tasks that will cause temporary problems with accessing to <PERSON> endpoints,Update configuration - some of <PERSON> endpoints are changed i.e.: rest <ORGANIZATION> URL address, <PERSON> address etc.We always sends notification in the case of unplanned outage to inform our clients about and let them know that somebody from us is working on issue. Planned outage and update configuration are always planned activity that are confirmed with release management and scheduled to specific time <URL>tification <ORGANIZATION> send notifications using your <ORGANIZATION>'s email <URL> CC always set our DLs: <EMAIL_ADDRESS>, <ORGANIZATION> our clients as <ORGANIZATION> according to table mentioned below:Click here to expand Recepients list (XLS above is easier to filter){"name":"MDM_Hub_notification_recipients.xlsx","type":"xlsx","pageID":"<US_BANK_NUMBER>"}Loading On the above screen we can see a few placeholders,Notification type - must be one of: UNPLANNED OUTAGE, PLANNED OUTAGE or UPDATE CONFIGURATION,Environments - a list of MDMHUB environments that related to notification. It is very important to provide region and specific environment type eg. <ORGANIZATION>/STAGE, AMER NPRODs etc. It is good to provide a links to documentation that describe listed environments. Environment documentation can be found here,When - the date when situation that notification describes start occurring. In the case of unplanned outage you have to provide the date when we noticed the failure. For rest of situations it should be time range to determine when activity will start and finish,Description - details that describe situation, possible impacts and expected time of resolution (if it is possible to determine). Some of the notification templates have placeholder "<List of endpoints>" that should be fill up using labels endpoint and endpoint_ext value from alert triggered in karma. Thanks this, customers will be able to recognize that outage impacting on theirs <URL>tification templatesBelow you can find notification templates that you can get, fill and send to our clients:Generic template: <URL>gKafka issues: <URL>gAPI issues: <URL>g"
|
||
},
|
||
{
|
||
"title": "COMPANYGlobalCustomerID:",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Fix \"\" or null IDs - Fix Duplicates",
|
||
"<PERSON>": "<US_DRIVER_LICENSE>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "The following SOP describes how to fix "" or null COMPANYGlobalCustomerIDs values in <PERSON> and regenerate events in <URL>e SOP also contains the step to fix duplicated values and regenerate <URL>eps: Check empty or null: \n\t db = <URL>tSiblingDB("reltio_amer-prod");\n\t\<URL>tCollection("entityHistory").find(\n\t\t\t{\n\t\t\t\t"$or" : [\n\t\t\t\t\t{\n\t\t\t\t\t\t"COMPANYGlobalCustomerID" : ""\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t"COMPANYGlobalCustomerID" : {\n\t\t\t\t\t\t\t"$exists" : false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t"status" : {\n\t\t\t\t\t"$ne" : "DELETED"\n\t\t\t\t}\n\t\t\t}\n\t\t);\nMark all ids for further event regeneration. Run the <PERSON> on Studio3t or <PERSON> on <PERSON>:log in to correct cluster on backend namespace copy script - kubectl cp ./reload_entities_fix_COMPANY_id_DEV.js mongo-0:/tmp/reload_entities_fix_COMPANY_id_DEV.jsrun - nohup mongo --host mongo/localhost:27017 -u admin -p <pass> --authenticationDatabase admin reload_entities_fix_COMPANY_id_DEV.js > out/reload_DEV.out 2>&1 &download result - kubectl cp <PERSON>/out/reload_DEV.out ./reload_DEV.outUsing output find all "TODO" lines and regenerate correct eventsCheck <ORGANIZATION> {\n\t\t\t\t\t_id: {COMPANYID: "$COMPANYID"},\n\t\t\t\t\tuniqueIds: {$addToSet: "$_id"},\n\t\t\t\t\tcount: {$sum: 1}\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// Stage 2\n\t\t\t\t{\n\t\t\t\t\t$match: { \n\t\t\t\t\tcount: {"$gt": 1}\n\t\t\t\t\t}\n\t\t\t\t}, \n\t\t\t],\n\n\t\t\t// Options\n\t\t\t{\n\t\t\t\tallowDiskUse: true\n\t\t\t}\n\n\t\t\t// Created with Studio 3T, the <ORGANIZATION> for MongoDB - <URL> there are duplicates run run the <PERSON> on Studio3t or <PERSON><URL> on <PERSON>:log in to correct cluster on backend namespace copy script - kubectl cp ./reload_entities_fix_COMPANY_id_DEV.js mongo-0:/tmp/reload_entities_fix_COMPANY_id_DEV.jsrun - nohup mongo --host mongo/localhost:27017 -u admin -p <pass> --authenticationDatabase admin reload_entities_fix_COMPANY_id_DEV.js > out/reload_DEV.out 2>&1 &download result - kubectl cp <PERSON>/out/reload_DEV.out ./reload_DEV.outUsing output find all "TODO" lines and regenerate correct eventsReload events Events RUNYou can use the following 2 scripts:\n#!/bin/bash\n\nfile=$1\nevent_type=$2\n\ndos2unix $file\n\njq -R -s -c 'split("\\n")' < "${file}" | jq --arg eventTimeArg `date +%s%3N` --arg eventType ${event_type} -r '.[] | . +"|{\\"eventType\\": \\"\\($eventType)\\", \\"eventTime\\": \\"\\($eventTimeArg)\\", \\"entityModificationTime\\": \\"\\($eventTimeArg)\\", <ORGANIZATION>": [\\"" + (.|tostring) + "\\"], \\"mdmSource\\": \\"RELTIO\\", \\"viewName\\": \\"default\\"}"'\n\n\nThis script input is the file with entityid separated by new lineExmaple:entities/xVIK0nhentities/uP4eLwsentities/iiKryQOentities/ZYjRCFNentities/13n4v93AExample execution:./<URL> dev_reload_empty_ids.csv HCP_CHANGED >> EMEA_DEV_events.txtOR\n#!/bin/bash\n\nfile=$1\n\ndos2unix $file\n\njq -R -s -c 'split("\\n")' < "${file}" | jq --arg eventTimeArg `date +%s%3N` -r '.[] | (. | tostring | split(",") | .[0] | tostring ) +"|{\\"eventType\\": \\""+ ( . | tostring | split(",") | if .[1] == "<LOCATION>" then "HCP_LOST_MERGE" else "HCP_CHANGED" end ) + "\\", \\"eventTime\\": \\"\\($eventTimeArg)\\", \\"entityModificationTime\\": \\"\\($eventTimeArg)\\", <ORGANIZATION>": [\\"" + (. | tostring | split(",") | .[0] | tostring ) + "\\"], \\"mdmSource\\": \\"RELTIO\\", \\"viewName\\": \\"default\\"}"'\n\n\nThis script input is the file with entityId,status separate by new lineExample:entities/10BBdiHR,LOST_MERGEentities/10BBdv4D,LOST_MERGEentities/10BBe7qz,LOST_MERGEentities/10BBgKFF,<LOCATION>,<LOCATION> execution:./script_2_<URL> dev_reload_lost_merges.csv >> EMEA_DEV_events.txtPush the generate file to <PERSON> topic using <PERSON> producer:./start_sasl_<URL> prod-internal-reltio-events < EMEA_PROD_events.txtSnowflake Check\n-- COMPANY COMPANY_GLOBAL_CUSTOMER_ID checks - null/empty\nSELECT count(*) FROM ENTITIES WHERE COMPANY_GLOBAL_CUSTOMER_ID IS NULL OR COMPANY_GLOBAL_CUSTOMER_ID = '' \nSELECT * FROM ENTITIES WHERE COMPANY_GLOBAL_CUSTOMER_ID IS NULL OR COMPANY_GLOBAL_CUSTOMER_ID = '' \n\n-- duplicates\nSELECT COMPANY_GLOBAL_CUSTOMER_ID \nFROM ENTITIES \nWHERE COMPANY_GLOBAL_CUSTOMER_ID IS NOT NULL OR COMPANY_GLOBAL_CUSTOMER_ID != '' \nGROUP BY COMPANY_GLOBAL_CUSTOMER_ID HAVING COUNT(*) >1\n\n\n"
|
||
},
|
||
{
|
||
"title": "Initialization Process",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Initialization+Process",
|
||
"content": "The process will sync COMPANYGlobalCustomerID attributes to the MongoDB (EntityHistory and COMPANYIDRegistry) and then refresh the snowflake with this <URL>e process is divided into the following steps:Create an index in <URL>eateIndex({COMPANYGlobalCustomerID: -1}, {background: true, name: "idx_COMPANYGlobalCustomerID"});Configure entity-enricher so it has the ov:false option for <URL>nOvAttributesToInclude:- COMPANYCustID- COMPANYGlobalCustomerIDDeploy the hub components with callback enabled <ORGANIZATION> (3.9.1 version)RUN hub_reconciliation_v2 - first run the HUB Reconciliation -> this will enrich all <PERSON> data with COMPANYGlobaCustomerID with ov:true and ov:false valuesbased on <ORGANIZATION> this is here - <URL>:8080/airflow/tree?dag_id=hub_reconciliation_v2_emea_dev&root=doc - HUB Reconciliation Process V2check if the configuration contains the following - nonOvAttrToInclude: "COMPANYCustID,<ORGANIZATION> directory structure and <URL>perties file in emea/<env>/inbound/hub/hub_reconciliation/ <URL>:8080/airflow/tree?dag_id=hub_reconciliation_v2_emea_dev<URL>:8080/airflow/tree?dag_id=hub_reconciliation_v2_emea_qa<URL>:8080/airflow/tree?dag_id=hub_reconciliation_v2_emea_stageRUN hub_COMPANYglobacustomerid_initial_sync_<ENV> DAGIt contains 2 steps:COMPANYglobacustomerid_active_inactive_reconciliation the groovy script that - check the HUB entityHistory ACTIVE/INACTIVE/DELETED entities - for all these entities get ov:true COMPANYGlobalCustomerId and enrich <PERSON> and CacheCOMPANYglobacustomerid_lost_merge_reconciliation the groovy script that - this step checks <DATE_TIME> entities. Do the merge_tree full export from <ORGANIZATION>. Based on merge_tree adds the RUN snowflake_reconciliation - full snowflake reconciliation by generating the full file with empty checksums"
|
||
},
|
||
{
|
||
"title": "Remove Duplicates and Regenerate Events",
|
||
"<PERSON>": "<US_DRIVER_LICENSE>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": "This SOP describes the workaround to fix the COMPANYGlobalCustomerID duplicated <URL>se:There are 2 entities with the same COMPANYGlobalCustomerID.Example: 1Qbu0jBQ - Jun 14, <DATE_TIME> @ 18:10:44.963 ID-mdmhub-reltio-subscriber-dynamic-866b588c7-w9crm-<US_BANK_NUMBER>-0-<US_DRIVER_LICENSE> ENTITY_CREATED entities/1Qbu0jBQ RELTIO success entities/1Qbu0jBQ 3Ot2Cfw - Aug 11, <DATE_TIME> @ 18:53:31.433 ID-mdmhub-reltio-subscriber-dynamic-79cd788b59-gtzm6-<US_BANK_NUMBER>-0-<US_DRIVER_LICENSE> ENTITY_CREATED entities/3Ot2Cfw RELTIO success entities/3Ot2Cfw3Ot2Cfw is a <ORGANIZATION> is a LOSER. Rule: if there are duplicates, always pick the LOST_MERGED entity and update the looser only with the different value. Do not change an active entity:Steps:GO to Reltio to the winner and check the other (OV:FALSE) COMPANYGlobalCustomerIDsPick the new value from the list:Check if there are no duplicates in <PERSON>, and search for a new value by the COMPANY in the cache. If exists pick different.<PERSON>Regenerate event:if the loser entity is now active in <ORGANIZATION> but not active in <PERSON> regenerate CREATED event:entities/1Qbu0jBQ|{ "eventType" : "HCP_CREATED", "eventTime" : "<US_BANK_NUMBER>", "entityModificationTime" : "<US_BANK_NUMBER>", "entitiesURIs" : [ "entities/1Qbu0jBQ" ], "mdmSource" : "RELTIO", "viewName" : "default" }if the loser entity is not present in <ORGANIZATION> because is a looser regenerate <LOCATION> event:entities/1Q7XLreu|{"eventType":"HCO_LOST_MERGE","eventTime":<US_BANK_NUMBER>,"entityModificationTime":<US_BANK_NUMBER>,"entitiesURIs":["entities/1Q7XLreu"],"mdmSource":"RELTIO","viewName":"default"}Example PUSH to PROD:Check <PERSON>, an updated entity should change COMPANYGlobalCustomerIDCheck <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> (<LOCATION>):",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Batch Loads - Client-Sourced",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Batch+Loads+-+Client-Sourced",
|
||
"content": "Log in to <LOCATION> PROD <PERSON>: <URL>:5601/app/kibanause the dedicated "kibana_gbiccs_user" Go to the Dashboards Tab - "PROD Batch loads"Change the <ORGANIZATION> rage Choose <DATE_TIME> to check if the new file was loaded for <DATE_TIME><URL>e <ORGANIZATION> is divided into the following sections:File by type - this visualization presents how many file of the specific type were loaded during a specific time rangeFile load count - this visualization presents when the specific file was loadedFile load summary - on this table you can verify the detailed information about file loadCheck if files are loaded with the following agenda:SAP - incremental loads - max 4 files per day, min 2 files per day Agenda: <DATE_TIME>. 01:20 CET time 2. <DATE_TIME> time 3. <DATE_TIME> time <DATE_TIME>. <DATE_TIME> timeSaturday1. <DATE_TIME> <ORGANIZATION> - incremental loads - 2 file per day. WKCE.*.txt and WKHH.*.txtAgenda:whenhoursTuesday-Saturday1. estimates: <DATE_TIME> <ORGANIZATION> load - 1 file per week FF_DEA_IN_.*.txtAgenda:whenhoursTuesday1. estimates: <DATE_TIME> CET time340B - incremental load - 4 files per month. 340B_FLEX_TO_RELTIO_*.txtAgenda:Files uploaded on 3rd, 10th, 24th and <DATE_TIME> at ~12:30 PM CET time. If <DATE_TIME> is on <DATE_TIME>, the file will be loaded on <DATE_TIME><URL>eck if <ORGANIZATION> file limit was not exceeded. Check "Suspended Entities" attribute. If this parameter is grater than 0, it means that <ORGANIZATION> post processing was not invoked. Current <ORGANIZATION> post processing limit is 22 000. To increase limit - Send the notification (7.d), after agreement do (8.)Take an action if the input files are not delivered on schedule:SAP To: <EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;DL-GMFT-EDI-PRD-SUPPORT@<URL>CC: <EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS><LOCATION><EMAIL_ADDRESS>;<EMAIL_ADDRESS><ORGANIZATION><EMAIL_ADDRESS>;<URL>irumurthy@<URL>HINTo: <EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;DL-GMFT-EDI-PRD-SUPPORT@<URL>CC: <EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>; <URL>irumurthy@<URL>DEATo: <EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;DL-GMFT-EDI-PRD-SUPPORT@<URL>CC: <EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>; <URL><ORGANIZATION> - limit notificationTo: <EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<EMAIL_ADDRESS>;<URL>irumurthy@<URL>CC: <EMAIL_ADDRESS>;<URL>rawski@<URL>Take an action if <ORGANIZATION> limit was exceeded. Login to each PROD hostGo to "cd /app/mdmgw/batch_channel/config/"Edit "application.yml" on each host:Change <URL>leteDateLimit: 22 000 to new <URL>art Components: Execute <URL>:8443/job/mdm_manage_playbooks/job/Microservices/job/manage_microservices__prod_us/component: mdmgw_batch-channel_1node: all_nodescommand: restartLoad the latest <ORGANIZATION> file (MD5 checksum skips all entities, so only post-processing step will be executed) Change and commit new limit to GIT: <URL> Example Emails:<ORGANIZATION> limit exceeded: <ORGANIZATION> load checkHi Team,We just received the <ORGANIZATION> file, the current <ORGANIZATION> post processing process is set to 22 000 limitation. The <ORGANIZATION> load resulted in xxxx profiles to be updated in post-processing. Should I change the limit and re-process profiles ?Regards,HIN File missingHIN PROD file missingHi, <DATE_TIME> we expected to receive new HIN files. I checked that HIN files are missing on <ORGANIZATION> bucket. <DATE_TIME> we received files at <time> CET time.Here is the screenshot that presents files that we received last week:<screen from <ORGANIZATION> bucket>Could you please verify <URL>gards,"
|
||
},
|
||
{
|
||
"title": "Batch Loads - Update Addresses",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/Batch+Loads+-+Update+Addresses",
|
||
"content": "Log in to <LOCATION> PROD <PERSON>: <URL>:5601/app/kibanause the dedicated "kibana_gbiccs_user" Go to the Dashboards Tab - "PROD Batch loads"Change the <ORGANIZATION> rage Choose <DATE_TIME> to check if the new file was loaded for <DATE_TIME><URL>e <ORGANIZATION> is divided into the following sections:File by type - this visualization presents how many file of the specific type were loaded during a specific time rangeFile load count - this visualization presents when the specific file was loadedFile load summary - on this table you can verify the detailed information about file loadFile load status count - the user name ("integration_batch_user") that executes the <ORGANIZATION> and "status" - the number of requests ended with the status. To get more details o to PROD Api CallsResponse status load summary - the number of requests ended with the specific status. To get more details o to PROD Api CallsThe result report name or the details saved in <PERSON> contains correlation ID. example Report name: DEV_update_profiles_integration_testing_ID-5e1b4bdf7525-<US_BANK_NUMBER>-0-819_REPORT.csv example correlation ID: ID-5e1b4bdf7525-<DATE_TIME> get more details o to PROD Api CallsSearch by the correlation ID related to the latest Addresses update file load. The following screenshot presents how many operations were invoked during the <PERSON> <URL> this example, the input file contains 3 Customers.During the process, 3 Search <ORGANIZATION> calls and 3 Attribute Updates API calls were invoked with success. <NRP> read the following <ORGANIZATION> document related to the Addresses updating process. This document contains a detailed description of the process, all inbound and outbound interface types.<ORGANIZATION> report and distributionThe report is uploaded to the <ORGANIZATION> location: PROD location: <ORGANIZATION>/archive/ADDRESSES/The report is published in the <ORGANIZATION> <URL>le name format is following: “<name>_<correlation_id>.csv”Where <name> is the input file name.Where <correlation_id> is the number of the batch related to the whole addresses update process. Using the correlation number Operator can find and verify all updates send to <ORGANIZATION> and easily verify the status of the <URL> the file and publish it to the <ORGANIZATION> location. Send the notification to the designated mailing group. <ORGANIZATION> upload location:\\\\<URL>\\gfs_cbk\\Contracts-Chargeback\\Chargebacks_Reporting\\Reltio\\Addresses Update <ORGANIZATION> group: To: <EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS> CC:<EMAIL_ADDRESS>,<URL>rawski@<URL>Email template:FLEX Addresses updating process - Report - <generation_date>Hi, Please be informed that the Addresses updating process report is available for <URL>: → <SharePoint URL>Regards,<PERSON> "
|
||
},
|
||
{
|
||
"title": "<PERSON> Identifiers",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Batch+Loads+-+Update+Identifiers",
|
||
"content": "Log in to <LOCATION> PROD <PERSON>: <URL>:5601/app/kibanause the dedicated "kibana_gbiccs_user" Go to the Dashboards Tab - "PROD Batch loads"Change the <ORGANIZATION> rage Choose <DATE_TIME> to check if the new file was loaded for <DATE_TIME><URL>e <ORGANIZATION> is divided into the following sections:File by type - this visualization presents how many file of the specific type were loaded during a specific time rangeFile load count - this visualization presents when the specific file was loadedFile load summary - on this table you can verify the detailed information about file loadFile load status count - the user name ("identifiers_batch_user") that executes the <ORGANIZATION> and "status" - the number of requests ended with the status. To get more details o to PROD Api CallsResponse status load summary - the number of requests ended with the specific status. To get more details o to PROD Api CallsThe result report name or the details saved in <PERSON> contains correlation ID. example Report name: DEV_update_profiles_integration_testing_ID-5e1b4bdf7525-<US_BANK_NUMBER>-0-819_REPORT.csv example correlation ID: ID-5e1b4bdf7525-<DATE_TIME> get more details o to PROD Api CallsSearch by the correlation ID related to the latest Identifiers file load. The following screenshot presents how many operations were invoked during the Identifiers <URL> this example, the input file contains 3 Customers.During the process, 3 Search <ORGANIZATION> calls and 3 Attribute Updates API calls were invoked with success. <NRP> read the following <ORGANIZATION> document related to the Identifiers updating process. This document contains a detailed description of the process, all inbound and outbound interface types.<ORGANIZATION> report and distributionThe report is uploaded to the <ORGANIZATION> location: PROD location: <ORGANIZATION>/archive/IDENTIFIERS/The report is published in the <ORGANIZATION> <URL>le name format is following: “<name>_<correlation_id>.csv”Where <name> is the input file name.Where <correlation_id> is the number of the batch related to the whole identifiers update process. Using the correlation number Operator can find and verify all updates send to <ORGANIZATION> and easily verify the status of the <URL> the file and publish it to the <ORGANIZATION> location. Send the notification to the designated mailing group. <ORGANIZATION> upload location:\\\\<URL>\\gfs_cbk\\Contracts-Chargeback\\Chargebacks_Reporting\\Reltio\\Identifier Update <ORGANIZATION> group: To: <EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS> CC:<EMAIL_ADDRESS>,<URL>rawski@<URL>Email template:FLEX Identifiers updating process - Report - <generation_date>Hi, Please be informed that the Identifiers updating process report is available for <URL>: → <SharePoint URL>Regards,<PERSON> "
|
||
},
|
||
{
|
||
"title": "FLEX QC",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/FLEX+QC",
|
||
"content": "<ORGANIZATION> following table presents the scheduled agenda of the process:whenhoursEach <DATE_TIME> <DATE_TIME> (<ORGANIZATION> time)The process has to be verified on <DATE_TIME> CET time. After successful verification the report has to be sent to the designated mailing <URL><PERSON> <ORGANIZATION> is a requirement to monitor the process after each run and send the generated comparison report. The overview <ORGANIZATION> dashboard is available here:<URL> the dashboard contains GREEN color on "US PROD Airflow DAG's Status" panel - The process ended with success.When the dashboard contains RED color on "US PROD Airflow DAG's Status" panel - The process ended with failure. The details are available in <URL><ORGANIZATION> in to <ORGANIZATION> platform: <URL> you can use admin userLogin pageGo to the "flex_validate_us_prod" JobTo check details of the specific Task, click on the Task and then in pop up window click "View Logs" *_validation_tasks - these tasks are "Sub DAG's". To verify the internal tasks click on the SUB DAG, then in pop up window click "Zoom into SUB DAG". After LOGs verification there is a possibility to re-run the process from the last failure point, To do this process the following steps:Click on the Task. In the pop-up window choose "Clear" <ORGANIZATION> deletes the previous state of the task instance, allowing it to get re-triggered by the scheduler or a backfill command. It means that all future tasks are cleaned and started one more <URL><PERSON> read the following <ORGANIZATION> document related to the FLEX Quality check process. this document contains a detailed description of the <ORGANIZATION> process, all inbound and outbound interfaces types.<ORGANIZATION> report and distributionThe comparison report is uploaded to the <ORGANIZATION> location: PROD location: <NRP>/verify/PROD/report/File name format is following: “comparison_report_full_<date>.csv”Where <date> is YYYYMMDDTHHMMSS (20191001T072509)Download the file and publish it to the <ORGANIZATION> location. Send the notification to the designated mailing group. Report preprocessing and XLSX create:Open comparision_report_full_<data>.csv with Notepad++Because excel removed leading 000 characters the replacement needs to be done using Search mode: Regular expression. Replace all\n;"0(.*?)";\nto \n;="0\\1";\nCheck the <ORGANIZATION> for multi-line comments (<ORGANIZATION> attribute). They might disturb the <ORGANIZATION> format. Replace all\n([^"])\\n\nto \n"\\1"\n(remove the quote marks - cannot escape backslash in Confluence)Fix the header row (add the removed \\n)Save fileOpen <ORGANIZATION> file by double click - to open this file in <URL> on the left top corner to mark all columns and rowsdouble click on the line between column "A" and "B" to adjust column <URL>ly the "Filter" option on the <URL>rify result. Each row needs to start with a source name. Check the source column. Check if the <ORGANIZATION> attribute is in one row, and the format is correct.When the format is correct the source column should contain only the following values:Save the file in XLSX formatClick "File" → Save as. Choose "Save as type" = "Excel Workbook (*.xlsx)Send both <ORGANIZATION> and XLSX format to the <ORGANIZATION> location:8. As recently requested, I have deleted rows with “<URL>lue” error and with CXkfvVy entity. SharePoint upload location:\\\\<URL>\\gfs_cbk\\Contracts-Chargeback\\Chargebacks_Reporting\\Reltio\\Reltio QC ReportWhen uploading new files move files from <DATE_TIME> to the 'archive' subfolder and upload latest files to the main folder 'Reltio QC Report'.Mailing group: To: <PERSON>, <PERSON> <<EMAIL_ADDRESS>>; <PERSON>, <PERSON> R <<EMAIL_ADDRESS>>; <LOCATION>, <PERSON> <<EMAIL_ADDRESS>>; <ORGANIZATION>, Ivy <<EMAIL_ADDRESS>>; <PERSON>, <PERSON> <<EMAIL_ADDRESS>>; <ORGANIZATION> <<EMAIL_ADDRESS>> CC: <PERSON>, Przemyslaw <<EMAIL_ADDRESS>>; <PERSON>, <PERSON> <<EMAIL_ADDRESS>>; <PERSON>, <PERSON><EMAIL_ADDRESS>>Email template:<generation_date> - each report is generated during <DATE_TIME>. So for example when the report generation was executed between <DATE_TIME>-<DATE_TIME> (weekend), then the generation_date should be the same. The date format should be consistent with <LOCATION> notation. (MM/dd/yyyy) e.g. <DATE_TIME><SharePoint URL> - the URL in the email needs to be formated, because due to the spaces in the path. FLEX QC result - Report - <generation_date>Hi,Please be informed that the new <LOCATION> report is available for <URL>: → <SharePoint URL>Best Regards,<ORGANIZATION>: <EMAIL_ADDRESS>,<EMAIL_ADDRESS> when FLEX/HIN/<ORGANIZATION> file is <URL>: <EMAIL_ADDRESS> <EMAIL_ADDRESS>,<EMAIL_ADDRESS> when <ORGANIZATION> file is <URL>: <EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS>,<EMAIL_ADDRESS> - With GIS FILE transfer problem (missing files)14/02/2023Hi <PERSON>,You can remove me from this distribution going <URL>anks,<PERSON>,I’ve moved to a new role and no longer need to be apart of this distribution. Can you please remove me?Regards,Crystal Sawyer "
|
||
},
|
||
{
|
||
"title": "Generate events to prod-out-full-gblus-flex-all*.json file",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Generate+events+to+prod-out-full-gblus-flex-all*.json+file",
|
||
"content": "Go to <LOCATION>/us/prod/inbound/oneview-cov/prod-out-full-gblus-flex-all (concat_s3_files_gblus_prod input directory)Copy files for desired period of time to your local workspaceDownload attached script and modify events variableExecute attached script in the directory below downloaded files. It will find the latest event for every element in events list and store them in agregated_events.jsonArrange with the person requesting event generation that they stop the process for <DATE_TIME>. When they stop the process, you can add the found events to a file in <LOCATION>/us/prod/inbound/oneview-cov/inbound <US_DRIVER_LICENSE> directoryAfter file is modified thay can start ingestion process and verify if events were properly <URL>"
|
||
},
|
||
{
|
||
"title": "Re-Loading SAP/HIN/DEA Files After Batch Channel Stopped",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "These are the steps to be taken to correctly process <ORGANIZATION>/<ORGANIZATION> files after mdmgw_batch_channel <PERSON> is stopped on PROD and has to be restarted:Create an emergency RFC for this actionChange configuration of the batch_channel component on PROD1 (amrae<MEDICAL_LICENSE>7) under /app/mdmgw/batch_channel/config/application.yml:change relativePathPattern: DEA/.* to relativePathPattern: DEA_LOAD/.*change relativePathPattern: HIN/.* to relativePathPattern: HIN_LOAD/.*change relativePathPattern: SAP/.* to relativePathPattern: SAP_LOAD/.*This is required because <ORGANIZATION> publishes files to */DEA/HIN/SAP automatically and we don't want to consume them during the fix. 3. Empty all /inbound/* directories by moving all files from:/inbound/SAP to /archive/SAP_tmp/inbound/<ORGANIZATION> to /archive/DEA_tmp/inbound/HIN to /archive/HIN_tmp4. After inbound directories are empty start batch_channel component on PROD1 (amrae<MEDICAL_LICENSE>7). Process files in <ORGANIZATION> order by moving them in order from:/archive/SAP_tmp to /inbound/SAP_LOAD/archive/DEA_tmp to /inbound/DEA_LOAD/archive/HIN_tmp to /inbound/HIN_LOAD5. After these files are processes stop batch_channel on PROD1 (amrae<MEDICAL_LICENSE>7).6. Restore configuration on PROD1 under /app/mdmgw/batch_channel/config/application.yml:relativePathPattern: DEA_LOAD/.* to relativePathPattern: DEA/.* relativePathPattern: HIN_LOAD/.* to relativePathPattern: HIN/.* relativePathPattern: SAP_LOAD/.* to relativePathPattern: SAP/.* 7. Start batch_channel on PROD1, <PERSON> and <PERSON> waiting <DATE_TIME> before start on each subsequent node.8. Check if nodes started and clustered correctly:"<URL>legalStateException: Zookeeper based route policy prohibits processing exchanges, stopping route and failing the exchange" should be seen in /app/mdmgw/batch_channel/log/application.log on 2 nodes (usually node 2 and node 3)"Candidatenode '/batchChannel/batch-channel-prod/' has been created" message appears in the log on one node (usually node 1).9. Move previously processed files from /archive/*_load to /archive/*"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> keys replacement",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/<US_DRIVER_LICENSE>+keys+replacement",
|
||
"content": "PROD ( amrae<MEDICAL_LICENSE>7, <PERSON>, amrae<MEDICAL_LICENSE>9):Remember that the replacement has to be done on all three instances!Replace keys for batch channel and do recreate containers. /app/mdmgw/batch_channel/config/application.yml 2. Replace keys for reltio subscriber and do recreate containers/app/mdmhub/reltio_subscriber/config/application.yml 3. Replace keys for archiver and do not recreate containers/app/archiver/config/archiver.env 4. Replace keys for airflow dags <URL> (DEV / TEST - amraelp00005781): Replace keys for batch channel and recreate containers. /app/mdmgw/dev-mdm-srv/batch_channel/config/application.yml/app/mdmgw/test-mdm-srv/batch_channel/config/application.ymlAfter manual replacement in the components:Replace keys in the repository:Use replace_aws_<URL> to find and replace keys in the repository. Deploy changes! <ORGANIZATION> and <ORGANIZATION>"
|
||
},
|
||
{
|
||
"title": "Project Highlander:",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION> Check",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Highlander+IDL+Quality+Check",
|
||
"content": "It is required to check <ORGANIZATION> and <ORGANIZATION> counts at selected checkpoins of <US_DRIVER_LICENSE> flow and document <URL>eckpointsReltiocounts are fetched using Reltio API (see procedures)HUBafter HUB refresh is completed - all events processed and error queue is emptycounts per country are compared to <ORGANIZATION> data are spooled from <PERSON> and DM is refreshed.data are compared to HUBHUB (<ORGANIZATION> filters)only active profiles having at least on active crosswalk from <ORGANIZATION> or OK are includedcounts are retrieved from <PERSON> using a query with filters on <ORGANIZATION> constrainstsNexus (<US_DRIVER_LICENSE>)records exported to <US_DRIVER_LICENSE> files are counted and compared to <ORGANIZATION> published to CMD are counted and compared to <ORGANIZATION> (<US_DRIVER_LICENSE>)DocumentPlease create document using the <URL>ceduresRetrieving counts from ReltioCall following APITo get HCP counts\nGET https://{{url}}/reltio/api/{{tenantID}}/entities/_facets?facet=type,<URL>untry&options=searchByOv&max=2000&filter=equals(type,'HCP') and in(<URL><ORGANIZATION>,<ORGANIZATION>,AR,AW,BS,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,BR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,DO,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,HN,<ORGANIZATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<LOCATION>,PY,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,VE")\nTo get <ORGANIZATION> https://{{url}}/reltio/api/{{tenantID}}/entities/_facets?facet=type,<URL>untry&options=searchByOv&max=2000&filter=equals(type,'HCO') and in(<URL><ORGANIZATION>,<ORGANIZATION>,AR,AW,BS,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,BR,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,DO,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,HN,<ORGANIZATION>,<LOCATION>,<ORGANIZATION>,<ORGANIZATION>,<LOCATION>,<LOCATION>,PY,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION>,<ORGANIZATION> counts from HUB (global)Query\<URL>tCollection("entityHistory").aggregate(\n\t// Pipeline\n\t[\n\t\t// Stage 1\n\t\t{\n\t\t\t$match: {\n\t\t\t "$and" : [\n\t\t\t {"status" : "ACTIVE"}, \n\t\t\t {"country" : {\n\t\t\t "$in" : [\n\t\t\t "ai", \n\t\t\t "an", \n\t\t\t "ag", \n\t\t\t "ar", \n\t\t\t "aw", \n\t\t\t "bs", \n\t\t\t "bb", \n\t\t\t "bz", \n\t\t\t "bm", \n\t\t\t "bo", \n\t\t\t "br", \n\t\t\t "cl", \n\t\t\t "co", \n\t\t\t "cr", \n\t\t\t "cw", \n\t\t\t "do", \n\t\t\t "<ORGANIZATION>", \n\t\t\t "gt", \n\t\t\t "gy", \n\t\t\t "hn", \n\t\t\t "jm", \n\t\t\t "ky", \n\t\t\t "lc", \n\t\t\t "mx", \n\t\t\t "ni", \n\t\t\t "pa", \n\t\t\t "py", \n\t\t\t "pe", \n\t\t\t "pn", \n\t\t\t "sv", \n\t\t\t "sx", \n\t\t\t "tt", \n\t\t\t "uy", \n\t\t\t "vg", \n\t\t\t "ve"\n\t\t\t ]\n\t\t\t }}\n\t\t\t ] \n\t\t\t}\n\t\t},\n\t\t// Stage 2\n\t\t{\n\t\t\t$group: {\n\t\t\t_id: {entityType: "$entityType", country: "$country" }, count: { $sum: 1 }\n\t\t\t}\n\t\t},\n\n\t]\n);\n\n\nRetrieving counts from HUB (<US_DRIVER_LICENSE> filters)Query\<URL>tCollection("entityHistory").aggregate(\n // Pipeline\n [\n // Stage 1\n {\n $match: {\n "$and" : [\n {"status" : "ACTIVE"},\n {"country" : {\n "$in" : [\n "ai", <ORGANIZATION> "an", \n "ag", <ORGANIZATION> "ar", <ORGANIZATION> "aw",\n "bs",\n "bb",\n "bz",\n "bm",\n "bo",\n "br",\n "cl",\n "co",\n "cr",\n "cw",\n "do",\n "ec",\n "gt",\n "gy",\n "hn",\n "jm",\n "ky",\n "lc",\n "mx",\n "ni",\n "pa",\n "py",\n "pe",\n "pn",\n "sv",\n "sx",\n "tt",\n "uy",\n "vg",\n "ve"\n ]\n }},\n {\n "<URL>osswalks" : {\n "$elemMatch" : {\n "type" : {\n "$in" : [\n "configuration/sources/OK",\n "configuration/sources/CRMMI",\n "configuration/sources/Reltio" \n ]\n },\n "deleteDate" : {\n "$exists" : false\n }\n }\n }\n }\n ] \n }\n },<ORGANIZATION> Stage 2\n {\n $<ORGANIZATION>: {\n "market": \n {"$switch": {\n branches: [\n { case: {"$in" : [ "$country", ["ag","ai","aw","bb","bs","cr","do","gt","hn","jm","lc","ni","pa","sv","tt","vg","cw","sx" ]]}, then: "ac" },\n { case: {"$in" : [ "$country", ["uy" ]]}, then: "ar" }\n ],\n default: "$country"\n } <ORGANIZATION> }\n }\n },<ORGANIZATION> Stage 3\n {\n $group: {\n _id: {entityType: "$entityType", market: "$market" }, count: { $sum: 1 }\n }\n },\n \n ]\n);\n\n\n\n"
|
||
},
|
||
{
|
||
"title": "RawData:",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Restore raw entity data",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Restore+raw+entity+data",
|
||
"content": "The following SOP describes how to restore raw entity <URL>eps:Login to UIGo to HUB Admin → Restore Raw Data → Restore entitiesFill in the filters a) Source environment - restore data from other environment (restore QA on DEV), default value will restore data from currently logged environment b) Entity type - restore data only for selected entity types - requires at least one selected c) Countries - restore data only for selected countries d) Sources - restore data only for selected sources e) Restore entities created after - only entities created after this date will be restored Click the execute buttonValidate the results in Kibana <ORGANIZATION> Calls <PERSON>"
|
||
},
|
||
{
|
||
"title": "Restore raw relation data",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/Restore+raw+relation+data",
|
||
"content": "Steps:Login to UIGo to HUB Admin → Restore Raw Data → Restore relationsFill in the filters a) Source environment - restore data from other environment (restore QA on DEV), default value will restore data from currently logged environment b) Countries - restore data only for selected countries c) Sources - restore data only for selected sources d) Relation types - restore data only for selected relation type e) Restore relations created after - only relations created after this date will be restored Click the execute buttonValidate the results in Kibana <ORGANIZATION> Calls <PERSON>"
|
||
},
|
||
{
|
||
"title": "Reconciliation:",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "How to Start the Reconciliation Process",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/How+to+Start+the+Reconciliation+Process",
|
||
"content": "This procedure describes the reconciliation process between <ORGANIZATION> and <PERSON>. The result of this process is the Entities and Relations events generated for the HUB internal <PERSON> topics. 0. Check if the entityHistory and entityRelations contains the following indexes:entityHistory <URL>eateIndex({country: -1}, {background: true, name: "idx_country"}); <URL>eateIndex({sources: -1}, {background: true, name: "idx_sources"}); <URL>eateIndex({entityType: -1}, {background: true, name: "idx_entityType"}); <ORGANIZATION>: -1}, {background: true, name: "idx_status"}); <URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"}); <URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"}); <URL>eateIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_v_asc"}); <URL>eateIndex({"<URL>osswalks.type": 1}, {background: true, name: "idx_crosswalks_t_asc"});entityRelations <URL>eateIndex({country: -1}, {background: true, name: "idx_country"}); <ORGANIZATION>: -1}, {background: true, name: "idx_sources"}); <URL>eateIndex({entityType: -1}, {background: true, name: "idx_relationType"}); <URL>eateIndex({status: -1}, {background: true, name: "idx_status"}); <URL>eateIndex({creationDate: -1}, {background: true, name: "idx_creationDate"}); <URL>eateIndex({lastModificationDate: -1}, {background: true, name: "idx_lastModificationDate"}); <URL>eateIndex({startObjectId: -1}, {background: true, name: "idx_startObjectId"}); <URL>eateIndex({endObjectId: -1}, {background: true, name: "idx_endObjectId"}); <URL>tCollection("entityRelations").createIndex({"<URL>lue": 1}, {background: true, name: "idx_crosswalks_asc"});Export Reltio DataTODOImport <ORGANIZATION> to Mongo:Check the following required variables in the mdm-reltio-handler-env/inventory/prod/group_vars/mongo/all.ymlGBL PROD Example:mongo_install_dir: /app/mongohub_db_reltio_user: "mdm_hub"hub_db_reltio_●●●●●●●●●●●●● secret_hub_db_reltio_●●●●●●●●●●●●hub_db_admin_user: adminhub_db_admin_●●●●●●●●●●●●● secret_hub_db_admin_●●●●●●●●●●●●hub_db_name: reltio#COMPENSATION EVENTS VARIABLES:MONGO_URL: "<IP_ADDRESS>:27017"reltio_entities_export_url_name: <URL>reltio_entities_export_file_name: "fw2ztf8k3jpdffl_14-21_entities_bbf5" # THE SAME AS FILE NAME FROM URLreltio_entities_export_date_timestamp_ms: "<US_BANK_NUMBER>" # RETIO EXPORT DATEreltio_entities_export_LAST_date_timestamp_ms: "<DATE_TIME>" # RETIO LAST EXPORT DATE. Do not SET when you want to do the reconciliation on all entitiesreltio_relations_export_url_name: <URL>reltio_relations_export_file_name: "fw2ztf8k3jpdffl_14-21_relations_afa6" # THE SAME AS FILE NAME FROM <PERSON>: "<US_BANK_NUMBER>" # RETIO EXPORT DATEreltio_relations_export_LAST_date_timestamp_ms: "<DATE_TIME>" # RETIO LAST EXPORT DATE. Do not SET when you want to do the reconciliation on all entitiesKAFKA_BOOTSTRAP_SERVERS: "<IP_ADDRESS>:9094,<IP_ADDRESS>:9094,<IP_ADDRESS>:9094"kafka_import_events_user: "hub_prod"kafka_import_events_●●●●●●●●●●●●● secret_kafka_import_events_●●●●●●●●●●●●kafka_import_events_truststore_●●●●●●●●●●●●● secret_kafka_import_events_truststore_●●●●●●●●●●●●internal_reltio_events_topic: "prod-internal-reltio-events"internal_reltio_relations_topic: "prod-internal-reltio-relations-events"reconciliate_entities: True # set To False when you want to do the reconciliation only for relationsreconciliate_relations: True #set To False when you want to do the reconciliation only for entitiesFor <NRP> PROD Set additional parameters:external_user_id: 25084803external_group_id: <US_DRIVER_LICENSE> the new files set only reltio_entities_export_.* or reltio_relations_export_.* variables. According to the export date time and file <URL>eck PRIMARYCheck which <PERSON> instance is PRIMARY. If the first instance is primary execute ansbile playbooks with --limit mongo1 parameter. Otherwise change --limit attribute to other nodeExecute: ansible-playbook extract_reltio_data.yml -i inventory/prod/inventory --limit <ORGANIZATION>-file=<PERSON> logs Execute: docker logs --tail 1000 mongo_mongoimport_<date> -fWait until container will stop then go to the next <URL>eate indexes on imported collections: <URL>tCollection("fw2ztf8k3jpdffl_15-55_entities_9d83").createIndex({uri: -1}, {background: true, name: "idx_uri"}); <URL>tCollection("fw2ztf8k3jpdffl_15-55_entities_9d83").createIndex({type: -1}, {background: true, name: "idx_type"}); <URL>tCollection("fw2ztf8k3jpdffl_15-55_entities_9d83").createIndex({createdTime: -1}, {background: true, name: "idx_createdTime"}); <URL>tCollection("fw2ztf8k3jpdffl_15-55_entities_9d83").createIndex({updatedTime: -1}, {background: true, name: "idx_updatedTime"}); <URL>tCollection("fw2ztf8k3jpdffl_15-55_entities_9d83").createIndex({"<URL>untry.lookupCode": -1}, {background: true, name: "idx_country"}); <URL>tCollection("fw2ztf8k3jpdffl_15-55_entities_9d83").createIndex({"<URL>lue": -1}, {background: true, name: "idx_crosswalks"}); <URL>tCollection("fw2ztf8k3jpdffl_14-21_relations_afa6").createIndex({uri: -1}, {background: true, name: "idx_uri"}); <URL>tCollection("fw2ztf8k3jpdffl_14-21_relations_afa6").createIndex({updatedTime: -1}, {background: true, name: "idx_updatedTime"}); <URL>tCollection("fw2ztf8k3jpdffl_14-21_relations_afa6").createIndex({"<URL>lue": -1}, {background: true, name: "idx_crosswalks"}); Wait until indexes are buildExecute:docker logs --tail 1000 mongo_mongo_1 -fBased on the imported <ORGANIZATION> data generate missing events:Execute: <ORGANIZATION> generate_compensation_events.yml -i inventory/prod/inventory --limit <ORGANIZATION>-file=<URL>cretWait until the docker containers stop. <ORGANIZATION>: 1h - 1h 30minCheck docker logsVerify the .*_compensation_result collections. Check the number of Events for each type for entities: HCP_CREATED | HCO_CREATED HCP_CHANGED | HCO_CHANGEDHCP_MERGED | HCO_MERGED | HCP_LOST_MERGE | HCO_LOST_MERGEHCP_REMOVED | HCO_REMOVEDCheck the number of Events for each type for relations:RELATIONSHIP_CREATEDRELATIONSHIP_CHANGEDRELATIONSHIP_MERGEDRELATIONSHIP_LOST_MERGERELATIONSHIP_REMOVEDCheck if the count do not contain the anomalies. Verify the problem if exists. Check the logs in the /app/mongo/compensation_events/scripts_entities/.*.out. Check if the logs contain "REPORT AN ERROR TO Reltio" - analyse the problem and report the issue to Reltio. Check the logs in the /app/mongo/compensation_events/scripts_relations/.*.out. Check if the logs contain "REPORT AN ERROR TO Reltio" - analyse the problem and report the issue to Reltio. When all the events are correct generate events to <PERSON> internal topic: Execute: <ORGANIZATION> generate_compensation_events_kafka.yml -i inventory/prod/inventory --limit <ORGANIZATION>-file=<URL>cretVerify the internal kafka topics and docker logs. "
|
||
},
|
||
{
|
||
"title": "Hub Reconciliation Monitoring",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Hub+Reconciliation+Monitoring",
|
||
"content": "Check Reconciliation dashboardCheck reconciliation dashboard for every environmento on every monday. Ensure that set timespan corresponds with time of last reconciliation(friday-sunday):UrlsEMEA PROD Reconciliation dashboardGBL PROD Reconciliation dashboardAMER PROD Reconciliation dashboardGBLUS PROD Reconciliation dashboardAPAC PROD Reconciliation dashboardSTART - the number of entities/relations/mergeTree that the reconciliation started forEND - the number of entities/relations/mergeTree that were fully processed(Calculated checksum and checksum from Reltio export differ)REJECTED - to check the number of entities/relations/mergeTree that were rejected(Calculated checksum and checksum from Reltio export are the same)IssuesENTITIES/RELATION/MERGETREE START/REJECTED/END == 0 → Check reconciliation topics if there were produced and consumed events during <DATE_TIME> → Check airflow dagsENTITIES/RELATION/MERGETREE END > 50k → Check HUB EVENTS dashboard→ Check snowflakeCheck HUB EVENTS dashboardHUB events dashboard describes events that were processed by event publisher and sent to output topics(clients/snowflake)UrlsEMEA PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))GBL PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))AMER PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))GBLUS PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))APAC PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))Aplied filter in kibana <URL>B_RECONCILIATION: trueAppling above filter we receive all reconciliation events that were processed by our streaming channel. Now we need to analyze two cases:comment field == 'No change in data detected (Entity MD5 checksum did not change), ignoring.'Although these events checksums differed during reconciliation calculation, after recalculating checksum in entity-enricher, the events were found to be the same. In that case we should check reltio exportcomment field != 'No change in data detected (Entity MD5 checksum did not change), ignoring.'This situation means that those events are really different and needed to be reconciled. For these entities/relations we send update event to snowflake topic. That's standard process but number of such events shouldn't be to big. If it exceeds 50k then we should analyse what have changed in snowflake(Check snowflake) and check if everything is <URL>ease check events 5 HCPs, 5 HCOs and 5 relations from different time periods. Eg, <DATE_TIME> of reconciliation, the middle of reconciliation and <DATE_TIME> of <URL>eck reltio exportWe should download Reltio export used during reconciliation from <ORGANIZATION> bucket. We can check archivisation path in hub_reconciliation_v2_* dags configuration:<URL>r AMER PROD: <ORGANIZATION>/prod/inbound/hub/hub_reconciliation/entities/archive/Check snowflakeWe should compare the last event to the previous one and see if there are any problems. We can use similar query:\nselect * from <URL>B_KAFKA_DATA where record_metadata:key='entities/GOyJxoA' ORDER BY record_metadata:CreateTime desc limit 10;\nIf there is only one rekord in snowflake HUB_KAFKA_DATA this means that retention time has passed and we do not have data any data to compare to. In this case we can check object in reltio. Unfortunately Reltio doesn't keep all changes(eg. <PERSON> changes) so checking in reltio doesn't always provide <URL>eck object in reltioUnfortunately Reltio doesn't keep all changes(eg. <PERSON> changes) so checking in reltio doesn't always provide explanation what has changed. This solution should be used as a last <URL> compare objects in reltio we need to performr Reltio api requests with time parameter.Time parameter allows you to get the object in the state it was in at selected timeSteps:Find object in <LOCATION> last update date Perform Reltio api request without time parameter\ncurl --location --request GET <URL> \\\n--header 'Authorization: Bearer 357b69a4-4709-43b8-95df-06<MEDICAL_LICENSE>f'\nPerform Reltio api request with time parameter\ncurl --location --request GET <URL> \\\n--header 'Authorization: Bearer 357b69a4-4709-43b8-95df-06<MEDICAL_LICENSE>f'\nCompare resultsCheck reconciliations topicsCheck if new events showed up on reconciliation topic on <DATE_TIME> run and if those events were consumed:EMEA PROD: <URL> PROD: <URL> PROD: <URL> PROD: <URL> PROD: <URL> there were no events generated during <DATE_TIME> then please check airflow dags.If events were generated but not processed the please check <PERSON> reconciliation service <URL>eck airflow dags If there is any issue please verify corresponding airflow dags. None of subsequent stages should be failed:<URL> reconciliation check should be finished with short raport posted on teams chatEnvEntities <ORGANIZATION> ENDSummmary(OK/NOK)CommentEMEA PRODGBL PRODAMER PRODGBLUS PRODAPAC PRODCheck Reconciliation dashboardCheck reconciliation dashboard for every environmento on every monday. Ensure that set timespan corresponds with time of last reconciliation(friday-sunday):UrlsEMEA PROD Reconciliation dashboardGBL PROD Reconciliation dashboardAMER PROD Reconciliation dashboardGBLUS PROD Reconciliation dashboardAPAC PROD Reconciliation dashboardSTART - the number of entities/relations/mergeTree that the reconciliation started forEND - the number of entities/relations/mergeTree that were fully processed(Calculated checksum and checksum from Reltio export differ)REJECTED - to check the number of entities/relations/mergeTree that were rejected(Calculated checksum and checksum from Reltio export are the same)IssuesENTITIES/RELATION/MERGETREE START/REJECTED/END == 0 → Check reconciliation topics if there were produced and consumed events during <DATE_TIME> → Check airflow dagsENTITIES/RELATION/MERGETREE END > 50k → Check HUB EVENTS dashboard→ Check snowflakeCheck HUB EVENTS dashboardHUB events dashboard describes events that were processed by event publisher and sent to output topics(clients/snowflake)UrlsEMEA PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))GBL PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))AMER PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))GBLUS PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))APAC PROD: <URL>(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-4d,to:now))Aplied filter in kibana <URL>B_RECONCILIATION: trueAppling above filter we receive all reconciliation events that were processed by our streaming channel. Now we need to analyze two cases:comment field == 'No change in data detected (Entity MD5 checksum did not change), ignoring.'Although these events checksums differed during reconciliation calculation, after recalculating checksum in entity-enricher, the events were found to be the same. In that case we should check reltio exportcomment field != 'No change in data detected (Entity MD5 checksum did not change), ignoring.'This situation means that those events are really different and needed to be reconciled. For these entities/relations we send update event to snowflake topic. That's standard process but number of such events shouldn't be to big. If it exceeds 50k then we should analyse what have changed in snowflake(Check snowflake) and check if everything is <URL>ease check events 5 HCPs, 5 HCOs and 5 relations from different time periods. Eg, <DATE_TIME> of reconciliation, the middle of reconciliation and <DATE_TIME> of <URL>eck reltio exportWe should download Reltio export used during reconciliation from <ORGANIZATION> bucket. We can check archivisation path in hub_reconciliation_v2_* dags configuration:<URL>r AMER PROD: <ORGANIZATION>/prod/inbound/hub/hub_reconciliation/entities/archive/Check snowflakeWe should compare the last event to the previous one and see if there are any problems. We can use similar query:\nselect * from <URL>B_KAFKA_DATA where record_metadata:key='entities/GOyJxoA' ORDER BY record_metadata:CreateTime desc limit 10;\nIf there is only one rekord in snowflake HUB_KAFKA_DATA this means that retention time has passed and we do not have data any data to compare to. In this case we can check object in reltio. Unfortunately Reltio doesn't keep all changes(eg. <PERSON> changes) so checking in reltio doesn't always provide <URL>eck object in reltioUnfortunately Reltio doesn't keep all changes(eg. <PERSON> changes) so checking in reltio doesn't always provide explanation what has changed. This solution should be used as a last <URL> compare objects in reltio we need to performr Reltio api requests with time parameter.Time parameter allows you to get the object in the state it was in at selected timeSteps:Find object in <LOCATION> last update date Perform Reltio api request without time parameter\ncurl --location --request GET <URL> \\\n--header 'Authorization: Bearer 357b69a4-4709-43b8-95df-06<MEDICAL_LICENSE>f'\nPerform Reltio api request with time parameter\ncurl --location --request GET <URL> \\\n--header 'Authorization: Bearer 357b69a4-4709-43b8-95df-06<MEDICAL_LICENSE>f'\nCompare resultsCheck reconciliations topicsCheck if new events showed up on reconciliation topic on <DATE_TIME> run and if those events were consumed:EMEA PROD: <URL> PROD: <URL> PROD: <URL> PROD: <URL> PROD: <URL> there were no events generated during <DATE_TIME> then please check airflow dags.If events were generated but not processed the please check <PERSON> reconciliation service <URL>eck airflow dags If there is any issue please verify corresponding airflow dags. None of subsequent stages should be failed:<URL> reconciliation check should be finished with short raport posted on teams chatEnvEntities <ORGANIZATION> ENDSummmary(OK/NOK)CommentEMEA PRODGBL PRODAMER PRODGBLUS PRODAPAC PROD"
|
||
},
|
||
{
|
||
"title": "Verifying Reconciliation Results",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Verifying+Reconciliation+Results",
|
||
"content": "Run reconciliation dag in airflow for given entities, relations, merge-treeGBLUS DEV - <URL>:8080/airflow/tree?dag_id=hub_reconciliation_v2_gblus_devGBLUS QA - <URL>:8080/airflow/tree?dag_id=hub_reconciliation_v2_gblus_qaGBLUS STAGE - <URL>:8080/airflow/tree?dag_id=hub_reconciliation_v2_gblus_stageAfter reconciliation is finished go to kibana to make verification (<URL>:5601/app/kibana#)Go to Discover dashboard and choose from dropdown list appropriate filter: docker.<env>switch to <PERSON> the correct time rangechoose the correct index docker.<env>Add following custom filters tag is depending on environment, it can <URL>m-hub-reconciliation-servicedata.logger_name, choose if you want to check reconciliation type:<URL>conciliationMergeLogic for mergeTree <URL>conciliationLogic - for entities/relationsTo check only entities in the search box write entities to select only one object type (using <ORGANIZATION> type)To check only relations in the search box write relation to select only one object type (using <ORGANIZATION> type)<URL>ssage is START - to check the number of entities/relations/mergeTree that the reconciliation started <URL>ssage is END - to check the number of entities/relations/mergeTree that were fully <URL>ssage is REJECTED - to check the number of entities/relations/mergeTree that were rejectedchoose the appropriate time of reconciliation processingDifferences verification between export and mongofind URI of the object to verify in kibanacheck the Event Publisher dashboard for this uri, if the Reconciliation process detected this as a difference (END) and in the Publisher dasbhaord there is a comment "No change in data detected (Entity MD5 checksum did not change), ignoring." it means something is wrong and you can compare the Reltio export entity with <PERSON> <URL> export from <ORGANIZATION> (us/<env>/inbound/hub/hub_reconciliation/<object_type>/archive)find the JSON in the part_ files - "zgrep "entities/<id>" part-00*"save the JSON to the file that will be passed to the <URL>oovy script - file format:[json,json]process exported object using <URL>oovy from docker and save the objectModify the script:add <PERSON> filteredEntity = <URL>lter to the reconciliation event output so you can check the whole JSON in the output filechange to the <URL>end(uri + "|" + newLine + "\\n")check the file for reference and use this <URL>oovyScript RUN:Run with the following parameters: D:\\docs\\EMEA\\Reconciliation_PROCESS\\entities\\part_01020222.txt entities FULL COMPANYCustID 1 <URL>:8443/prod/gw bhWpathentities/relations/merge_treeFULL - to get full JSON compare MD5this is from the <ORGANIZATION> config - hub_reconciliation_<URL>nOvAttrToIncludemanager <ORGANIZATION> file is in the - D:\\opt\\kafka_utils\\dataexport object with the same uri from mongo db using simple json formatcompare those two export using some compare tool, but before reformat those jsonsUse <ORGANIZATION> compare two JSON files function"
|
||
},
|
||
{
|
||
"title": "Snowflake:",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "How to fix issue in Reltio Parser with lookup typos",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/How+to+fix+issue+in+Reltio+Parser+with+lookup+typos",
|
||
"content": "This procedure shows how to manage typos in lookup codes that can resolve to the same alias in <ORGANIZATION>, producing errors in Reltio Configuration ParserGo to ReltioConfigurations collection in MongoDBFind configurations with typo that you want to fix (one by one or with filters)Using Edit Document option, open each affected configuration and find attribute with wrong lookupCodeFix typos and save changesExample with screenshotsIn this example we fix added white symbol at the end of "DCRType" lookup code on <ORGANIZATION>. We go to this environment:Find our configurations:Check them for possible typo:Fix it in each affected configuration and save. This ensures that next parsing will be successfull."
|
||
},
|
||
{
|
||
"title": "SSL Certificates:",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Generating a CSR",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Generating+a+CSR",
|
||
"content": "Go to the configuration repository (mdm-hub-env-config).Find the expiring certificate.<LOCATION> <ORGANIZATION> mdm-hub-env-config/ssl_certs/prod_us/certs/<URL>y Certificate should be in ssl_certs/{{ env }}/certs/{{ url }}.pemFor example: ssl_certs/prod/certs/<URL>mWe will generate our new certificate from the existing private key. Private key is in the same directory as certificate, ending with .key <URL>py it to some temporary directory and decrypt:\nanuskp@CF-<US_DRIVER_LICENSE>:/mnt/c/Users/panu/gitrep/mdm-hub-env-config/ssl_certs/prod/certs$ ls <ORGANIZATION> 32\n-rwxrwxrwx 1 anuskp anuskp <DATE_TIME> <URL>y\n-rwxrwxrwx 1 anuskp anuskp 24459 <DATE_TIME> 15:05 <URL>m\nanuskp@CF-<US_DRIVER_LICENSE>:/mnt/c/Users/panu/gitrep/mdm-hub-env-config/ssl_certs/prod/certs$ cp <ORGANIZATION>/panu/gitrep/mdm-hub-env-config/ssl_certs/prod/certs$ cd ~/temp\nanuskp@CF-<US_DRIVER_LICENSE>:~/temp$ ansible-vault decrypt ./<URL>y --vault-password-file=~/ap\nDecryption successful\nContents of this file are confidential. Do not share it with anyone outside of your <URL>nerate a <ORGANIZATION> from the private key:CSR Value GuidlinesDuring last Certificate request we received below <ORGANIZATION> guidlines:Common Name: Needs to have <ORGANIZATION>: No specific requirement - optional <URL>anization: COMPANY, Inc NOT COMPANY [OR] COMPANY Inc [OR] COMPANY Inc.Locality: City or Location must be spelled correctly. No abbreviations allowedState: Must use full name of <ORGANIZATION> or Province, no abbreviations allowedCountry: <LOCATION> (Always use 2 char. Country code)Key Size: at least 2048 is recommended.\nanuskp@CF-<US_DRIVER_LICENSE>:~/temp$ openssl req -new -key <LOCATION> -out <URL>.csr\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left <ORGANIZATION> (2 letter code) [AU]:US\nState or Province Name (full name) [Some-State]:Connecticut\nLocality Name (eg, city) []:Groton\nOrganization Name (eg, company) [Internet <ORGANIZATION> Pty Ltd]:COMPANY, Inc\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []:<URL>\nEmail Address []:<EMAIL_ADDRESS>\n\nPlease enter the following 'extra' <LOCATION> be sent with your certificate request\nA challenge password []:\nAn optional company name []:\nanuskp@CF-<US_DRIVER_LICENSE>:~/temp$ ls <ORGANIZATION> 16\n-rw-r--r-- 1 anuskp anuskp <DATE_TIME> 15:58 <URL>.csr\n-rw------- 1 anuskp anuskp <DATE_TIME> 15:52 <URL>y\nAll information provided should be exactly the same as existing certificate's. <PERSON> should be set to support DL:<PERSON> - existing guideKeystores/<PERSON> should be in ssl_certs/{{ env }}/ssl/<URL>ystore.jksFor example: ssl_certs/prod/ssl/<URL>ystore.jksGo to some temporary directory and generate new Keystore:\nanuskp@CF-<US_DRIVER_LICENSE>:~/temp$ keytool -genkeypair -alias <URL> -keyalg <LOCATION> -keysize 2048 -keystore <URL>ystore.jks -dname "CN = <URL>, O = COMPANY"\nEnter keystore <a href=<URL>>●●●●●●●●●●●●●●●●●●</a> new password:\nEnter key password for <<URL><PERSON>(RETURN if same as keystore password):\n\nWarning:\nThe JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore <URL>ystore.jks -destkeystore <URL>ystore.jks -deststoretype pkcs12".\nKey password should be the same as keystore password. After the certificate has been switched, remember to save the new keystore password in inventory/{{ env }}/group_vars/<PERSON>/<URL> the -dname param insert the same parameters as existing certificate'<URL>nerate CSR from the keystore:\nanuskp@CF-<US_DRIVER_LICENSE>:~/temp$ keytool -certreq -alias <URL> -file <URL>.csr -keystore <URL>ystore.jks\nEnter keystore <a href=<URL>>●●●●●●●●●●●●●●●●●●●</a>\nThe JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore <URL>ystore.jks -destkeystore <URL>ystore.jks -deststoretype pkcs12".\nanuskp@CF-<US_DRIVER_LICENSE>:~/temp$ ls -l\ntotal 8\n-rw-r--r-- 1 anuskp anuskp <DATE_TIME> 16:11 <URL>.csr\n-rw-r--r-- 1 anuskp anuskp <DATE_TIME> 16:07 <URL>ystore.jks\nEFKEvery Elasticsearch node may have its own certificate:ssl_certs/prod/efk/esnode1/<URL>.cerssl_certs/prod/efk/esnode2/<URL>.cerssl_certs/prod/efk/esnode3/<URL>.cerThere is only one certificate for <PERSON>:ssl_certs/prod/efk/kibana/<URL>.cerGenerating CSRs from existing .key files is exactly the same as for <LOCATION>. Remember to set parameters ("O", "L", "CN") exactly the same as existing certificate's."
|
||
},
|
||
{
|
||
"title": "Requesting a new certificate",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Requesting+a+new+certificate",
|
||
"content": "Go to <URL> Search for Digital Certificates and click the first and only position found:COMPANY-issued certificatesCheck the COMPANY SSL Certificate - Internal Only <URL>py-paste your CSR (How to generate <ORGANIZATION>?) into the first <URL>o the second window, copy-paste Subject Alternative Names from existing certificate:Put support <ORGANIZATION> (PROD support DL for Production certificates) and your own email in the third windowSet Would you like to submit an additional <ORGANIZATION> request? - NoClick Submit and wait for an email with the certificateEntrust-issued certificatesCheck the <ORGANIZATION> certificate checkbox and click the first link:You will be redirected to the <ORGANIZATION> portal. Check if renewing an existing certificate works. If it doesn't, follow below steps:Check Request a new certificate (SSL/TLS) and Submit:Choose Multi-Domain <ORGANIZATION>-paste your <ORGANIZATION> into the text field on the right. Make sure all details are <URL>st Subject Alternative Names from existing certificate:Skip the OPTIONS page (it should be empty).On last page, fill in <ORGANIZATION> details. TRIPLE-CHECK EVERYTHING and click <URL>PORTANT: COMPANY email server filters out <ORGANIZATION> emails sent to DLs. Do not put only your DL in the Additional Emails field.Wait for the email with new certificate from <ORGANIZATION>."
|
||
},
|
||
{
|
||
"title": "Rotating EFK certificates",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Rotating+EFK+certificates",
|
||
"content": "<ORGANIZATION> instance (non-prod clusters)Go to <ORGANIZATION> config directory on host. For example:/app/efk/elasticsearch/config - <LOCATION> DEV (<URL>)/apps/efk/elasticsearch/config - GBL DEV (<URL>)\n[mdm@euw1z1dl039 config]$ ls <ORGANIZATION> 48\n-rw-rw-r-- 1 mdm 7000 <DATE_TIME> <URL>m\n-rw------- 1 <PERSON> <DATE_TIME> <URL>m\n-rw------- 1 <PERSON> 1765 Jul 27 <DATE_TIME> <URL>m\n-rw-rw---- 1 <PERSON> 199 Mar 30 <DATE_TIME> <URL>ystore\n-rw------- 1 <PERSON> <DATE_TIME> elasticsearch.yml\n-rw------- 1 <PERSON> <DATE_TIME><DATE_TIME> <URL>m\n-rw------- 1 <PERSON> <DATE_TIME><DATE_TIME> <URL>m\n-rw------- 1 <PERSON> 3320 Mar 30 <DATE_TIME> jvm.options\n-rw------- 1 mdm docker 10899 Mar <DATE_TIME> <URL>perties\n-rw------- 1 <PERSON> <DATE_TIME> <URL>m\nCheck the elasticsearch.yml config file. By default, <URL>m should contain the certificate and <ORGANIZATION> should contain private key.If you have generated new <ORGANIZATION> based on existing private key, you only need to update the <URL>m file:\n[mdm@euw1z1dl039 config]$ vi <URL>m\nRemove all file contents and copy-paste the new certificate. Save the <URL> restart the container and make sure it's working and not throwing errors in the logs:\n[mdm@euw1z1dl039 config]$ docker restart elasticsearch\nelasticsearch\n[mdm@euw1z1dl039 config]$ docker logs --tail 100 -f elasticsearch\nLog into <PERSON> and check that dashboards are correctly displaying <URL>ustered (production clusters)On every <ORGANIZATION> node go to the <ORGANIZATION> config directory and replace <URL>m certificate file, as shown in 1a.Once done, restart all <ORGANIZATION> instances. Check logs. All instances should throw the following error in logs:\n[2022-02-10T10:53:19,770][ERROR][<URL>ckendRegistry ] [prod-gbl-data-2] Not yet initialized (you may need to run <ORGANIZATION><URL>ckendRegistry ] [prod-gbl-data-2] Not yet initialized (you may need to run sgadmin)\nNow, run the following command on all hosts in <ORGANIZATION> cluster:\ndocker exec elasticsearch bash -c "export <ORGANIZATION>/share/elasticsearch/jdk/ <ORGANIZATION>/share/elasticsearch/plugins/search-guard-7/tools && ./<URL> -cd ../sgconfig/ -h {{ elasticsearch_cluster_network_host }} -cn {{ elasticsearch_cluster_name }} -nhnv -cacert ../../../config/<URL>m -cert ../../../config/<URL>m -key ../../../config/<URL>m"\nwhere:{{ elasticsearch_cluster_network_host }} - instance's name in cluster, check in host_vars, for example (in configuration repository): mdm-hub-env-config/inventory/prod/host_vars/efk1/all.yml{{ elasticsearch_cluster_name }} - cluster name, is the same for all nodes, check in group_vars, for example: mdm-hub-env-config/inventory/prod/group_vars/efk-services/all.ymlSo, on example of <ORGANIZATION> (2 clusters):Run the following on <ORGANIZATION> (<URL>):\n[mdm@euw1z1pl025 config]$ docker exec elasticsearch bash -c "export <ORGANIZATION>/share/elasticsearch/jdk/ <ORGANIZATION>/share/elasticsearch/plugins/search-guard-7/tools && ./<URL> -cd ../sgconfig/ -h <URL> -cn 'elasticsearch-prod-gbl-cluster' -nhnv -cacert ../../../config/<URL>m -cert ../../../config/<URL>m -key ../../../config/<URL>m"\nSearch Guard Admin <US_DRIVER_LICENSE>\nWill connect to <URL>:9300 ... done\nConnected as <NRP>=<URL>,O=COMPANY\nElasticsearch Version: 7.6.2\nSearch Guard Version: 7.6.2-41.0.0\nContacting elasticsearch cluster 'elasticsearch-prod-gbl-cluster' and wait for YELLOW clusterstate ...\nClustername: elasticsearch-prod-gbl-cluster\nClusterstate: YELLOW\nNumber of nodes: 2\nNumber of data nodes: 2\nsearchguard index already exists, so we do not need to create one.\nINFO: searchguard index state is YELLOW, it seems you miss some replicas\nPopulate config from /usr/share/elasticsearch/plugins/search-guard-7/sgconfig\n../sgconfig/sg_action_groups.yml OK\n../sgconfig/sg_internal_users.yml OK\n../sgconfig/sg_roles.yml OK\n../sgconfig/sg_roles_mapping.yml OK\n../sgconfig/sg_config.yml OK\n../sgconfig/<ORGANIZATION> OK\nWill update '_doc/config' with ../sgconfig/sg_config.yml\n SUCC: Configuration for 'config' created or updated\nWill update '_doc/roles' with ../sgconfig/sg_roles.yml\n SUCC: Configuration for 'roles' created or updated\nWill update '_doc/rolesmapping' with ../sgconfig/sg_roles_mapping.yml\n SUCC: Configuration for 'rolesmapping' created or updated\nWill update '_doc/internalusers' with ../sgconfig/sg_internal_users.yml\n SUCC: Configuration for 'internalusers' created or updated\nWill update '_doc/actiongroups' with ../sgconfig/sg_action_groups.yml\n SUCC: Configuration for 'actiongroups' created or updated\nWill update '_doc/tenants' with ../sgconfig/sg_tenants.yml\n SUCC: Configuration for 'tenants' created or updated\nDone with success\nRun the following on <ORGANIZATION> (<URL>):\n[mdm@euw1z2pl024 config]$ docker exec elasticsearch bash -c "export <ORGANIZATION>/share/elasticsearch/jdk/ <ORGANIZATION>/share/elasticsearch/plugins/search-guard-7/tools && ./<URL> -cd ../sgconfig/ -h <URL> -cn 'elasticsearch-prod-gbl-cluster' -nhnv -cacert ../../../config/<URL>m -cert ../../../config/<URL>m -key ../../../config/<URL>m"\nSearch Guard Admin <US_DRIVER_LICENSE>\nWill connect to <URL>:9300 ... done\nConnected as <NRP>=<URL>,O=COMPANY\nElasticsearch Version: 7.6.2\nSearch Guard Version: 7.6.2-41.0.0\nContacting elasticsearch cluster 'elasticsearch-prod-gbl-cluster' and wait for YELLOW clusterstate ...\nClustername: elasticsearch-prod-gbl-cluster\nClusterstate: YELLOW\nNumber of nodes: 2\nNumber of data nodes: 2\nsearchguard index already exists, so we do not need to create one.\nINFO: searchguard index state is YELLOW, it seems you miss some replicas\nPopulate config from /usr/share/elasticsearch/plugins/search-guard-7/sgconfig\n../sgconfig/sg_action_groups.yml OK\n../sgconfig/sg_internal_users.yml OK\n../sgconfig/sg_roles.yml OK\n../sgconfig/sg_roles_mapping.yml OK\n../sgconfig/sg_config.yml OK\n../sgconfig/<ORGANIZATION> OK\nWill update '_doc/config' with ../sgconfig/sg_config.yml\n SUCC: Configuration for 'config' created or updated\nWill update '_doc/roles' with ../sgconfig/sg_roles.yml\n SUCC: Configuration for 'roles' created or updated\nWill update '_doc/rolesmapping' with ../sgconfig/sg_roles_mapping.yml\n SUCC: Configuration for 'rolesmapping' created or updated\nWill update '_doc/internalusers' with ../sgconfig/sg_internal_users.yml\n SUCC: Configuration for 'internalusers' created or updated\nWill update '_doc/actiongroups' with ../sgconfig/sg_action_groups.yml\n SUCC: Configuration for 'actiongroups' created or updated\nWill update '_doc/tenants' with ../sgconfig/sg_tenants.yml\n SUCC: Configuration for 'tenants' created or updated\nDone with success\nCheck the logs. There should be no new errors. Check <PERSON> - whether you can login and view data in <URL><ORGANIZATION> to <PERSON> config directory on host. For example:/app/efk/kibana/config\n[root@amraelp00005781 config]# ls <ORGANIZATION> 12\n-rw-r--r-- 1 mdmihnpr mdmihub <DATE_TIME><DATE_TIME> <URL>t\n-rw-r--r-- 1 mdmihnpr mdmihub <DATE_TIME><DATE_TIME> <ORGANIZATION> 1 mdmihnpr mdmihub 536 Jul 5 <DATE_TIME> kibana.yml\nModify the <URL>t file. Remove its contents and copy-paste new certificate.\n[root@amraelp00005781 config]# vi <URL>t\nDo the same for <URL>y, unless you have generated the <ORGANIZATION> based on the existing private <URL>art the <ORGANIZATION> container and check logs:\n[root@amraelp00005781 config]# docker restart kibana\nkibana\n[root@amraelp00005781 config]# docker logs --tail 100 -f kibana\nWait for <PERSON> to come back up and make sure there are no errors in logs and you can login to web app and view data in <URL>MEMBER TO PUSH NEW CERTIFICATES TO CONFIGURATION REPO"
|
||
},
|
||
{
|
||
"title": "Rotating FLEX Kafka certificates",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<ORGANIZATION>/Rotating+FLEX+Kafka+certificates",
|
||
"content": "Kafka FLEX certificate is the same as for the Kong FLEX1 Email to <PERSON>.If there is a need to rotate <PERSON> certificate on FLEX environment, approval from the business is <URL>: santosh.dube@<URL>Cc: dl-atp_mdmhub_support@<URL>Hi <PERSON>,We created the <ORGANIZATION> ticket in our Jira - <Link to the ticket>The FLEX PROD Kafka certificate is expiring, we need to go through the deployment procedure and replace the certificate on our <PERSON>.We prepared the following deployment procedure – '<doc>’ – added to <URL>uld you please approve this request because we need to trigger this deployment to replace the certificates.Let me know in case of any <URL>gards,Change the certificate:2. Check if CA cert has changed!IMPORTANT! If intermediate certificate changed, it would be required to contact FLEX team to replace it. To: <EMAIL_ADDRESS> santosh.dube@<URL>Dear FLEX team,We are providing new <URL>ustore.jks file which should be changed from your side. The change was forced by the change in policy of providing new certificates and server retirement. Due to the new certificate is signed by the other intermediate CA there is a need to change client <URL>ease treat this as a high priority as the certificate will expire in <DATE_TIME><URL>nd regards,Remember to attach new <URL>uststore.jks file!It is not required to create additional email thread with client if there is a need to change only the certificate. 3. Rotate certificate3.1 create keystoreCreate new keystore with new key-pair. Private key should be in repository under mdm-hub-env-config/ssl_certs/prod_us/certs/<URL>y and certificate should be <URL> → import Key Pair → → PKCS #8 → → and than choose private key and certificates from directories in the <URL>sswords can be found under mdm-hub-env-config/inventory/prod_us/host_vars/<ORGANIZATION>/secret.yml3.2 Rotate certificates on machinesOnce done, log into host and go to /app/kafka/<URL>ck existing <URL>ystore.jks up:\n$ cp <URL>ystore.jks <URL>ystore.jks-backup\nAnd upload the modified <URL>art <PERSON> container and wait for it to come back up:\n$ docker restart kafka_kafka_1\nReplace the keystore and restart <PERSON> container on each node.Wait for <PERSON> to come up and become fully operational before restarting next node. After certificate has been successfully rotated, push modified keystore to the mdm-hub-env-config repository. <ORGANIZATION> and <ORGANIZATION> files are no longer useful and can be disposed <URL>vide the evidence in the email thread:After the replacement evidence file should be sent:"
|
||
},
|
||
{
|
||
"title": "Rotating FLEX Kong certificates",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Rotating+FLEX+Kong+certificates",
|
||
"content": "<PERSON> certificate is the same as for the kongRotating <ORGANIZATION> certificate.If there is a need to rotate <PERSON> certificate on FLEX environment, approval from the business is <URL>: santosh.dube@<URL>Cc: dl-atp_mdmhub_support@<URL>Hi <PERSON>,We created the <ORGANIZATION> ticket in our Jira - <Link to the ticket>The FLEX PROD Kong certificate is expiring, we need to go through the deployment procedure and replace the certificate on our <LOCATION> API gateway.We prepared the following deployment procedure – '<doc>’ – added to <URL>uld you please approve this request because we need to trigger this deployment to replace the certificates.Let me know in case of any <URL>gards,Change the certificate:!IMPORTANT! If intermediate certificate changed, it would be required to contact FLEX team to replace it. To: <EMAIL_ADDRESS> santosh.dube@<URL>Dear FLEX team,We are providing new <URL>ustore.jks file which should be changed from your side. The change was forced by the change in policy of providing new certificates and server retirement. Due to the new certificate is signed by the other intermediate CA there is a need to change client <URL>ease treat this as a high priority as the certificate will expire in <DATE_TIME><URL>nd regards,Remember to attach new <URL>uststore.jks file!It is not required to create additional email thread with client if there is a need to change only the certificate. You should receive three certificates from <ORGANIZATION>: Server Certificate and Intermediate (PBACA <US_DRIVER_LICENSE>) or Intermediate and Root. Open the Server Certificate in the text editor:Copy all received certificates into a chain in the following sequence:Server CertificateIntermediateRoot:Go to main directory with command line and <ORGANIZATION> installedMake sure you are on master branch and have newest changes fetchedgit checkout mastergit pullComment out all sections in mdm-hub-env-config\\inventory\\prod_us\\group_vars\\kong\\all.yml except “kong_certificates”Comment out all sections in mdm-hub-env-config\\roles\\update_kong_api\\tasks\\main.yml except “Add Certificates”partExecute ansible playbook(Limit it to only one <LOCATION> host in the cluster)$ ansible-playbook update_kong_api.yml -i inventory/prod_us/inventory --vault-password-file=/home/karol/password --limit kong1Verify if server is responding with correct certificate openssl s_client -connect <ORGANIZATION> </dev/nullopenssl s_client -connect <URL>:8443 </dev/null openssl s_client -connect <URL>:8443</dev/null openssl s_client -connect <URL>:8443</dev/nullProvide the evidence in the email thread:After the replacement evidence file should be sent:"
|
||
},
|
||
{
|
||
"title": "<PERSON> certificates",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Rotating+Kafka+certificates",
|
||
"content": "After receiving signed SSL certificate, place it in the same mdm-hub-env-config repo directory as existing <PERSON> keystore. For example:ssl_certs/prod/ssl/[<URL>ystore.jks] - for Global PRODAdd the certificate to keystore, using the command:\n$ keytool -importcert -alias <URL> -file <URL>.cer -keystore <URL>ystore.jks\nImportant: use the same alias as existing certificate in this keystore, to overwrite itOnce done, log into host and go to /app/kafka/<URL>ck existing <URL>ystore.jks up:\n$ cp <URL>ystore.jks <URL>ystore.jks-backup\nAnd upload the modified <URL>art <PERSON> container and wait for it to come back up:\n$ docker restart kafka_kafka_1\nIf there are multiple <PERSON> instances (Production), replace the keystore and restart <PERSON> container on each node. Wait for <PERSON> to come up and become fully operational before restarting next node. You can check node availability using, for example, <URL>ter certificate has been successfully rotated, push modified keystore to the mdm-hub-env-config repository. <ORGANIZATION> and <ORGANIZATION> files are no longer useful and can be disposed of."
|
||
},
|
||
{
|
||
"title": "<LOCATION> certificate",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/Rotating+Kong+certificate",
|
||
"content": "You should receive three certificates from <ORGANIZATION>: Server Certificate and Intermediate (PBACA <US_DRIVER_LICENSE>) or Intermediate and Root. Open the Server Certificate in the text editor:Copy all received certificates into a chain in the following sequence:Server CertificateIntermediateRoot:Save the file as {hostname}.pem - for example <URL>m and switch it in configuration repository:mdm-hub-env-config/ssl_certs/prod/certs/*Go to appropriate <LOCATION> group_vars:mdm-hub-env-config/inventory/prod/group_vars/kong_v1/kong.ymlMake sure all "create_or_update" flags are set to "False":Go down to #CERTIFICATES and switch the "create_or_update" flag. Path to the .pem file should not have changed - if you chose a different filename, adjust it here:Run the update_kong_api_v1.yml playbook. Limit it to only one <LOCATION> host in the cluster. After it has finished, switch the "create_or_update" flag back to "False" and push new certificate to the repository.$ <ORGANIZATION>-playbook update_kong_api_v1.yml -i inventory/prod/inventory --vault-password-file=~/ap --limit kong_v1_01Check all SNIs on all <LOCATION> instances using s_client:$ openssl s_client -servername <URL> -connect <URL>:8443$ openssl s_client -servername <URL> -connect <URL>:8443$ openssl s_client -servername <URL> -connect <URL>:8443$ openssl s_client -servername <URL> -connect <URL>:8443..."
|
||
},
|
||
{
|
||
"title": "Hub upgrade procedures and calendar",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Hub+upgrade+procedures+and+calendar",
|
||
"content": "Backend components upgrade policyMajor upgrade once a yearPatch upgrades every quarterUpgrade tableComponentcurrent <ORGANIZATION> patch releaseplanned patch upgrade datenewest stable releaseplanned major upgrade dateNotesPrometheus2.53.4 (monitoring host)<DATE_TIME>--2.53.4-\n MR-10396\n -\n Getting issue details...\n STATUS\n kube-prometheus-stack61.7.22025-05--70.1.0-\n MR-9578\n -\n Getting issue details...\n STATUS\n Airflow2.7.22023-112.7.3-2.10.52025 <US_DRIVER_LICENSE>\n MR-10437\n -\n Getting issue details...\n STATUS\n Monstache6.7.<US_DRIVER_LICENSE>-05--<DATE_TIME>-\n MR-10437\n -\n Getting issue details...\n STATUS\n Kong Gateway3.4.22024-<DATE_TIME> Ingress Controller3.2.<PHONE_NUMBER>.2.4-3.4.42025 Q3Kong external proxy3.3.12023-10--3.9.02025 Q3OpenJDK - AdoptOpenJDK11.0.14.1_12022(?)11.0.27_62025 Q2Temurin 17.0.15+6-LTS2025 Q3Jenkins2.462.32024-10--2.504.12025 Q3All versions newer than 2.462.3 require <ORGANIZATION> 17Consul1.16.22023-111.16.6-1.21.02025 <US_DRIVER_LICENSE>\n MR-10437\n -\n Getting issue details...\n STATUS\n Elasticsearch8.11.42024-02--9.0.12025 Q4Fluentd1.16.52024-051.16.8-1.<US_DRIVER_LICENSE> Q4Replace with Fluent Bit instead?Fluent Bit2.2.32025-02--4.0.12025 Q4Apache Kafka3.7.<PHONE_NUMBER>.7.22025 <US_DRIVER_LICENSE>.0.02026 Q1AKHQ0.23.<PHONE_NUMBER>.25.12026 Q1MongoDB6.0.<US_DRIVER_LICENSE>-04--8.0.82026 <US_DRIVER_LICENSE>\n MR-10399\n -\n Getting issue details...\n STATUS\n "
|
||
},
|
||
{
|
||
"title": "Airflow upgrade procedure",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Airflow+upgrade+procedure",
|
||
"content": "<ORGANIZATION> used by <ORGANIZATION> is maintained by Apache: <URL> To deploy airflow we are using official airflow helm chart: <URL> changelog for changes that could alter behaviour/usage in new version and plan configuration adjustments to make it work <URL> base images are mirrored to COMPANY <URL>neric procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade <ORGANIZATION> version upgradeApply changes in mdm-hub-inbound-services:Change airflow airflowVersion and defaultAirflowTagtag to updated version in:<URL> airflow docker base image version in:<URL> Apply other changes to helm chart if necessary (Prerequisite step 1)Apply configuration changes in mdm-hub-cluster-env:Apply needed changes to configuration if necessary (Prerequisite step 1)<URL> and deploy changes with new <URL>rify if the component is working properly:Check if component startedGo to the <ORGANIZATION> main page and verify if everything is working as expected (no log in issues, no errors, can see dags etc.)Check component logs for errorsCheck if all dags are working properlyFor dags with periodic schedule - wait for them to be triggered For dags executed from <ORGANIZATION> - execute all of them with test data <ORGANIZATION> helm template upgradeDeploy current airflow version on local environment from mdm-hub-inboud-servicesGet current airflow helm manifest and save it to airflow_manifest_1.yaml\nhelm get manifest -n airflow airflow > airflow_manifest_1.yaml\nPull new airflow chart version from chart repostiroy and replace in aiflow/charts directory. Copy old chart version to some temporary directory outside repository for comparison\nhelm pull apache-airflow/airflow --version "1.13.0"\nmv <URL>z ${repo_dir}/mdm-hub-inbound-services/helm/airflow/src/main/helm/charts/<URL>z\nExtract old helm chart and check MODIFICATION_LIST file for modifiactions applied on helm chart. Apply needed changes to new airflow chart.\ntar -xzf airflow-1.10.0_<URL>z\ncat airflow/MODIFICATION_LIST\nPerform helm upgrade with new helm chart version. Verify if airflow is working as expectedGet current airflow manifest and save it to airflow_manifest_2.yaml\nhelm get manifest -n airflow airflow > airflow_manifest_2.yaml\nCompare generated manifests and verify if there are breaking changesFix all issuesPast upgradesUpgrade Airflow x → yDescription:Procedure:Reference tickets:Reference PR's:<URL>"
|
||
},
|
||
{
|
||
"title": "AKHQ upgrade procedure",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/AKHQ+upgrade+procedure",
|
||
"content": "IntroductionAKHQ used in <ORGANIZATION> is mantained by tchiotludo/<URL>erequisiteVerify changelog for changes that could alter behaviour/usage in new version and plan configuration adjustments to make it work correctly.Ensure base images are mirrored to COMPANY <URL>neric procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade StepsApply changes in mdm-hub-inbound-services:Change akhq image tag to updated version in:mdm-hub-inbound-services/helm/<PERSON>/chart/src/main/helm/templates/akhq/akhq.yamlmdm-hub-inbound-services/helm/<PERSON>/chart/src/main/helm/values.yamlApply other changes to helm chart if necessary (Prerequisite step 1)Apply configuration changes in mdm-hub-cluster-env:Change akhq image tag to updated version in mdm-hub-cluster-env/amer/sandbox/namespaces/amer-backend/values.yaml (example for SBX)Apply other changes to configuration if necessary (Prerequisite step 1)Build and deploy changes with new <URL>rify if the component is working properly:Check if component startedGo to the <ORGANIZATION> dashboard and verify if everything is working as expected (no log in issues, no errors, can see topics, consumergroups etc.)Check component logs for errorsPast upgradesUpgrade AKHQ 0.14.1 → 0.24.0 (0.23.0)Description:This update required upgrade to version 0.24.0. After checking changes between previous version and target version it become obvious that there are required additional changes to helm <URL>ere were detected errors during upgrade verification for which no fix was found in version 0.24.0. That resulted in changing version to 0.23.0, where the issue didn't <URL>cedure:Pushed base image to COMPANY artifactory: <URL> inbound-services changes:changed image tag to 0.24.0 in:akhq.yamlvalues.yamlApplied necessary changes to akhq-cm.yaml (based of changelog requirements):added <PERSON> topic-data property under ui-options propertyadjusted security configurationChanged image tag to 0.24.0 in cluster-env values.yamlBuild inbound-services changes and deployed them with new configuration on SBX <URL>rified if component is working:component startedthere was an error present after logging <LOCATION> was an exception thrown in logs:<URL>llPointerException: <DATE_TIME> <URL>nvertValueToWireFormat(AvroWireFormatConverter.java:39)\n\tat <URL>Record(RecordRepository.java:454)\n\tat <URL>mbda$getLastRecord$3(RecordRepository.java:109)\n\tat <URL>se/<URL>rEach(Unknown Source)\n\tat <URL>tLastRecord(RecordRepository.java:107)\n\tat <URL><LOCATION> Source)\n\tat <URL>ntext.AbstractExecutableMethodsDefinition$<URL>voke(AbstractExecutableMethodsDefinition.java:351)\n\tat <URL><ORGANIZATION>.AbstractRouteMatch.execute(AbstractRouteMatch.java:303)\n\tat <URL>uteMatch.execute(RouteMatch.java:111)\n\tat <URL>rverRequestContext.with(ServerRequestContext.java:103)\n\tat <URL>mbda$executeRoute$14(RouteExecutor.java:656)\n\tat <URL>bscribe(FluxDeferContextual.java:49)\n\tat <URL>bscribe(InternalFluxOperator.java:62)\n\tat <URL>lisher.FluxSubscribeOn$<URL>(FluxSubscribeOn.java:194)\n\tat <URL>mbda$null$0(ReactorInstrumentation.java:62)\n\tat <URL>ll(WorkerTask.java:84)\n\tat <URL><PERSON> <URL>cordCallable(CompositeTimer.java:68)\n\tat <URL>mbda$wrap$1(Timer.java:171)\n\tat <URL>ll(InvocationInstrumenterWrappedCallable.java:53)\n\tat <URL>se/<URL>(Unknown <LOCATION> Source)\n\tat <URL>se/<URL>readPoolExecutor$<URL>(Unknown Source)\n\tat <URL>se/<URL>(Unknown Source) \nFound no fix / workaround for this in 0.24.0 version, decided to change version to 0.23.0Applied inbound-services changes:changed image tag to 0.23.0 in:akhq.yamlvalues.yamlChanged image tag to 0.23.0 in cluster-env values.yamlBuild inbound-services changes and deployed them with new configuration on SBX <URL>rified if component is working:component startedno errors present on dashboard, everything is as expectedno errors in logsReference tickets:[MR-6778] Prepare AKHQ upgrade plan to version 0.24.0Reference PR's:[MR-6778] AKHQ upgraded to 0.23.0[MR-6778] SANDBOX: AKHQ version change to 0.23.0"
|
||
},
|
||
{
|
||
"title": "Consul upgrade procedure",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Consul+upgrade+procedure",
|
||
"content": "IntroductionConsul used in <ORGANIZATION> is installed using official Consul <PERSON> chart provided by <URL>erequisiteBefore upgrade verify checklist:Consul - check changelog for deprecationsMDM Hub components and <ORGANIZATION> use REST <ORGANIZATION> and to access <ORGANIZATION> storage - make sure it worksDocker images are mirrored to COMPANY <ORGANIZATION> procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade steps:Upgrade Consul <PERSON> chartUpgrade Consul <PERSON> imagesUpdate this confluence pagePast upgradesUpgrade 1.10.2 → 1.16.2DescriptionThis was the only Consul upgrade so far.upgrade Consul chart to version 1.2.2upgrade Consul server to 1.16.2ProcedureUpgrade Consul <PERSON> repo and find the newest Consul chart and app version\nhelm repo add hashicorp <URL>\nhelm search repo hashicorp/consul\nIn helm/consul/src/main/helm/Chart.yaml uncomment repository and change version numberUpdate dependencies\ncd helm/consul/src/main/helm\nhelm dependency update\nComment repository line back in Chart.yamlCommit only the updated charts/consul-*.tgz and Chart.yaml filesUpgrade Consul <PERSON> imagePull official images from <ORGANIZATION> images with <URL> prefixPush images to ArtifactoryUpdate cluster-env configuration (backend <ORGANIZATION> image tags to uploaded in previous stepDeploy updated backendEnsure cluster is in a running stateReference tickets\n MR-7210\n -\n Getting issue details...\n STATUS\n \n <DATE_TIME> issue details...\n STATUS\n \n MR-7212\n -\n Getting issue details...\n STATUS\n Reference PRsPull Request #1395: [MR-7210] Upgrade Consul - Harmony-Bitbucket (<URL>)Pull Request #1108: [MR-7210] Upgrade Consul - amer-sandbox - Harmony-Bitbucket (<URL>)Pull Request #1153: [MR-7210] Upgrade Consul - amer-nprod, emea-nprod, <ORGANIZATION>-nprod - Harmony-Bitbucket (<URL>)Pull Request #1176: [MR-7212] Upgrade Consul - amer-prod, emea-prod, <ORGANIZATION>-prod - Harmony-Bitbucket (<URL>)"
|
||
},
|
||
{
|
||
"title": "Elastic stack upgrade",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Elastic+stack+upgrade",
|
||
"content": "Introduction:ECK stack used in <ORGANIZATION> is installed using official <ORGANIZATION> stack installation procedures provided by <ORGANIZATION> <URL>erequisiteBefore upgrade verify checklist:<ORGANIZATION> - check changelog for deprecation<URL> - check changelog for deprecations<URL> - check changelog for deprecations<URL> - check changelog for deprecations<URL> jar agents <URL> images are mirrored to COMPANY <ORGANIZATION> procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade Elastic stack steps:Upgrade Elasticsearch docker imageUpgrade <ORGANIZATION> plugins and dependenciesUpgrade <PERSON> docker imageUpgrade <ORGANIZATION> docker imageUpgrade <ORGANIZATION> drivers and dependenciesUpgrade FleetServer docker imageUpgrade <ORGANIZATION> jar agentsUpdate this confluence pagePast upgradesECK operator installationUninstall olm ECK operator Scale down the number of olm-operator pods to 0Delete eck olm Subscription with orphan propagationkubectl delete subscription my-elastic-cloud-eck --cascade=orphan\nDelete all <PERSON> with orphan propagationkubectl delete installplans install-* --cascade=orphan\nDelete all "eck" ClusterServiceVersions with orphan propagationfor ns in $(kubectl get namespaces -o name | cut -c 11-);\ndo\necho $ns;\nkubectl delete csv elastic-cloud-eck.<US_DRIVER_LICENSE>.10.0 -n $ns --cascade=orphan;\ndone\nScale down elastic-operator to 0Delete eck operator objects:<ORGANIZATION> cm in $(kubectl get cm | awk '{if ($1 ~ "elastic-") print $1}');\ndo\n echo $cm;\n kubectl delete cm $cm --cascade=orphan;\ndone\nServiceAccountkubectl delete <ORGANIZATION> elastic-operator --cascade=orphan\nElastic operator certkubectl delete ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● --cascade=orphan\nClusterRole - everything with "elastic" in name besides elastic-agentfor cr in $(kubectl get clusterrole | grep -v elastic-agent | awk '{if ($1 ~ "elastic") print $1}')\ndo\n echo $cr;\n kubectl delete clusterrole $cr --cascade=orphan;\ndone\nServicekubectl delete service elastic-operator-service --cascade=orphan\nDeployment eck-operatorkubectl delete deployment <PERSON>-operator standaloneAdjust labels and annotaions of <ORGANIZATION> in $(kubectl get crds --no-headers -o custom-columns=NAME:<URL> | grep <ORGANIZATION>); do\n echo "changing $<ORGANIZATION>"; \n kubectl annotate crd "$CRD" <URL>"operators";\n kubectl annotate crd "$<ORGANIZATION>" <ORGANIZATION> kubectl label crd "$<ORGANIZATION>" <URL> eck-operator without OLM by deploying operators version <DATE_TIME>-project-boldmove-SNAPSHOT or newerUpgrade <ORGANIZATION> stackProcedure:Upgrade Elastic stack docker imagesPull from <ORGANIZATION> and push the newest possible docker tags image of all Elastic stack components besides <ORGANIZATION> agentDownload from maver repo and push to artifactory maven gallery the newest jar of <ORGANIZATION> agentChange version tag in inbound-services repo of all <PERSON> stack componentsRepeat steps 3 - 5 in the following order:<ORGANIZATION> - wait until all nodes are updated (shards relocation lasts long)KibanaLogstash and <ORGANIZATION> cluster-env configuration (backend namespaces)Change <PERSON> image <ORGANIZATION> updated backend with <PERSON> jobEnsure backend component is working fineDeploy mdmhub to update <ORGANIZATION> agentsEnsure mdmhub components are working fineReference tickets: \n MR-8152\n -\n Getting issue details...\n STATUS\n "
|
||
},
|
||
{
|
||
"title": "Fluent Bit (Fluentbit) upgrade procedure",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Fluent+Bit+%28Fluentbit%29+upgrade+procedure",
|
||
"content": "Introduction:FluentBit used in <ORGANIZATION> is installed using official Fleuntbit installtion proc provided by <ORGANIZATION><URL>erequisiteBefore upgrade verify checklist:FluentBit - check changelog for <ORGANIZATION> images are mirrored to COMPANY <ORGANIZATION> procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade steps:Upgrade Fluentbit Docker imagesUpdate this confluence pagePast upgradesUpgrade <DATE_TIME> → 2.2.2Description:This was the only <ORGANIZATION> upgrade so far.upgrade Fluentbit docker image to version 2.2.2Procedure:Upgrade Fluentbit docker imagePull from <ORGANIZATION> and push the newest possible docker tag image of fluentbit-debug and fluentbit to <URL>ange version tag in inbound-services repo of <ORGANIZATION> and kubevents fluentbit.Update cluster-env configuration (envs and backend namespaces)Change <PERSON> image tags to uploaded in previous stepDeploy updated backend for <ORGANIZATION> and <PERSON> for components logs with <PERSON> jobsEnsure kubevents and <PERSON> logs are being stored in <ORGANIZATION>, check <URL>ference tickets: \n MR-8094\n -\n Getting issue details...\n STATUS\n \n MR-8245\n -\n Getting issue details...\n STATUS\n \n MR-8344\n -\n Getting issue details...\n STATUS\n Reference PRs:<URL>"
|
||
},
|
||
{
|
||
"title": "<PERSON> upgrade procedure",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Fluentd+upgrade+procedure",
|
||
"content": "Introduction:<PERSON> used in <ORGANIZATION> is installed using official <PERSON> installation procedures provided by <ORGANIZATION><URL>erequisiteBefore upgrade verify checklist:Fluentd - check changelog for deprecations<URL> - no go issue (currently we are using the highest elasticsearch-api 7.x.x version)Docker images are mirrored to COMPANY <ORGANIZATION> procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade steps:Upgrade Fluentd Docker imagesUpgrade <PERSON> plugins and dependenciesUpdate this confluence pagePast upgradesUpgrade fluentd-kubernetes-daemonset - <US_DRIVER_LICENSE>.12-debian-elasticsearch7-1 → <US_DRIVER_LICENSE>.16.2-debian-elasticsearch7-1.1Procedure:Change docker image base to the newest version in env-config repo, (ex. "fluentd-kubernetes-daemonset:<US_DRIVER_LICENSE>.16.2-debian-elasticsearch7-1.1")Build image with docker build job : <URL> cluster-env repo configuration with the new image tag for fluentd (ex. 981)Test on SBXAfter checking fluentd output logs, the following actions were needed to be taken:upgrading of the following plugins and dependencies:"ruby-kafka", "~> 1.5""fluent-plugin-kafka", "0.19.2"defining new mappings in "backend" and "others" datastreams: "properties": {\n <URL>: {\n "dynamic": true,\n "type": "object",\n "enabled": false\n }<ORGANIZATION> ansible playbook with index template update rollover "backend" and "others" datastreams after mappings changeReference tickets: \n MR-8093\n -\n Getting issue details...\n STATUS\n \n MR-8097\n -\n Getting issue details...\n STATUS\n \n MR-8343\n -\n Getting issue details...\n STATUS\n "
|
||
},
|
||
{
|
||
"title": "<PERSON> clients upgrade procedure",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Kafka+clients+upgrade+procedure",
|
||
"content": "IntroductionThere are two tools that we need to take under consideration when upgrade'ing <PERSON> clients, both are managed by <ORGANIZATION> Inc.:cp-kcat (DockerHub: confluentinc/cp-kcat, GitHub: confluentinc/kafkacat-images)cp-kafka (DockerHub: confluentinc/cp-kafka, GitHub: confluentinc/kafka-images)PrerequisiteBefore proceeding with upgrade verify checklist:Verify changelogs for changes that could alter behaviour/usage of updated tools and decide the steps to take to ensure the components will work correctly after update (eg. check if there is a need for adjustments of wrapper scripts present on our images).Ensure base images are mirrored to COMPANY <URL>neric procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade Stepscp-kcat:Change image tag in mdm-hub-inbound-services/helm/kafka/kcat/docker/<URL> and deploy <URL>rify if container is working <URL>rify if all wrapper scripts included in mdm-hub-inbound-services/helm/kafka/kcat/docker/bin are running correctly.cp-kafka:Change image tag in mdm-hub-inbound-services/helm/<PERSON>/kafka-client/docker/<URL> and deploy <URL>rify if container is working <URL>rify if all wrapper scripts included in mdm-hub-inbound-services/helm/<PERSON>/kafka-client/docker/bin are running <URL>st upgradesUpgrade cp-kcat 7.30→ 7.5.2 and cp-kafka 6.1.0→7.5.2Description:This update require to update both cp-kcat and cp-kafka to version 7.5.2 to eliminate <DATE_TIME> <URL>cedure:Pushed base images for updated components to COMPANY artifactory:confluentinc/cp-kcat:7.5.2 → <URL> → <URL> images versions in <LOCATION>:cp-kcat 7.30→ 7.5.2cp-kafka 6.1.0→7.5.2Built changes and deployed on <ORGANIZATION> <URL>rified that both containers started successfully.Executed into each container and tested if all wrapper scripts present at /opt/app/bin are running and returning expected <URL>ployed changes to other <URL>ference tickets:[MR-7910] Update Confluentinc cp-kcat and cp-kafka to 7.5.2Reference PR's:[MR-7910] Updated kcat and cp-kafka base images to <US_DRIVER_LICENSE>.5.2."
|
||
},
|
||
{
|
||
"title": "<PERSON> upgrade procedure",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Kafka+upgrade+procedure",
|
||
"content": "IntroductionKafka used in <ORGANIZATION> is installed, configured and upgraded using Strimzi Kafka OperatorPrerequisiteBefore upgrade verify checklist:There must be no critical errors for the environment Alerts MonitoringKafka Cluster Overview must show 0 for Under-Replicated PartitionsUnder-Min-ISR PartitionsOffline PartitionsUnclean Leader ElectionPreferred Replica Imbalance >0 is not a blocker, but a high number may indicate an issue with <PERSON> <URL>neric procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade steps:Verify if <PERSON> Operator supports <PERSON> version you want to install (Supported versions - <URL>)if not, upgrade <ORGANIZATION> chart firstChange <PERSON> version in environment configurationUpdate this confluence pagePast upgradesUpgrade 3.6.1 → <ORGANIZATION> and <ORGANIZATION> to <ORGANIZATION> migrationDescriptionThis upgrade was part of the \n MR-8004\n -\n Getting issue details...\n <NRP> Epic.upgrade <ORGANIZATION> operator chart to version 0.41.0upgrade <PERSON> to version 3.7.0apply strimzi CRDs (important!)ZooKeeper to <ORGANIZATION> migrationProcedureUpgrade <ORGANIZATION> operator to the version supporting <PERSON> 3.6.1Add <ORGANIZATION> repo and find the newest Consul chart and app version\nhelm repo add strimzi <URL> search repo strimzi/strimzi-kafka-operator\nIn helm/operators/src/main/helm/Chart.yaml uncomment <ORGANIZATION> repository and change version numberUpdate dependencies\ncd helm/operators/src/main/helm\nhelm dependency update\nComment repository line back in Chart.yamlCommit only the updated charts/strimzi-kafka-operator-helm-*.tgz and Chart.yaml filesUpgrade default <PERSON> to 3.7.0 in mdm-hub-inbound-servicesUpgrade <PERSON> per environmentDeploy updated operators with the new <ORGANIZATION> cluster-env configuration (backend namespace)Deploy updated backendEnsure cluster is in a running stateReference tickets\n MR-9004\n -\n Getting issue details...\n STATUS\n \n MR-9019\n -\n Getting issue details...\n STATUS\n Reference PRs[MR-9019] Upgrade stimzi kafka operator to version <PERSON> and <PERSON> to version 3.7.0Upgrade 3.5.1 → 3.6.1DescriptionThis upgrade was part of the \n MR-8004\n -\n Getting issue details...\n <NRP> Epic.upgrade <ORGANIZATION> operator chart to version 0.39.0upgrade <PERSON> to version 3.6.1change in the entityOperator configration was requiredchange in <PERSON> configuration was requiredProcedureUpgrade <ORGANIZATION> operator to the version supporting <PERSON> 3.6.1Add <ORGANIZATION> repo and find the newest Consul chart and app version\nhelm repo add strimzi <URL> search repo strimzi/strimzi-kafka-operator\nIn helm/operators/src/main/helm/Chart.yaml uncomment <ORGANIZATION> repository and change version numberUpdate dependencies\ncd helm/operators/src/main/helm\nhelm dependency update\nComment repository line back in Chart.yamlCommit only the updated charts/strimzi-kafka-operator-helm-*.tgz and Chart.yaml filesUpgrade default <PERSON> to 3.6.1 in mdm-hub-inbound-serviceschange <PERSON> config and wait for the operator to apply changes:remove <URL>rsion: "3.5"remove <URL>rsion: "3.5"set <URL>rsion: 3.6.1Upgrade <PERSON> per environmentDeploy updated operators with the new <ORGANIZATION> strimziUpdate cluster-env configuration (backend namespace)Deploy updated backendEnsure cluster is in a running stateReference tickets\n MR-7408\n -\n Getting issue details...\n STATUS\n \n MR-7900\n -\n Getting issue details...\n STATUS\n \n MR-8146\n -\n Getting issue details...\n STATUS\n Reference PRs[MR-7900] Upgrade stimzi kafka operator to version 0.39.0 and <PERSON> to 3.6.1[MR-7900] Kafka - enable template change for entityOperator[MR-7900] Upgrade Kafka to <ORGANIZATION> to <ORGANIZATION>] Remove forbidden and ignored <PERSON> connect configuration - nprods[MR-8146] Prepare for <PERSON> upgrade on prod[MR-8146] Upgrade Kafka to 3.6.1 - prods"
|
||
},
|
||
{
|
||
"title": "<LOCATION> upgrade procedure",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Kong+upgrade+procedure",
|
||
"content": "<ORGANIZATION> used in <ORGANIZATION> is mantained by <LOCATION><URL>erequisiteVerify changelog for changes that could alter behaviour/usage in new version and plan configuration adjustments to make it work correctly.Ensure base images are mirrored to COMPANY <URL>neric ProcedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade StepsChange image tag to updated version in mdm-hub-env-config/docker/kong3/<ORGANIZATION> and push docker image based on updated <URL>ange the tag of <LOCATION> image in mdm-inbound-services/helm/kong/src/main/helm/values.yaml to the one that was build in Step <URL>ange the tag of <LOCATION> image in mdm-cluster-env/helm/amer/sandbox/namespaces/kong/values.yaml to the one that was build in Step <URL> changes from Step 3 and deploy with configuration added in Step <URL>rify update:Check if component <URL>eck if <ORGANIZATION> requests are accepted and return correct responsesCheck if <LOCATION>-mdm-external-oauth-plugin works properly (try <ORGANIZATION> authorization and then some <ORGANIZATION> calls to verify it)Past upgradesUpgrade <LOCATION> 3.4.2Description:This update required update to version 3.4.2 to fix the CVE-2023-4911 vulnerability on <ORGANIZATION> and <URL>cedure:Changed image tag to 3.4.2 in mdm-hub-env-config/docker/kong3/DockerfileBuilt and pushed docker image to <URL>anged the tag of <LOCATION> image in mdm-inbound-services/helm/kong/src/main/helm/values.yaml to the one that was build in Step 2 (951).Changed the tag of <LOCATION> image in mdm-cluster-env/helm/{tenant}/{nprod|prod}/namespaces/<LOCATION>/values.yaml to the one that was build in Step 2 (951).Built changes from Step 3 and deploy with configuration added in Step <URL>rified update:Component started.<ORGANIZATION> requests were accepted and returned correct responseskong-mdm-external-oauth-plugin worked properly (checked <ORGANIZATION> and some <ORGANIZATION> requests)Reference Tickets:[MR-7599] Update kong to 3.4.2Reference PR's:[MR-7599] Updated kong to 3.4.2[MR-7599] Updated <LOCATION> to 3.4.2"
|
||
},
|
||
{
|
||
"title": "<PERSON> upgrade procedure",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Mongo+upgrade+procedure",
|
||
"content": "Introduction:Mongo used in <ORGANIZATION> is managed by mongodb-kubernetes-operator. When updating mongo, we must think about all components at the same <URL><PERSON> operator bring additional images to orchestrate and managed mongo cluster PrerequisiteBefore migration verify checklist:<ORGANIZATION> operator is compatible with target mongo <URL>ponents (mongo clients) are compatible with target mongo version (e.g: java mongo driver)Affected components:MDM services Monstache Airflow DAGs images are mirrored to COMPANY artifactoryGeneric procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade steps:Verify if <ORGANIZATION> operator documentation provides specific for planned upgrade Upgrade Mongo OperatorUpdate cluster-env configuration (operators namespace)Deploy new OperatorEnsure if cluster is in running state Upgrade Mongo Update cluster-env configuration (backend namespace) Deploy updated backend NOTE: step a and b can be execute multiple times (first we upgrade mongo images then we updated featureCompatibilityVersion parameter) Ensure if cluster is in running state Update confluence pagePast upgradesUpgrade 4.2.6 → 6.0.9Description:This upgrade required multiple intermediate upgrades without upgrading <ORGANIZATION> Procedure:Upgrade image 4.2.6 → <DATE_TIME> by updating cluster-env configuration (backend namespace)Deploy updated backendEnsure if cluster is in running state Upgrade featureCompatibilityVersion to 4.4 by updating cluster-env configuration (backend namespace)Deploy updated backendEnsure if cluster is in running state Upgrade image <DATE_TIME> → 5.0.20 by updating cluster-env configuration (backend namespace)Deploy updated backendEnsure if cluster is in running state Upgrade featureCompatibilityVersion to 5.0 by updating cluster-env configuration (backend namespace)Deploy updated backendEnsure if cluster is in running state Upgrade image 5.0.20 → 6.0.9 by updating cluster-env configuration (backend namespace)Deploy updated backendEnsure if cluster is in running state Upgrade featureCompatibilityVersion to 6.0 by updating cluster-env configuration (backend namespace)Deploy updated backendEnsure if cluster is in running state Reference tickets: [MR-7662] Deploy on PRODs - Jira (<URL>)Reference PRs:Pull Request #1230: MR-7662 <ORGANIZATION> mongo upgrade 4.4 - Harmony-Bitbucket (<URL>)Pull Request #1231: MR-7662 <ORGANIZATION> mongo upgrade 4.4 featureCompatibilityVersion 4.4 - Harmony-Bitbucket (<URL>)Pull Request #1232: MR-7662 <ORGANIZATION> mongo upgrade 5.0 - Harmony-Bitbucket (<URL>)Pull Request #1233: MR-7662 <ORGANIZATION> mongo upgrade 5.0 featureCompatibilityVersion 5.0 - Harmony-Bitbucket (<URL>)Pull Request #1234: MR-7662 <ORGANIZATION> mongo upgrade 6.0 - Harmony-Bitbucket (<URL>)Pull Request #1235: MR-7662 <ORGANIZATION> mongo upgrade 6.0 featureCompatibilityVersion 6.0 - Harmony-Bitbucket (<URL>)Upgrade Operator 0.7.3 → 0.8.2 Description:This upgrade was required to enable mongo horizon feature. Previous version of operator was unstable and sometimes failed to complete reconciliation of mongo cluster. <PERSON> itself was no updated in this upgradeProcedure:Update cluster-env configuration (operators namespace)Deploy new OperatorEnsure if cluster is in running state Reference tickets: [MR-5502] Mongo Horizons: Deploy changes to PRODs - Jira (<URL>)Reference PRs:Pull Request #1281: MR-5502 <ORGANIZATION> mongo operator upgrade - Harmony-Bitbucket (<URL>)Upgrade 6.0.9 → 6.0.11Description:This upgrade required only upgrading mongo image. At this time there was no newer version of <ORGANIZATION> operator. Procedure:Update cluster-env configuration (backend namespace)Deploy updated backendEnsure if cluster is in running state Reference tickets: [MR-8029] NPROD: Upgrade mongo to 6.0.11 - Jira (<URL>)[MR-8076] PRODs: Upgrade mongo to 6.0.11 - Jira (<URL>)Reference PRs:Pull Request #1356: MR-8029 mongo upgrade to <ORGANIZATION> (<URL>)Pull Request #1357: MR-8029 mongo upgrade to <ORGANIZATION> (<URL>)Pull Request #1358: MR-8029 mongo upgrade to <ORGANIZATION> (<URL>)Pull Request #1383: <LOCATION> mongo upgrade to <ORGANIZATION> (<URL>)Pull Request #1382: <LOCATION> mongo upgrade to <ORGANIZATION> (<URL>)Pull Request #1384: <LOCATION> mongo upgrade to <ORGANIZATION> (<URL>)Upgrade 6.0.11 → 6.0.21DescriptionThis was planned periodic upgrade. During this upgrade also kubernetes mongo operator was upgraded from 0.8.2 to 0.12.0. To perform this upgrade there was change needed in MongoDBCommunity helm template. We were using users configuration in wrong way - uniqueness constraint on scramCredentialsSecretName field was violated Procedure:Deploy backend with new code version ( changed MongoDBCommunity helm template ) - PR Merge configuration change with mongo operator and mongo version change Deploy operators (<PERSON> is being restarted)Check cluster state - mongo operato, mongo and component logsDeploy backend (<PERSON> is being restarted - upgrade)Check cluster state - mongo operato, mongo and component logsReference tickets\n MR-10399\n -\n Getting issue details...\n STATUS\n Reference PRsCode changeConfig change - <ORGANIZATION> change - <ORGANIZATION> change - <ORGANIZATION> change - <ORGANIZATION> SBXMongoDBCommunity"
|
||
},
|
||
{
|
||
"title": "<PERSON> upgrade procedure",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Monstache+upgrade+procedure",
|
||
"content": "Introduction:Monstache used in <ORGANIZATION> is installed using official <ORGANIZATION> installation procedure provided by <PERSON><URL>erequisiteBefore upgrade verify checklist:Monstache - check changelog for deprecations<URL> images are mirrored to COMPANY <ORGANIZATION> procedureProcedure assumes that upgrade will be executed and tested on the <ORGANIZATION> first.Upgrade steps:Upgrade Monstache Docker imagesUpdate this confluence pagePast upgradesUpgrade 6.7.0 → 6.7.17Description:This was the only <ORGANIZATION> upgrade so far.upgrade <ORGANIZATION> docker image to version 6.7.17Procedure:Upgrade Monstache docker imagePull from <ORGANIZATION> and push the newest possible docker tag image of monstache to <URL>ange version tag in inbound-services repo of monstache.Update cluster-env configuration (envs and backend namespaces)Change <PERSON> image tags to uploaded in previous stepDeploy updated backend with <PERSON> jobEnsure monstache is working fine, check logs on monstache Pod logs <URL>ference tickets: \n MR-8246\n -\n Getting issue details...\n STATUS\n \n MR-8097\n -\n Getting issue details...\n STATUS\n \n MR-8345\n -\n Getting issue details...\n STATUS\n Upgrade <DATE_TIME> → 6.7.21Description:<ORGANIZATION> docker image to version 6.7.21Procedure:<ORGANIZATION> docker imagePull from <ORGANIZATION> and push the newest possible docker tag image of monstache to <URL>ange version tag in inbound-services repo of monstache.Update cluster-env configuration (envs and backend namespaces)Change <PERSON> image tags to uploaded in previous stepDeploy updated backend with <PERSON> jobEnsure monstache is working fine, check logs on monstache Pod logs dir. PASSEDReference tickets: <ORGANIZATION>MR-10486\n -\n Getting issue details...\n STATUS\n \n MR-10493\n -\n Getting issue details...\n STATUS\n \n MR-10494\n -\n Getting issue details...\n STATUS\n "
|
||
},
|
||
{
|
||
"title": "<PERSON> upgrade procedure",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Prometheus+upgrade+procedure",
|
||
"content": "Monitoring hostIntroductionOfficial Prometheus site: <URL> deploy <PERSON> we use official docker image: <URL> CHANGELOG for changes that could alter behaviour/usage in new version and plan configuration adjustments to make it work <URL>rify if other monitoring components are in versions compatible with version to which prometheus is upgraded. List of components to check:ThanosTelegrafSQS ExporterS3 ExporterNode ExporterKarmaGrafanaDNS ExportercAdvisorBlackbox ExporterAlertmanagerEnsure base images are mirrored to COMPANY <URL>neric ProcedureUpgrade stepsApply configuration changes in mdm-hub-cluster-env:Change prometheus image tag to updated version in mdm-hub-cluster-env/ansible/roles/install_monitoring_prometheus/defaults/main.ymlApply other changes to configuration if necessary (Prerequisites step 1)Upgrade dependant monitoring components if necessary (Prerequisites step 2)Install monitoring stack using <ORGANIZATION>-playbook:<ORGANIZATION> install_monitoring_stack.yml -i inventory/monitoring/inventory --vault-password-file=$VAULT_PASSWORD_FILE\nVerify installation: Check if monitoring components are up and runningCheck logsCheck metrics and dashboardsFix all issuesPast UpgradesUpgrade monitoring host Prometheus <US_DRIVER_LICENSE>.30.3 → <US_DRIVER_LICENSE>.53.4Description:This upgrade was a huge change in <ORGANIZATION> version, therefore also <PERSON> had to be updated from <DATE_TIME> to maintain compatibility between those components. Some additional configuration adjustments had to be made on <PERSON> side during this <URL>cedure:Checked prerequisitesVerified that no breaking changes were made made in <PERSON> that would require configuration adjustments on our <URL>rified that alongside <PERSON>, <PERSON> have to be updated to <US_DRIVER_LICENSE>.37.2 to keep compatibilityPushed <PERSON> and <PERSON> to COMPANY <URL>anged <PERSON> tag to <US_DRIVER_LICENSE>.53.4 and <PERSON> tag to <US_DRIVER_LICENSE>.37.2 in mdm-hub-cluster-env/ansible/roles/install_monitoring_prometheus/defaults/main.ymlInstalled monitoring stack using ansible-playbookVerified installation - noticed issues with <PERSON> that couldn't connected to <PERSON> and <ORGANIZATION> StoreMade adjustments in <ORGANIZATION> configuration to fix those issues (See reference PR)Installed monitoring stack using <ORGANIZATION>-playbook againVerified installation - all components, dashboards and metrics were working correctlyUpgrade finished successfullyReference Tickets:[MR-10396] Upgrade Prometheus and <PERSON> on the monitoring hostReference PR's:Pull Request #2435: [MR-10396] Upgraded prometheus to <ORGANIZATION> to <US_DRIVER_LICENSE>.37.2K8s clusterIntroductionTo deploy <PERSON> on k8s clusters we use the following chart: <URL> contains definition of <PERSON> and related crd'<URL>erequisitesCheck which chart version uses <PERSON> in version to which you want to upgrade. Verify Prometheus CHANGELOG and <ORGANIZATION>-stack chart templates and default values for changes that could alter behaviour/usage in new version and plan configuration adjustments to make it work <URL>neric ProcedureUpgrade StepsDownload and unpack <ORGANIZATION>>Replace CRD's:cd <ORGANIZATION> -n monitoring replace -f "*.yaml"Create and build PR with <ORGANIZATION> in mdm-hub-inbound-services/helm/monitoring/src/main/helm/Chart.yamlupdate package version replacing charts/<ORGANIZATION> with charts/<ORGANIZATION> to SBX clusterVerify installation and merge the PRGet the number of metrics and alerts from <ORGANIZATION> and compare them with the number before upgradeVerify if <PERSON> dashboards are working correctlyProceed to <ORGANIZATION> deployments (Verify installation after each of them)Past UpgradesUpgrade monitoring host Prometheus <US_DRIVER_LICENSE>.39.1 → <US_DRIVER_LICENSE>.53.1Description:To perform this upgrade it was necessary to upgrade used helm chart (<ORGANIZATION>-stack) from <US_DRIVER_LICENSE>.7.4 (containing <PERSON>) to <US_DRIVER_LICENSE>.7.2 (containing <PERSON> v.2.53.1)Procedure:Checked prerequisitesVerified that no breaking changes were made made in <PERSON> that would require configuration adjustments on our <URL>rified that <PERSON>-prometheus-stack <US_DRIVER_LICENSE>.7.2 contained <PERSON> <US_DRIVER_LICENSE>.53.1Downloaded and unpacked <URL>zReplaced CRD'sCreated PR with upgraded chart version and replaced old package with <URL>z (See reference PR)Deployed changes to SBX from <ORGANIZATION> (<ORGANIZATION> lost metricsAll alerts <ORGANIZATION> dashboards working correctlyMerged PRReference Tickets:[MR-10398] SBX: Upgrade Prometheus K8sReference PR's:Pull Request #3417: [MR-10398] Upgraded monitoring helm chart version to 61.7.2"
|
||
},
|
||
{
|
||
"title": "Infrastructure",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "How to access <ORGANIZATION> Console",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<PERSON>/How+to+access+AWS+Console",
|
||
"content": "Add new user access to <ORGANIZATION> AccountRequest access to the correct <ORGANIZATION> in the Request Manager<URL> for accessing the <DATE_TIME> Account using the WBS-EUW1-GBICC-ALLENV-RO-SSO role, use the WBS-EUW1-GBICC-ALLENV-RO-SSO_432817204314_PFE-AWS-PROD Security GroupAWS <ORGANIZATION> use this <ORGANIZATION> Console address: <URL> and there select the <ORGANIZATION> you want to use"
|
||
},
|
||
{
|
||
"title": "How to login to hosts with <ORGANIZATION>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/How+to+login+to+hosts+with+SSH",
|
||
"content": "Generate a <ORGANIZATION> key pair - private and publicCopy the public key to the ~/.ssh/authorized_keys file on the host and account you want to useuse ssh command to login, ie. ssh ec2-user@<URL>List the content of the ~/.ssh/authorized_keys file to check which keys are used"
|
||
},
|
||
{
|
||
"title": "How to restart the EC2 instance",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/How+to+restart+the+EC2+instance",
|
||
"content": "Login to <ORGANIZATION> Console (How to access <ORGANIZATION> from the search boxIn the navigation pane, choose <URL>lect the instance and choose Instance state, Reboot <URL>ternatively, select the instance and choose Actions, Manage instance state. In the screen that opens, choose Reboot, and then Change <URL>oose Reboot when prompted for confirmationMore: <URL>"
|
||
},
|
||
{
|
||
"title": "HUB-UI: Timeout issue after authorization",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/HUB-UI%3A+Timeout+issue+after+authorization",
|
||
"content": "Issue description:When accesing HUB-UI site, after successfuly authorizing via <ORGANIZATION>, the timeout may occur when trying to access the <URL>lution:Check if you have valid COMPANY certificates installed in your browser. You can do that by clicking on padlock icon in browser search and checking if the connection is safe:If not, you have to install certificates:Install RootCA-<US_DRIVER_LICENSE>.cer:Double-click on certificateChoose Install CertificateLocal MachineChoose "Place all certificates in the following store" and select store: "Trusted Root Certification Authorities"Click finish to complete the instalation processInstall PBACA-<US_DRIVER_LICENSE>.cer:Double-click on certificateChoose Install CertificateLocal MachineChoose "Automatically select the certificate store based on type of certificate"Click finish to complete the instalation processReboot computerVerify by accessing HUB-UI"
|
||
},
|
||
{
|
||
"title": "Key Auth Not Working on Hosts - Fix",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Key+Auth+Not+Working+on+Hosts+-+Fix",
|
||
"content": "In case you are unable to use <ORGANIZATION> authentication via <ORGANIZATION> key, the cause might be wrong <PERSON> directory <URL>eck /var/log/secure:The "maximum authentication attempts exceeded" error might indicate that his is the <URL>eck the <PERSON> directory with the "-Z" option:$ ls -laZ /home/{user}/.sshOn the screen above is an example of wrong context. Fix it by:$ chcon -R system_u:object_r:usr_t:<US_DRIVER_LICENSE> /home/{user}/.sshVerify the context has changed:"
|
||
},
|
||
{
|
||
"title": "Kubernetes Operations",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Kubernetes+Operations",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Kubernetes upgrades",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Kubernetes+upgrades",
|
||
"content": "IntroductionKubernetes clusters provided by <ORGANIZATION> are upgraded <DATE_TIME>. To make sure it doesn't break <ORGANIZATION>, we've established the process described in this article.<PERSON> upgrade process in the <ORGANIZATION> platformVerify <ORGANIZATION> compatibility with the new K8s versionkube-no-troubleUpgrades are done 1 version up, ie. 1.23 → 1.24, so we need to make sure we've not using any APIs removed in the upgraded <URL> find all objects using deprecated <ORGANIZATION>, run <ORGANIZATION>-no-trouble If there are "Deprecated APIs" listed for the next <PERSON> version, <ORGANIZATION> team must provide <URL> the example, an upgrade from 1.23 to 1.24 doesn't require any work.Upgrade sandbox/non-prod/prod clustersPDKS does a rolling upgrade of all nodes, starting with <ORGANIZATION>, then dynamic (or "flex") nodes, and then the static <URL>sist and <ORGANIZATION> team support during prod upgradesMDM Hub's team presence and assistance are required during prod upgrades. During the agreed upgrade window one designated person must be actively monitoring the upgrade process and react if issues are found."
|
||
},
|
||
{
|
||
"title": "MongoDB backup and restore",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/MongoDB+backup+and+restore",
|
||
"content": "<ORGANIZATION> for MongoDBWe are using <ORGANIZATION> for MongoDB (PBM) - an open-source and distributed solution for consistent backups and restore of production MongoDB clusters. PBM functions used in <ORGANIZATION> are marked in <URL> are backups done in MDM Hub?ArchitectureThe solution was built in 4 partspbm-agent container - each MongoDB pod has been extended by adding a sidecar container - it handles all backup/restore operationsmongodb-pbm-config - k8s job applies pbm configuration stored in a <ORGANIZATION> every deploymentmongodb-pbm-client - k8s deployment provides a pod with ready-to-use pbm command line interfacemongodb-pbm-full-backup - k8s cronjob - runs backup in a configured scheduleCodepbm-agent - helm/mongo/src/main/helm/templates/mongo.yamlmongodb-pbm-config - helm/mongo/src/main/helm/templates/mongodb-pbm-config.yamlmongodb-pbm-client - helm/mongo/src/main/helm/templates/mongodb-pbm-client.yamlmongodb-pbm-full-backup - helm/mongo/src/main/helm/templates/mongodb-pbm-full-backup.yamlConfigurationGeneral rules Full backup every weekendIncremental (Point-in-time recovery) backup every 10 minutesDetailsConfig is stored per environment in mdm-hub-cluster-env project in {env}/prod/namespaces/{env}-backend/values.yaml path, under mongo.pbm key.Where are backups stored?All backups are stored in separate <US_DRIVER_LICENSE> <URL><ORGANIZATION>-prod-mdmhub-backupamrasp202207120808/amer/archive/mongoAPAC Prod - pfe-atp-ap-se1-prod-mdmhub-backuaspasp202207141502/apac/archive/mongoEMEA Prod - pfe-atp-eu-<US_DRIVER_LICENSE>-prod-mdmhub-backupemaasp202207120811/emea/archive/mongoBackupHow to do a manual full backup?Run a pbm backup --wait command in a mongodb-pbm-client podHow to do an incremental backup?You don't have to do anything. If you really need to do an incremental backup, wait for <DATE_TIME> for the next scheduled point-in-time <URL>oreHow to restore DB when it's empty - Disaster Recovery (DR) scenarioPercona configuration is stored in the database itself. If the database is completely removed (EKS cluster, PVCs, or all data from DB), the <ORGANIZATION> agent won't be able to restore the DB from backup. You need at least an empty MongoDB and PBM configuration <URL>ploy <ORGANIZATION> Using <PERSON> JobAn empty database will be createdPercona will be configuredpbm-agent pod will be createdChoose between preferred restore <ORGANIZATION> to restore DB from a full backupShut down all MongoDB clients - <ORGANIZATION> componentsDisable PITR$ pbm config --set pitr.enabled=falseRun pbm list to get a named list of <ORGANIZATION> restore [<backup_name>]Run pbm status to check the current restore statusAfter a successful restore, enable PITR back$ pbm config --set pitr.enabled=trueHow to restore DB from an incremental (Point-in-time Recovery)Shut down all MongoDB clients - <ORGANIZATION> componentsDisable PITR$ pbm config --set pitr.enabled=falseRun pbm list to get an available time range for the PITR restoreRun pbm restore --time=2006-01-02T15:04:05Run pbm status to check the current restore statusAfter a successful restore, enable PITR back$ pbm config --set pitr.enabled=true"
|
||
},
|
||
{
|
||
"title": "Restart service",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Restart+service",
|
||
"content": "To restart MDMHUB service you have to have access to the <ORGANIZATION> console:Find the pod name that you want to restart: kubectl get pods --namespace {{mdmhub env namespace}}raselek@CF-0YVKSY:~/kafka/amer_dev/kafka_client$ kubectl get pods --namespace amer-devNAME READY STATUS RESTARTS <ORGANIZATION>-batch-service-dbbf4486d-snpgc 2/2 Running 0 22hmdmhub-callback-service-55c6dd696d-5bn4h 2/2 Running 0 22hmdmhub-entity-enricher-f9f884f97-cwqqc 2/2 Running 0 22hmdmhub-event-publisher-756b46cfd7-7ccqp 2/2 Running 0 22hmdmhub-mdm-api-router-9b9596f8b-8wqrn 2/2 Running 0 9hmdmhub-mdm-manager-678764db5-fqlzf 2/2 Running 0 9hmdmhub-mdm-reconciliation-service-66b65c7bf8-jhvhv 2/2 Running 0 9hmdmhub-reltio-subscriber-6495fb4878-c8hp5 2/2 Running 0 9h2. Delete the pod that you selected: kubectl delete pod {{selected pod name}} --namespace {{mdmhub env namespace}}raselek@CF-0YVKSY:~/kafka/amer_dev/<ORGANIZATION> kubectl delete pod mdmhub-mdm-reconciliation-service-66b65c7bf8-jhvhv --namespace amer-devpod "mdmhub-mdm-reconciliation-service-66b65c7bf8-jhvhv" deleted3. After above operation you will be able to see newly created pod:raselek@CF-0YVKSY:~/kafka/amer_dev/kafka_client$ kubectl get pods --namespace amer-devNAME READY STATUS RESTARTS <ORGANIZATION>-batch-service-dbbf4486d-snpgc 2/2 Running 0 22hmdmhub-callback-service-55c6dd696d-5bn4h 2/2 Running 0 22hmdmhub-entity-enricher-f9f884f97-cwqqc 2/2 Running 0 22hmdmhub-event-publisher-756b46cfd7-7ccqp 2/2 Running 0 22hmdmhub-mdm-api-router-9b9596f8b-8wqrn 2/2 Running 0 9hmdmhub-mdm-manager-678764db5-fqlzf 2/2 Running 0 9hmdmhub-mdm-reconciliation-service-66b65c7bf8-ns88k 2/2 Running 0 2m32smdmhub-reltio-subscriber-6495fb4878-c8hp5 2/2 Running 0 9hIt's restarted instance."
|
||
},
|
||
{
|
||
"title": "Scaling services",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Scaling+services",
|
||
"content": "To do this action access to the runtime configuration repository is required. You have to modify deployment configuration for selected component - let's assume that it is mdm-reconciliation-service:Modify values.yaml for MDMHUB environment {{region}}/{{cluster class}}/namespaces/{{mdmhub env name}}/values.yaml:components: registry: <URL> deployments: mdm_reconciliation_service: enabled: true replicas: 2 hostAliases: *hostAliases resources: component: requests: memory: "2560Mi" cpu: "200m" limits: memory: "3840Mi" cpu: "4000m" logging: *loggingAnd change the value of the "replicas" parameter. If it doesn't exist you have to add this to the component deployment configuration.2. Commit and push changes,3. Go to <PERSON> job responsible for deploying changes to the selected environment and run the job,4. After deploying check if the configuration has been applied correctly: kubectl get pods --namespace {{mdmhub env name}}:raselek@CF-0YVKSY:~/kafka/amer_dev/kafka_client$ kubectl get pods --namespace amer-devNAME READY STATUS RESTARTS <ORGANIZATION>-batch-service-dbbf4486d-snpgc 2/2 Running 0 22hmdmhub-callback-service-55c6dd696d-5bn4h 2/2 Running 0 22hmdmhub-entity-enricher-f9f884f97-cwqqc 2/2 Running 0 22hmdmhub-event-publisher-756b46cfd7-7ccqp 2/2 Running 0 22hmdmhub-mdm-api-router-9b9596f8b-8wqrn 2/2 Running 0 9hmdmhub-mdm-manager-678764db5-fqlzf 2/2 Running 0 9hmdmhub-mdm-reconciliation-service-66b65c7bf8-ns88k 2/2 Running 0 2m32smdmhub-mdm-reconciliation-service-66b68c7bf8-ndksk 2/2 Running 0 2m32smdmhub-reltio-subscriber-6495fb4878-c8hp5 2/2 Running 0 9hYou will be able to see the desired amount of pods."
|
||
},
|
||
{
|
||
"title": "Stop/Start service",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "To do this action access to the runtime configuration repository is required. Start/Stop service means enable/disable component deployment. You have to modify deployment configuration for selected component - let's assume that it is mdm-reconciliation-service:Modify values.yaml for MDMHUB environment {{region}}/{{cluster class}}/namespaces/{{mdmhub env name}}/values.yaml:components: registry: <URL> deployments: mdm_reconciliation_service: enabled: true hostAliases: *hostAliases resources: component: requests: memory: "2560Mi" cpu: "200m" limits: memory: "3840Mi" cpu: "4000m" logging: *loggingChange the enabled flag to false.2. Commit and push changes,3. Go to <PERSON> job responsible for deploying changes to the selected environment and run the job,4. After deploying check if the configuration has been applied correctly: kubectl get pods --namespace {{mdmhub env name}}raselek@CF-0YVKSY:~/kafka/amer_dev/kafka_client$ kubectl get pods --namespace amer-devNAME READY STATUS RESTARTS <ORGANIZATION>-batch-service-dbbf4486d-snpgc 2/2 Running 0 22hmdmhub-callback-service-55c6dd696d-5bn4h 2/2 Running 0 22hmdmhub-entity-enricher-f9f884f97-cwqqc 2/2 Running 0 22hmdmhub-event-publisher-756b46cfd7-7ccqp 2/2 Running 0 22hmdmhub-mdm-api-router-9b9596f8b-8wqrn 2/2 Running 0 9hmdmhub-mdm-manager-678764db5-fqlzf 2/2 Running 0 9hmdmhub-reltio-subscriber-6495fb4878-c8hp5 2/2 Running 0 9hThere should not be any active pods of the disabled <URL> enable service you have to do the same steps but remember that "enabled" flag should be set to true."
|
||
},
|
||
{
|
||
"title": "Open Traffic from Outside COMPANY to <ORGANIZATION>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Open+Traffic+from+Outside+COMPANY+to+MDM+Hub",
|
||
"content": "EMEA NProdAWS Account ID: 432817204314VPC ID: vpc-004cb58768e3c8459SecurityGroup: sg-04d4116a040a7e1da - MDMHub-kafka-and-api-proxy-external-nprod-sgProxy documentation: <ORGANIZATION> proxyEMEA ProdAWS Account ID: 432817204314VPC ID: vpc-004cb58768e3c8459SecurityGroup: sg-06305fd9d3b0992a6 - MDMHub-kafka-and-api-proxy-external-prod-sgProxy documentation: <ORGANIZATION> proxyEXUS (GBL) ProdAWS Account ID: 432817204314VPC ID: vpc-004cb58768e3c8459SecurityGroup: sg-0cd8ba02f6351f383 - Mdm-reltio-internet-traffic-SGUSno whitelisting"
|
||
},
|
||
{
|
||
"title": "Replace <ORGANIZATION> Keys",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Replace+<US_DRIVER_LICENSE>+Keys",
|
||
"content": "CREATE ticket if there is an issue with KEYs (rotation required - expired)REQUEST:<URL> <ORGANIZATION> FULL SUPPORTHi Team,Our <ORGANIZATION> access key expired - I am receiving - The AWS Access Key Id you provided does not exists in our <URL>Y details:BucketName User name Access key ID Secret access <PERSON> ●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●Could you please regenerate this <ORGANIZATION> key ?Regards,MikolajBITBUCKET REPLACE:inventory/<env>_gblus/group_vars/all/secret.ymlREPLACE and Post replace tasks:REPLACE: 1. decrypt - group_vars/all/secret.yml2. replace on non-prod and prod 3. encrypt and pushPost Replace TASK: NON PROD NEW nonprod <KEY> <SECRET>REDEPLOY 1. Airflow:All <ORGANIZATION> jobs - <URL> (take list from airflow_components variable)- dev: concat_s3_files,merge_unmerge_entities_gblus,hub_reconciliation_v2,lookup_values_export_to_s3,reconciliation_koloneview,reconciliation_snowflake,reconciliation_icue,<LOCATION>,export_merges_from_reltio_to_s3_full,export_merges_from_reltio_to_s3_inc- qa: concat_s3_files,merge_unmerge_entities_gblus,hub_reconciliation_v2,lookup_values_export_to_s3,reconciliation_koloneview,reconciliation_snowflake,reconciliation_icue,<LOCATION>,export_merges_from_reltio_to_s3_full,export_merges_from_reltio_to_s3_inc- stage: merge_unmerge_entities_gblus,hub_reconciliation_v2,lookup_values_export_to_s3,reconciliation_koloneview,reconciliation_snowflake,reconciliation_icue,<LOCATION>,export_merges_from_reltio_to_s3_full,export_merges_from_reltio_to_s3_inc2. FLEX connector to <US_DRIVER_LICENSE> DEV AND <ORGANIZATION> replace in kafka-connect-flex:/app/kafka-connect-flex/<env>/config/<US_DRIVER_LICENSE>-connector-config.json:/app/kafka-connect-flex/<env>/config/<US_DRIVER_LICENSE>-connector-config-update.jsonUpdate on Main(check logs with errors and execute)- curl -X GET http://localhost:8083/connectors/S3SinkConnector/config- curl -X PUT -H "Content-Type: application/json" localhost:8083/connectors/S3SinkConnector/config -d @/etc/kafka/config/<US_DRIVER_LICENSE>-connector-config-update.json- curl <ORGANIZATION> http://localhost:8083/connectors/S3SinkConnector/tasks/0/restart- curl -X POST http://localhost:8083/connectors/S3SinkConnector/restart - curl -X GET http://localhost:8083/connectors/S3SinkConnector/status3. Snowflake:--changeset warecp:LOV_DATA_STG runOnChange:truecreate or replace stage landing.<ORGANIZATION>/dev/outbound/SNOWFLAKE'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT=(TYPE= 'JSON' STRIP_OUTER_ARRAY= true)create or replace stage landing.<ORGANIZATION>/qa/outbound/SNOWFLAKE'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT=(TYPE= 'JSON' STRIP_OUTER_ARRAY= true)create or replace stage landing.<ORGANIZATION>/stage/outbound/SNOWFLAKE'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT=(TYPE= 'JSON' STRIP_OUTER_ARRAY= true)--changeset morawm03:MERGE_TREE_DATA_STG runOnChange:truecreate or replace stage <URL>RGE_TREE_DATA_STG url='<US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762/us/dev/outbound/<LOCATION>>' aws_secret_key='<SECRET>')FILE_FORMAT=(TYPE= 'JSON' STRIP_OUTER_ARRAY= true COMPRESSION= 'GZIP')create or replace stage <URL>RGE_TREE_DATA_STG url='<US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762/us/qa/outbound/SNOWFLAKE_MERGE_TREE'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT=(TYPE= 'JSON' STRIP_OUTER_ARRAY= true COMPRESSION= 'GZIP')create or replace stage <URL>RGE_TREE_DATA_STG url='<US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762/us/<US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762/us/dev/outbound/<LOCATION>/outbound/<LOCATION>>' aws_secret_key='<SECRET>')FILE_FORMAT=(TYPE= 'JSON' STRIP_OUTER_ARRAY= true COMPRESSION= 'GZIP')--changeset warecp:reconcilation_URL runOnChange:truecreate or replace stage <URL>CONCILIATION_DATA_STG url='<US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762/us/dev/inbound/hub/reconciliation/SNOWFLAKE/'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT = ( TYPE = CSV FIELD_DELIMITER = ',' COMPRESSION=NONE )create or replace stage <URL>CONCILIATION_DATA_STG url='<US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762/us/qa/inbound/hub/reconciliation/SNOWFLAKE/'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT = ( TYPE = CSV FIELD_DELIMITER = ',' COMPRESSION=NONE )create or replace stage <URL>CONCILIATION_DATA_STG url='<US_DRIVER_LICENSE>://gblmdmhubnprodamrasp100762/us/stage/inbound/hub/reconciliation/SNOWFLAKE/'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT = ( TYPE = CSV FIELD_DELIMITER = ',' COMPRESSION=NONE )PROD:NEW prod <KEY> <SECRET>REDEPLOY 1. Airflow:All <ORGANIZATION> jobs - <URL> (take list from airflow_components variable)- prod: concat_s3_files,merge_unmerge_entities_gblus,hub_reconciliation_v2,lookup_values_export_to_s3,reconciliation_koloneview,reconciliation_snowflake,reconciliation_icue,export_merges_from_reltio_to_s3_full,export_merges_from_reltio_to_s3_inc Manulay replace connections and variables in <URL>:9110/airflow/home for gblus <ORGANIZATION>. FLEX connector to <ORGANIZATION> replace in kafka-connect-flex (on Master only):/app/kafka-connect-flex/prod/config/<US_DRIVER_LICENSE>-connector-config.json:/app/kafka-connect-flex/prod/config/<US_DRIVER_LICENSE>-connector-config-update.jsonUpdate on Main(check logs with errors and execute)- curl -X GET http://localhost:8083/connectors/S3SinkConnector/config- curl -X PUT -H "Content-Type: application/json" localhost:8083/connectors/S3SinkConnector/config -d @/etc/kafka/config/<US_DRIVER_LICENSE>-connector-config-update.json- curl <ORGANIZATION> http://localhost:8083/connectors/S3SinkConnector/tasks/0/restart- curl -X POST http://localhost:8083/connectors/S3SinkConnector/restart - curl -X GET http://localhost:8083/connectors/S3SinkConnector/status3. Snowflake:--changeset warecp:LOV_DATA_STG runOnChange:truecreate or replace stage landing.<ORGANIZATION>/prod/outbound/SNOWFLAKE'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT=(TYPE= 'JSON' STRIP_OUTER_ARRAY= true)--changeset morawm03:MERGE_TREE_DATA_STG runOnChange:truecreate or replace stage <URL>RGE_TREE_DATA_STG url='<US_DRIVER_LICENSE>://gblmdmhubprodamrasp101478/us/prod/outbound/<LOCATION>>' aws_secret_key='<SECRET>')FILE_FORMAT=(TYPE= 'JSON' STRIP_OUTER_ARRAY= true COMPRESSION= 'GZIP')--changeset warecp:reconcilation_URL runOnChange:truecreate or replace stage <URL>CONCILIATION_DATA_STG url='<US_DRIVER_LICENSE>://gblmdmhubprodamrasp101478/us/prod/inbound/hub/reconciliation/SNOWFLAKE/'credentials=(aws_key_id='<KEY>' aws_secret_key='<SECRET>')FILE_FORMAT = ( TYPE = CSV FIELD_DELIMITER = ',' COMPRESSION=NONE )4. HOST:- replace archiver-serviceson 3 nodes<IP_ADDRESS>/app/archiver/.s3cfg:/app/archiver/config/archiver.env"
|
||
},
|
||
{
|
||
"title": "Resize PV, <ORGANIZATION>, <ORGANIZATION>",
|
||
"<PERSON>": "<PHONE_NUMBER>",
|
||
"pageLink": "/display/GMDM/Resize+PV%2C+LV%2C+FS",
|
||
"content": "\nsudo pvresize /dev/nvme2n1\nsudo lvextend -L +<SIZE_TO_INCREASE>G /dev/mapper/docker-thinpool\nExtention lvm using additional disk.\nsudo pvcreate /dev/nvme3n1 \nsudo <ORGANIZATION> /dev/nvme3n1\nsudo lvm lvextend -l <NRP> /dev/mdm_vg/data\nsudo xfs_growfs -d /dev/mapper/mdm_vg-data\n"
|
||
},
|
||
{
|
||
"title": "Resolve Docker Issues After Instance Restart (Flex US)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "After restarting one of the <ORGANIZATION> instances, issues with service user mdmihpr/mdmihnpr may come <URL>solve them using the following:Change owner of <ORGANIZATION> run]# cd /var/run/[root@amraelp00005781 run]# chown root:mdmihub <URL>ckIncrease VM memoryIf the <ORGANIZATION> is not starting:[root@amraelp00005781 run]# sysctl -w <URL>x_map_count=262144Reset offset on EFK topicsIf there are no logs on <PERSON>, use the Kafka Client to reset offsets on efk topics using the "--to-datetime" option, pointing to <DATE_TIME> <URL>une the <ORGANIZATION> there is a ThinPool Error coming up, use:[root@amraelp00005781 run]# docker system prune -a"
|
||
},
|
||
{
|
||
"title": "Service User ●●●●●●●●●●●●●●●● [<URL>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "Log into the machine via other account with root <URL>r service user mdm (GBL NPROD/PROD):\n$ chage -I -1 -m 0 -M 99999 -E -1 mdm\n"
|
||
},
|
||
{
|
||
"title": "<PERSON>",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/Jenkins",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Proxy on <URL> (fix Hostname issue and timeouts)",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_BANK_NUMBER>",
|
||
"content": "On GBLUS DEV host <URL> (●●●●●●●●●●●●) setup service and route to proxy bitbucket:kong_services: #----------------------DEV--------------------------- - create_or_update: False vars: name: "{{ kong_env }}-bitbucket-proxy" url: <URL> connect_timeout: <US_DRIVER_LICENSE> write_timeout: <US_DRIVER_LICENSE> read_timeout: 120000kong_routes: #----------------------DEV--------------------------- - create_or_update: False vars: name: "{{ kong_env }}-bitbucket-proxy-route" service: "{{ kong_env }}-bitbucket-proxy" paths: [ "/" ] methods: [ "GET", "POST", "PATCH", "DELETE" ]Then we can access <ORGANIZATION> through:curl <URL>:8443/repos?visibility=publicChange is in the and currently deplyed: <URL> setup the nginx proxy to route 80 port to 8443 port.Go to ec2-user@gbinexuscd01:/opt/cd-env/bitbucket-proxyRUN bitbucket-nginx:dded05295c16 nginx:1.17.3 "nginx -g 'daemon of…" <DATE_TIME> Up <DATE_TIME> <IP_ADDRESS>:80->80/tcp bitbucket-nginxConfig:\nhttp {\n server {\n listen 80;\n server_name gbinexuscd01;\n\n location / {\n rewrite ^\\/(.*) /$1 break;\n proxy_pass <URL>:8443;\n resolver <a href=<URL>>●●●●●●●●●●</a>;\n }\n }\n}\n\nevents {}\nThis config will route port 80 to <URL>:8443 host to bitbucketNext, add to all <PERSON> and <PERSON> the following entry in /etc/hosts:docker exec -it -u root <PERSON> exec -it -u root nexus_jenkins_slave2 bashdocker exec -it -u root nexus_jenkins_slave bashvi /etc/hostsadd:●●●●●●●●●●●●● <URL>where ●●●●●●●●●●●●● is a <ORGANIZATION> of <ORGANIZATION> check rundocker inspect bitbucket-nginx"Gateway": "<IP_ADDRESS>",Then check on each Slave and <PERSON>:curl <URL> should receive the <ORGANIZATION> page response."
|
||
},
|
||
{
|
||
"title": "Unable to Find Valid Certification Path to Requested Target (GBLUS)",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<PHONE_NUMBER>",
|
||
"content": "The following issue is caused by missing COMPANY - PBACA-<US_DRIVER_LICENSE>.cer and RootCA-<US_DRIVER_LICENSE>.cer in the java cacerts <URL>sue:06:41:54 <DATE_TIME> 06:41:52.843 INFO --- [ Thread-4] <URL>.LoggingReporter : FAILURE: Caused by: ResourceAccessException: I/O error on POST request for "<URL>:8443/apidev/hcp": <URL>lidatorException: <ORGANIZATION> path building failed: <URL>nCertPathBuilderException: unable to find valid certification path to requested target; nested exception is <URL>.ssl.SSLHandshakeException: <URL>lidatorException: <ORGANIZATION> path building failed: <URL>nCertPathBuilderException: unable to find valid certification path to requested target<URL> Solution:Log in to:mapr@gbinexuscd01 - ●●●●●●●●●●●●●docker exec -it nexus_jenkins_slave bashcd /etc/ssl/certs/javatouch PBACA-<US_DRIVER_LICENSE>.cer - PBACA-<US_DRIVER_LICENSE>.certouch RootCA-<US_DRIVER_LICENSE>.cer - RootCA-<US_DRIVER_LICENSE>.cerkeytool -importcert -trustcacerts -keystore cacerts -alias COMPANYInter -file PBACA-<US_DRIVER_LICENSE>.cer -storepass changeitkeytool -importcert -trustcacerts -keystore cacerts -alias COMPANYRoot -file RootCA-<US_DRIVER_LICENSE>.cer -storepass changeitnext - docker exec -it nexus_jenkins_slave2 bashPermanent Solution. TODO:add PBACA-<US_DRIVER_LICENSE>.cer and RootCA-<US_DRIVER_LICENSE>.cer to /etc/ssl/certs/java/cacerts in Dockerfile:COPY certs/PBACA-<US_DRIVER_LICENSE>.cer /etc/ssl/certs/java/PBACA-<US_DRIVER_LICENSE>.cerCOPY certs/<PERSON> /etc/ssl/certs/java/<ORGANIZATION> cd /etc/ssl/certs/<ORGANIZATION> cacerts -alias COMPANYInter -file PBACA-<US_DRIVER_LICENSE>.cer -storepass <PERSON> /etc/ssl/certs/<ORGANIZATION> cacerts -alias COMPANYRoot -file RootCA-<US_DRIVER_LICENSE>.cer -storepass changeit -nopromptfix - nexus_jenkins_slave2 and nexus_jenkins_slave"
|
||
},
|
||
{
|
||
"title": "Monitoring",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Monitoring",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "FLEX: Monitoring Batch Loads",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/FLEX%3A+Monitoring+Batch+Loads",
|
||
"content": "Opening The DashboardUse one of links below:PROD dashboard: <URL>:5601/app/kibana#/dashboard/prod-batch-loads-dashboardTEST dashboard: <URL>:5601/app/kibana#/dashboard/test-batch-loads-dashboardDEV dashboard: <URL>:5601/app/kibana#/dashboard/dev-batch-loads-dashboardNavigating The DashboardUse the selector in upper right corner to change the time range (for example <DATE_TIME> or Last 7 days).The search bar allows searching for a specific file <URL>e dashboard is divided into 5 main sections:File by type - how many files of each input type have been loaded. File types are: <ORGANIZATION>, <ORGANIZATION>, HIN, FLEX_340B, IDENTIFIERS, ADDRESSES, FLEX_<URL>le load status count - breakdown of each file type and final status of records from that fileFile load count - depiction of loads through timeFile load summary - most important section, containing detailed information about each loaded file:File - file typeStart time/End time - start and end of file processing. Important note: this applies only to parsing, preprocessing and mapping the records - those are later loaded into Reltio asynchronouslyFile nameStatus - indicates that the file processing has finished correctly, without interruption or failuresLoad timeBad Records - records that could not be parsed or mapped, usually due to malformed inputInput Entities - number of records (lines) that the file containedProcessed Entities - number of individual profiles extracted from the file. This number may be lower than <ORGANIZATION>, for example due to input model requiring aggregation of multiple lines (<ORGANIZATION>), skipping unchanged records (<ORGANIZATION>) <URL>eated - number of profiles that were identified as missing from <ORGANIZATION> and have been passed to <ORGANIZATION> - number of profiles that were identified as changed since last loaded and have been passed to <ORGANIZATION> for <ORGANIZATION> - number of profiles that are present in <ORGANIZATION>, but were not present in the <ORGANIZATION> file. In this case, the records will be deleted in <PERSON> (but there is a limit of 22,000 deleted profiles per single file - security mechanism)Skipped Entities - number of profiles that were not updated in <ORGANIZATION>, because their data has not changed since the last load. This is detected using records' checksums, calculated for each record while processing the file. Checksums are stored in <ORGANIZATION> cache and compared with the future recordsSuspended Entities - Only for <ORGANIZATION> - number of profiles that could have been deleted from <ORGANIZATION>, but were not due to the 22,000 delete limit being exceededCountResponse status load summary - final statuses of loading the records into Reltio. Records are loaded asynchronously and their statuses are being gradually updated in this section, after the file is present in the File load summary section"
|
||
},
|
||
{
|
||
"title": "Quality Gateway Alerts",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<ORGANIZATION>/Quality+Gateway+Alerts",
|
||
"content": "Quality Gateway is <ORGANIZATION> publishing layer framework responsible for detecting <ORGANIZATION> issues before publishing an event downstream (to <PERSON> consumers or Snowflake). You can find more details on the Quality Gateway in the documentation: Quality Gateway - Event Publishing FilterThere are 4 statuses that an event (entity/relationship) can receive after being processed by the Quality Gateway:OK - event passed all quality rulesBROKEN - event did not pass one or more quality rules. If at least one of these quality rules is HARD, then the event will not be published. Regardless of quality rules' types, the entity/relationship will be saved in <ORGANIZATION>'s cache (MongoDB qualityRejects collection).AUTO_RESOLVED - event passed all quality Rules, but its entity/relationship was found in <ORGANIZATION>'s cache. As a result, the record will be removed from the <URL>NUALLY_RESOLVED - same as above, but the newest event was created by <URL>_RESOLVED events mean that they were preceded by a BROKEN one, which signifies potential data problems or processing <URL>is is why we have implemented two alerts to track these statuses, which may be otherwise missed.quality_gateway_auto_resolved_sum/quality_gateway_auto_resolved_eventBoth alerts should be approached similarly, as it is expected that they always get triggered together and tell us about the same thing.Pick an example from one of the quality_gateway_auto_resolved_event alerts and take the entity/relationship URI:Use <PERSON>'s HUB Events dashboard to find all the recent events for this URI:If you find no events at first, try extending the time range (for example 7 days).Scroll down to the event list and open each event. Under metadata.quality.* keys you will find <ORGANIZATION> info:Find the first BROKEN event. Under <URL>sues you will find the list of quality rules that this event did not pass. Quality rules from this list match quality Rules configured in the Event Publisher's config.Example repository config file path (amer-prod): mdm-hub-cluster-env\\amer\\prod\\namespaces\\amer-prod\\config_files\\event-publisher\\config\\application.ymlQuality rules are expressions written in Groovy. Every event passing the appliesTo filter must also pass the mustPass filter, otherwise it will be <NRP> in BROKEN state are saved in MongoDB along with the full event that triggered the rejection. For AUTO_RESOLVED and MANUALLY_RESOLVED it is a bit more tricky - record is no longer in <URL> find the exact event that triggered the rejection you can use the AKHQ - Publisher's and <ORGANIZATION>'s input <PERSON> topic is ${env}-internal-reltio-proc-event. Keep in mind that the retention configured for this topic should be around <DATE_TIME> - events older than that get automatically removed from the <URL>arch by the entity/relationship URI in Key. Match the BROKEN event with <PERSON> by the <URL>ere is an infinite number of ways in which an event can be broken, so some investigation will often be <URL>st common cases until now:Blank ProfileDescription: when fetching the entity JSON through <PERSON>, the JSON has no attributes, but entity is not <URL>is is not expected and should be reported to the COMPANY MDM Team.RDM Temporary FailureDescription: all lookup attribute values in the entity JSON are having lookupErrors. At least one lookupCode per JSON is expected (unless there are no lookup attributes).Good:Bad:This is not expected and should be reported to the COMPANY MDM <URL>r extra points, find the exact <ORGANIZATION> request/response to which <ORGANIZATION> responded with lookupErrors and add it to the ticket. You can find the request/response in <PERSON>'s component logs (Discover > amer-prod-mdmhub) in <ORGANIZATION> logs - POST entitites/_byUris."
|
||
},
|
||
{
|
||
"title": "<PERSON>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/Thanos",
|
||
"content": "\n\n\n\nComponents:<PERSON> stack is running on monitoring host: <URL> under /app/monitoring/prometheus/ orchestrated with docker-compose:\n-bash-4.2$ docker-compose <ORGANIZATION>CREATED STATUS PORTS\nbucket_web artifactory.p:main-7e879c6 "/bin/thanos tools b…" bucket_web <DATE_TIME> Up <DATE_TIME> <PERSON>:main-7e879c6 "/bin/thanos compact…" compactor <DATE_TIME> \nprometheus artifactory.p...:<US_DRIVER_LICENSE>.30.3 "/bin/prometheus --c…" prometheus <DATE_TIME> Up <DATE_TIME> <IP_ADDRESS>:9090->9090/tcp, ...\nquery artifactory.p:main-7e879c6 "/bin/thanos query -…" query <DATE_TIME> Up <DATE_TIME> \nquery_frontend artifactory.p:main-7e879c6 "/bin/thanos query-f…" query_frontend <DATE_TIME> Up <DATE_TIME> \nrule artifactory.p:main-7e879c6 "/bin/thanos rule --…" rule <DATE_TIME> Up <DATE_TIME> \nstore artifactory.p:main-7e879c6 "/bin/thanos store -…" store <DATE_TIME> Up <DATE_TIME> \nthanos artifactory.p:main-7e879c6 "/bin/thanos sidecar…" thanos <DATE_TIME> Up <DATE_TIME> <IP_ADDRESS>:10901-10902->10901-10902/tcp,...<PERSON> (sidecar):Description: uploads uncompacted prometheus chunks and implements thanos query <PERSON>: Thanos / Sidecar - Dashboards - Grafana (<URL>)Thanos rule:Description: alternative place to calculate prometheus rulesMetrics: <ORGANIZATION> (<URL>)currently not used <PERSON> store:Description: implements <PERSON> query <ORGANIZATION> by providing metrics from <ORGANIZATION> Thanos / Store - Dashboards - Grafana (<URL>)Thanos bucket_web:Description: visualize metrics chunks on <ORGANIZATION>, allow to manage metrics chunks on <ORGANIZATION> Metrics: <URL> query_frontend:Description: cache layer implementing <ORGANIZATION> query API Metrics: Thanos / Query Frontend - Dashboards - Grafana (<URL>)Thanos query:Description: provides prometheus datasource api for grafana Metrics: <PERSON> / Query - Dashboards - Grafana (<URL>)Thanos compactorDescription: compacts data on <ORGANIZATION> Metrics: Thanos / Compact - Dashboards - Grafana (<URL>)Thanos oveview dashbord: <ORGANIZATION>) \n\n\n\n\n\n\n\n\n\nGeneral troubleshooting: Every troubleshooting starts with analyzing logs from component which is mentioned in alert. <ORGANIZATION> components logs always give clear information about the problem:Typical procedure:Check alertsCheck status of components with command: <PERSON>-compose <ORGANIZATION> component log if it is crashlooping: with command: docker-compose logs <name_of_component>Alerts rules:Below links to prometheus rules that can generate alerts: <PERSON>-component-absentthanos-querythanos-ruleKnows issues: <PERSON> sidecar permission deniedAlart: after <DATE_TIME> ThanosCompactHaltedDescription: <PERSON> can't read shared folder with PrometheusSolution:Check <PERSON> logs: docker-compose logs thanosconfirm issue "permission denied" accessing files Restart <PERSON> with: docker-compose restart thanosCompactor haltedAlart: ThanosCompactHalted.Logs (docker-compose logs compactor)\ncompactor | ts=<DATE_TIME> caller=compact.go:491 level=error msg="critical error detected; halting" err="compaction: group 0@3028247278749986641: compact blocks [/data/compact/0@3028247278749986641/01HSK9YKWVEDZGE9MF4XGARS58 /data/compact/0@3028247278749986641/01HSKBNHNJ9B1PC0NAYR5F67SJ /data/compact/0@3028247278749986641/01HSKDCFFEC9SZM5N5PTHK3TYM /data/compact/0@3028247278749986641/01HSKF3D9E0H1B4ZMAJ1YHKM1A]: populate block: chunk iter: cannot populate chunk 8 from block 01HSKDCFFEC9SZM5N5PTHK3TYM: segment index 0 out of range"\nDescription: Chunk uploaded to <ORGANIZATION> is brokenSolution:Go to <URL> for block <DATE_TIME> on blockClick on "Mark Deletion"Restart compactor with: docker-compose restart compactor Verify if metric thanos_compact_halted returned to 0 <PERSON> -> thanos_compact_halted Expired <ORGANIZATION> keysAlart: maybe not tested: ThanosSidecarBucketOperationsFailedDescription: <PERSON> can't access <ORGANIZATION>:Check <ORGANIZATION> bucket page whether you can see data chunks from <ORGANIZATION>: <URL> components logs and confirm that Store, sidecar and bucket use old <ORGANIZATION> keysRotate <ORGANIZATION> Keys High memory usage by storeAlart: - Description: thanos store consumed over then 20% node memory Solution: No clear solution what was the root cause\n\n\n"
|
||
},
|
||
{
|
||
"title": "Snowflake",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Snowflake",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Dynamic Views Backwards Compatibility Error SOP",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Dynamic+Views+Backwards+Compatibility+Error+SOP",
|
||
"content": "For the process documentation please visit the following page:Snowflake: Backwards compatibilityThere are two artifacts that can be created for this process and will be delivered to the HUB-DL:<URL> - this file is created when an attribute changes its type from a lov to a non-lov value or vice-versa. Lov attributes have the *_<ORGANIZATION> suffix in the column names for dynamic views therefore in this scenario there will be an additional column created and the data will be transferred to it. Bot columns will still be present in <LOCATION>. There is no action needed from the HUB <URL>ror - this file is only created when an existing column is converted into a nested value (is a parent value for multiple other attributes). Each nested value has a separate dynamic view that contains all of its attributes. The changes in this file are omitted in the snowflake refresh. When that kind of change will be discovered HUB will send information to <ORGANIZATION> and COMPANY team to manage that case. "
|
||
},
|
||
{
|
||
"title": "How to Gather Detailed Logs from Snowflake Connector",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>,
|
||
"content": "How To change the Kafka Consumer parameters in Snowflake Kafka Conenctor:add do docker-compose.yml: environment: - "CONNECT_MAX_POLL_RECORDS=50" - "CONNECT_MAX_POLL_INTERVAL_MS=<US_DRIVER_LICENSE>" recreate <URL> To enable <ORGANIZATION> TRACE on Snowflake Kafka Connector: <ORGANIZATION> TRACE LOGS are in the TMP directory: <URL> add environment: - "JDBC_TRACE=true" additionally you can enable trace on whole connector: - "CONNECT_LOG4J_LOGGERS=<URL>nnect=TRACE" more details here: <URL> <URL> mount volume: volumes: - "/app/kafka-connect/prod/logs:/tmp:Z" recreate container. LOGS are in the: amraelp00007848:mdmuspr:[05:59 AM]:/app/kafka-connect/prod/logs> pwd /app/kafka-connect/prod/logs/snowflake_jdbc0.log.0 Also gather the logs from the Container stdout: docker logs prod_kafka-connect-snowflake >& prod_kafka-connect-snowflake_after_restart_24032022_jdbc_trace.log Additional details about DEBUG with snowflake debug:<URL> can enable the DEBUG logs by editing the "connect" logfile. (it is different to the <ORGANIZATION> trace setting we used before)This is the link to our doc explaining the log enabling: ttps://<URL> more details, on the confluent documentation:<URL> is also possible to use an <ORGANIZATION> call: curl -s -X PUT -H "Content-Type:application/json" \\ http://localhost:8083/admin/loggers/<PERSON> \\-d '{"level": "DEBUG"}' | jq '.'Share with <ORGANIZATION> support. "
|
||
},
|
||
{
|
||
"title": "How to Refresh LOV_DATA in Lookup Values Processing",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/<ORGANIZATION>/How+to+Refresh+LOV_DATA+in+Lookup+Values+Processing",
|
||
"content": "Log in to proper <ORGANIZATION> instance (credentials are stored in <ORGANIZATION> repository):NPROD:<ORGANIZATION> (<ORGANIZATION>) - <URL>AMER (<LOCATION>) - <URL>PROD: <ORGANIZATION> (<ORGANIZATION>) - <URL> <ORGANIZATION> (<LOCATION>) - <URL>Set proper role, warehouse and database:example (<ORGANIZATION>): <PERSON> warehouse nameCOMM_MDM_DMART_WHDevOps role nameCOMM_PROD_MDM_DMART_DEVOPS_ROLERun commands in the following order:COPY INTO landing.lov_data from @landing.<PERSON> pattern='.*.json';call <URL>fresh_lov();call <URL>terialize_view_full_refresh('M', 'CUSTOMER','CODES');call <URL>terialize_view_full_refresh('M', 'CUSTOMER','CODE_SOURCE_MAPPINGS');call <URL>terialize_view_full_refresh('M', 'CUSTOMER','CODE_TRANSLATIONS');REMOVE @landing.<ORGANIZATION>; "
|
||
},
|
||
{
|
||
"title": "Issue: Cannot Execute Task, EXECUTE TASK Privilege Must Be Granted to Owner Role",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<PERSON>/Issue%3A+Cannot+Execute+Task%2C+EXECUTE+TASK+Privilege+Must+Be+Granted+to+Owner+Role",
|
||
"content": "Environment details:SF: <URL>db: COMM_EU_MDM_DMART_DEVschema: CUSTOMERrole: COMM_GBL_MDM_DMART_DEV_DEVOPS_ROLEIssue:The command is working fine:\nCREATE OR REPLACE TASK <URL>fresh_customer_sl_eu_legacy_views\n WAREHOUSE = <ORGANIZATION> AFTER <URL>fresh_customer_consolidated_views\nAS\nCALL <URL>fresh_sl_views('COMM_EU_MDM_DMART_DEV_DB','CUSTOMER','COMM_GBL_MDM_DMART_DEV_DB','CUSTOMER_SL','%','I','M', false);\nALTER TASK <URL>fresh_customer_sl_eu_legacy_views resume;\nThe command that is causing the issue:\nALTER TASK <URL>fresh_customer_consolidated_views resume;\n\nSQL Error [91089] [23001]: Cannot execute task , EXECUTE TASK privilege must be granted to owner role\nSolution:<URL> SnowflakeIssue:Describe your issue - Cannot execute task, EXECUTE TASK privilege must be granted to owner rolePlease provide a detailed description:Hi Team,We are facing the following issue:<ORGANIZATION> Error [91089] [23001]: Cannot execute task, EXECUTE TASK privilege must be granted to owner roleduring the execution of the following command:ALTER TASK <URL>fresh_customer_consolidated_views resume;Environment details:HOST: <URL>DB: COMM_EU_MDM_DMART_DEVSCHEMA: CUSTOMERROLE: COMM_GBL_MDM_DMART_DEV_DEVOPS_ROLECould you please fix this issue in <ORGANIZATION>/STAGE and additionally on PROD:HOST: <URL>Please let me know if you need any other <URL>eated ticket for reference: - <URL> "
|
||
},
|
||
{
|
||
"title": "PTE: Add Country",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/PTE%3A+Add+Country",
|
||
"content": "There are two files in the <ORGANIZATION> repo that are used in the deployment for PTE:src/sql/global/pte_sl/tables/driven_tables.sqlsrc/sql/global/pte_sl/views/report_views.sqldriven_tables.sqlThis file contains the definitions of supporting tables used for the calculation of the PTE_REPORT view.DRIVEN_TABLE2_STATIC contains the list of identifiers per country and the column placement in the pte_report view. There can be a maximum of five identifiers per country and they should be provided by the PTE team. If there are no identifiers added for a country in the table the list of identifiers will be calculated "dynamically" based on the number of HCPs having the <URL>lumn nameDescriptionISO_CODEISO2 code of the country ie. 'TR', 'FR', 'PL' <URL>NONICAL_CODERDM code that will appear in PTE_REPORT as IDENTIFIER_CODELANG_DESCRDM code description that will appear in PTE_REPORT as IDENTIFIER_CODE_DESCCODE_IDTYPE_LKP value used to connect to the identifiers table to extract the <URL>DEL'p' or 'i' showing whether the codes for the country should be taken from the IQVIA ('i') or COMPANY ('p') data model.ORDER_IDA number from 1 to 5. Showing the placement of the code among identifiers. Code from 1 will be mapped to IDENTIFIER1_CODE <URL>_views.sqlDRIVEN_TABLE1 is a view that derives the basic information for the country from the COUNTRY_CONFIG table. The country ISO2 code has to be added into the WHERE clause depending on whether the country should have data from the <ORGANIZATION> data model (the first part of the query) or from the COMPANY data model (after the UNION)\n \n DRIVEN_TABLE1 Expand source\n \n \n CREATE OR REPLACE VIEW PTE_SL."DRIVEN_TABLE1" AS(\nSELECT\n ISO_CODE,\n NAME,\n LABEL,\n RELTIO_TENANT,\n HUB_TENANT,\n SF_INSTANCE,\n SF_TENANTDATABASE,\n CUSTOMERSL_PREFIX\nFROM <URL>UNTRY_CONFIG \nWHERE ISO_CODE in ('SK', 'PH', 'CL', 'CO', 'AR', 'MX')\nAND CUSTOMERSL_PREFIX = 'i_'\nUNION ALL\nSELECT\n ISO_CODE,\n NAME,\n LABEL,\n RELTIO_TENANT,\n HUB_TENANT,\n SF_INSTANCE,\n SF_TENANTDATABASE,\n CUSTOMERSL_PREFIX\nFROM <URL>UNTRY_CONFIG\nWHERE ISO_CODE in ('AD', '<ORGANIZATION>, 'BR', 'FR', 'GF', '<ORGANIZATION>', 'MC', 'MC', 'MF', '<ORGANIZATION>', '<ORGANIZATION>', '<LOCATION>', 'PF', 'PM', 'RE', '<ORGANIZATION>', '<ORGANIZATION>', 'YT')\nAND CUSTOMERSL_PREFIX = 'p_'\n);\n \nPTE_REPORT this is the view from which the clients take their data. Unfortunately the data required varies from country to country and also is some cases between nprod and prod due to data availability.<ORGANIZATION>. By default for the IQVIA data model the values for <ORGANIZATION> are YES/NO and for the COMPANY data model they're <ORGANIZATION> if there's an exception you have to manually add the country to the case in the view.\n \n <ORGANIZATION> Expand source\n \n \n CAST(CASE\n WHEN HCP.GO_STATUS_LKP = 'LKUP_GOVOFF_GOSTATUS:GO' AND <URL>UNTRY IN ('CO', 'CL', 'AR', 'MX') THEN 'Y'\n WHEN HCP.GO_STATUS_LKP = 'LKUP_GOVOFF_GOSTATUS:NGO' AND <URL>UNTRY IN ('CO', 'CL', 'AR', 'MX') THEN 'N'\n WHEN HCP.GO_STATUS_LKP = 'LKUP_GOVOFF_GOSTATUS:GO' THEN 'YES'\n WHEN HCP.GO_STATUS_LKP = 'LKUP_GOVOFF_GOSTATUS:NGO' THEN '<PERSON> <URL>UNTRY IN ('CO', 'CL', 'AR', 'MX') THEN 'N'\n ELSE 'NO'\nEND AS VARCHAR(200)) AS "GO_STATUS",\n \n"
|
||
},
|
||
{
|
||
"title": "QC",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/QC",
|
||
"content": "Snowflake QC Check data is located in the CUSTOMER.QUALITY_CONTROL table.Duplicated COMPANY_GLOBAL_CUSTOMER_IDsql:SELECT COMPANY_global_customer_id, COUNT(1)FROM customer.entitiesWHERE COMPANY_global_customer_id is not nullAND last_event_type not like '%LOST_MERGE%'AND last_event_type not like '%REMOVED%'GROUP BY COMPANY_global_customer_idHAVING COUNT(1) > 1Description:COMPANY Global Customer ID should be unique for every entity in Reltio. In case of any duplicates you have to check if it's a <ORGANIZATION> data refresh issue (data is OK in <ORGANIZATION> not in <LOCATION>), or something is wrong with the flow (check if the id's are duplicated in COMPANYIdRegistry in <PERSON>). <PERSON> with object datasql:SELECT ENTITY_URI FROM CUSTOMER.ENTITIESWHERE LAST_EVENT_TYPE IN ('HCP_LOST_MERGE', 'HCO_LOST_MERGE', 'MCO_LOST_MERGE')AND OBJECT IS NOT NULLDescription:All entities in the *Lost_Merge status should have null values in the object column. If that's not the case they have to be cleared manually either by re-sending the specified record to <ORGANIZATION> or by manually setting the object field for them as null. Active crosswalks assigned to more than one different entitysql:SELECT CROSSWALK_URIFROM CUSTOMER.M_ENTITY_CROSSWALKSWHERE ACTIVE = <ORGANIZATION> ACTIVE_CROSSWALK = <PERSON> BY CROSSWALK_URIHAVING COUNT(ENTITY_URI) > 1Description:A crosswalk should be active for only one entity_uri. If that's not the case then either the entities should be merged (contact: DLER-COMPANY-MDM-Support <<EMAIL_ADDRESS>>) or they were merged but the lost_merge event wasn't delivered to snowflake / mdm_hub.Duplicated entities in materialized viewssql:SELECT ENTITY_URI, '<ORGANIZATION>' TYPE, COUNT(1)FROM CUSTOMER.M_HCOGROUP BY ENTITY_URIHAVING COUNT(1) > 1UNION ALLSELECT ENTITY_URI, 'HCP' TYPE, COUNT(1)FROM CUSTOMER.M_HCPGROUP BY ENTITY_URIHAVING COUNT(1) > 1Description:There are duplicated records in materialized tables. Investigate what caused the duplicates and run the full materialization procedure to fix it.Entities with the same global id and parent global idsql:SELECT ENTITY_URI, COMPANY_GLOBAL_CUSTOMER_ID, PARENT_COMPANY_GLOBAL_CUSTOMER_IDFROM CUSTOMER.ENTITIESWHERE COMPANY_GLOBAL_CUSTOMER_ID = PARENT_COMPANY_GLOBAL_CUSTOMER_IDAND COMPANY_GLOBAL_CUSTOMER_ID IS NOT NULLDescription:Check if this is the case in the hub. If not re-send the data into snowflake if yes than contact the support team.Missing ID's for specializations:sql:SELECT ENTITY_URIFROM CUSTOMER.M_SPECIALITIESWHERE SPECIALITIES_URI IS NULLDescription:Review the affected entities. If their missing an id review them with the hub. Make sure they're active in <LOCATION> and Hub. You might have to reload it in snowflake if it's not updated."
|
||
},
|
||
{
|
||
"title": "Snowflake - Prometheus Alerts",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/Snowflake+-+Prometheus+Alerts",
|
||
"content": "<ORGANIZATION>: This alert means that one of the regularly scheduled snowflake tasks have failed. To fix this you have to find the task that was failed in <ORGANIZATION>, check the reason, and fix it. Snowflake task <ORGANIZATION>'s have an auto suspend function after ten conscutive failed runs, if the issue isn't resolved at the time you'll need to manually restart the root task.Queries:<PERSON> failed tasks\nSELECT *\nFROM <PERSON>, ERROR_ONLY=>TRUE))\n;\nUse the ERROR_CODE and ERROR_MESSAGE columns to find out the information needed to determine the cause of the <URL>ter determining and fixing the cause of the issue you can manually run all the queries that are left in the task tree. To get them you can use the following code:\nSELECT *\nFROM TABLE(INFORMATION_SCHEMA.TASK_DEPENDENTS('<task_name>'))\n;\nRemember that if a schema isn't selected for the session you need submit it with the task <URL> can also use the execute task query with the RETRY LAST option to restart the flow. This will only work if a new run wasn't started yet and you have to run it on the root task not the task that failed.\nEXECUTE TASK <root_task_name> RETRY LAST;\nSNOWFLAKE TASK FAILED 603Description: This alert means that one of the regularly scheduled snowflake tasks have failed. To fix this you have to find the task that was failed in <ORGANIZATION>, check the reason, and fix it. Snowflake task <ORGANIZATION>'s have an auto suspend function after ten conscutive failed runs, if the issue isn't resolved at the time you'll need to manually restart the root task.Queries:<PERSON> failed tasks\nSELECT *\nFROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(RESULT_LIMIT=>5000, ERROR_ONLY=>TRUE))\n;\nYou can manually run all the queries that are left in the task tree. To get them you can use the following code:\nSELECT *\nFROM TABLE(INFORMATION_SCHEMA.TASK_DEPENDENTS('<task_name>'))\n;\nRemember that if a schema isn't selected for the session you need submit it with the task <URL> can also use the execute task query with the RETRY LAST option to restart the flow. This will only work if a new run wasn't started yet and you have to run it on the root task not the task that failed.\nEXECUTE TASK <root_task_name> RETRY LAST;\nSNOWFLAKE TASK NOT STARTED 24hDescription: A Snowflake scheduled task hasn't run in <DATE_TIME>. You need to check if the alert is factually correct and solve any issues that are stopping the task from running. Please note that on production the materialization is scheduled <DATE_TIME>, so if a materialization task isn't run for <DATE_TIME> that means that we missied twelve materialization cycles of data, hence it's important to get it fixed as soon as possible.Queries:Check when the task was last run\nSELECT *\nFROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(RESULT_LIMIT=>5000))\nWHERE 1=1\nAND DATABASE_NAME ='<<ORGANIZATION> NAME = '<task_name>'\nORDER BY QUERY_START_TIME DESC\n;\nIf the task is running succesfully the issue might be with prometheus data scraping. Check the following dashboard to see when the data was last succesfully scraped:Snowflake Tasks - DashboardIf the task wasn't run in <DATE_TIME>. It might be suspended. Verify it using the command:\nSHOW TASKS;\nThe column STATE will tell you if the task is suspended or started, and the LAST_SUSPENDED_REASON columns will tell you what was the reason of the last suspension. If it's SUSPENDED_DUE_TO_ERRORS you need to get the list of all of the dependent tasks and find which one of the failed (reminder: the root task gets suspended if any of the child tasks faila ten times in a row). To find out the failed task and the dependants of the suspended task you can use the queries from the alert <ORGANIZATION> restart a suspended task run the <ORGANIZATION> TASK <schema_name>.<task_name> resume;\nSNOWFLAKE DUPLICATED COMPANY GLOBAL CUSTOMER ID'SDescription: COMPANY Global Customer Id's are unique identifiers calculated by the Hub. In some cases of wrongly done unmerge events on <ORGANIZATION> side there might be entities with wrongly assigned hub-callback crosswalks, or there might be another reason that caused the duplicates. The ID's need to be unique so ti should be verified, fixed, and the data reloaded in a timely manner.Queries:Identify COMPANY global customer id's with duplicates:\nSELECT COMPANY_global_customer_id, COUNT(1)\nFROM customer.entities\nWHERE COMPANY_global_customer_id is not null\nAND last_event_type not like '%LOST_MERGE%'\nAND last_event_type not like '%REMOVED%'\nGROUP BY COMPANY_global_customer_id\nHAVING COUNT(1) > 1\n;\nVariant of the query that returns entity <ORGANIZATION>'s for easier querying:\nSELECT ENTITY_URI\nFROM CUSTOMER.ENTITIES\nWHERE COMPANY_GLOBAL_CUSTOMER_ID IN (\n SELECT COMPANY_global_customer_id\n FROM customer.entities\n WHERE COMPANY_global_customer_id is not null\n AND last_event_type not like '%LOST_MERGE%'\n AND last_event_type not like '%REMOVED%'\n GROUP BY COMPANY_global_customer_id\n HAVING COUNT(1) > 1\n)\n;\nCheck if the duplicates are reflected in MongoDB. If the data in <ORGANIZATION> doesn't have the duplicates use hub ui to resend the events to <URL>eck if Reltio contains the duplicated data if not reconcile the affected entities, if yes review the reason. If it's because of a Hub_Callback you might need to manually delete the crosswalk, and check COMPANYIDRegistry in <PERSON>, if it also contains duplicates that you need to delete it there <URL>OWFLAKE LAST ENTITY EVENT TIMEDescription: The alert informs of <ORGANIZATION> production tenants where the last update was <DATE_TIME>. The refresh on production is <DATE_TIME> and the traffic is high enough that there should be updates in every cycle.Queries:Check how many minutes ago was the last update in Snowflake\nSELECT DATEDIFF('MINUTE', (SELECT MAX(SF_UPDATE_TIME) FROM CUSTOMER.ENTITIES), (SELECT CURRENT_TIMESTAMP()));\nIf it's <DATE_TIME> check the <PERSON> snowflake topic if it has an active consumer and if the data is flowing correctly to the landing schema. Review any latest changes in <ORGANIZATION> refresh to make sure that there's nothing impacting the tasks and they're all started. If the data in snowflake is OK than the issue might be with the data <URL><ORGANIZATION> MISSING COMPANY GLOBAL ID'S IN MATERIALIZED DATADescription: This alert informs us that there are entities in <ORGANIZATION> that don't have a COMPANY Global Customer ID. This is a mandatory identifier and as such should be available for all event types (excluding <ORGANIZATION>'s). It's also used by down steram clients to identify records and in case the value is deleted from an entity it will be deleted in the down streams.Queries:Check the impact in the qc table:\nSELECT *\nFROM CUSTOMER.QC_COMPANY_ID\nORDER BY <DATE_TIME> DESC\n;\nGet the list of all entities that are missing the id's\nSELECT *\nFROM CUSTOMER.ENTITIES\nWHERE COMPANY_GLOBAL_CUSTOMER_ID IS NULL\nAND ENTITY_TYPE != 'DCR'\nAND COUNTRY != 'US'\nAND (SELECT CURRENT_DATABASE()) not ilike 'COMM_EU%'\n;\nCheck the data in <LOCATION>, AKHQ, <URL>nsider informing down stream cleints to stop ingestion of the data until the issue is fixedSNOWFLAKE GENERATED EVENTS WITHOUT COMPANY GLOBAL CUSTOMER ID'SDescription: This alert stops events without <ORGANIZATION> from reaching the materialized data layer. It will add information about this occurences into a special table and delete those events before materialization.Queries:Check the list of impacted entity_uri's\nSELECT *\nFROM CUSTOMER.MISSING_COMPANY_ID\n;\nCheck for the reason of missing <ORGANIZATION> Id's similiarly to missing global id's in materialized data <URL>ter finding and fixnig the reason of the issue use <ORGANIZATION> to resend the profiles into <ORGANIZATION> to make sure we have the correct <URL>ear the missing COMPANY id table\nTRUNCATE TABLE CUSTOMER.MISSING_COMPANY_ID;\nSNOWFLAKE TOPIC NO CONSUMERDescription: The Kafka Connector from Mongo to <ORGANIZATION> has data which isn't consumed.Queries:Check if the consumer is online you might have to restart it's pod to get it working <URL><ORGANIZATION> FAILEDDescription: This alert informs you that one or more views have failed in their last materialization attempt. The alert checks the data from <URL>TERIALZED_VIEW_LOG table for <DATE_TIME> and chooses the last materialization attempt based on the largest id.Queries:Query that the alert is based upon\nSELECT COUNT(VIEW_NAME) FAILED_MATERIALIZATION\nFROM (\n SELECT VIEW_NAME, MAX(ID) ID, <ORGANIZATION>, ERROR_MESSAGE, MATERIALIZED_OPTION, ROW_NUMBER() OVER (PARTITION BY VIEW_NAME ORDER BY <ORGANIZATION>) AS RN\n FROM <URL>TERIALIZED_VIEW_LOG\n <ORGANIZATION> BY VIEW_NAME, ERROR_MESSAGE, ID, <ORGANIZATION>, <PERSON>HAVING DATEDIFF('days', MAX(START_TIME), (SELECT CURRENT_DATE())) < 7\n)\nWHERE <ORGANIZATION> = 1\nAND SUCCESS = 'FALSE';\nModified version that will show you the error message that <ORGANIZATION> ended the materialization attempt. Those are standard <ORGANIZATION> errors on which you have to find out the root cause and the resolution of the <NRP> VIEW_NAME, <ORGANIZATION> (<ORGANIZATION> SELECT VIEW_NAME, MAX(ID) ID, <ORGANIZATION>, ERROR_MESSAGE, MATERIALIZED_OPTION, ROW_NUMBER() OVER (PARTITION BY VIEW_NAME ORDER BY <ORGANIZATION>) AS RN\n FROM <URL>TERIALIZED_VIEW_LOG\n <ORGANIZATION> BY VIEW_NAME, ERROR_MESSAGE, ID, <ORGANIZATION>, MATERIALIZED_OPTION\n HAVING DATEDIFF('days', MAX(START_TIME), (SELECT CURRENT_DATE())) < 7\n)\nWHERE <ORGANIZATION> = 1\nAND SUCCESS = 'FALSE';\nSNOWFLAKE MISSING DESC IN CODES VIEWDescription: This alert indicates that there are codes without descriptions in the CUSTOMER.M_CODES data table.Queries:Check the missing data:\nSELECT CODE_ID, <ORGANIZATION> IS NULL;\nCheck the Dynamic view to make sure it's not a materialization issue:\nSELECT CODE_ID, <ORGANIZATION> IS NULL;\nIf it's a materialization issue then rematerialize the table.\nCALL <URL>TERIALIZE_VIEW_FULL_REFRESH('M', 'CUSTOMER', 'CODES');\nIf the data is missing in the dynamic view, check the code in <ORGANIZATION>. If it has a source mapping from the source Reltio with the canonical value set to true, then it should have data in <LOCATION>. Check why it isn't flowing. If there is no such entry notify COMPANY team."
|
||
},
|
||
{
|
||
"title": "Release",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/Release",
|
||
"content": "Release history:<DATE_TIME> [TEMPLATE - draft]\<US_DRIVER_LICENSE>.1.24 [TEMPLATE - example]\<US_DRIVER_LICENSE>.1.28\<US_DRIVER_LICENSE>.1.29\<US_DRIVER_LICENSE>.10.0\<US_DRIVER_LICENSE>.11.0\<US_DRIVER_LICENSE>.11.1\<US_DRIVER_LICENSE>.12.0\<US_DRIVER_LICENSE>.12.1\<US_DRIVER_LICENSE>.12.2\<US_DRIVER_LICENSE>.14.0\<US_DRIVER_LICENSE>.14.1\<US_DRIVER_LICENSE>.15.0\<US_DRIVER_LICENSE>.16.0\<US_DRIVER_LICENSE>.16.1\<US_DRIVER_LICENSE>.17.0\<US_DRIVER_LICENSE>.18.0\<US_DRIVER_LICENSE>.18.1\<US_DRIVER_LICENSE>.19.0\<US_DRIVER_LICENSE>.21.0\<US_DRIVER_LICENSE>.22.0\<US_DRIVER_LICENSE>.23.0\<US_DRIVER_LICENSE>.25.0\<US_DRIVER_LICENSE>.28.0\<US_DRIVER_LICENSE>.3.0\<US_DRIVER_LICENSE>.30.0\<US_DRIVER_LICENSE>.31.0\<US_DRIVER_LICENSE>.32.0\<US_DRIVER_LICENSE>.33.0\<US_DRIVER_LICENSE>.34.0\<US_DRIVER_LICENSE>.35.0\<US_DRIVER_LICENSE>.38.0\<US_DRIVER_LICENSE>.39.0\<US_DRIVER_LICENSE>.40.0\<US_DRIVER_LICENSE>.41.0\<US_DRIVER_LICENSE>.42.0\<US_DRIVER_LICENSE>.43.0\<US_DRIVER_LICENSE>.44.0\<US_DRIVER_LICENSE>.45.0\<US_DRIVER_LICENSE>.46.0\<US_DRIVER_LICENSE>.47.0\<US_DRIVER_LICENSE>.47.1\<US_DRIVER_LICENSE>.48.0\<US_DRIVER_LICENSE>.49.0\<US_DRIVER_LICENSE>.50.0\<US_DRIVER_LICENSE>.51.0\<US_DRIVER_LICENSE>.54.0\<US_DRIVER_LICENSE>.54.1\<US_DRIVER_LICENSE>.55.0\<US_DRIVER_LICENSE>.56.0\<US_DRIVER_LICENSE>.58.0\<US_DRIVER_LICENSE>.59.0\<US_DRIVER_LICENSE>.6.0\<US_DRIVER_LICENSE>.60.0\<US_DRIVER_LICENSE>.62.0\<US_DRIVER_LICENSE>.63.0\<US_DRIVER_LICENSE>.9.0\nSnowflake Release\nRelease process description (TBD):Text:Diagram: How branches work, differences between release and FIX deployemend(TBD):Text:Diagram:Release rules:Always do PR <URL> not deploy unencrypted <URL>lease versioning: normal path 4.x, FIX version 4.10.xTBDTBDRelease calendar:TBD"
|
||
},
|
||
{
|
||
"title": "Snowflake Release",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/<PERSON>/Snowflake+Release",
|
||
"content": ""
|
||
},
|
||
{
|
||
"title": "Current Release",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/<PERSON>/Current+Release",
|
||
"content": "Release report:Release:2.2.0Release date:STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<ORGANIZATION>:wed <ORGANIZATION> linkCategoryDescriptionDeveloped ByDevelopment FinishedTested By Test Scenarios / ResultsTesting FinishedAdditional Notes\n MR-9001\n -\n Getting issue details...\n STATUS\n \n MR-8942\n -\n Getting issue details...\n STATUS\n Feature ChangeUpdate the data mart with code changes needed for <ORGANIZATION> and <ORGANIZATION> <URL>CZEG0102.07.2024SARMID03Done validating below:<DATE_TIME><ORGANIZATION>.<DATE_TIME> <ORGANIZATION> Mapping.<DATE_TIME>\n MR-9056\n -\n Getting issue details...\n STATUS\n Feature ChangeUpdate the Country Table for <DATE_TIME> with new <URL>CZEG0102.07.2024SARMID03✅New data passed the checking.<DATE_TIME>\n <PERSON> issue details...\n STATUS\n ChangeImproved the MATERIALIZE_VIEW_INCREMENTAL_REFRESH procedure to cover 5 options, that were previously covered by 5 separate procedures and replaced their use with the new oneHARAKR02.07.2024PROD deployment report:PROD deployment date:Wed Jun 26 <DATE_TIME> <ORGANIZATION> 2024Deployed by:<ORGANIZATION>:LinkStatusDetailsAMERSUCCESSAPACSUCCESSEMEASUCCESSGBL(EX-US)SUCCESSGBLUSSUCCESSGLOBALSUCCESS"
|
||
},
|
||
{
|
||
"title": "<DATE_TIME>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/2.1.0",
|
||
"content": "Release report:Release:2.1.0Release date:Wed Jun 26 <DATE_TIME> <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<ORGANIZATION>:wed <PERSON> linkCategoryDescriptionDeveloped ByDevelopment FinishedTested By Test Scenarios / ResultsTesting FinishedAdditional Notes\n MR-8919\n -\n Getting issue details...\n STATUS\n New FeaturePOC - The point of this ticket is to check if calculating a delta based on the SF_UPDATE_TIME from the materialized ENTITY_UPDATE_DATES table will be more efficient than using the stream. If this results in better performance than we're going to calculate deltas on our base tables dropping the <URL>CZEG0128.05.2024SZCZEG01Verified the change on times and the data quality by running the procedures simultanously on EMEA STAGE for a period of timeold:new:\n MR-8862\n -\n Getting issue details...\n STATUS\n New FeatureDue to a change done in <ORGANIZATION> we lost some descriptions for certain codes. It's important that we have the visibility for such issues in the future, therefore the need for this <URL>CZEG0129.05.2024-New alert in Prometheus no need for additional <PERSON>MR-8969\n -\n Getting issue details...\n STATUS\n ChangeAdjusted TRANSPARENCY_SL views to filter based on COUNTRY code (COMPANY model vs iquvia)HARAKR13.06.2024\n MR-9003\n -\n Getting issue details...\n STATUS\n ChangeUdate TRANSPARENCY_SL schema to <ORGANIZATION> instead of views, due to the need to have the data from <ORGANIZATION> available in <LOCATION> lower <URL>CZEG0121.06.2024-Checked the view type on <PERSON>MR-8986\n -\n Getting issue details...\n STATUS\n ChangeChenge the way incremental code updates treat hard deleted lov'<URL>CZEG0118.06.2024SZCZEG01\n MR-8740\n -\n Getting issue details...\n STATUS\n ChangeSuspend the WAREHOUSE_SUSPEND <URL>CZEG0118.04.2024-Pushed diretly to <PERSON>MR-8701\n -\n Getting issue details...\n STATUS\n New <ORGANIZATION> new views in the <ORGANIZATION> schema for <LOCATION> / IDENTIFIERSSZCZEG0118.04.2024-Checked the views availability and record counts.--\n MR-8712\n -\n Getting issue details...\n STATUS\n BugfixFix a case where column order changes and it causes global views to not update <URL>CZEG0118.04.2024SZCZEG01Rerun the case that cause the issue--\n MR-8827\n -\n Getting issue details...\n STATUS\n ChangeAdd email column to <ORGANIZATION>/<ORGANIZATION> reportsSZCZEG0122.05.2024SZCZEG01Checked the column <PERSON> -\n Getting issue details...\n STATUS\n ChangeAdd a case for code materialization where there are more than one descriptions from the source Reltio but not all of them are <URL>CZEG0122.05.2024SZCZEG01Checked with the existing misisng descriptions.--\n MR-7038\n -\n Getting issue details...\n STATUS\n New FeatureAdd enchanced logging for manually called <URL>CZEG0122.05.2024SZCZEG01---\n MR-8896\n -\n Getting issue details...\n STATUS\n ChangeRemove DE from PTE_REPORT_EU, change values "Without Title", "Unknown", and "Unspecified" to <URL>CZEG0122.05.2024SZCZEG01---\n MR-8916\n -\n Getting issue details...\n STATUS\n ChangeRemove "Unknown" Country Codes from missing COMPANY global customer id'<URL>CZEG0128.05.2024SZCZEG01---\n MR-8994\n -\n Getting issue details...\n STATUS\n ChangeUpdata column names for <PERSON> -\n Getting issue details...\n STATUS\n ChangeAdd missing columns to the <DATE_TIME> reports (MVP1 review).SZCZEG0118.06.2024SZCZEG01---\n MR-8980\n -\n Getting issue details...\n STATUS\n ChangeAdd US data into the Global DataMart TRANSPARENCY_<URL>CZEG0118.06.2024SZCZEG01---\n MR-8977\n -\n Getting issue details...\n STATUS\n ChangeAdd hard coded columns to <ORGANIZATION><URL><PERSON> -\n Getting issue details...\n STATUS\n New FeatureCreate Initial Data Mart for the TRANSPARENCY_SL <URL><PERSON>-\n Getting issue details...\n STATUS\n BugfixFix on MR-8986. The procedure was launched in the landing schema but it tried to use a function that is only available in customer. Not finding the function in the current schema it returned an errorSZCZEG0125.06.2024SZCZEG01---\n MR-8991\n -\n Getting issue details...\n STATUS\n New FeatureChange refreh entities to use a calculated delta instead of strems. Followup to <ORGANIZATION> deployment report:PROD deployment date:Wed Jun 26 <DATE_TIME> <ORGANIZATION> 2024Deployed by:<ORGANIZATION>LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "<DATE_TIME> [TEMPLATE - draft]",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "Release report:Release:4.1.24Release date:<DATE_TIME> 21:08:10 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:TODOPlanned GO-LIVE:<DATE_TIME> (in 2 weeks)StageLinkStatusComments (images 600px)Build:TODOSUCCESS CHANGELOG:TODOUnit tests:<NRP> tests:Execution date: TODOExecuted by: TODOAMERTODO[84] SUCCESS[0] FAILED[0] REPEATEDTODOAPACTODO[89] SUCCESS[0] FAILED[0] REPEATEDTODOEMEATODO[89] SUCCESS[0] FAILED[0] REPEATEDTODOGBL(EX-US)TODO[72] SUCCESS[0] FAILED[0] REPEATEDTODOGBLUSTODO[74] SUCCESS[0] FAILED[0] REPEATEDTODOTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> and QA tests results:DEV and QA deployment date:TODO Wed Jan 17 09:35:31 <ORGANIZATION> 2024Deployment approved:approved by: <LOCATION> by:TODOENV:LinkStatusDetailsAMERTODOSUCCESSAPACTODOSUCCESSEMEATODOSUCCESSGBL(EX-US)TODOSUCCESSGBLUSTODOSUCCESS STAGE deployment details:STAGE deployment date:TODO Wed Jan 17 09:35:31 <ORGANIZATION> 2024Deployment approved:approved by: <LOCATION> by:TODOENV:LinkStatusDetailsAMERTODOSUCCESSAPACTODOSUCCESSEMEATODOSUCCESSGBL(EX-US)TODOSUCCESSGBLUSTODOSUCCESS STAGE test phase details:Verification dateVerification byDashboardHintsStatusDetailsMDMHUB / MDMHUB Component errorsIncreased number of alerts → there's certainly something wrongMDMHUB / MDMHUB KPIsSpikes, especially wide ones, suggest potential <ORGANIZATION> resourceComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / Snowflake QC TrendsQuick and easy way to determine if there's something wrong with <LOCATION>. Any change (lower/higher) → potential issueKubernetes / K8s Cluster Usage StatisticsGood for PROD environments since <ORGANIZATION> is to prone to project specific loadsKubernetes / Pod MonitoringComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / kubernetes-persistent-volumes Storage trend over time <ORGANIZATION> after release → potential issue <ORGANIZATION> and Endpoint AvailabilityLower widget, multiple stacked endpoints at the same time for a long periodPROD deployment report:PROD deployment date:TODO Wed Jan 17 09:35:31 <ORGANIZATION> 2024Deployment approved:approved by: <LOCATION> by:TODOENV:LinkStatusDetailsAMERTODOSUCCESSAPACTODOSUCCESSEMEATODOSUCCESSGBL(EX-US)TODOSUCCESSGBLUSTODOSUCCESSPROD deploy hypercare details:Verification dateVerification byDashboardHintsStatusDetailsMDMHUB / MDMHUB Component errorsIncreased number of alerts → there's certainly something wrongMDMHUB / MDMHUB KPIsSpikes, especially wide ones, suggest potential <ORGANIZATION> resourceComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / Snowflake QC TrendsQuick and easy way to determine if there's something wrong with <LOCATION>. Any change (lower/higher) → potential issueKubernetes / K8s Cluster Usage StatisticsGood for PROD environments since <ORGANIZATION> is to prone to project specific loadsKubernetes / Pod MonitoringComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / kubernetes-persistent-volumes Storage trend over time <ORGANIZATION> after release → potential issue <ORGANIZATION> and Endpoint AvailabilityLower widget, multiple stacked endpoints at the same time for a long period"
|
||
},
|
||
{
|
||
"title": "<DATE_TIME> [TEMPLATE - example]",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_PASSPORT>",
|
||
"content": "Release report:Release:4.1.24Tue <DATE_TIME> 21:08:10 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON> (in 2 weeks)StageLinkStatusComments (images 600px)Build:<URL> SUCCESS CHANGELOG:<URL> Unit tests:<URL> SUCCESSIntegration tests:Execution date: <DATE_TIME> 18:01:08 <ORGANIZATION> 2024Executed by: Mikołaj MorawskiAMER<URL> SUCCESS[0] FAILED[0] REPEATEDAPAC<URL> SUCCESS[0] FAILED[0] REPEATEDEMEA<URL> SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)<URL> SUCCESS[0] FAILED[1] REPEATEDfailed tests - <URL>rivedHCPAddressesTest during run on <ORGANIZATION> there were multiple events and test got blocedTest was repeated manually and passed with success <screenshot from local execution>GBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> <ORGANIZATION> - add <URL> ready and approved:approved by: <PERSON> STAGE deployment details:STAGE deployment date:<DATE_TIME> 09:35:31 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> Deployed by:Mikołaj MorawskiENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> commentsSTAGE test phase details:Test Test description ResponsibleStatusAlerts verificationTo check if any of alerts in <ORGANIZATION> environments is a prod deployment release stopper. e.g. <PERSON>, <PERSON> e.g. SUCCESSSnowFlake checkTo check if there are any <LOCATION> checks or tasks failed that can happend on prod environments. <ORGANIZATION> check if there are any broken events. Environment checkTo check if there are any issues on <ORGANIZATION> environment that can be a PROD release stopperTBDTBDPROD deployment report:PROD deployment date:<DATE_TIME> 09:35:31 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> Deployed by:Mikołaj MorawskiENV:LinkStatusDetailsAMER<URL> SUCCESScommentsAPAC<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "<DATE_TIME>",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/<DATE_TIME>",
|
||
"content": "Release report:Release:4.1.28Release date:<DATE_TIME> 10:10:38 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<NRP> KućPlanned GO-LIVE:Thu Feb 29StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <DATE_TIME> 18:00:57 <ORGANIZATION> 2024Executed by: <PERSON><URL> SUCCESS[0] FAILED[1] REPEATEDone failed test - <URL>PANYGlobalCustomerIdTest.testrepeated from local PC one more time by <PERSON> run on Reltio there were multiple events and test got blockedTest was repeated manually and passed with successAPAC<URL> SUCCESS[0] FAILED[1] REPEATEDone failed test - <URL>PANYGlobalCustomerIdTest.testrepeated from local PC one more time by <PERSON> run on Reltio there were multiple events and test got blockedTest was repeated manually and passed with successEMEA<URL> SUCCESS[0] FAILED[1] REPEATEDone failed test - <URL>ouldCreateHCPOneKeyRedirectToReltiorepeated from local PC one more time by <PERSON> run on Reltio there were multiple events and test got blockedTest was repeated manually and passed with successGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[1] REPEATEDone failed test - <URL>PANYGlobalCustomerIdSearchOnLostMergeEntitiesTest.testrepeated from local PC one more time by <PERSON> run on Reltio there were multiple events and test got blockedTest was repeated manually and passed with successTests ready and approved:approved by: <PERSON> ready and approved:approved by: Mikołaj MorawskiSTAGE deployment details:STAGE deployment date:<DATE_TIME> 08:57:24 <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:Mikołaj MorawskiENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:Thu Feb 29 <DATE_TIME> <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:<PERSON> SądowiczENV:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "<DATE_TIME>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/<DATE_TIME>",
|
||
"content": "Release report:Release:4.1.31Release date:<DATE_TIME> 12:21:23 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>:Mon Mar 04StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <ORGANIZATION> by: <ORGANIZATION>A[0] SUCCESS[0] FAILED[0] REPEATEDN/AAPACN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AEMEAN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBL(EX-US)N/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBLUSN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/ATests ready and approved:approved by: <ORGANIZATION> ready and approved:approved by: Kacper UrbańskiSTAGE deployment details:STAGE deployment date:TODO Wed Jan 17 09:35:31 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON>:LinkStatusDetailsAMER<URL>/mdm-hub-kubernetes/view/APAC%20NPROD/job/deploy_mdmhub_apac_nprod_apac-stage/163/SUCCESSEMEA<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:TODO Wed Jan 17 09:35:31 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON>:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "<DATE_TIME>",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/<DATE_TIME>",
|
||
"content": "Release report:Release:4.1.29Release date:<DATE_TIME> 10:32:26 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>:Thu Mar 07 (in 1 weeks)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <DATE_TIME> by: <PERSON><URL> SUCCESS[0] FAILED[1] REPEATEDone failed test - <URL>PANYGlobalCustomerIdTest.testrepeated from local PC one more time by <PERSON> run on Reltio there were multiple events and test got blockedTest was repeated manually and passed with successAPAC<URL> SUCCESS[18] FAILED[3] REPEATEDAll [18] <ORGANIZATION> tests failed due to <ORGANIZATION> issue on <ORGANIZATION> side:same set of tests is successful on <ORGANIZATION> and <ORGANIZATION> so logic is working correctlyRCA:Repeated tests:repeated from local PC one more time by <PERSON> run on Reltio there were multiple events and test got blockedTest was repeated manually and passed with successEMEA<URL> SUCCESS[0] FAILED[3] REPEATEDRepeated tests:repeated from local PC one more time by <PERSON> run on Reltio there were multiple events and test got blockedTest was repeated manually and passed with successGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: Mikołaj MorawskiSTAGE deployment details:STAGE deployment date:<DATE_TIME> 11:17:34 <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:Kacper UrbańskiENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:TODODeployment approved:approved by: Mikołaj MorawskiDeployed by:<NRP> KućENV:LinkStatusDetailsAMERTODOSUCCESSAPACTODOSUCCESSEMEATODOSUCCESSGBL(EX-US)TODOSUCCESSGBLUSTODOSUCCESS"
|
||
},
|
||
{
|
||
"title": "4.3.0",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/4.3.0",
|
||
"content": "Release report:Release:4.3.0Release date:Thu Mar 14 11:30:13 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON> GO-LIVE:Tue Mar 21 (in 1 weeks)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Thu Mar 14Executed by: Mikołaj MorawskiAMER<URL> SUCCESS[0] FAILED[3] REPEATEDDCR tests failed due to <ORGANIZATION> issue on <ORGANIZATION> side:same set of tests is successful on <ORGANIZATION> and <ORGANIZATION> so logic is working correctlyRCA: expected:<A[UTO_REJECTED]> but was:<A[uto Rejected]>Repeated tests:repeated from local PC one more time by <PERSON> was repeated manually and passed with <ORGANIZATION>] FAILED[0] REPEATEDEMEA<URL> SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: Mikołaj MorawskiSTAGE deployment details:STAGE deployment date:Thu Mar 14 14:48:33 <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:Mikołaj MorawskiENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:Thu Mar 21 11:00:42 <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:<PERSON> SądowiczENV:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "4.6.0",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/4.6.0",
|
||
"content": "Release report:<PERSON> date:Thu Mar 21 <DATE_TIME> <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON> GO-LIVE:Tue Mar 28 (in 1 weeks)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Thu Mar 21Executed by: Mikołaj MorawskiAMER<URL> SUCCESS[1] FAILED[0] REPEATEDAPAC<URL> SUCCESS[2] FAILED[0] REPEATEDDCR tests failed due to <ORGANIZATION> issue on <ORGANIZATION> side:same set of tests is successful <ORGANIZATION> so logic is working correctlyRCA:<URL>parisonFailure: expected:<A[uto Rejected]> but was:<A[UTO_REJECTED]>Ignoring and approved by <PERSON> because we are still waiting for RDM configuration on DEVEMEA<URL> SUCCESS[2] FAILED[0] REPEATEDDCR tests failed due to <ORGANIZATION> issue on <ORGANIZATION> side:same set of tests is successful <ORGANIZATION> so logic is working correctlyRCA:<URL>parisonFailure: expected:<A[uto Rejected]> but was:<A[UTO_REJECTED]>Ignoring and approved by <PERSON> because we are still waiting for RDM configuration on DEVGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: Mikołaj MorawskiSTAGE deployment details:STAGE deployment date:Thu Mar 26 08:01:19 <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:Mikołaj MorawskiENV:LinkStatusDetailsAMER<URL> (blocked due to <ORGANIZATION><URL>(EX-US)<URL> PROD deployment report:PROD deployment date:Thu Mar 28 09:23:52 <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:<PERSON> SądowiczENV:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "4.9.0",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.9.0",
|
||
"content": "Release report:Release:4.9.0Release date:Thu Apr 10 10:01:19 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<NRP> KućPlanned GO-LIVE:Tue Apr 11 (in 1 day)StageLinkStatusComments (images 600px)Build:<URL> code has been released but job failed because of issue related to docker cleanupCHANGELOG:<URL> tests:<URL> tests:Execution date: Thu Apr 10Executed by: <NRP>] SUCCESS[0] FAILED[0] REPEATEDAPACSkipped due to development of IoD project[0] SUCCESS[0] FAILED[0] REPEATEDEMEA[0] SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)[0] SUCCESS[0] FAILED[0] REPEATEDGBLUS[0] SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <LOCATION> deployment details:STAGE deployment date:Thu Apr 10 11:01:19 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<NRP> KućENV:LinkStatusDetailsAMER<URL> (blocked due to <ORGANIZATION><URL>(EX-US)<URL> PROD deployment report:PROD deployment date:Thu Apr 11 09:23:52 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<NRP> KućENV:LinkStatusDetailsAMERSUCCESSAPACSUCCESSEMEASUCCESSGBL(EX-US)SUCCESSGBLUSSUCCESS"
|
||
},
|
||
{
|
||
"title": "4.10.0",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.10.0",
|
||
"content": "Release report:Release:4.10.0Release date:Thu Apr 18 19:03:35 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Wed <DATE_TIME> (in 1 weeks)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Thu Apr 18Executed by: <PERSON> PrawdzikAMER[85] SUCCESS[0] FAILED[0] REPEATEDAPAC[89] SUCCESS[0] FAILED[0] REPEATEDEMEA[89] SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)[72] SUCCESS[0] FAILED[0] REPEATEDGBLUS[74] SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: Mikołaj MorawskiSTAGE deployment details:STAGE deployment date:Thu Apr 18 19:57:21 <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:Thu Apr 25 ??:??:?? <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:<PERSON> PrawdzikENV:LinkStatusDetailsAMERSUCCESSAPACSUCCESSEMEASUCCESSGBL(EX-US)SUCCESSGBLUSSUCCESS"
|
||
},
|
||
{
|
||
"title": "4.11.0",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/4.11.0",
|
||
"content": "Release report:Release:4.11.0Release date:Tue Apr 23 10:41:13 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>:Mon Apr 29 (in 1 week)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Tue Apr 23Executed by: <PERSON><URL> SUCCESS[0] FAILED[0] REPEATEDAPAC<URL> SUCCESS[0] FAILED[8] REPEATEDpart of <LOCATION> tests failed due to some timeout:<ORGANIZATION>: Action timeout after <PHONE_NUMBER> <URL>ed to receive message on endpoint: '<ORGANIZATION>-out-full-mde-cn'Repeated tests:repeated from local PC one more time by <PERSON> was repeated manually and passed with successEMEA<URL> SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: Mikołaj MorawskiSTAGE deployment details:STAGE deployment date:Tue Apr 23 11:26:52 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> Apr 23 SUCCESSAPAC<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:Mon Apr 29 08:37:50 <ORGANIZATION> 2024Deployment approved:approved by: Mikołaj MorawskiDeployed by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "4.11.1",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/4.11.1",
|
||
"content": "Release report:Release:4.11.1Release date:<DATE_TIME> 08:16:41 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:<DATE_TIME> (same day)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <ORGANIZATION> by: <ORGANIZATION>A[0] SUCCESS[0] FAILED[0] REPEATEDN/AAPACN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AEMEAN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBL(EX-US)N/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBLUSN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/ATests ready and approved:approved by: <ORGANIZATION> ready and approved:approved by: STAGE deployment details:STAGE deployment date:<DATE_TIME> 08:54:16 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:<DATE_TIME> 10:07:44 <ORGANIZATION> 2024Deployment approved:approved by: <LOCATION> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "4.12.0",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/4.12.0",
|
||
"content": "Release report:<PERSON> date:Mon <DATE_TIME> 12:03:50 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:<DATE_TIME> (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Mon May 13Executed by: <PERSON><URL> SUCCESS[3] FAILED[0] REPEATEDRCA: Tenant [wn60kG248ziQSMW] is not registered.APAC<URL> SUCCESS[0] FAILED[2] REPEATEDone of <LOCATION> tests failed due to timeout:<ORGANIZATION>: Action timeout after <PHONE_NUMBER> <URL>ed to receive message on endpoint: '<ORGANIZATION>-out-full-mde-cn'Repeated tests:repeated from local PC one more time by <PERSON> was repeated manually and passed with successEMEA<URL> SUCCESS[1] FAILED[0] REPEATEDRCA: Tenant [wn60kG248ziQSMW] is not <URL>L(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[1] REPEATEDone of the tests failed due to unsufficient time to get proper eventType:<ORGANIZATION>: Validation failed: Values not equal for element '$.eventType', expected 'HCP_MERGED' but was 'ENTITY_POTENTIAL_LINK_FOUND'Repeated test:repeated from local PC one more time by <PERSON> was repeated manually with increased number of retries and passed with successTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Mon <DATE_TIME> 12:52:59 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:<DATE_TIME> 09:35:26 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "4.12.1",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.12.1",
|
||
"content": "Release report:Release:4.12.1Release date:<DATE_TIME> 08:44:41 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:<DATE_TIME> (same day)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <ORGANIZATION> by: <ORGANIZATION>A[0] SUCCESS[0] FAILED[0] REPEATEDN/AN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AEMEAN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBL(EX-US)N/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBLUSN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/ATests ready and approved:approved by: <ORGANIZATION> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:<DATE_TIME> 09:26:46 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> PROD deployment report:PROD deployment date:Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "4.14.0",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.14.0",
|
||
"content": "Release report:Release:4.14.0Release date:<DATE_TIME> 15:14:52 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Thu Jun 6StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <DATE_TIME> 29Executed by: <PERSON><URL> SUCCESS[0] FAILED[1] REPEATEDRecent changes in <URL>ouldInactivateHCP test has caused its <URL>peated from local PC one more time by <PERSON> was repeated manually and passed with <PERSON> for this test is being praperedAPAC<URL> SUCCESS[0] FAILED[1] REPEATEDEMEA<URL> SUCCESS[0] FAILED[1] REPEATEDRecent changes in <URL>ouldInactivateHCP test has caused its <URL>peated from local PC one more time by <PERSON> was repeated manually and passed with <PERSON> for this test is being praperedGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:<DATE_TIME> 16:36:37 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> STAGE test phase details:Verification date06 Jun 2024 <DATE_TIME> 12:15Verification byBachanowicz, Mieczysław (Irek) DashboardHintsStatusDetailsMDMHUB / <ORGANIZATION> errorsIncreased number of alerts → there's certainly something wrongSUCCESSAPAC <ORGANIZATION> / MDMHUB KPIsSpikes, especially wide ones, suggest potential issueSUCCESSMDMHUB / MDMHUB Components resourceComponent specific analysis, especially good for the ones updated within latest release (check news fragments)SUCCESSBatch serviceEntity enricherMap channelMDM AuthMDM ReconciliationRaw dataGeneral / Snowflake QC TrendsQuick and easy way to determine if there's something wrong with <LOCATION>. Any change (lower/higher) → potential issueSUCCESSKubernetes / Vertical Pod Autoscaler (VPA)Change in memory requirement before and after deployment → potential issue not verifiedKubernetes / K8s Cluster Usage StatisticsGood for PROD environments since <ORGANIZATION> is to prone to project specific loadsSUCCESSKubernetes / Pod MonitoringComponent specific analysis, especially good for the ones updated within latest release (check news fragments)APAC <ORGANIZATION>-persistent-volumes Storage trend over time <ORGANIZATION> after release → potential issue <ORGANIZATION> NPRODGBLGeneral / SSL Certificates and Endpoint AvailabilityLower widget, multiple stacked endpoints at the same time for a long periodSUCCESSPROD deployment report:PROD deployment date:Thu Jun 06 11:37:04 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> deploy hypercare details:Verification date13 Jun 2024 12:37Verification byBachanowicz, Mieczysław (Irek) DashboardHintsStatusDetailsMDMHUB / <ORGANIZATION> errorsIncreased number of alerts → there's certainly something wrongSUCCESSMDMHUB / MDMHUB KPIsSpikes, especially wide ones, suggest potential issueSUCCESSMDMHUB / MDMHUB Components resourceComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / Snowflake QC TrendsQuick and easy way to determine if there's something wrong with <LOCATION>. Any change (lower/higher) → potential issueSUCCESSKubernetes / Vertical Pod Autoscaler (VPA)Change in memory requirement before and after deployment → potential issue <ORGANIZATION> for PROD environments since <ORGANIZATION> is to prone to project specific loadsSUCCESSKubernetes / Pod MonitoringComponent specific analysis, especially good for the ones updated within latest release (check news fragments)SUCCESSGeneral / kubernetes-persistent-volumes Storage trend over time <ORGANIZATION> after release → potential issue <ORGANIZATION> and Endpoint AvailabilityLower widget, multiple stacked endpoints at the same time for a long periodSUCCESS"
|
||
},
|
||
{
|
||
"title": "4.12.2",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/4.12.2",
|
||
"content": "Release report:<ORGANIZATION> date:Tue Jun 04 12:19:52 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Tue Jun 4 (same day)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <ORGANIZATION> by: <ORGANIZATION>A[0] SUCCESS[0] FAILED[0] REPEATEDN/AN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AEMEAN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBL(EX-US)N/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBLUSN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/ATests ready and approved:approved by: <ORGANIZATION> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Tue Jun 04 13:27:51 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMERSUCCESSAPACSUCCESSEMEASUCCESSGBL(EX-US)SUCCESSGBLUS<URL> PROD deployment report:PROD deployment date:Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL>"
|
||
},
|
||
{
|
||
"title": "4.14.1",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/4.14.1",
|
||
"content": "Release report:Release:4.14.1Release date:Tue Jun 11 <DATE_TIME> <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Tue Jun 11 (same day)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <ORGANIZATION> by: <ORGANIZATION>A[0] SUCCESS[0] FAILED[0] REPEATEDN/AN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AEMEAN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBL(EX-US)N/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBLUSN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/ATests ready and approved:approved by: <ORGANIZATION> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Tue Jun 11 11:27:31 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> STAGE test phase details:Verification date06 <PERSON><DATE_TIME> Jun 2024 12:15Verification byBachanowicz, Mieczysław (Irek) DashboardHintsStatusDetailsMDMHUB / <ORGANIZATION> errorsIncreased number of alerts → there's certainly something wronge.g. SUCCESSMDMHUB / MDMHUB KPIsSpikes, especially wide ones, suggest potential <ORGANIZATION> resourceComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / Snowflake QC TrendsQuick and easy way to determine if there's something wrong with <LOCATION>. Any change (lower/higher) → potential issueKubernetes / Vertical Pod Autoscaler (VPA)Change in memory requirement before and after deployment → potential issue <ORGANIZATION> for PROD environments since <ORGANIZATION> is to prone to project specific loadsKubernetes / Pod MonitoringComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / kubernetes-persistent-volumes Storage trend over time <ORGANIZATION> after release → potential issue <ORGANIZATION> and Endpoint AvailabilityLower widget, multiple stacked endpoints at the same time for a long periodPROD deployment report:PROD deployment date:Tue Jun 11 12:40:35 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> deploy hypercare details:Verification dateusually Deployment_date + 24-48hVerification bye.g. <PERSON>, Mieczysław (Irek) DashboardHintsStatusDetailsMDMHUB / <ORGANIZATION> errorsIncreased number of alerts → there's certainly something wronge.g. SUCCESSMDMHUB / MDMHUB KPIsSpikes, especially wide ones, suggest potential <ORGANIZATION> resourceComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / Snowflake QC TrendsQuick and easy way to determine if there's something wrong with <LOCATION>. Any change (lower/higher) → potential issueKubernetes / Vertical Pod Autoscaler (VPA)Change in memory requirement before and after deployment → potential issue <ORGANIZATION> for PROD environments since <ORGANIZATION> is to prone to project specific loadsKubernetes / Pod MonitoringComponent specific analysis, especially good for the ones updated within latest release (check news fragments)General / kubernetes-persistent-volumes Storage trend over time <ORGANIZATION> after release → potential issue <ORGANIZATION> and Endpoint AvailabilityLower widget, multiple stacked endpoints at the same time for a long period"
|
||
},
|
||
{
|
||
"title": "4.15.0",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.15.0",
|
||
"content": "Release report:Release:4.15.0Release date:Thu Jun 13 15:45:35 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Thu Jun 20 (in 1 week)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Executed by: <PERSON> PrawdzikAMER<URL> SUCCESS[0] FAILED[0] REPEATEDAPAC[99] SUCCESS[0] FAILED[1] REPEATEDEMEA<URL> SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Thu Jun 13 17:46:23 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL><ORGANIZATION>deploy.logAPAC<URL> log:4.15.0-apac-stage-deploy.logEMEA<URL> log:4.15.0-emea-stage-deploy.logGBL(EX-US)<URL> log:4.15.0-gbl-stage-deploy.logGBLUS<URL> Deployment log:4.15.0-gblus-stage-deploy.logSTAGE test phase details:Verification date14 Jun 2024 15:30 - 16:20Verification byBachanowicz, Mieczysław (Irek) DashboardHintsStatusDetailsMDMHUB / MDMHUB Component errorsSUCCESSMDMHUB / MDMHUB KPIsSUCCESSMDMHUB / <ORGANIZATION> resourceSUCCESSAMER-STAGE - HTTP 401 - known issue with authorization to <ORGANIZATION> (<ORGANIZATION> Cluster Usage StatisticsSUCCESSKubernetes / Pod MonitoringSUCCESSAPAC DEV - Damian's tests <PERSON> published old version for a moment which behave strangle on <ORGANIZATION> DEV only (selective router)General / kubernetes-persistent-volumes <NRP>-STAGEGeneral / Alerts Statistics Why there are duplicates with _ and - ?EMEA-NPROD - Marek knows about this ? APAC-STAGE - something wrong with monitoring? constant "1" independent from timeframe?GBLUS-STAGE - Greg is working on it - note from karmaGeneral / SSL Certificates and Endpoint AvailabilityAPAC-NPROD - real issue or monitoring false positives? EMEA-NPROD - PROD deployment report:PROD deployment date:Thu Jun 20 11:52:28 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> deploy hypercare details:Verification date21 Jun 2024 15:45 + review 24 Jun 2024 <DATE_TIME> (<PERSON>, Mieczysław (Irek)) Verification byBachanowicz, Mieczysław (Irek) + Prawdzik, <PERSON> DashboardStatusDetailsMDMHUB / MDMHUB Component errorsDCR Oneky change was deployed without extensive testing <PERSON>. Verified with <PERSON> - no major risks to leave it unattained for <DATE_TIME><URL>LUS-PROD - mdm-manager, peak processingAPAC-PROD - onekey. <DATE_TIME> : Did not happen since then. <ORGANIZATION>-PROD mdm-managerAPAC-PROD DCR2 ServiceEMEA-PROD map-channel, strange errors GBL-PROD pforcerx channel - \n MR-9012\n -\n Getting issue details...\n STATUS\n 24 Jun 2024 Did not happen since then. GBL-PROD - Created \n MR-9011\n -\n Getting issue details...\n STATUS\n MDMHUB / MDMHUB KPIs <ORGANIZATION> to <PERSON> → IB: This is a recurring thing. Happens <DATE_TIME>. EMEA-PROD → IB: This is a recurring thing. Happens <DATE_TIME>. GBL-PROD → IB: This is a recurring thing. Happens <DATE_TIME>. <ORGANIZATION> resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod MonitoringEMEA-PROD - known issue during deploymentGeneral / kubernetes-persistent-volumes <ORGANIZATION> zookeeper reelectionGBLUS-PROD high processing, corresponds with manager <ORGANIZATION>-PROD deployment issueGeneral / SSL Certificates and Endpoint Availability"
|
||
},
|
||
{
|
||
"title": "4.16.0",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/4.16.0",
|
||
"content": "Release report:Release:4.16.0Release date:Mon Jun 24 <DATE_TIME> <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Thu Jun 27 (in 3 days)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Tue Jun 25 17:00:03 <ORGANIZATION> 2024Executed by: <ORGANIZATION>] FAILED[0] REPEATEDAPAC<URL> SUCCESS[0] FAILED[0] REPEATEDEMEA<URL> SUCCESS[0] FAILED[1] REPEATEDGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Mon Jun 24 21:05:13 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> log:4.16.0-amer-stage-deploy.logAPAC<URL> log:4.16.0-apac-stage-deploy.logEMEA<URL> log:4.16.0-emea-stage-deploy.logGBL(EX-US)<URL> log:4.16.0-gbl-stage-deploy.logGBLUS<URL> Deployment log:4.16.0-gblus-stage-deploy.logSTAGE test phase details:Verification date27 <DATE_TIME> 10:45 - 11:45Verification byBachanowicz, Mieczysław (Irek) + Prawdzik, <PERSON> DashboardStatusDetailsMDMHUB / MDMHUB Component errors AMER-STAGE - small issues with COMPANYGlobalCustomerID (COMPANY Customer Id: <PHONE_NUMBER> does not exist in <ORGANIZATION> or is deactivated) <ORGANIZATION>-STAGE - AWS issueAWS does not show any problems with their <ORGANIZATION> services EMEA-STAGE, manager <ORGANIZATION>-STAGE, manager <PERSON> / MDMHUB KPIs EMEA-STAGE MDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod Monitoring APAC-STAGE - Mon morning - HCONames memory reload, config update by <ORGANIZATION> / kubernetes-persistent-volumes <ORGANIZATION> APAC-STAGE - <DATE_TIME>, <DATE_TIME>, a lot of strange errors, corelates with <ORGANIZATION> issue AMER-STAGE + APAC-STAGE + GBLUS - stage- Grzesiek - wt/środa - Snowflake na Stageach?4General / SSL Certificates and Endpoint AvailabilityAPAC-NPRODPROD deployment report:PROD deployment date:Thu Jun 27 09:43:12 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> log:4.16.0-amer-prod-deploy.logAPAC<URL> log:4.16.0-apac-prod-deploy.logEMEA<URL> log:4.16.0-emea-prod-deploy.logGBL(EX-US)<URL> log:4.16.0-gbl-prod-deploy.logGBLUS<URL> log:4.16.0-gblus-prod-deploy.logPROD deploy hypercare details:Verification date28 Jun <DATE_TIME> 16-17:00Verification byBachanowicz, Mieczysław (Irek) , <ORGANIZATION>, <PERSON> + feat. <PERSON>, <PERSON> , <ORGANIZATION>, <PERSON> errors AMER-PROD - mdm service 2 + OneKey - 2 examples of failed lookup codes transformation Issue found for two <ORGANIZATION> requests. Failed to send req to OK: IB> <PERSON> - create ticket3bd7e9217a004b37a2c0cbd7afabda1f4d9e09c06b89494c950a759889cf12d0low priority issue - lepsza <ORGANIZATION> to pojawia <PERSON> (<ORGANIZATION>) "Create dcr exception"wywałko w endpoicie OneKeylog1.txt AMER-PROD - clean <ORGANIZATION> → create ticket to clean up such "errors" GBLUS-PROD - single error, however huge EMEA-PROD, map-channel, <ORGANIZATION>, <ORGANIZATION> restarted component. EMEA-PROD, minor issue, for further investigation (<PERSON>) - low prio GBLUS-PROD, Know issue - \n MR-9011\n -\n Getting issue details...\n STATUS\n MDMHUB / MDMHUB KPIs Publishing latency ~1year -known issue, ticket to create (IB)GBL-PRODMDMHUB / MDMHUB Components resource <ORGANIZATION>, map channel, high <ORGANIZATION> usage, to verify on <ORGANIZATION> / kubernetes-persistent-volumes General / Alerts Statistics GBL-PROD - confirm with <PERSON> that's not an issueGeneral / SSL Certificates and Endpoint Availability US-PROD IB > Ticket to create to check env selectors for us-prod"
|
||
},
|
||
{
|
||
"title": "4.17.0",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.17.0",
|
||
"content": "Release report:<PERSON> date:<DATE_TIME> 15:13:34 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Thu Jul 4 (in 3 days)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Executed by: <PERSON> PrawdzikAMER[85] SUCCESS[0] FAILED[0] REPEATEDAPAC[102] SUCCESS[0] FAILED[0] REPEATEDEMEA[89] SUCCESS[0] FAILED[1] REPEATEDGBL(EX-US)[73] SUCCESS[0] FAILED[0] REPEATEDGBLUS[75] SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMERSUCCESSAPACSUCCESSEMEASUCCESSGBL(EX-US)SUCCESSGBLUSSUCCESS STAGE test phase details:Verification dateVerification byDashboardStatusDetailsMDMHUB / MDMHUB Component errorsMDMHUB / MDMHUB KPIsMDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod MonitoringGeneral / kubernetes-persistent-volumes <ORGANIZATION> and Endpoint AvailabilityPROD deployment report:PROD deployment date:Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMERSUCCESSAPACSUCCESSEMEASUCCESSGBL(EX-US)SUCCESSGBLUSSUCCESSPROD deploy hypercare details:Verification dateVerification byDashboardStatusDetailsMDMHUB / MDMHUB Component errorsMDMHUB / MDMHUB KPIsMDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod MonitoringGeneral / kubernetes-persistent-volumes <ORGANIZATION> and Endpoint Availability"
|
||
},
|
||
{
|
||
"title": "4.16.1",
|
||
"<PERSON>": "<US_PASSPORT>",
|
||
"pageLink": "/display/GMDM/4.16.1",
|
||
"content": "Release report:<PERSON> date:Tue Jul 02 10:02:19 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Tue Jul 02 (same day)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <ORGANIZATION> by: <ORGANIZATION>A[0] SUCCESS[0] FAILED[0] REPEATEDN/AAPACN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AEMEAN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBL(EX-US)N/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBLUSN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/ATests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMERSUCCESSAPACSUCCESSEMEASUCCESSGBL(EX-US)SUCCESSGBLUSSUCCESS STAGE test phase details:Verification date02 Jul <DATE_TIME> 13.00 - 14.00Verification byPrawdzik, <PERSON> DashboardStatusDetailsMDMHUB / MDMHUB Component errors MDMHUB / MDMHUB KPIs <ORGANIZATION> resource <ORGANIZATION> / kubernetes-persistent-volumes General / Alerts Statistics General / SSL Certificates and Endpoint Availability PROD deployment report:PROD deployment date:Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL>(EX-US)<URL> deploy hypercare details:Verification dateVerification byDashboardStatusDetailsMDMHUB / MDMHUB Component errorsMDMHUB / MDMHUB KPIsMDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod MonitoringGeneral / kubernetes-persistent-volumes <ORGANIZATION> and Endpoint Availability"
|
||
},
|
||
{
|
||
"title": "4.18.0",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.18.0",
|
||
"content": "Release report:<PERSON> date:Tue Jul 02 14:57:49 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Thu Jul 04 (in 2 days)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Tue Jul 02 15:59:32 <ORGANIZATION> 2024Executed by: <PERSON>] FAILED[0] REPEATEDAPAC[94] SUCCESS[1] FAILED[7] REPEATEDone of <LOCATION> tests failed due to timeout:<ORGANIZATION>: Action timeout after <PHONE_NUMBER> <URL>ed to receive message on endpoint: '<ORGANIZATION>-out-full-hcp-merge-cn'Repeated tests:several test failed due ro recent change of <ORGANIZATION> tracking statues on <ORGANIZATION> on Reltio siderepeated from local PC (with updated values) one more time by <PERSON> were repeated manually and passed with successfix for these tests is being preparedEMEA<URL> SUCCESS[0] FAILED[1] REPEATEDGBL(EX-US)<URL> SUCCESS[0] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Tue Jul 02 15:34:46 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL><ORGANIZATION>deploy.logAPAC<URL> log:4.18.0-apac-stage-deploy.logEMEA<URL> log:4.18.0-emea-stage-deploy.logGBL(EX-US)<URL> log:4.18.0-gbl-stage-deploy.logGBLUS<URL> Deployment log:4.18.0-gblus-stage-deploy.logSTAGE test phase details:Verification dateVerification byDashboardStatusDetailsMDMHUB / MDMHUB Component errorsMDMHUB / MDMHUB KPIsMDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod MonitoringGeneral / kubernetes-persistent-volumes <ORGANIZATION> and Endpoint AvailabilityPROD deployment report:PROD deployment date:Thu Jul 04 08:28:26 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> <ORGANIZATION><URL> log:4.18.0-apac-prod-deploy.logEMEA<URL> log:4.18.0-emea-prod-deploy.logGBL(EX-US)<URL> log:4.18.0-gbl-prod-deploy.logGBLUS<URL> log:4.18.0-gblus-prod-deploy.logPROD deploy hypercare details:Verification date05 Jul 2024 15:30 - 17:00Verification byBachanowicz, Mieczysław (Irek), <ORGANIZATION>, <PERSON> feat <LOCATION>, <PERSON> DashboardStatusDetailsMDMHUB / MDMHUB Component errors AMER-PROD - batch-service: data input issue, OneMed job - incorrect data ← <PERSON>, mdm-dcr2-service: know issue: "Can't convert data to <ORGANIZATION>, manager: Error processing request <ORGANIZATION>, onekey-dcr: know-issue <ORGANIZATION>, mdm-manager <ORGANIZATION>, <ORGANIZATION> channelnon-cirtical - needs to be verified "later" EMEA-PROD, manager,minor to verify cause:" <URL>ientErrorException: HTTP 429 Too Many Requests at" GBL-PROD, manager - known issueMDMHUB / MDMHUB KPIs GBLUS-PROD - why it wasn't smoothly processed? GBL-PRODMDMHUB / MDMHUB Components resource <ORGANIZATION>GBLUS-PROD GBL-PROD, publisher, manager high usage <ORGANIZATION>, 7d <ORGANIZATION> / kubernetes-persistent-volumes General / Alerts Statistics AMER-PROD, empty COMPANYGlobalCustomerIdTicker raised by COMPANY to Reltio team - \n HSM-708\n -\n Getting issue details...\n STATUS\n + <URL> not an issueGBLUS-PROD, probably COMPANY manual merge/unmergeGeneral / SSL Certificates and Endpoint Availability Schedule meeting with <PERSON> how to deep dive to diagnose \n MR-9088\n -\n Getting issue details...\n STATUS\n \n MR-9089\n -\n Getting issue details...\n STATUS\n Kibana "<ORGANIZATION>-events" indice contains logs from kubernets EMEA-PROD - DCR, required further verification with <ORGANIZATION>. "
|
||
},
|
||
{
|
||
"title": "4.18.1",
|
||
"<PERSON>": "<US_BANK_NUMBER>",
|
||
"pageLink": "/display/GMDM/4.18.1",
|
||
"content": "Release report:Release:4.18.1Release date:Mon Jul 08 15:01:32 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Tue Jul 09 (in 1 day)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: <ORGANIZATION> by: <ORGANIZATION>A[0] SUCCESS[0] FAILED[0] REPEATEDN/AAPACN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AEMEAN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBL(EX-US)N/A[0] SUCCESS[0] FAILED[0] REPEATEDN/AGBLUSN/A[0] SUCCESS[0] FAILED[0] REPEATEDN/ATests ready and approved:approved by: Release ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:(Tue Jul 09 07:07:46 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> log:4.18.1-amer-stage-deploy.logAPAC<URL> log:4.18.1-apac-stage-deploy.logEMEA<URL> log:4.18.1-emea-stage-deploy.logGBL(EX-US)<URL> log:4.18.1-gbl-stage-deploy.logGBLUS<URL> Deployment log:4.18.1-gblus-stage-deploy.logSTAGE test phase details:Verification date09 Jul 2024 12:00Verification byPrawdzik, <PERSON> DashboardStatusDetailsMDMHUB / MDMHUB Component errors MDMHUB / MDMHUB KPIs <ORGANIZATION> resource <ORGANIZATION> / kubernetes-persistent-volumes General / Alerts Statistics General / SSL Certificates and Endpoint Availability PROD deployment report:PROD deployment date:Thu Jul 04 08:28:26 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> log:4.18.1-amer-prod-deploy.logAPAC<URL> log:4.18.1-apac-prod-deploy.logEMEA<URL> log:4.18.1-emea-prod-deploy.logGBL(EX-US)<URL> log:4.18.1-gbl-prod-deploy.logGBLUS<URL> log:4.18.1-gblus-prod-deploy.logPROD deploy hypercare details:Verification dateVerification byDashboardStatusDetailsMDMHUB / MDMHUB Component errorsMDMHUB / MDMHUB KPIsMDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod MonitoringGeneral / kubernetes-persistent-volumes <ORGANIZATION> and Endpoint Availability"
|
||
},
|
||
{
|
||
"title": "4.19.0",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.19.0",
|
||
"content": "Release report:<PERSON> date:Tue Jul 09 14:29:10 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Thu Jul 11 (in 2 days)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Tue Jul 09 17:00:03 <ORGANIZATION> 2024Executed by: <PERSON> PrawdzikAMER<URL> SUCCESS[0] FAILED[0] REPEATEDAPAC<URL> SUCCESS[0] FAILED[4] REPEATEDEMEA<URL> SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)<URL> SUCCESS[1] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Tue Jul 09 15:15:26 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> log:APAC<URL> log:EMEA<URL> log:GBL(EX-US)<URL> log:GBLUS<URL> Deployment log:STAGE test phase details:Verification date11 Jul 2024 11:00 - 12:00Verification byPrawdzik, <PERSON> , <PERSON>, Mieczysław (Irek) <PERSON>, KlaudiaDashboardStatusDetailsMDMHUB / MDMHUB Component errors MDMHUB / MDMHUB KPIs <ORGANIZATION>-STAGEMDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod MonitoringGeneral / kubernetes-persistent-volumes <ORGANIZATION> APAC-STAGE - known issue? <ORGANIZATION>, <LOCATION> <DATE_TIME>, <ORGANIZATION> job completion? pod crash looping pdk?General / SSL Certificates and Endpoint Availability Need to monitor production deployment for this irregularitiesAMER-NPROD APAC-DEV, <ORGANIZATION>, <PERSON>: bean issue, strange, nothing corelated to recent changes in code. Error: "requestScopedExchange" <ORGANIZATION>, <ORGANIZATION>, <PERSON> checked logs, nothing unusual. Need to increase logs in blackbox <ORGANIZATION> deployment report:PROD deployment date:Thu Jul 11 10:17:20 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> log:APAC<URL> log:EMEA<URL> log:GBL(EX-US)<URL> log:GBLUS<URL> log:PROD deploy hypercare details:Verification date12 Jul <DATE_TIME> + warning revalidation on <DATE_TIME> 10:00Verification byBachanowicz, Mieczysław (Irek) , <ORGANIZATION>, <PERSON> DashboardStatusDetailsMDMHUB / MDMHUB Component errors <ORGANIZATION>, manager\n MR-9097\n -\n Getting issue details...\n STATUS\n \n MR-9098\n -\n Getting issue details...\n STATUS\n <ORGANIZATION>-PRODWe need to meetup with <PERSON> and verify this issues <PERSON> / MDMHUB KPIs EMEA-PROD GBL-PRODMDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsEMEA-PRODKubernetes / Pod Monitoring GBL-PRODVerification on <DATE_TIME> - high memory usageGeneral / kubernetes-persistent-volumes <ORGANIZATION> AMER-PROD disk space <ORGANIZATION> broken eventsZookeper - info from <PERSON> in Karma that it's nothing to be afraid ofQuality gateway - confirmed with <PERSON> broken eventsSnowflake EMEA-PRODHigh load - confirmed with <PERSON> and <PERSON>-PRODHigh eta - china reaload (info in karma) GBLUS-PRODQuality gateway - <LOCATION> addressed it to Deloite (info from Piotr)Confirmed with <ORGANIZATION> and Endpoint Availability PRODy "
|
||
},
|
||
{
|
||
"title": "4.21.0",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/display/GMDM/4.21.0",
|
||
"content": "Release report:Release:4.21.0Release date:Tue Jul 09 14:29:10 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Thu Jul 18 (in 2 days)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:SUCCESSIntegration tests:Execution date: Sun Jul 14 17:00:05 <ORGANIZATION> 2024Executed by: <PERSON> PrawdzikAMER<URL> SUCCESS[0] FAILED[0] REPEATEDAPAC<URL> SUCCESS[0] FAILED[0] REPEATEDEMEA<URL> SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)<URL> SUCCESS[1] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Tue Jul 16 22:15:07 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL><ORGANIZATION>deploy.logAPAC<URL> log:4.21.0-apac-stage-deploy.logEMEA<URL> log:4.21.0-emea-stage-deploy.logGBL(EX-US)<URL> log:4.21.0-gbl-stage-deploy.logGBLUS<URL> Deployment log:4.21.0-gblus-stage-deploy.logSTAGE test phase details:Verification date18 <DATE_TIME> 13:00Verification byPrawdzik, <PERSON>, Mieczysław (Irek) <PERSON>, <PERSON> <ORGANIZATION> errors AMER-NPROD - know issue during deployment <ORGANIZATION>-STAGE - dcr servce 2 create ticket to change error 400 to warning to verify if these publishing errors may cause some synchronization issues in <ORGANIZATION>? Memory issue. Caused by <ORGANIZATION> to <ORGANIZATION>-STAGE cloningMDMHUB / MDMHUB KPIs <ORGANIZATION>-STAGE - env cloning EMEA-STAGE, 1h+ long publishing <ORGANIZATION> / kubernetes-persistent-volumes <ORGANIZATION> - high ETAthis graph does not reflect thisGeneral / SSL Certificates and Endpoint Availability <ORGANIZATION>, cloning related <ORGANIZATION>/<ORGANIZATION> - a lot of strange endpoint failuersMarek/Damian - to verifyPROD deployment report:PROD deployment date:Thu Jul 18 12:57:55 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL> log:4.21.0-amer-prod-deploy.logAPAC<URL> log:4.21.0-apac-prod-deploy.logEMEA<URL> log:4.21.0-emea-prod-deploy.logGBL(EX-US)<URL> log:4.21.0-gbl-prod-deploy.logGBLUS<URL> log:4.21.0-gblus-prod-deploy.logPROD deploy hypercare details:Verification dateVerification byRelease on prod wasn't verified since <PERSON>. <ORGANIZATION> resourceGeneral / Snowflake QC TrendsKubernetes / K8s Cluster Usage StatisticsKubernetes / Pod MonitoringGeneral / kubernetes-persistent-volumes <ORGANIZATION> and Endpoint Availability"
|
||
},
|
||
{
|
||
"title": "4.22.0",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/GMDM/4.22.0",
|
||
"content": "Release report:Release:4.22.0Release date:Tue Jul 23 16:32:08 <ORGANIZATION> 2024STATUSES: SUCCESS / FAILED / <ORGANIZATION> by:<PERSON>-LIVE:Thu Jul 25 (in 2 days)StageLinkStatusComments (images 600px)Build:<URL> CHANGELOG:<URL> tests:<URL> tests:Execution date: Tue Jul 23 17:24:15 <ORGANIZATION> 2024Executed by: <PERSON> PrawdzikAMER<URL> SUCCESS[0] FAILED[0] REPEATEDAPAC<URL> SUCCESS[8] FAILED[0] REPEATEDEMEA<URL> SUCCESS[0] FAILED[0] REPEATEDGBL(EX-US)<URL> SUCCESS[1] FAILED[0] REPEATEDGBLUS<URL> SUCCESS[0] FAILED[0] REPEATEDTests ready and approved:approved by: <PERSON> ready and approved:approved by: <PERSON> PrawdzikSTAGE deployment details:STAGE deployment date:Tue Jul 23 17:23:40 <ORGANIZATION> 2024Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL><ORGANIZATION>deploy.logAPAC<URL> log:4.22.0-apac-stage-deploy.logEMEA<URL> log:4.22.0-emea-stage-deploy.logGBL(EX-US)<URL> log:4.22.0-gbl-prod-deploy.logGBLUS<URL> Deployment log:4.22.0-gblus-prod-deploy.logSTAGE test phase details:Verification date25 Jul 2024 11:15 - 12:30Verification byBachanowicz, Mieczysław (Irek) + Prawdzik, <PERSON> feat. <PERSON>, <PERSON> <ORGANIZATION> errors AMER-STAGE, EMEA-STAGE, known errors for OneKey DCRAPAC-STAGE, mdmhub-rawdata-exporter - too big request (6.6GB) - Elastic blocks? Whos doing that stacktrace: StreamsException.jsonto Rafał EMEA-STAGE, mdmhub-mdm-manager, issues already reported earlier <ORGANIZATION>-STAGE, something with batches (UpdateHCPBatchRestRoute) - probably wrong JSON - ticket to make it more pleasant <PERSON> / MDMHUB KPIsIrek>ask <NRP> - what does "Publishing latency" mean - total delay of our processing stack?MDMHUB / <ORGANIZATION> resource EMEA-STAGE, Batch service, more memory usage? → nothing to worry about GBLUS, <ORGANIZATION>, more memory? → nothing to worry aboutGeneral / Snowflake QC Trends Kubernetes / K8s Cluster Usage StatisticsEMEA-NPROD, higher <ORGANIZATION> usage, storage usage increaseKubernetes / Pod MonitoringAMER-NPROD, something is happening → batch processing, Reltio caps events to be processed which we complGeneral / kubernetes-persistent-volumes <ORGANIZATION>, increasing storage usage → entity enricher working (15M events being processed)need to be verified with <ORGANIZATION> <ORGANIZATION>, <ORGANIZATION> down, what does it mean? We don't have such alerts → glitch in the matrixPublisher broken events - addressed in Karma by Will reconciliation_events_threshold_exceeded? customresource_status_condition → Related to <PERSON> usuallzookeeper_fsync_time_too_long - waiting for more <ORGANIZATION> customresource_status_condition - <PERSON> testing <ORGANIZATION> - kong3_http_503_status_nprodGeneral / SSL Certificates and Endpoint AvailabilityEMEA-DEV, dcr - Piotr testingPROD deployment report:PROD deployment date:Thu Jul 25 11:07:26 <ORGANIZATION> 2024 Deployment approved:approved by: <PERSON> by:<PERSON> PrawdzikENV:LinkStatusDetailsAMER<URL><PERSON><URL> log:4.22.0-apac-prod-deploy.logEMEA<URL> log:4.22.0-emea-prod-deploy.logGBL(EX-US)<URL> log:4.22.0-gbl-prod-deploy.logGBLUS<URL> log:4.22.0-gblus-prod-deploy.logPROD deploy hypercare details:Verification date26 Jul 2024 15:30 - 16:40Verification byBachanowicz, Mieczysław (Irek) + Prawdzik, <PERSON> feat. <PERSON>, <PERSON> , <PERSON>, <ORGANIZATION> DashboardStatusDetailsMDMHUB / MDMHUB Component errorsAMER-PROD, Incorrect payload on <PERSON>, <PERSON> manually moved offset to fix this. GBLUS-PROD, single error with ";" and ")" <ORGANIZATION>, map channel:Failure not recoveredProcessing of message: <PERSON> failed with error: Invalid format: "<PERSON>" is malformed at "/20/1970"Piotr claims that this is <ORGANIZATION> queue probably with single problematic event. EMEA-PROD, map-channel:400x Unexpected response: { "status": "ERROR", "status_code": 403, "error_message": "<URL>teway.exception.RateLimitExceededException - TotalRequests Limit exceeded! (<PERSON>)" }Unexpected response: { "status": "ERROR", "status_code": 404, "error_message": "Contact not found by <NRP>=a0EF000000pI8bAMAS! (market=IE)" }MDMHUB / MDMHUB KPIsWithout refactoring this dashboard, no insights can be extracted. SkippingMDMHUB / MDMHUB Components resourceGeneral / Snowflake QC TrendsEMEA-PROD, Empty COMPANYGlobalCusdtomerID - such entities are deleted at Snowflake level → nothing gets populated to downstream. <ORGANIZATION>, suspicious memory usage? EMEA-PROD, config deployGeneral / kubernetes-persistent-volumes <ORGANIZATION> publisher_broken_events_prodquality_gateway_auto_resolved_eventhub_callback_loopGBLUS-PROD snowflake_last_entity_event_time_prodEMEA-PRODdag_failed_prod - existis for a long time, addressed in karma <URL>owflake_generated_events_without_COMPANY_global_customer_ids_prodAPAC-PROD pod_crashlooping_pdks - long time error in karmaGeneral / SSL Certificates and Endpoint Availability"
|
||
},
|
||
{
|
||
"title": "<ORGANIZATION>",
|
||
"<PERSON>": "<DATE_TIME>",
|
||
"pageLink": "/display/<ORGANIZATION>/<ORGANIZATION>",
|
||
"content": "Questions and answers about HUB topics."
|
||
},
|
||
{
|
||
"title": "What is survivorship strategy in <ORGANIZATION> and where to find it?",
|
||
"<PERSON>": "<US_SSN>",
|
||
"pageLink": "/pages/<URL>tion?pageId=<US_SSN>",
|
||
"content": "Simple attributes on <ORGANIZATION> profiles (not nested ones) have an <ORGANIZATION> attribute - showing whether the attribute value should be shown to user.Example:This <ORGANIZATION> has two COMPANY Customer IDs (from different crosswalks) and the visible one won during calculation of survivorship <URL>e survivorship rules can be configured separately for each environment and attribute. Those are part of Reltio configuration and can be accessed here (authentication type is <ORGANIZATION> survivorship rules:<URL>"
|
||
}
|
||
] |