[{"data":1,"prerenderedAt":431},["ShallowReactive",2],{"navigation_docs":3,"-data-ops-refreshing-vendors":209,"-data-ops-refreshing-vendors-surround":427},[4,8,50,75,133,149,162,171,205],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"path":10,"stem":11,"children":12,"page":49},"Company","\u002Fcompany","1.company",[13,17,21,25,29,33,37,41,45],{"title":14,"path":15,"stem":16},"About","\u002Fcompany\u002Fabout","1.company\u002F0.about",{"title":18,"path":19,"stem":20},"Values","\u002Fcompany\u002Fvalues","1.company\u002F1.values",{"title":22,"path":23,"stem":24},"Communication","\u002Fcompany\u002Fcommunication","1.company\u002Fcommunication",{"title":26,"path":27,"stem":28},"Competition","\u002Fcompany\u002Fcompetition","1.company\u002Fcompetition",{"title":30,"path":31,"stem":32},"Hybrid Working","\u002Fcompany\u002Fhybrid-working","1.company\u002Fhybrid-working",{"title":34,"path":35,"stem":36},"Operations","\u002Fcompany\u002Foperations","1.company\u002Foperations",{"title":38,"path":39,"stem":40},"Policies","\u002Fcompany\u002Fpolicies","1.company\u002Fpolicies",{"title":42,"path":43,"stem":44},"Product","\u002Fcompany\u002Fproduct","1.company\u002Fproduct",{"title":46,"path":47,"stem":48},"Security","\u002Fcompany\u002Fsecurity","1.company\u002Fsecurity",false,{"title":51,"path":52,"stem":53,"children":54,"page":49},"People Ops","\u002Fpeople-ops","2.people-ops",[55,59,63,67,71],{"title":56,"path":57,"stem":58},"Compensation","\u002Fpeople-ops\u002Fcompensation","2.people-ops\u002Fcompensation",{"title":60,"path":61,"stem":62},"Education","\u002Fpeople-ops\u002Feducation","2.people-ops\u002Feducation",{"title":64,"path":65,"stem":66},"Expenses","\u002Fpeople-ops\u002Fexpenses","2.people-ops\u002Fexpenses",{"title":68,"path":69,"stem":70},"Holiday & Leave","\u002Fpeople-ops\u002Fleave","2.people-ops\u002Fleave",{"title":72,"path":73,"stem":74},"Onboarding","\u002Fpeople-ops\u002Fonboarding","2.people-ops\u002Fonboarding",{"title":76,"path":77,"stem":78,"children":79,"page":49},"Engineering","\u002Fengineering","3.engineering",[80,84,88,92,96,117,121,125,129],{"title":81,"path":82,"stem":83},"Development Setup","\u002Fengineering\u002Fdevelopment-setup","3.engineering\u002F1.development-setup",{"title":85,"path":86,"stem":87},"Contributing","\u002Fengineering\u002Fcontributing","3.engineering\u002Fcontributing",{"title":89,"path":90,"stem":91},"Production Database","\u002Fengineering\u002Fdatabase-connection","3.engineering\u002Fdatabase-connection",{"title":93,"path":94,"stem":95},"Deployment","\u002Fengineering\u002Fdeployment","3.engineering\u002Fdeployment",{"title":97,"path":98,"stem":99,"children":100,"page":49},"Github","\u002Fengineering\u002Fgithub","3.engineering\u002Fgithub",[101,105,109,113],{"title":102,"path":103,"stem":104},"Packages","\u002Fengineering\u002Fgithub\u002Fpackages","3.engineering\u002Fgithub\u002Fpackages",{"title":106,"path":107,"stem":108},"Personal Access Token","\u002Fengineering\u002Fgithub\u002Fpersonal-access-token","3.engineering\u002Fgithub\u002Fpersonal-access-token",{"title":110,"path":111,"stem":112},"Troubleshooting","\u002Fengineering\u002Fgithub\u002Ftroubleshooting","3.engineering\u002Fgithub\u002Ftroubleshooting",{"title":114,"path":115,"stem":116},"Workflows","\u002Fengineering\u002Fgithub\u002Fworkflows","3.engineering\u002Fgithub\u002Fworkflows",{"title":118,"path":119,"stem":120},"Platform Ops","\u002Fengineering\u002Fplatform-ops","3.engineering\u002Fplatform-ops",{"title":122,"path":123,"stem":124},"Project Management","\u002Fengineering\u002Fproject-management","3.engineering\u002Fproject-management",{"title":126,"path":127,"stem":128},"Releases","\u002Fengineering\u002Frelease","3.engineering\u002Frelease",{"title":130,"path":131,"stem":132},"Tools","\u002Fengineering\u002Ftools","3.engineering\u002Ftools",{"title":134,"path":135,"stem":136,"children":137,"page":49},"Design","\u002Fdesign","4.design",[138,142,146],{"title":139,"path":140,"stem":141},"Branding","\u002Fdesign\u002Fbranding","4.design\u002Fbranding",{"title":143,"path":144,"stem":145},"Design Thinking","\u002Fdesign\u002Fdesign-thinking","4.design\u002Fdesign-thinking",{"title":130,"path":147,"stem":148},"\u002Fdesign\u002Ftools","4.design\u002Ftools",{"title":150,"path":151,"stem":152,"children":153,"page":49},"Sales","\u002Fsales","4.sales",[154,158],{"title":155,"path":156,"stem":157},"Customer Onboarding","\u002Fsales\u002Fonboarding","4.sales\u002Fonboarding",{"title":159,"path":160,"stem":161},"Sales Tools","\u002Fsales\u002Ftools","4.sales\u002Ftools",{"title":163,"path":164,"stem":165,"children":166,"page":49},"Marketing","\u002Fmarketing","5.marketing",[167],{"title":168,"path":169,"stem":170},"Messaging","\u002Fmarketing\u002Fmessaging","5.marketing\u002Fmessaging",{"title":172,"path":173,"stem":174,"children":175,"page":49},"Data Ops","\u002Fdata-ops","6.data-ops",[176,185,189,193,197,201],{"title":177,"path":178,"stem":179,"children":180,"page":49},"Capability Exchange","\u002Fdata-ops\u002Fcapability-exchange","6.data-ops\u002FCapability Exchange",[181],{"title":182,"path":183,"stem":184},"Leaderboard Calculation","\u002Fdata-ops\u002Fcapability-exchange\u002Fleaderboard-calculation","6.data-ops\u002FCapability Exchange\u002Fleaderboard-calculation",{"title":186,"path":187,"stem":188},"Account Portal (CAS)","\u002Fdata-ops\u002Faccount-portal","6.data-ops\u002Faccount-portal",{"title":190,"path":191,"stem":192},"Adding Products","\u002Fdata-ops\u002Faddin-products","6.data-ops\u002Faddin-products",{"title":194,"path":195,"stem":196},"Adding Vendors","\u002Fdata-ops\u002Fadding-vendors","6.data-ops\u002Fadding-vendors",{"title":198,"path":199,"stem":200},"Message Queues","\u002Fdata-ops\u002Fmessage-queues","6.data-ops\u002Fmessage-queues",{"title":202,"path":203,"stem":204},"Refreshing Vendors","\u002Fdata-ops\u002Frefreshing-vendors","6.data-ops\u002Frefreshing-vendors",{"title":206,"path":207,"stem":208},"Glossary","\u002Fglossary","glossary",{"id":210,"title":202,"body":211,"description":410,"extension":421,"links":422,"meta":423,"navigation":424,"path":203,"seo":425,"stem":204,"__hash__":426},"docs\u002F6.data-ops\u002Frefreshing-vendors.md",{"type":212,"value":213,"toc":409},"minimark",[214,219,224,233,237,243,247,250,297,309,313,316,384,387,391,394,401],[215,216,218],"h2",{"id":217},"vendor-data-refresh-process","Vendor Data Refresh Process",[220,221,223],"h3",{"id":222},"overview","Overview",[225,226,227,228,232],"p",{},"This document outlines the automated process for refreshing vendor data within our system. This specific workflow targets ",[229,230,231],"strong",{},"utilized vendors","—meaning it only updates the data for vendors that are actively used inside a customer's tenant.",[220,234,236],{"id":235},"architecture-pattern","Architecture Pattern",[225,238,239,240],{},"The data refresh process is orchestrated using n8n workflows and follows a decoupled, asynchronous execution pattern:\n",[229,241,242],{},"Scheduler > Message Queue > Trigger > Refresh Workflow",[220,244,246],{"id":245},"execution-flow","Execution Flow",[225,248,249],{},"The vendor refresh cycle operates automatically based on the following sequence of events:",[251,252,253,269,278,287],"ol",{},[254,255,256,259,260,264,265,268],"li",{},[229,257,258],{},"Scheduling:"," The ",[261,262,263],"code",{},"sheduleVendorRefreshV1.0"," workflow is configured to run automatically on the ",[229,266,267],{},"15th day of every month at 10:00 PM",".",[254,270,271,274,275,268],{},[229,272,273],{},"Queuing:"," When executed, the scheduler retrieves a list of all utilized vendors. It then publishes a trigger message for each vendor to the Message Queue (MQ) topic: ",[261,276,277],{},"dpe.internal.trigger.vendor.refresh",[254,279,280,259,283,286],{},[229,281,282],{},"Triggering:",[261,284,285],{},"triggerVendorRefreshV1.0"," workflow acts as a consumer for the queue. It pulls and consumes one message at a time to ensure system stability and prevent rate-limiting issues.",[254,288,289,292,293,296],{},[229,290,291],{},"Data Refresh:"," For each message consumed, the trigger activates the core ",[261,294,295],{},"vendorRefreshV1.0"," workflow. This final workflow performs the actual data updates, which include:",[298,299,300,303,306],"ul",{},[254,301,302],{},"Updating the vendor logo.",[254,304,305],{},"Updating the vendor operating status.",[254,307,308],{},"Applying basic updates to the vendor Data Transfer Object (DTO).",[220,310,312],{"id":311},"system-components-workflows","System Components & Workflows",[225,314,315],{},"Below are the dedicated n8n workflows that manage this process.",[317,318,319,335],"table",{},[320,321,322],"thead",{},[323,324,325,329,332],"tr",{},[326,327,328],"th",{},"Workflow Name",[326,330,331],{},"Description",[326,333,334],{},"n8n Environment URL",[336,337,338,356,370],"tbody",{},[323,339,340,345,348],{},[341,342,343],"td",{},[229,344,263],{},[341,346,347],{},"Cron-based scheduler that gathers utilized vendors and pushes messages to the MQ.",[341,349,350],{},[351,352,355],"a",{"href":353,"target":354},"https:\u002F\u002Fn8n.esp-prod:5678\u002Fworkflow\u002FDw5VnKAQ3bshqkysxJ7DX","_blank","View Workflow",[323,357,358,362,365],{},[341,359,360],{},[229,361,285],{},[341,363,364],{},"MQ consumer that processes messages one at a time to initiate the refresh.",[341,366,367],{},[351,368,355],{"href":369,"target":354},"https:\u002F\u002Fn8n.esp-prod:5678\u002Fworkflow\u002F14jB7k6FonhNCNDH",[323,371,372,376,379],{},[341,373,374],{},[229,375,295],{},[341,377,378],{},"Core worker that executes the DTO, logo, and status updates for a given vendor.",[341,380,381],{},[351,382,355],{"href":383,"target":354},"https:\u002F\u002Fn8n.esp-prod:5678\u002Fworkflow\u002FhPDiFW7dxi4xgrI3",[385,386],"hr",{},[220,388,390],{"id":389},"future-enhancements-product-portfolio-refresh","Future Enhancements: Product Portfolio Refresh",[225,392,393],{},"As the platform evolves, this vendor refresh architecture will be extended to synchronize the vendor's associated offerings.",[225,395,396,397,400],{},"In the future, we plan to link the vendor data refresh directly with a ",[229,398,399],{},"product portfolio refresh",". When a vendor's profile is updated, the workflow will automatically evaluate their product catalog to:",[298,402,403,406],{},[254,404,405],{},"Add newly available products to our system.",[254,407,408],{},"Deprecate or delete old, unsupported products.\nThis will ensure that our customers always have access to the most accurate and up-to-date vendor portfolios within their tenants.",{"title":410,"searchDepth":411,"depth":411,"links":412},"",2,[413],{"id":217,"depth":411,"text":218,"children":414},[415,417,418,419,420],{"id":222,"depth":416,"text":223},3,{"id":235,"depth":416,"text":236},{"id":245,"depth":416,"text":246},{"id":311,"depth":416,"text":312},{"id":389,"depth":416,"text":390},"md",null,{},true,{"title":202,"description":410},"7YyNuhdgWXYpnwycXmtWu25UI1jYPJkX4ZQeZQFQEf0",[428,429],{"title":198,"path":199,"stem":200,"description":410,"children":-1},{"title":206,"path":207,"stem":208,"description":430,"children":-1},"This is a collection of acronyms and terms that will come up regularly in your day-to-day life at ESProfiler.",1778263959409]