[{"data":1,"prerenderedAt":1167},["ShallowReactive",2],{"handbook-\u002Fhandbook\u002Fengineering\u002Fops\u002Fdeployment":3,"handbook-nav":456},{"id":4,"title":5,"body":6,"description":16,"extension":449,"meta":450,"navigation":315,"path":452,"seo":453,"stem":454,"__hash__":455},"handbook\u002Fhandbook\u002Fengineering\u002Fops\u002Fdeployment.md","Dependencies within the CI\u002FCD process",{"type":7,"value":8,"toc":446},"minimark",[9,13,17,131,136,159,178,181,442],[10,11,5],"h1",{"id":12},"dependencies-within-the-cicd-process",[14,15,16],"p",{},"This paragraph shows a graphical presentation of dependencies between each build pipeline in our CI\u002FCD process.",[18,19,24],"pre",{"className":20,"code":21,"language":22,"meta":23,"style":23},"language-mermaid shiki shiki-themes github-light github-dark","graph TB\n    A[NR-File-Nodes package] & C[NR-Project-Nodes package] --> B[NR-launcher package]\n    B ----> X[Node-RED container build]\n    B --> D[LocalFS package]\n    D --> E[FlowFuse package]\n    E & F[K8s package] --> Y[Flowfuse container build]\n    G[File-server package] -----> Z[File-server container build]\n    click A href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-file-nodes\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" \"NR-File-Nodes package\" _blank\n    click B href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-launcher\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" \"NR-launcher package\" _blank\n    click C href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-project-nodes\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click D href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdriver-localfs\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click E href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click F href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdriver-k8s\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click G href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Ffile-server\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click X href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fnodered-container.yml\" _blank\n    click Y href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fflowforge-container.yml\" _blank\n    click Z href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Ffileserver-container.yml\" _blank\n","mermaid","",[25,26,27,35,41,47,53,59,65,71,77,83,89,95,101,107,113,119,125],"code",{"__ignoreMap":23},[28,29,32],"span",{"class":30,"line":31},"line",1,[28,33,34],{},"graph TB\n",[28,36,38],{"class":30,"line":37},2,[28,39,40],{},"    A[NR-File-Nodes package] & C[NR-Project-Nodes package] --> B[NR-launcher package]\n",[28,42,44],{"class":30,"line":43},3,[28,45,46],{},"    B ----> X[Node-RED container build]\n",[28,48,50],{"class":30,"line":49},4,[28,51,52],{},"    B --> D[LocalFS package]\n",[28,54,56],{"class":30,"line":55},5,[28,57,58],{},"    D --> E[FlowFuse package]\n",[28,60,62],{"class":30,"line":61},6,[28,63,64],{},"    E & F[K8s package] --> Y[Flowfuse container build]\n",[28,66,68],{"class":30,"line":67},7,[28,69,70],{},"    G[File-server package] -----> Z[File-server container build]\n",[28,72,74],{"class":30,"line":73},8,[28,75,76],{},"    click A href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-file-nodes\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" \"NR-File-Nodes package\" _blank\n",[28,78,80],{"class":30,"line":79},9,[28,81,82],{},"    click B href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-launcher\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" \"NR-launcher package\" _blank\n",[28,84,86],{"class":30,"line":85},10,[28,87,88],{},"    click C href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-project-nodes\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[28,90,92],{"class":30,"line":91},11,[28,93,94],{},"    click D href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdriver-localfs\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[28,96,98],{"class":30,"line":97},12,[28,99,100],{},"    click E href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[28,102,104],{"class":30,"line":103},13,[28,105,106],{},"    click F href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdriver-k8s\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[28,108,110],{"class":30,"line":109},14,[28,111,112],{},"    click G href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Ffile-server\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[28,114,116],{"class":30,"line":115},15,[28,117,118],{},"    click X href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fnodered-container.yml\" _blank\n",[28,120,122],{"class":30,"line":121},16,[28,123,124],{},"    click Y href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fflowforge-container.yml\" _blank\n",[28,126,128],{"class":30,"line":127},17,[28,129,130],{},"    click Z href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Ffileserver-container.yml\" _blank\n",[132,133,135],"h2",{"id":134},"how-does-it-work","How does it work?",[14,137,138,139,142,143,146,147,150,151,158],{},"The CI\u002FCD process is executed by GitHub Actions.\nEach change pushed to the repositories ",[25,140,141],{},"main"," branch initiates the process.\nNode package publish process is defined in the file ",[25,144,145],{},".github\u002Fworkflows\u002Fpublish.yml"," in each repository while container images build steps can be found in ",[25,148,149],{},".github\u002Fworkflows\u002F*-containers.yml"," files in ",[152,153,157],"a",{"href":154,"rel":155},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Ftree\u002Fmain\u002F.github\u002Fworkflows",[156],"nofollow","helm repository",".",[14,160,161,162,167,168,173,174,177],{},"Each package has its dedicated code repository. Due to the security limitations of GitHub Actions, there is no possibility to access the pipeline from one repository to another.\nTherefore, there is a need to use a dedicated ",[152,163,166],{"href":164,"rel":165},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fapps\u002Foverview",[156],"GitHub App"," to access repositories and trigger the build process of the dependent package. The process of creating such GitHub App is described in the ",[152,169,172],{"href":170,"rel":171},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fdevelopers\u002Fapps\u002Fcreating-a-github-app",[156],"GitHub documentation",".\nBecause such GitHub App imitates a regular user, it is necessary to include ",[25,175,176],{},"workflow_dispatch"," event in the dependent workflow definition.",[14,179,180],{},"Example of job responsible for triggering dependent pipeline:",[18,182,186],{"className":183,"code":184,"language":185,"meta":23,"style":23},"language-yaml shiki shiki-themes github-light github-dark","  dispatch_container_build:\n    runs-on: ubuntu-latest\n    steps:\n        # This step uses GitHub App to generate a token \n        # which is used to trigger dependent pipeline\n      - name: Generate a token\n        # ID of the step to reference it in the next one\n        id: generate_token                                        \n        # Name of the action\n        uses: tibdex\u002Fgithub-app-token@v1\n        with:\n          # GitHub App ID\n          app_id: ${{ secrets.GH_BOT_APP_ID }}\n          # GitHub App private key\n          private_key: ${{ secrets.GH_BOT_APP_KEY }}\n\n        # This step triggers dependent pipeline located in \n        # the `helm` repository and defined in the \n        # `flowforge-container.yml` file\n      - name: Trigger flowforge container build\n        # Name of the action\n        uses: benc-uk\u002Fworkflow-dispatch@v1\n        with:\n          # Name of the workflow to trigger\n          workflow: flowforge-container.yml\n          # Name of the repository where \n          # the dependent workflow is located\n          repo: flowfuse\u002Fhelm\n          # Branch name\n          ref: main\n          # Token generated in the previous step                                                 \n          token: ${{ steps.generate_token.outputs.token }}\n","yaml",[25,187,188,198,210,217,223,228,241,246,259,264,274,281,286,296,301,311,317,322,328,334,346,351,361,368,374,385,391,397,408,414,425,431],{"__ignoreMap":23},[28,189,190,194],{"class":30,"line":31},[28,191,193],{"class":192},"s9eBZ","  dispatch_container_build",[28,195,197],{"class":196},"sVt8B",":\n",[28,199,200,203,206],{"class":30,"line":37},[28,201,202],{"class":192},"    runs-on",[28,204,205],{"class":196},": ",[28,207,209],{"class":208},"sZZnC","ubuntu-latest\n",[28,211,212,215],{"class":30,"line":43},[28,213,214],{"class":192},"    steps",[28,216,197],{"class":196},[28,218,219],{"class":30,"line":49},[28,220,222],{"class":221},"sJ8bj","        # This step uses GitHub App to generate a token \n",[28,224,225],{"class":30,"line":55},[28,226,227],{"class":221},"        # which is used to trigger dependent pipeline\n",[28,229,230,233,236,238],{"class":30,"line":61},[28,231,232],{"class":196},"      - ",[28,234,235],{"class":192},"name",[28,237,205],{"class":196},[28,239,240],{"class":208},"Generate a token\n",[28,242,243],{"class":30,"line":67},[28,244,245],{"class":221},"        # ID of the step to reference it in the next one\n",[28,247,248,251,253,256],{"class":30,"line":73},[28,249,250],{"class":192},"        id",[28,252,205],{"class":196},[28,254,255],{"class":208},"generate_token",[28,257,258],{"class":196},"                                        \n",[28,260,261],{"class":30,"line":79},[28,262,263],{"class":221},"        # Name of the action\n",[28,265,266,269,271],{"class":30,"line":85},[28,267,268],{"class":192},"        uses",[28,270,205],{"class":196},[28,272,273],{"class":208},"tibdex\u002Fgithub-app-token@v1\n",[28,275,276,279],{"class":30,"line":91},[28,277,278],{"class":192},"        with",[28,280,197],{"class":196},[28,282,283],{"class":30,"line":97},[28,284,285],{"class":221},"          # GitHub App ID\n",[28,287,288,291,293],{"class":30,"line":103},[28,289,290],{"class":192},"          app_id",[28,292,205],{"class":196},[28,294,295],{"class":208},"${{ secrets.GH_BOT_APP_ID }}\n",[28,297,298],{"class":30,"line":109},[28,299,300],{"class":221},"          # GitHub App private key\n",[28,302,303,306,308],{"class":30,"line":115},[28,304,305],{"class":192},"          private_key",[28,307,205],{"class":196},[28,309,310],{"class":208},"${{ secrets.GH_BOT_APP_KEY }}\n",[28,312,313],{"class":30,"line":121},[28,314,316],{"emptyLinePlaceholder":315},true,"\n",[28,318,319],{"class":30,"line":127},[28,320,321],{"class":221},"        # This step triggers dependent pipeline located in \n",[28,323,325],{"class":30,"line":324},18,[28,326,327],{"class":221},"        # the `helm` repository and defined in the \n",[28,329,331],{"class":30,"line":330},19,[28,332,333],{"class":221},"        # `flowforge-container.yml` file\n",[28,335,337,339,341,343],{"class":30,"line":336},20,[28,338,232],{"class":196},[28,340,235],{"class":192},[28,342,205],{"class":196},[28,344,345],{"class":208},"Trigger flowforge container build\n",[28,347,349],{"class":30,"line":348},21,[28,350,263],{"class":221},[28,352,354,356,358],{"class":30,"line":353},22,[28,355,268],{"class":192},[28,357,205],{"class":196},[28,359,360],{"class":208},"benc-uk\u002Fworkflow-dispatch@v1\n",[28,362,364,366],{"class":30,"line":363},23,[28,365,278],{"class":192},[28,367,197],{"class":196},[28,369,371],{"class":30,"line":370},24,[28,372,373],{"class":221},"          # Name of the workflow to trigger\n",[28,375,377,380,382],{"class":30,"line":376},25,[28,378,379],{"class":192},"          workflow",[28,381,205],{"class":196},[28,383,384],{"class":208},"flowforge-container.yml\n",[28,386,388],{"class":30,"line":387},26,[28,389,390],{"class":221},"          # Name of the repository where \n",[28,392,394],{"class":30,"line":393},27,[28,395,396],{"class":221},"          # the dependent workflow is located\n",[28,398,400,403,405],{"class":30,"line":399},28,[28,401,402],{"class":192},"          repo",[28,404,205],{"class":196},[28,406,407],{"class":208},"flowfuse\u002Fhelm\n",[28,409,411],{"class":30,"line":410},29,[28,412,413],{"class":221},"          # Branch name\n",[28,415,417,420,422],{"class":30,"line":416},30,[28,418,419],{"class":192},"          ref",[28,421,205],{"class":196},[28,423,424],{"class":208},"main\n",[28,426,428],{"class":30,"line":427},31,[28,429,430],{"class":221},"          # Token generated in the previous step                                                 \n",[28,432,434,437,439],{"class":30,"line":433},32,[28,435,436],{"class":192},"          token",[28,438,205],{"class":196},[28,440,441],{"class":208},"${{ steps.generate_token.outputs.token }}\n",[443,444,445],"style",{},"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);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":23,"searchDepth":37,"depth":37,"links":447},[448],{"id":134,"depth":37,"text":135},"md",{"navTitle":451},"Deployment","\u002Fhandbook\u002Fengineering\u002Fops\u002Fdeployment",{"title":5,"description":16},"handbook\u002Fengineering\u002Fops\u002Fdeployment","IL6s-j_6cdtUdcIxJ1Pk2bZofy6oIYYR79T3nl_a-Vs",[457],{"title":458,"path":459,"stem":460,"children":461},"Handbook","\u002Fhandbook","handbook",[462,465,586,616,811,887,946,1072],{"title":463,"path":459,"stem":464},"FlowFuse Handbook","handbook\u002Findex",{"title":466,"path":467,"stem":468,"children":469},"Company","\u002Fhandbook\u002Fcompany","handbook\u002Fcompany\u002Findex",[470,471,475,479,483,501,505,509,513,578,582],{"title":466,"path":467,"stem":468},{"title":472,"path":473,"stem":474},"Board meetings","\u002Fhandbook\u002Fcompany\u002Fboard","handbook\u002Fcompany\u002Fboard",{"title":476,"path":477,"stem":478},"Communication","\u002Fhandbook\u002Fcompany\u002Fcommunication","handbook\u002Fcompany\u002Fcommunication",{"title":480,"path":481,"stem":482},"How we make decisions","\u002Fhandbook\u002Fcompany\u002Fdecisions","handbook\u002Fcompany\u002Fdecisions",{"title":484,"path":485,"stem":486,"children":487},"Guides","\u002Fhandbook\u002Fcompany\u002Fguides","handbook\u002Fcompany\u002Fguides\u002Findex",[488,489,493,497],{"title":484,"path":485,"stem":486},{"title":490,"path":491,"stem":492},"How to use Git","\u002Fhandbook\u002Fcompany\u002Fguides\u002Fgit","handbook\u002Fcompany\u002Fguides\u002Fgit",{"title":494,"path":495,"stem":496},"Google Workspace","\u002Fhandbook\u002Fcompany\u002Fguides\u002Fgworkspace","handbook\u002Fcompany\u002Fguides\u002Fgworkspace",{"title":498,"path":499,"stem":500},"Markdown Guide","\u002Fhandbook\u002Fcompany\u002Fguides\u002Fmarkdown","handbook\u002Fcompany\u002Fguides\u002Fmarkdown",{"title":502,"path":503,"stem":504},"Organizational Structure","\u002Fhandbook\u002Fcompany\u002Forganizational-structure","handbook\u002Fcompany\u002Forganizational-structure",{"title":506,"path":507,"stem":508},"Principles","\u002Fhandbook\u002Fcompany\u002Fprinciples","handbook\u002Fcompany\u002Fprinciples",{"title":510,"path":511,"stem":512},"Remote Work","\u002Fhandbook\u002Fcompany\u002Fremote","handbook\u002Fcompany\u002Fremote",{"title":514,"path":515,"stem":516,"children":517},"Security","\u002Fhandbook\u002Fcompany\u002Fsecurity","handbook\u002Fcompany\u002Fsecurity\u002Findex",[518,519,523,527,531,535,539,543,547,551,555,559,563,567,570,574],{"title":514,"path":515,"stem":516},{"title":520,"path":521,"stem":522},"Access Control Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Faccess-control","handbook\u002Fcompany\u002Fsecurity\u002Faccess-control",{"title":524,"path":525,"stem":526},"AI Development and Customer Data Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fai-development-and-customer-data","handbook\u002Fcompany\u002Fsecurity\u002Fai-development-and-customer-data",{"title":528,"path":529,"stem":530},"Asset Management Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fasset-management","handbook\u002Fcompany\u002Fsecurity\u002Fasset-management",{"title":532,"path":533,"stem":534},"Business Continuity & Disaster Recovery Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fbusiness-continuity","handbook\u002Fcompany\u002Fsecurity\u002Fbusiness-continuity",{"title":536,"path":537,"stem":538},"Computer Security","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fcomputer-security","handbook\u002Fcompany\u002Fsecurity\u002Fcomputer-security",{"title":540,"path":541,"stem":542},"Cryptography Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fcryptography","handbook\u002Fcompany\u002Fsecurity\u002Fcryptography",{"title":544,"path":545,"stem":546},"Data Management Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fdata-management","handbook\u002Fcompany\u002Fsecurity\u002Fdata-management",{"title":548,"path":549,"stem":550},"Human Resources Security Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fhuman-resources","handbook\u002Fcompany\u002Fsecurity\u002Fhuman-resources",{"title":552,"path":553,"stem":554},"Incident Response Plan","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fincident-response","handbook\u002Fcompany\u002Fsecurity\u002Fincident-response",{"title":556,"path":557,"stem":558},"Information Security Policy and Acceptable Use Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Finformation-security","handbook\u002Fcompany\u002Fsecurity\u002Finformation-security",{"title":560,"path":561,"stem":562},"Information Security Roles and Responsibilities","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Finformation-security-roles","handbook\u002Fcompany\u002Fsecurity\u002Finformation-security-roles",{"title":564,"path":565,"stem":566},"Operations Security Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Foperations-security","handbook\u002Fcompany\u002Fsecurity\u002Foperations-security",{"title":544,"path":568,"stem":569},"\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Frisk-management","handbook\u002Fcompany\u002Fsecurity\u002Frisk-management",{"title":571,"path":572,"stem":573},"Secure Development Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fsecure-development","handbook\u002Fcompany\u002Fsecurity\u002Fsecure-development",{"title":575,"path":576,"stem":577},"Third-Party Risk Management Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fthird-party-risk-management","handbook\u002Fcompany\u002Fsecurity\u002Fthird-party-risk-management",{"title":579,"path":580,"stem":581},"Strategy","\u002Fhandbook\u002Fcompany\u002Fstrategy","handbook\u002Fcompany\u002Fstrategy",{"title":583,"path":584,"stem":585},"Values","\u002Fhandbook\u002Fcompany\u002Fvalues","handbook\u002Fcompany\u002Fvalues",{"title":587,"path":588,"stem":589,"children":590},"Design","\u002Fhandbook\u002Fdesign","handbook\u002Fdesign\u002Findex",[591,592,596,600,604,608,612],{"title":587,"path":588,"stem":589},{"title":593,"path":594,"stem":595},"Art Requests","\u002Fhandbook\u002Fdesign\u002Fart-requests","handbook\u002Fdesign\u002Fart-requests",{"title":597,"path":598,"stem":599},"FlowFuse Branding Guidelines","\u002Fhandbook\u002Fdesign\u002Fbranding","handbook\u002Fdesign\u002Fbranding",{"title":601,"path":602,"stem":603},"Design Thinking","\u002Fhandbook\u002Fdesign\u002Fdesign-thinking","handbook\u002Fdesign\u002Fdesign-thinking",{"title":605,"path":606,"stem":607},"Process","\u002Fhandbook\u002Fdesign\u002Fprocess","handbook\u002Fdesign\u002Fprocess",{"title":609,"path":610,"stem":611},"Tools","\u002Fhandbook\u002Fdesign\u002Ftools","handbook\u002Fdesign\u002Ftools",{"title":613,"path":614,"stem":615},"Videos","\u002Fhandbook\u002Fdesign\u002Fvideos","handbook\u002Fdesign\u002Fvideos",{"title":617,"path":618,"stem":619,"children":620},"Engineering","\u002Fhandbook\u002Fengineering","handbook\u002Fengineering\u002Findex",[621,622,640,644,666,701,705,764,768,790,794,808],{"title":617,"path":618,"stem":619},{"title":623,"path":624,"stem":625,"children":626},"Contributing","\u002Fhandbook\u002Fengineering\u002Fcontributing","handbook\u002Fengineering\u002Fcontributing\u002Findex",[627,628,632,636],{"title":623,"path":624,"stem":625},{"title":629,"path":630,"stem":631},"Certified Nodes","\u002Fhandbook\u002Fengineering\u002Fcontributing\u002Fcertified-nodes","handbook\u002Fengineering\u002Fcontributing\u002Fcertified-nodes",{"title":633,"path":634,"stem":635},"Setting up a local FF Tables test environment","\u002Fhandbook\u002Fengineering\u002Fcontributing\u002Fff-tables","handbook\u002Fengineering\u002Fcontributing\u002Fff-tables",{"title":637,"path":638,"stem":639},"FlowFuse Team NPM Registry","\u002Fhandbook\u002Fengineering\u002Fcontributing\u002Fteam-npm-registry","handbook\u002Fengineering\u002Fcontributing\u002Fteam-npm-registry",{"title":641,"path":642,"stem":643},"Dependency Updates","\u002Fhandbook\u002Fengineering\u002Fdependency-updates","handbook\u002Fengineering\u002Fdependency-updates",{"title":645,"path":646,"stem":647,"children":648},"Front-End","\u002Fhandbook\u002Fengineering\u002Ffrontend","handbook\u002Fengineering\u002Ffrontend\u002Findex",[649,650,654,658,662],{"title":645,"path":646,"stem":647},{"title":651,"path":652,"stem":653},"Data Attributes","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Fdata-attributes","handbook\u002Fengineering\u002Ffrontend\u002Fdata-attributes",{"title":655,"path":656,"stem":657},"Front-End Layouts","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Flayouts","handbook\u002Fengineering\u002Ffrontend\u002Flayouts",{"title":659,"path":660,"stem":661},"Services","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Fservices","handbook\u002Fengineering\u002Ffrontend\u002Fservices",{"title":663,"path":664,"stem":665},"Front-End Testing","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Ftesting","handbook\u002Fengineering\u002Ffrontend\u002Ftesting",{"title":667,"path":668,"stem":669,"children":670},"Platform Ops","\u002Fhandbook\u002Fengineering\u002Fops","handbook\u002Fengineering\u002Fops\u002Findex",[671,672,676,677,681,685,689,693,697],{"title":667,"path":668,"stem":669},{"title":673,"path":674,"stem":675},"FlowFuse Dedicated","\u002Fhandbook\u002Fengineering\u002Fops\u002Fdedicated","handbook\u002Fengineering\u002Fops\u002Fdedicated",{"title":5,"path":452,"stem":454},{"title":678,"path":679,"stem":680},"Incident Response","\u002Fhandbook\u002Fengineering\u002Fops\u002Fincident-response","handbook\u002Fengineering\u002Fops\u002Fincident-response",{"title":682,"path":683,"stem":684},"Observability","\u002Fhandbook\u002Fengineering\u002Fops\u002Fobservability","handbook\u002Fengineering\u002Fops\u002Fobservability",{"title":686,"path":687,"stem":688},"Production Environment","\u002Fhandbook\u002Fengineering\u002Fops\u002Fproduction","handbook\u002Fengineering\u002Fops\u002Fproduction",{"title":690,"path":691,"stem":692},"How to Update Stacks on Production","\u002Fhandbook\u002Fengineering\u002Fops\u002Fproduction-stack-update","handbook\u002Fengineering\u002Fops\u002Fproduction-stack-update",{"title":694,"path":695,"stem":696},"FlowFuse Expert","\u002Fhandbook\u002Fengineering\u002Fops\u002Fself-hosted-assistant","handbook\u002Fengineering\u002Fops\u002Fself-hosted-assistant",{"title":698,"path":699,"stem":700},"Staging Environment","\u002Fhandbook\u002Fengineering\u002Fops\u002Fstaging","handbook\u002Fengineering\u002Fops\u002Fstaging",{"title":702,"path":703,"stem":704},"Packaging Guidelines","\u002Fhandbook\u002Fengineering\u002Fpackaging","handbook\u002Fengineering\u002Fpackaging",{"title":706,"path":707,"stem":708,"children":709},"Product","\u002Fhandbook\u002Fengineering\u002Fproduct","handbook\u002Fengineering\u002Fproduct\u002Findex",[710,711,715,719,723,727,731,737,741,744,748,752,756,760],{"title":706,"path":707,"stem":708},{"title":712,"path":713,"stem":714},"Blueprints","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fblueprints","handbook\u002Fengineering\u002Fproduct\u002Fblueprints",{"title":716,"path":717,"stem":718},"Node-RED Dashboard 2.0 - Project","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fdashboard","handbook\u002Fengineering\u002Fproduct\u002Fdashboard",{"title":720,"path":721,"stem":722},"Product Feedback","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Ffeedback","handbook\u002Fengineering\u002Fproduct\u002Ffeedback",{"title":724,"path":725,"stem":726},"Glossary","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fglossary","handbook\u002Fengineering\u002Fproduct\u002Fglossary",{"title":728,"path":729,"stem":730},"Product Metrics","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fmetrics","handbook\u002Fengineering\u002Fproduct\u002Fmetrics",{"title":732,"path":733,"stem":734,"children":735},"Personas","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fpersonas","handbook\u002Fengineering\u002Fproduct\u002Fpersonas\u002Findex",[736],{"title":732,"path":733,"stem":734},{"title":738,"path":739,"stem":740},"Pricing Principles","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fpricing","handbook\u002Fengineering\u002Fproduct\u002Fpricing",{"title":506,"path":742,"stem":743},"\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fprinciples","handbook\u002Fengineering\u002Fproduct\u002Fprinciples",{"title":745,"path":746,"stem":747},"Product Strategy","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fstrategy","handbook\u002Fengineering\u002Fproduct\u002Fstrategy",{"title":749,"path":750,"stem":751},"Product Growth","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Ftelemetry","handbook\u002Fengineering\u002Fproduct\u002Ftelemetry",{"title":753,"path":754,"stem":755},"Versioning","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fversioning","handbook\u002Fengineering\u002Fproduct\u002Fversioning",{"title":757,"path":758,"stem":759},"Market Segments","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fverticals","handbook\u002Fengineering\u002Fproduct\u002Fverticals",{"title":761,"path":762,"stem":763},"Vision","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fvision","handbook\u002Fengineering\u002Fproduct\u002Fvision",{"title":765,"path":766,"stem":767},"Project Management","\u002Fhandbook\u002Fengineering\u002Fproject-management","handbook\u002Fengineering\u002Fproject-management",{"title":769,"path":770,"stem":771,"children":772},"Releases","\u002Fhandbook\u002Fengineering\u002Freleases","handbook\u002Fengineering\u002Freleases\u002Findex",[773,774,778,782,786],{"title":769,"path":770,"stem":771},{"title":775,"path":776,"stem":777},"Dashboard 2.0 Release Process","\u002Fhandbook\u002Fengineering\u002Freleases\u002Fdashboard-2","handbook\u002Fengineering\u002Freleases\u002Fdashboard-2",{"title":779,"path":780,"stem":781},"Digital Ocean Release Process","\u002Fhandbook\u002Fengineering\u002Freleases\u002Fdigital-ocean","handbook\u002Fengineering\u002Freleases\u002Fdigital-ocean",{"title":783,"path":784,"stem":785},"Release Process","\u002Fhandbook\u002Fengineering\u002Freleases\u002Fprocess","handbook\u002Fengineering\u002Freleases\u002Fprocess",{"title":787,"path":788,"stem":789},"Writing Changelog Posts","\u002Fhandbook\u002Fengineering\u002Freleases\u002Fwriting-changelog","handbook\u002Fengineering\u002Freleases\u002Fwriting-changelog",{"title":791,"path":792,"stem":793},"Security Reporting Policy","\u002Fhandbook\u002Fengineering\u002Fsecurity","handbook\u002Fengineering\u002Fsecurity",{"title":795,"path":796,"stem":797,"children":798},"Support","\u002Fhandbook\u002Fengineering\u002Fsupport","handbook\u002Fengineering\u002Fsupport\u002Findex",[799,800,804],{"title":795,"path":796,"stem":797},{"title":801,"path":802,"stem":803},"Support Triage Duty","\u002Fhandbook\u002Fengineering\u002Fsupport\u002Ftriage","handbook\u002Fengineering\u002Fsupport\u002Ftriage",{"title":805,"path":806,"stem":807},"Troubleshooting","\u002Fhandbook\u002Fengineering\u002Fsupport\u002Ftroubleshooting","handbook\u002Fengineering\u002Fsupport\u002Ftroubleshooting",{"title":609,"path":809,"stem":810},"\u002Fhandbook\u002Fengineering\u002Ftools","handbook\u002Fengineering\u002Ftools",{"title":812,"path":813,"stem":814,"children":815},"Marketing department","\u002Fhandbook\u002Fmarketing","handbook\u002Fmarketing\u002Findex",[816,817,821,825,839,843,847,851,855,859,863,867,871,875,879,883],{"title":812,"path":813,"stem":814},{"title":818,"path":819,"stem":820},"Blog","\u002Fhandbook\u002Fmarketing\u002Fblog","handbook\u002Fmarketing\u002Fblog",{"title":822,"path":823,"stem":824},"Brand Personality, Tone of Voice & Character","\u002Fhandbook\u002Fmarketing\u002Fbrand-voice","handbook\u002Fmarketing\u002Fbrand-voice",{"title":826,"path":827,"stem":828,"children":829},"Community","\u002Fhandbook\u002Fmarketing\u002Fcommunity","handbook\u002Fmarketing\u002Fcommunity\u002Findex",[830,831,835],{"title":826,"path":827,"stem":828},{"title":832,"path":833,"stem":834},"Community Guidelines","\u002Fhandbook\u002Fmarketing\u002Fcommunity\u002Fcommunity-guidelines","handbook\u002Fmarketing\u002Fcommunity\u002Fcommunity-guidelines",{"title":836,"path":837,"stem":838},"Forums And Support","\u002Fhandbook\u002Fmarketing\u002Fcommunity\u002Fforums-and-support","handbook\u002Fmarketing\u002Fcommunity\u002Fforums-and-support",{"title":840,"path":841,"stem":842},"Customer Stories","\u002Fhandbook\u002Fmarketing\u002Fcustomer-stories","handbook\u002Fmarketing\u002Fcustomer-stories",{"title":844,"path":845,"stem":846},"FlowFuse for Education","\u002Fhandbook\u002Fmarketing\u002Feducation","handbook\u002Fmarketing\u002Feducation",{"title":848,"path":849,"stem":850},"Marketing Email","\u002Fhandbook\u002Fmarketing\u002Femail","handbook\u002Fmarketing\u002Femail",{"title":852,"path":853,"stem":854},"Events","\u002Fhandbook\u002Fmarketing\u002Fevents","handbook\u002Fmarketing\u002Fevents",{"title":856,"path":857,"stem":858},"How the marketing team works at FlowFuse","\u002Fhandbook\u002Fmarketing\u002Fhow-we-work","handbook\u002Fmarketing\u002Fhow-we-work",{"title":860,"path":861,"stem":862},"Lead Activation","\u002Fhandbook\u002Fmarketing\u002Flead-activation","handbook\u002Fmarketing\u002Flead-activation",{"title":864,"path":865,"stem":866},"Lead Generation","\u002Fhandbook\u002Fmarketing\u002Fleads","handbook\u002Fmarketing\u002Fleads",{"title":868,"path":869,"stem":870},"Messaging","\u002Fhandbook\u002Fmarketing\u002Fmessaging","handbook\u002Fmarketing\u002Fmessaging",{"title":872,"path":873,"stem":874},"Marketing Programs","\u002Fhandbook\u002Fmarketing\u002Fprograms","handbook\u002Fmarketing\u002Fprograms",{"title":876,"path":877,"stem":878},"Social Media Channels","\u002Fhandbook\u002Fmarketing\u002Fsocial-media","handbook\u002Fmarketing\u002Fsocial-media",{"title":880,"path":881,"stem":882},"FlowFuse Webinars","\u002Fhandbook\u002Fmarketing\u002Fwebinars","handbook\u002Fmarketing\u002Fwebinars",{"title":884,"path":885,"stem":886},"Marketing Website","\u002Fhandbook\u002Fmarketing\u002Fwebsite","handbook\u002Fmarketing\u002Fwebsite",{"title":888,"path":889,"stem":890,"children":891},"Operations","\u002Fhandbook\u002Foperations","handbook\u002Foperations\u002Findex",[892,893,897,901,905,926,930,934,938,942],{"title":888,"path":889,"stem":890},{"title":894,"path":895,"stem":896},"Tax & Compliance","\u002Fhandbook\u002Foperations\u002Faccounting","handbook\u002Foperations\u002Faccounting",{"title":898,"path":899,"stem":900},"Accounts","\u002Fhandbook\u002Foperations\u002Faccounts","handbook\u002Foperations\u002Faccounts",{"title":902,"path":903,"stem":904},"Billing","\u002Fhandbook\u002Foperations\u002Fbilling","handbook\u002Foperations\u002Fbilling",{"title":23,"path":906,"stem":907,"children":908},"\u002Fhandbook\u002Foperations\u002Fceo-ops","handbook\u002Foperations\u002Fceo-ops\u002Findex",[909,910,914,918,922],{"title":23,"path":906,"stem":907},{"title":911,"path":912,"stem":913},"Calendar Management","\u002Fhandbook\u002Foperations\u002Fceo-ops\u002Fcalendar-management","handbook\u002Foperations\u002Fceo-ops\u002Fcalendar-management",{"title":915,"path":916,"stem":917},"Inbox Management","\u002Fhandbook\u002Foperations\u002Fceo-ops\u002Finbox-management","handbook\u002Foperations\u002Fceo-ops\u002Finbox-management",{"title":919,"path":920,"stem":921},"Task Managment","\u002Fhandbook\u002Foperations\u002Fceo-ops\u002Ftask-managment","handbook\u002Foperations\u002Fceo-ops\u002Ftask-managment",{"title":923,"path":924,"stem":925},"Travel Booking","\u002Fhandbook\u002Foperations\u002Fceo-ops\u002Ftravel-booking","handbook\u002Foperations\u002Fceo-ops\u002Ftravel-booking",{"title":927,"path":928,"stem":929},"Change","\u002Fhandbook\u002Foperations\u002Fchange","handbook\u002Foperations\u002Fchange",{"title":931,"path":932,"stem":933},"Commission Payment","\u002Fhandbook\u002Foperations\u002Fcommission-payment","handbook\u002Foperations\u002Fcommission-payment",{"title":935,"path":936,"stem":937},"Data at FlowFuse","\u002Fhandbook\u002Foperations\u002Fdata","handbook\u002Foperations\u002Fdata",{"title":939,"path":940,"stem":941},"Signatures","\u002Fhandbook\u002Foperations\u002Fsignatures","handbook\u002Foperations\u002Fsignatures",{"title":943,"path":944,"stem":945},"Vendors","\u002Fhandbook\u002Foperations\u002Fvendors","handbook\u002Foperations\u002Fvendors",{"title":947,"path":948,"stem":949,"children":950},"People Operations","\u002Fhandbook\u002Fpeopleops","handbook\u002Fpeopleops\u002Findex",[951,952,956,960,964,968,972,990,1052,1056,1060,1064,1068],{"title":947,"path":948,"stem":949},{"title":953,"path":954,"stem":955},"Coaching Plans","\u002Fhandbook\u002Fpeopleops\u002Fcoaching-plans","handbook\u002Fpeopleops\u002Fcoaching-plans",{"title":957,"path":958,"stem":959},"Code of Conduct","\u002Fhandbook\u002Fpeopleops\u002Fcode-of-conduct","handbook\u002Fpeopleops\u002Fcode-of-conduct",{"title":961,"path":962,"stem":963},"Compensation","\u002Fhandbook\u002Fpeopleops\u002Fcompensation","handbook\u002Fpeopleops\u002Fcompensation",{"title":965,"path":966,"stem":967},"Compliance & Training (Mineral)","\u002Fhandbook\u002Fpeopleops\u002Fcompliance","handbook\u002Fpeopleops\u002Fcompliance",{"title":969,"path":970,"stem":971},"Expenses","\u002Fhandbook\u002Fpeopleops\u002Fexpenses","handbook\u002Fpeopleops\u002Fexpenses",{"title":973,"path":974,"stem":975,"children":976},"Hiring","\u002Fhandbook\u002Fpeopleops\u002Fhiring","handbook\u002Fpeopleops\u002Fhiring\u002Findex",[977,978,982,986],{"title":973,"path":974,"stem":975},{"title":979,"path":980,"stem":981},"Working with Recruiters","\u002Fhandbook\u002Fpeopleops\u002Fhiring\u002Frecruiters","handbook\u002Fpeopleops\u002Fhiring\u002Frecruiters",{"title":983,"path":984,"stem":985},"Screening Call","\u002Fhandbook\u002Fpeopleops\u002Fhiring\u002Fscreening-call","handbook\u002Fpeopleops\u002Fhiring\u002Fscreening-call",{"title":987,"path":988,"stem":989},"Star Questions","\u002Fhandbook\u002Fpeopleops\u002Fhiring\u002Fstar-questions","handbook\u002Fpeopleops\u002Fhiring\u002Fstar-questions",{"title":991,"path":992,"stem":993,"children":994},"Job Descriptions","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Findex",[995,996,1000,1004,1008,1012,1016,1020,1024,1028,1032,1036,1040,1044,1048],{"title":991,"path":992,"stem":993},{"title":997,"path":998,"stem":999},"Account Executive","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Faccount-executive","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Faccount-executive",{"title":1001,"path":1002,"stem":1003},"CEO","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fceo","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fceo",{"title":1005,"path":1006,"stem":1007},"Chief of Staff","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fchief-of-staff","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fchief-of-staff",{"title":1009,"path":1010,"stem":1011},"CTO","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fcto","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fcto",{"title":1013,"path":1014,"stem":1015},"Developer Relations Advocate","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fdeveloper-relations-advocate","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fdeveloper-relations-advocate",{"title":1017,"path":1018,"stem":1019},"Engineering Manager","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fengineering-manager","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fengineering-manager",{"title":1021,"path":1022,"stem":1023},"Fullstack Engineer","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Ffullstack-engineer","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Ffullstack-engineer",{"title":1025,"path":1026,"stem":1027},"Fullstack Engineer (AI-Focused)","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Ffullstack-engineer-ai","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Ffullstack-engineer-ai",{"title":1029,"path":1030,"stem":1031},"Head of Marketing","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fhead-of-marketing","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fhead-of-marketing",{"title":1033,"path":1034,"stem":1035},"Product Manager","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fproduct-manager","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fproduct-manager",{"title":1037,"path":1038,"stem":1039},"Product Marketer","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fproduct-marketer","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fproduct-marketer",{"title":1041,"path":1042,"stem":1043},"Solutions Engineer","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fsolutions-engineer","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fsolutions-engineer",{"title":1045,"path":1046,"stem":1047},"Technical Product Manager","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Ftechnical-product-manager","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Ftechnical-product-manager",{"title":1049,"path":1050,"stem":1051},"VP of Sales","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fvp-sales","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fvp-sales",{"title":1053,"path":1054,"stem":1055},"Holiday and Leave","\u002Fhandbook\u002Fpeopleops\u002Fleave","handbook\u002Fpeopleops\u002Fleave",{"title":1057,"path":1058,"stem":1059},"PeopleOps policies","\u002Fhandbook\u002Fpeopleops\u002Forganization","handbook\u002Fpeopleops\u002Forganization",{"title":1061,"path":1062,"stem":1063},"Performance Review","\u002Fhandbook\u002Fpeopleops\u002Fperformance-review","handbook\u002Fpeopleops\u002Fperformance-review",{"title":1065,"path":1066,"stem":1067},"Summit","\u002Fhandbook\u002Fpeopleops\u002Fsummit","handbook\u002Fpeopleops\u002Fsummit",{"title":1069,"path":1070,"stem":1071},"Travel","\u002Fhandbook\u002Fpeopleops\u002Ftravel","handbook\u002Fpeopleops\u002Ftravel",{"title":1073,"path":1074,"stem":1075,"children":1076},"Sales department","\u002Fhandbook\u002Fsales","handbook\u002Fsales\u002Findex",[1077,1078,1084,1088,1092,1096,1100,1104,1108,1112,1129,1133,1145,1149,1155,1159,1163],{"title":1073,"path":1074,"stem":1075},{"title":1079,"path":1080,"stem":1081,"children":1082},"FY 2026 SALES COMPENSATION PLAN","\u002Fhandbook\u002Fsales\u002Fcommission-plan","handbook\u002Fsales\u002Fcommission-plan\u002Findex",[1083],{"title":1079,"path":1080,"stem":1081},{"title":1085,"path":1086,"stem":1087},"Customer Success","\u002Fhandbook\u002Fsales\u002Fcustomer-success","handbook\u002Fsales\u002Fcustomer-success",{"title":1089,"path":1090,"stem":1091},"Self Hosted Dashboard v2 Multi User Plugin","\u002Fhandbook\u002Fsales\u002Fdashboard-v2","handbook\u002Fsales\u002Fdashboard-v2",{"title":1093,"path":1094,"stem":1095},"Edge Connectivity Sales Process","\u002Fhandbook\u002Fsales\u002Fedge-connect-process","handbook\u002Fsales\u002Fedge-connect-process",{"title":1097,"path":1098,"stem":1099},"Engagements","\u002Fhandbook\u002Fsales\u002Fengagements","handbook\u002Fsales\u002Fengagements",{"title":1101,"path":1102,"stem":1103},"Forecast Review","\u002Fhandbook\u002Fsales\u002Fforecast-review","handbook\u002Fsales\u002Fforecast-review",{"title":1105,"path":1106,"stem":1107},"Hubspot","\u002Fhandbook\u002Fsales\u002Fhubspot","handbook\u002Fsales\u002Fhubspot",{"title":1109,"path":1110,"stem":1111},"Legal","\u002Fhandbook\u002Fsales\u002Flegal","handbook\u002Fsales\u002Flegal",{"title":23,"path":1113,"stem":1114,"children":1115},"\u002Fhandbook\u002Fsales\u002Fmeetings","handbook\u002Fsales\u002Fmeetings\u002Findex",[1116,1117,1121,1125],{"title":23,"path":1113,"stem":1114},{"title":1118,"path":1119,"stem":1120},"Demo","\u002Fhandbook\u002Fsales\u002Fmeetings\u002Fdemo","handbook\u002Fsales\u002Fmeetings\u002Fdemo",{"title":1122,"path":1123,"stem":1124},"Discovery","\u002Fhandbook\u002Fsales\u002Fmeetings\u002Fdiscovery","handbook\u002Fsales\u002Fmeetings\u002Fdiscovery",{"title":1126,"path":1127,"stem":1128},"Poc","\u002Fhandbook\u002Fsales\u002Fmeetings\u002Fpoc","handbook\u002Fsales\u002Fmeetings\u002Fpoc",{"title":1130,"path":1131,"stem":1132},"Sales Team Operating Principles","\u002Fhandbook\u002Fsales\u002Foperating-principles","handbook\u002Fsales\u002Foperating-principles",{"title":1134,"path":1135,"stem":1136,"children":1137},"Commercial Organization","\u002Fhandbook\u002Fsales\u002Forg","handbook\u002Fsales\u002Forg\u002Findex",[1138,1139],{"title":1134,"path":1135,"stem":1136},{"title":1140,"path":1141,"stem":1142,"children":1143},"Account Executives","\u002Fhandbook\u002Fsales\u002Forg\u002Faccount-executives","handbook\u002Fsales\u002Forg\u002Faccount-executives\u002Findex",[1144],{"title":1140,"path":1141,"stem":1142},{"title":1146,"path":1147,"stem":1148},"Partnerships","\u002Fhandbook\u002Fsales\u002Fpartnerships","handbook\u002Fsales\u002Fpartnerships",{"title":1150,"path":1151,"stem":1152,"children":1153},"Processes","\u002Fhandbook\u002Fsales\u002Fprocesses","handbook\u002Fsales\u002Fprocesses\u002Findex",[1154],{"title":1150,"path":1151,"stem":1152},{"title":1156,"path":1157,"stem":1158},"Professional Services","\u002Fhandbook\u002Fsales\u002Fprofessional-services","handbook\u002Fsales\u002Fprofessional-services",{"title":1160,"path":1161,"stem":1162},"Regions","\u002Fhandbook\u002Fsales\u002Fregions","handbook\u002Fsales\u002Fregions",{"title":1164,"path":1165,"stem":1166},"Sales Deck","\u002Fhandbook\u002Fsales\u002Fsales-deck","handbook\u002Fsales\u002Fsales-deck",1780070544581]