Stop the server and back up eventsCore/config/, eventsCore/data/, eventsCctv/config/, and eventsCctv/data/cctv.json.
Download the latest granted packages.
Replace the complete resource folders.
Merge your customer settings into the new configuration structure instead of copying protected files from an older version.
Start Events Core before CCTV and repeat the first test.
Backups may contain player, vehicle, or incident information. Store them securely and redact sensitive information before sending anything to support.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Sonoran Software Documentation","colors":{"primary":"#1D7DCF","light":"#3297ED","dark":"#1465AA"},"logo":{"light":"https://docs-assets.sonoransoftware.com/sha256/a8/a8af14e6458cb682c1c8d33ca8b56d25dcd5999b2589e0de14b2be9f8dbe20a5.png","dark":"https://docs-assets.sonoransoftware.com/sha256/0b/0be9cc0ac8f90ee8aa8607653b830270c319a8ebe0c9051d1d2c7a79fb5453ab.png","href":"/"},"favicon":"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png","navbar":{"links":[{"href":"https://support.sonoransoftware.com","label":"Support"},{"href":"https://sonoransoftware.com","label":"Website"}]},"footer":{"socials":{"discord":"https://discord.sonoransoftware.com/","x":"https://x.com/Sonoran_SW","instagram":"https://www.instagram.com/sonoransoftware","youtube":"https://www.youtube.com/channel/UC-IfsakmGGmPrG8qcV3VVsA"},"links":[{"header":"Support","items":[{"label":"Customer Support","href":"https://support.sonoransoftware.com/"}]},{"header":"Policies","items":[{"label":"Refund and Purchase Policy","href":"/policy/policy/refund-and-purchase-policy"},{"label":"Terms of Service","href":"/policy/policy/terms-of-service"},{"label":"Privacy Policy","href":"/policy/policy/privacy-policy"}]}]},"seo":{"metatags":{"canonical":"https://docs.sonoransoftware.com"},"indexing":"all"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"sonoran-software-systems","hasAudioNarration":false,"actualSubdomain":"sonoran-software-systems","customDomains":["docs.sonoransoftware.com"],"gitSource":{"type":"github","owner":"sonoran-software","repo":"sonoran-documentation","deployBranch":"master","contentDirectory":"mintlify","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aefca88ff56dc66d2b81dbb","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"CAD","count":256},{"language":"default","tag":"Integration Capabilities","count":247},{"language":"default","tag":"π API Integration","count":193},{"language":"default","tag":"CMS","count":166},{"language":"default","tag":"Tutorials","count":136},{"language":"default","tag":"General","count":124},{"language":"default","tag":"Radio","count":104},{"language":"default","tag":"v2 API Endpoints","count":96},{"language":"default","tag":"Store","count":78},{"language":"default","tag":"Developer API Documentation","count":65}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#content-area img{max-width:100%;height:auto}iframe{border:0}footer a{white-space:normal;text-overflow:clip}#assistant-entry,#assistant-entry-mobile,#chat-assistant-sheet,#ask-assistant-code-block-button{display:none!important}"}],"page":{"pagePath":"store/cctv/installation","slug":"/store/cctv/installation","pageMetadata":{"title":"Installation","description":"Install the free Events Core dependency and paid CCTV DLC in the correct order.","keywords":["fivem","cctv","installation","events core"],"href":"/store/cctv/installation"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Install the free Events Core dependency and paid CCTV DLC in the correct order.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`CCTV uses two separate resources:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://sonoran.store/packages/7606652-events-core`,children:`Events Core`}),` is the free required package containing the shared logic used by CCTV and other Events DLC.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://sonoran.store/packages/7606654-events-cctv`,children:`Events CCTV`}),` is the paid DLC containing the camera network, archive, historic playback, and operator tools.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Both packages are required. Events Core works behind the scenes and does not add a standalone gameplay interface.`})}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-begin`,children:`Before you begin`}),`\n`,_jsx(_components.p,{children:`You need:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A current FXServer with OneSync enabled`}),`\n`,_jsx(_components.li,{children:`Access to the Cfx.re account that owns the granted assets`}),`\n`,_jsx(_components.li,{children:`Access to the serverβs resource directory and server.cfg`}),`\n`,_jsx(_components.li,{children:`Permission to add ACE rules`}),`\n`,_jsx(_components.li,{children:`A test server or maintenance window for the first installation`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Both resources are protected by FiveM Asset Escrow. Edit only the included customer configuration files.`}),`\n`,_jsx(Heading,{level:`2`,id:`download-the-resources`,children:`Download the resources`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Obtain the free Events Core package from the Sonoran Store.`}),`\n`,_jsx(_components.li,{children:`Obtain the paid CCTV package from the Sonoran Store.`}),`\n`,_jsxs(_components.li,{children:[`Sign in to the `,_jsx(_components.a,{href:`https://portal.cfx.re/`,children:`Cfx.re Portal`}),` using the account associated with the purchase.`]}),`\n`,_jsx(_components.li,{children:`Download and extract both granted assets.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`verify-the-folders`,children:`Verify the folders`}),`\n`,_jsx(_components.p,{children:`Keep the exact resource names. Each fxmanifest.lua must be directly inside its resource folder:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`7`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`resources/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`βββ [sonoran]/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` βββ eventsCore/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` β βββ fxmanifest.lua`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` βββ eventsCctv/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` βββ fxmanifest.lua`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Do not add an extra nested folder such as eventsCctv/eventsCctv/fxmanifest.lua, and do not rename either resource.`}),`\n`,_jsx(Heading,{level:`2`,id:`configure-the-start-order`,children:`Configure the start order`}),`\n`,_jsx(_components.p,{children:`Add the following to server.cfg:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`set onesync on`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ensure eventsCore`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ensure eventsCctv`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Events Core must start first. CCTV will not start correctly if the required Core version is missing or outdated.`}),`\n`,_jsx(Heading,{level:`2`,id:`grant-initial-permissions`,children:`Grant initial permissions`}),`\n`,_jsx(_components.p,{children:`For a first administrator test:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.cctvadmin cctv.admin allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.cctvadmin cctv.live.view allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.cctvadmin cctv.recording.view allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`add_ace group.cctvadmin cctv.recording.create allow`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Assign the appropriate player identifier to group.cctvadmin using your serverβs normal ACE setup. See `,_jsx(_components.a,{href:`/store/cctv/permissions`,children:`Permissions`}),` before granting production access.`]}),`\n`,_jsx(Heading,{level:`2`,id:`first-test`,children:`First test`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Fully restart the server and confirm eventsCore starts before eventsCctv.`}),`\n`,_jsx(_components.li,{children:`Join with the test administrator account.`}),`\n`,_jsx(_components.li,{children:`Run /cctv.`}),`\n`,_jsx(_components.li,{children:`Create a terminal and camera in a test area.`}),`\n`,_jsx(_components.li,{children:`Open the cameraβs live view.`}),`\n`,_jsx(_components.li,{children:`Trigger motion or create a bookmark.`}),`\n`,_jsx(_components.li,{children:`Wait for the recording to finish, then open the archive and replay it.`}),`\n`,_jsx(_components.li,{children:`Confirm the recording can still be reviewed after the subject leaves the area.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`updating`,children:`Updating`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Stop the server and back up eventsCore/config/, eventsCore/data/, eventsCctv/config/, and eventsCctv/data/cctv.json.`}),`\n`,_jsx(_components.li,{children:`Download the latest granted packages.`}),`\n`,_jsx(_components.li,{children:`Replace the complete resource folders.`}),`\n`,_jsx(_components.li,{children:`Merge your customer settings into the new configuration structure instead of copying protected files from an older version.`}),`\n`,_jsx(_components.li,{children:`Start Events Core before CCTV and repeat the first test.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Backups may contain player, vehicle, or incident information. Store them securely and redact sensitive information before sending anything to support.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Installation","description":"Install the free Events Core dependency and paid CCTV DLC in the correct order.","keywords":["fivem","cctv","installation","events core"],"href":"/store/cctv/installation"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you begin","slug":"before-you-begin","depth":2,"children":[]},{"title":"Download the resources","slug":"download-the-resources","depth":2,"children":[]},{"title":"Verify the folders","slug":"verify-the-folders","depth":2,"children":[]},{"title":"Configure the start order","slug":"configure-the-start-order","depth":2,"children":[]},{"title":"Grant initial permissions","slug":"grant-initial-permissions","depth":2,"children":[]},{"title":"First test","slug":"first-test","depth":2,"children":[]},{"title":"Updating","slug":"updating","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"sonoran-software-systems","siteName":"Sonoran Software Documentation","title":"Installation - Sonoran Software Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T00:46:55.610Z","originalFileLocation":"store/cctv/installation.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Install the free Events Core dependency and paid CCTV DLC in the correct order.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Sonoran Software Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://docs-assets.sonoransoftware.com/sha256/1d/1d3aaa7393e84144f39bad7742c218a4f1db8e0ceb6f330d69f2e9bc92629df4.png\">\u003cmeta data-mint-head property=\"og:title\" content=\"Installation - Sonoran Software Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Install the free Events Core dependency and paid CCTV DLC in the correct order.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Sonoran Software Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.sonoransoftware.com/store/cctv/installation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://sonoran-software-systems.mintlify.site/_mintlify/api/og/v2?division=%F0%9F%93%B9+CCTV\u0026amp;title=Installation\u0026amp;description=Install+the+free+Events+Core+dependency+and+paid+CCTV+DLC+in+the+correct+order.\u0026amp;theme=1726bed78342e75c7aa90f1e\u0026amp;signature=115b2c762c5d213c7f9b66bc486caec93bc3005a79b75433b7ed4b8fc0e7f5b4\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Installation - Sonoran Software Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Install the free Events Core dependency and paid CCTV DLC in the correct order.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://sonoran-software-systems.mintlify.site/_mintlify/api/og/v2?division=%F0%9F%93%B9+CCTV\u0026amp;title=Installation\u0026amp;description=Install+the+free+Events+Core+dependency+and+paid+CCTV+DLC+in+the+correct+order.\u0026amp;theme=1726bed78342e75c7aa90f1e\u0026amp;signature=115b2c762c5d213c7f9b66bc486caec93bc3005a79b75433b7ed4b8fc0e7f5b4\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/sonoran-software-systems/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Sonoran Software Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1D7DCF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.sonoransoftware.com/store/cctv/installation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/store/cctv/installation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.sonoransoftware.com/#organization\",\"name\":\"Sonoran Software Documentation\",\"url\":\"https://docs.sonoransoftware.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs-assets.sonoransoftware.com/sha256/a8/a8af14e6458cb682c1c8d33ca8b56d25dcd5999b2589e0de14b2be9f8dbe20a5.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.sonoransoftware.com#website\",\"name\":\"Sonoran Software Documentation\",\"url\":\"https://docs.sonoransoftware.com\",\"publisher\":{\"@id\":\"https://docs.sonoransoftware.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.sonoransoftware.com/store/cctv/installation#webpage\",\"url\":\"https://docs.sonoransoftware.com/store/cctv/installation\",\"name\":\"Installation\",\"description\":\"Install the free Events Core dependency and paid CCTV DLC in the correct order.\",\"dateModified\":\"2026-10-20T00:46:55.610Z\",\"isPartOf\":{\"@id\":\"https://docs.sonoransoftware.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.sonoransoftware.com/store/cctv/installation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.sonoransoftware.com/store/cctv/installation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"General\",\"item\":\"https://docs.sonoransoftware.com/store/general/information\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"πΉ CCTV\",\"item\":\"https://docs.sonoransoftware.com/store/cctv\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Installation\",\"item\":\"https://docs.sonoransoftware.com/store/cctv/installation\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.sonoransoftware.com/store/cctv/installation#article\",\"headline\":\"Installation\",\"name\":\"Installation\",\"description\":\"Install the free Events Core dependency and paid CCTV DLC in the correct order.\",\"url\":\"https://docs.sonoransoftware.com/store/cctv/installation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.sonoransoftware.com/store/cctv/installation#webpage\"},\"dateModified\":\"2026-10-20T00:46:55.610Z\",\"keywords\":\"fivem, cctv, installation, events core\",\"publisher\":{\"@id\":\"https://docs.sonoransoftware.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.sonoransoftware.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Sonoran Software Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Sonoran Software Documentation","nav":{"global":null,"products":[{"product":"Overview","icon":"house","pages":[{"title":"Overview","href":""}]},{"product":"CAD","icon":"car-side","pages":[{"title":"CAD","href":"/cad"}]},{"product":"CMS","icon":"building","pages":[{"title":"CMS","href":"/cms"}]},{"product":"Radio","icon":"walkie-talkie","pages":[{"title":"Radio","href":"/radio"}]},{"product":"Bot","icon":"robot","pages":[{"title":"Bot","href":"/bot"}]},{"product":"Store","icon":"bag-shopping","groups":[{"group":"Start here","pages":[{"title":"π Home","href":"/store"}]},{"group":"General","pages":[{"title":"Information","href":"/store/general/information"},{"title":"Accessing Tebex Assets","href":"/store/general/tebex-assets"},{"title":"Gun Placement System Guide","href":"/store/general/gun-placement"},{"title":"Five Bundle","href":"/store/five-bundle"},{"group":"π§ ATM Robbery","root":{"title":"ATM Robbery","href":"/store/atm-robbery"},"pages":[{"title":"Getting Started","href":"/store/atm-robbery/getting-started"},{"title":"Advanced Documentation","href":"/store/atm-robbery/advanced-docs"}]},{"group":"π§£ Bandanas","root":{"title":"Bandanas","href":"/store/bandanas"},"pages":[{"title":"Installation","href":"/store/bandanas/installation"}]},{"group":"π¦Ί Safety Vests","root":{"title":"Safety Vests","href":"/store/safety-vests"},"pages":[{"title":"Installation","href":"/store/safety-vests/installation"}]},{"group":"π Short Slip Dress","root":{"title":"Short Slip Dress","href":"/store/short-slip-dress"},"pages":[{"title":"Installation","href":"/store/short-slip-dress/installation"}]},{"group":"π§£ Scarf","root":{"title":"Scarf","href":"/store/scarf"},"pages":[{"title":"Installation","href":"/store/scarf/installation"}]},{"group":"πΉ CCTV","root":{"title":"CCTV","description":"Record incidents automatically and replay historic CCTV footage after the scene is clear.","href":"/store/cctv"},"pages":[{"title":"Installation","href":"/store/cctv/installation"},{"title":"Configuration","description":"Configure CCTV interaction, cameras, recordings, retention, permissions, and optional integrations.","href":"/store/cctv/configuration"},{"title":"Camera Setup","href":"/store/cctv/camera-setup"},{"title":"Live View and Historic Playback","href":"/store/cctv/playback"},{"title":"Permissions","href":"/store/cctv/permissions"},{"title":"Developer API","href":"/store/cctv/developer-api"},{"title":"Troubleshooting","href":"/store/cctv/troubleshooting"}]},{"group":"π Dashcam","root":{"title":"Dashcam","href":"/store/dashcam"},"pages":[{"title":"Installation","href":"/store/dashcam/installation"},{"title":"Configuration","href":"/store/dashcam/configuration"},{"title":"Vehicle Setup","href":"/store/dashcam/vehicle-setup"},{"title":"Recording","href":"/store/dashcam/recording"},{"title":"Playback and Evidence","href":"/store/dashcam/playback"},{"title":"Permissions","href":"/store/dashcam/permissions"},{"title":"Developer API","href":"/store/dashcam/developer-api"},{"title":"Troubleshooting","href":"/store/dashcam/troubleshooting"}]},{"group":"π₯ Bodycam","root":{"title":"Bodycam","href":"/store/bodycam"},"pages":[{"title":"Installation","href":"/store/bodycam/installation"},{"title":"Configuration","href":"/store/bodycam/configuration"},{"title":"Wearer Setup","href":"/store/bodycam/wearer-setup"},{"title":"Recording","href":"/store/bodycam/recording"},{"title":"Playback and Evidence","href":"/store/bodycam/playback"},{"title":"Permissions","href":"/store/bodycam/permissions"},{"title":"Developer API","href":"/store/bodycam/developer-api"},{"title":"Troubleshooting","href":"/store/bodycam/troubleshooting"}]},{"group":"πΈ Evidence Camera","root":{"title":"Evidence Camera","href":"/store/evidence-camera"},"pages":[{"title":"Getting Started","href":"/store/evidence-camera/getting-started"},{"title":"Advanced Documentation","href":"/store/evidence-camera/advanced-docs"}]},{"group":"π Mobile Command Center","root":{"title":"Mobile Command Center","href":"/store/mcc"},"pages":[{"title":"Getting Started","href":"/store/mcc/getting-started"},{"title":"Advanced Documentation","href":"/store/mcc/advanced-docs"}]},{"group":"ποΈ Sonoran Notepad","root":{"title":"Sonoran Notepad","href":"/store/sonoran-notepad"},"pages":[{"title":"Installation","href":"/store/sonoran-notepad/installation"},{"title":"Using and Syncing Notes","href":"/store/sonoran-notepad/usage-and-sync"},{"title":"Troubleshooting","href":"/store/sonoran-notepad/troubleshooting"}]},{"group":"β‘ Power Grid","root":{"title":"Power Grid","href":"/store/power-grid"},"pages":[{"title":"Getting Started","href":"/store/power-grid/getting-started"},{"title":"Advanced Documentation","href":"/store/power-grid/advanced-documentation"}]},{"group":"πΆ Radar Detector / Jammer","root":{"title":"Radar Detector / Jammer","href":"/store/radar-detector"},"pages":[{"title":"Getting Started","href":"/store/radar-detector/getting-started"}]},{"group":"π Radar Display","root":{"title":"Radar Display","href":"/store/radar-display"},"pages":[{"title":"Getting Started","href":"/store/radar-display/getting-started"}]},{"group":"π₯οΈ Sonoran Station Displays","root":{"title":"Sonoran Station Displays","href":"/store/sonoran-station-displays"},"pages":[{"title":"Installation","href":"/store/sonoran-station-displays/installation"},{"title":"Updating","href":"/store/sonoran-station-displays/updating"},{"title":"Configuration","href":"/store/sonoran-station-displays/configuration"},{"title":"Permissions","href":"/store/sonoran-station-displays/permissions"},{"title":"Display Management","href":"/store/sonoran-station-displays/display-management"},{"title":"Display Pages and Rotation","href":"/store/sonoran-station-displays/display-pages"},{"title":"Active Units","href":"/store/sonoran-station-displays/active-units"},{"title":"Calls","href":"/store/sonoran-station-displays/calls"},{"title":"Localized Live Map","href":"/store/sonoran-station-displays/live-map"},{"title":"Bodycams","href":"/store/sonoran-station-displays/bodycams"},{"title":"In-game Clock and Weather","href":"/store/sonoran-station-displays/in-game-clock"},{"title":"SonoranCADFiveM Integration","href":"/store/sonoran-station-displays/sonorancad-integration"},{"title":"Administrative Webhooks","href":"/store/sonoran-station-displays/administrative-webhooks"},{"title":"Persistence","href":"/store/sonoran-station-displays/persistence"},{"title":"Performance","href":"/store/sonoran-station-displays/performance"},{"title":"Diagnostics","href":"/store/sonoran-station-displays/diagnostics"},{"title":"Troubleshooting","href":"/store/sonoran-station-displays/troubleshooting"},{"title":"Developer API","href":"/store/sonoran-station-displays/developer-api"},{"title":"DUI Message Protocol","href":"/store/sonoran-station-displays/dui-message-protocol"},{"title":"Changelog","href":"/store/sonoran-station-displays/changelog"}]},{"group":"π£οΈ Sonoran Street Signs","root":{"title":"Sonoran Street Signs","href":"/store/street-signs"},"pages":[{"title":"Installation","href":"/store/street-signs/getting-started"},{"title":"Configuration","href":"/store/street-signs/configuration-reference"},{"title":"Permissions","href":"/store/street-signs/permissions"},{"title":"Using Signs","href":"/store/street-signs/commands-and-usage"},{"title":"Integrations and Webhooks","href":"/store/street-signs/integrations-and-webhooks"},{"title":"Troubleshooting","href":"/store/street-signs/faq-and-troubleshooting"}]},{"group":"π« Shot Spotter","root":{"title":"Shot Spotter","href":"/store/shot-spotter"},"pages":[{"title":"Getting Started","href":"/store/shot-spotter/getting-started"},{"title":"Shot Spotter - Advanced Documentation","href":"/store/shot-spotter/advanced-docs"}]},{"group":"πΉ Speed Cameras / ALPR","root":{"title":"Speed Cameras / ALPR","href":"/store/speed-camera"},"pages":[{"title":"Getting Started","href":"/store/speed-camera/getting-started"},{"title":"Advanced Documentation","href":"/store/speed-camera/advanced-docs"}]},{"group":"π Traffic Engine","root":{"title":"Traffic Engine","href":"/store/traffic-engine"},"pages":[{"title":"Getting Started","href":"/store/traffic-engine/getting-started"},{"title":"Advanced Documentation","href":"/store/traffic-engine/advanced-documentation"}]}]},{"group":"Other","pages":[{"title":"Terms and Policies","href":"/store/other/policy"}]}]},{"product":"Studio","icon":"clapperboard","pages":[{"title":"Studio","href":"/studio"}]}]},"basePath":"","title":"Installation - Sonoran Software Documentation","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}