[{"data":1,"prerenderedAt":505},["ShallowReactive",2],{"navigation_docs":3,"-engineering-deployment":279,"-engineering-deployment-surround":500},[4,8,67,96,162,186,199,216,275],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"path":10,"stem":11,"children":12,"page":62},"Company","\u002Fcompany","1.company",[13,17,21,25,29,33,37,41,45,49,63],{"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},"Manchester Office","\u002Fcompany\u002Foffice","1.company\u002Foffice",{"title":38,"path":39,"stem":40},"Operations","\u002Fcompany\u002Foperations","1.company\u002Foperations",{"title":42,"path":43,"stem":44},"Policies","\u002Fcompany\u002Fpolicies","1.company\u002Fpolicies",{"title":46,"path":47,"stem":48},"Product Strategy","\u002Fcompany\u002Fproduct-strategy","1.company\u002Fproduct-strategy",{"title":50,"path":51,"stem":52,"children":53,"page":62},"Products","\u002Fcompany\u002Fproducts","1.company\u002Fproducts",[54,58],{"title":55,"path":56,"stem":57},"Capability Exchange","\u002Fcompany\u002Fproducts\u002Fcapability-exchange","1.company\u002Fproducts\u002Fcapability-exchange",{"title":59,"path":60,"stem":61},"ESProfiler Platform","\u002Fcompany\u002Fproducts\u002Fesprofiler","1.company\u002Fproducts\u002Fesprofiler",false,{"title":64,"path":65,"stem":66},"Security","\u002Fcompany\u002Fsecurity","1.company\u002Fsecurity",{"title":68,"path":69,"stem":70,"children":71,"page":62},"People Ops","\u002Fpeople-ops","2.people-ops",[72,76,80,84,88,92],{"title":73,"path":74,"stem":75},"Compensation","\u002Fpeople-ops\u002Fcompensation","2.people-ops\u002Fcompensation",{"title":77,"path":78,"stem":79},"Education","\u002Fpeople-ops\u002Feducation","2.people-ops\u002Feducation",{"title":81,"path":82,"stem":83},"Expenses","\u002Fpeople-ops\u002Fexpenses","2.people-ops\u002Fexpenses",{"title":85,"path":86,"stem":87},"Holiday & Leave","\u002Fpeople-ops\u002Fleave","2.people-ops\u002Fleave",{"title":89,"path":90,"stem":91},"Onboarding","\u002Fpeople-ops\u002Fonboarding","2.people-ops\u002Fonboarding",{"title":93,"path":94,"stem":95},"Recruitment","\u002Fpeople-ops\u002Frecruitment","2.people-ops\u002Frecruitment",{"title":97,"path":98,"stem":99,"children":100,"page":62},"Engineering","\u002Fengineering","3.engineering",[101,105,109,113,125,146,150,154,158],{"title":102,"path":103,"stem":104},"Development Setup","\u002Fengineering\u002Fdevelopment-setup","3.engineering\u002F1.development-setup",{"title":106,"path":107,"stem":108},"Contributing","\u002Fengineering\u002Fcontributing","3.engineering\u002Fcontributing",{"title":110,"path":111,"stem":112},"Production Database","\u002Fengineering\u002Fdatabase-connection","3.engineering\u002Fdatabase-connection",{"title":114,"path":115,"stem":116,"children":117},"Deployment","\u002Fengineering\u002Fdeployment","3.engineering\u002Fdeployment",[118,121],{"title":55,"path":119,"stem":120},"\u002Fengineering\u002Fdeployment\u002Fcapability-exchange","3.engineering\u002Fdeployment\u002Fcapability-exchange",{"title":122,"path":123,"stem":124},"Platform","\u002Fengineering\u002Fdeployment\u002Fplatform","3.engineering\u002Fdeployment\u002Fplatform",{"title":126,"path":127,"stem":128,"children":129,"page":62},"Github","\u002Fengineering\u002Fgithub","3.engineering\u002Fgithub",[130,134,138,142],{"title":131,"path":132,"stem":133},"Packages","\u002Fengineering\u002Fgithub\u002Fpackages","3.engineering\u002Fgithub\u002Fpackages",{"title":135,"path":136,"stem":137},"Personal Access Token","\u002Fengineering\u002Fgithub\u002Fpersonal-access-token","3.engineering\u002Fgithub\u002Fpersonal-access-token",{"title":139,"path":140,"stem":141},"Troubleshooting","\u002Fengineering\u002Fgithub\u002Ftroubleshooting","3.engineering\u002Fgithub\u002Ftroubleshooting",{"title":143,"path":144,"stem":145},"Workflows","\u002Fengineering\u002Fgithub\u002Fworkflows","3.engineering\u002Fgithub\u002Fworkflows",{"title":147,"path":148,"stem":149},"Platform Ops","\u002Fengineering\u002Fplatform-ops","3.engineering\u002Fplatform-ops",{"title":151,"path":152,"stem":153},"Project Management","\u002Fengineering\u002Fproject-management","3.engineering\u002Fproject-management",{"title":155,"path":156,"stem":157},"Releases","\u002Fengineering\u002Frelease","3.engineering\u002Frelease",{"title":159,"path":160,"stem":161},"Tools","\u002Fengineering\u002Ftools","3.engineering\u002Ftools",{"title":163,"path":164,"stem":165,"children":166,"page":62},"Design","\u002Fdesign","4.design",[167,171,175,179,182],{"title":168,"path":169,"stem":170},"Branding","\u002Fdesign\u002Fbranding","4.design\u002Fbranding",{"title":172,"path":173,"stem":174},"Design Thinking","\u002Fdesign\u002Fdesign-thinking","4.design\u002Fdesign-thinking",{"title":176,"path":177,"stem":178},"Figma","\u002Fdesign\u002Ffigma-structure","4.design\u002Ffigma-structure",{"title":159,"path":180,"stem":181},"\u002Fdesign\u002Ftools","4.design\u002Ftools",{"title":183,"path":184,"stem":185},"Customer Success","\u002Fdesign\u002Fworking-with-customers","4.design\u002Fworking-with-customers",{"title":187,"path":188,"stem":189,"children":190,"page":62},"Sales","\u002Fsales","4.sales",[191,195],{"title":192,"path":193,"stem":194},"Customer Onboarding","\u002Fsales\u002Fonboarding","4.sales\u002Fonboarding",{"title":196,"path":197,"stem":198},"Sales Tools","\u002Fsales\u002Ftools","4.sales\u002Ftools",{"title":200,"path":201,"stem":202,"children":203,"page":62},"Marketing","\u002Fmarketing","5.marketing",[204,208,212],{"title":205,"path":206,"stem":207},"Content","\u002Fmarketing\u002Fcontent","5.marketing\u002Fcontent",{"title":209,"path":210,"stem":211},"Messaging","\u002Fmarketing\u002Fmessaging","5.marketing\u002Fmessaging",{"title":213,"path":214,"stem":215},"Website","\u002Fmarketing\u002Fwebsite","5.marketing\u002Fwebsite",{"title":217,"path":218,"stem":219,"children":220,"page":62},"AI & Data Ops","\u002Fdata-ops","6.data-ops",[221,229,233,258,271],{"title":55,"path":222,"stem":223,"children":224,"page":62},"\u002Fdata-ops\u002Fcapability-exchange","6.data-ops\u002FCapability Exchange",[225],{"title":226,"path":227,"stem":228},"Leaderboard Calculation","\u002Fdata-ops\u002Fcapability-exchange\u002Fleaderboard-calculation","6.data-ops\u002FCapability Exchange\u002Fleaderboard-calculation",{"title":230,"path":231,"stem":232},"Account Portal (CAS)","\u002Fdata-ops\u002Faccount-portal","6.data-ops\u002Faccount-portal",{"title":234,"path":235,"stem":236,"children":237,"page":62},"Data Management","\u002Fdata-ops\u002Fdata-management","6.data-ops\u002Fdata-management",[238,242,246,250,254],{"title":239,"path":240,"stem":241},"Adding Products","\u002Fdata-ops\u002Fdata-management\u002Fadding-products","6.data-ops\u002Fdata-management\u002Fadding-products",{"title":243,"path":244,"stem":245},"Adding Vendors","\u002Fdata-ops\u002Fdata-management\u002Fadding-vendors","6.data-ops\u002Fdata-management\u002Fadding-vendors",{"title":247,"path":248,"stem":249},"Framework Mapping","\u002Fdata-ops\u002Fdata-management\u002Fframework-mapping","6.data-ops\u002Fdata-management\u002Fframework-mapping",{"title":251,"path":252,"stem":253},"Refreshing Vendors","\u002Fdata-ops\u002Fdata-management\u002Frefreshing-vendors","6.data-ops\u002Fdata-management\u002Frefreshing-vendors",{"title":255,"path":256,"stem":257},"Reviewing Draft Vendors","\u002Fdata-ops\u002Fdata-management\u002Freviewing-draft-vendors","6.data-ops\u002Fdata-management\u002Freviewing-draft-vendors",{"title":259,"path":260,"stem":261,"children":262,"page":62},"LLM Ops","\u002Fdata-ops\u002Fllm-ops","6.data-ops\u002Fllm-ops",[263,267],{"title":264,"path":265,"stem":266},"Agents","\u002Fdata-ops\u002Fllm-ops\u002Fagents","6.data-ops\u002Fllm-ops\u002F1.agents",{"title":268,"path":269,"stem":270},"ESPi Architecture & Query Flow","\u002Fdata-ops\u002Fllm-ops\u002Fespi-architecture","6.data-ops\u002Fllm-ops\u002F2.espi-architecture",{"title":272,"path":273,"stem":274},"Message Queues","\u002Fdata-ops\u002Fmessage-queues","6.data-ops\u002Fmessage-queues",{"title":276,"path":277,"stem":278},"Glossary","\u002Fglossary","glossary",{"id":280,"title":114,"body":281,"description":493,"extension":494,"links":495,"meta":496,"navigation":497,"path":115,"seo":498,"stem":116,"__hash__":499},"docs\u002F3.engineering\u002Fdeployment.md",{"type":282,"value":283,"toc":482},"minimark",[284,289,293,297,300,305,313,328,333,340,429,433,437,445,448,452,459,466,470,478],[285,286,288],"h2",{"id":287},"creating-new-tenants","Creating New Tenants",[285,290,292],{"id":291},"posthog","PostHog",[294,295,296],"p",{},"PostHog is used to track user interaction with the platform.",[294,298,299],{},"We have separate projects for \"Development\" and \"Production\" environments. All customer ESProfiler tenants published data into the \"Production\" project. When a new tenant is spun up, data tracking will automatically be enabled.",[301,302,304],"h3",{"id":303},"classifying-tenant","Classifying Tenant",[294,306,307,308,312],{},"In PostHog it is possible to define a \"Transformation\". These parse incoming events and can modify or append the data before being committed to the PostHog data set. We use this to add a new ",[309,310,311],"code",{},"esp_tenant"," field, which makes it easier us to to then filter the analytics by a particular tenant.",[294,314,315,316,319,320,327],{},"To view Transformations in PostHog you can navigate to ",[309,317,318],{},"Data Management > Transformations",". You will then find the ",[321,322,326],"a",{"href":323,"rel":324},"https:\u002F\u002Feu.posthog.com\u002Fproject\u002F118187\u002Ffunctions\u002F019c329b-17d8-0000-b0f5-366b81ec9426",[325],"nofollow","Classify Tenant"," transformation, which you can click to view the details of.",[329,330,332],"h4",{"id":331},"adding-new-tenants","Adding New Tenants",[294,334,335,336,339],{},"To add your new tenant to the classification, click \"Edit Source Code\", then add a new ",[309,337,338],{},"if"," statement for your new tenant:",[341,342,347],"pre",{"className":343,"code":344,"language":345,"meta":346,"style":346},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","if (event.properties.$session_entry_host == '\u003Ctenant>.own.esprofiler.com') {\n    returnEvent.properties.esp_tenant := 'Company Name' \n}\n","js","",[309,348,349,392,423],{"__ignoreMap":346},[350,351,354,357,361,365,368,370,373,376,379,383,386,389],"span",{"class":352,"line":353},"line",1,[350,355,338],{"class":356},"s7zQu",[350,358,360],{"class":359},"sTEyZ"," (event",[350,362,364],{"class":363},"sMK4o",".",[350,366,367],{"class":359},"properties",[350,369,364],{"class":363},[350,371,372],{"class":359},"$session_entry_host ",[350,374,375],{"class":363},"==",[350,377,378],{"class":363}," '",[350,380,382],{"class":381},"sfazB","\u003Ctenant>.own.esprofiler.com",[350,384,385],{"class":363},"'",[350,387,388],{"class":359},") ",[350,390,391],{"class":363},"{\n",[350,393,395,398,400,402,404,406,410,413,415,418,420],{"class":352,"line":394},2,[350,396,397],{"class":359},"    returnEvent",[350,399,364],{"class":363},[350,401,367],{"class":359},[350,403,364],{"class":363},[350,405,311],{"class":359},[350,407,409],{"class":408},"swJcz"," :",[350,411,412],{"class":363},"=",[350,414,378],{"class":363},[350,416,417],{"class":381},"Company Name",[350,419,385],{"class":363},[350,421,422],{"class":408}," \n",[350,424,426],{"class":352,"line":425},3,[350,427,428],{"class":363},"}\n",[285,430,432],{"id":431},"tracking-deployment-status","Tracking Deployment Status",[301,434,436],{"id":435},"tenants","Tenants",[294,438,439,440,364],{},"In order to track the deployments of tenants, we currenlty use the AWS Console for ",[321,441,444],{"href":442,"rel":443},"https:\u002F\u002Feu-west-2.console.aws.amazon.com\u002Fecs\u002Fv2\u002Fclusters\u002Fesp-customer\u002Fservices?region=eu-west-2",[325],"ECS",[294,446,447],{},"Currently, there is Spring Actuator on the platform application so we don't have an uptime robot like we do for central services.",[301,449,451],{"id":450},"services","Services",[294,453,454,455,364],{},"In order to track the deployments of central services, we currenlty use the AWS Console for ",[321,456,444],{"href":457,"rel":458},"https:\u002F\u002Feu-west-2.console.aws.amazon.com\u002Fecs\u002Fv2\u002Fclusters\u002Fesp-infrastructure\u002Fservices?region=eu-west-2",[325],[294,460,461,462,465],{},"We also have an uptime robot that monitors the central services and will notify the team on Slack on the ",[309,463,464],{},"ops-production"," channel if there are any issues with the services.",[301,467,469],{"id":468},"release-status","Release Status",[294,471,472,473,364],{},"We also have a page on CPS Manager that tracks the version of both active tenants and services. You can find it here: ",[321,474,477],{"href":475,"rel":476},"https:\u002F\u002Fapi.esprofiler.com\u002Fcps\u002Fmanage\u002Frelease-status",[325],"CPS Manager",[479,480,481],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":346,"searchDepth":394,"depth":394,"links":483},[484,485,488],{"id":287,"depth":394,"text":288},{"id":291,"depth":394,"text":292,"children":486},[487],{"id":303,"depth":425,"text":304},{"id":431,"depth":394,"text":432,"children":489},[490,491,492],{"id":435,"depth":425,"text":436},{"id":450,"depth":425,"text":451},{"id":468,"depth":425,"text":469},"A comprehensive overview of the deployment process for new ESProfiler tenants","md",null,{},true,{"title":114,"description":493},"zCh-idUVctmegFRzHMmnnqOlLq5LrkJUFHfdd16JfLE",[501,503],{"title":110,"path":111,"stem":112,"description":502,"children":-1},"Accessing the production database in rollback situations.",{"title":55,"path":119,"stem":120,"description":504,"children":-1},"Guide on how to update the production environment for the Capability Exchange",1784892040571]