[{"data":1,"prerenderedAt":426},["ShallowReactive",2],{"/docs/jobs/dojjob/features/registries":3,"/docs/jobs/dojjob/features/registries-surround":414,"/docs/jobs/dojjob/features/registries-implemented-suggestions":425},{"id":4,"title":5,"body":6,"description":404,"extension":405,"head":406,"implementedSuggestions":406,"meta":407,"navigation":408,"path":409,"schemaOrg":406,"seo":410,"sitemap":411,"stem":412,"__hash__":413},"docs/1.docs/0.jobs/5.dojjob/3.features/05.registries.md","Registries and certificates",{"type":7,"value":8,"toc":396},"minimark",[9,23,30,35,105,112,116,138,141,222,225,230,233,240,244,255,262,265,285,289,363,370,389,392],[10,11,12,13,17,18,22],"p",{},"Open ",[14,15,16],"strong",{},"Registry"," in File Explorer. Registers appear as folders, with the same search, detail rows and context menus as other files. Every entry has a stable File ID such as ",[19,20,21],"code",{},"REG-000002","; staff select people by name and date of birth, not by technical character identifiers.",[10,24,25,26,29],{},"Registry is enabled in fresh defaults. On an existing server, a saved disabled ",[14,27,28],{},"Specialist Registries"," setting still takes precedence. Citizens and Vehicles remain separate directories.",[31,32,34],"h2",{"id":33},"supplied-registers","Supplied registers",[36,37,38,54],"table",{},[39,40,41],"thead",{},[42,43,44,48,51],"tr",{},[45,46,47],"th",{},"Register",[45,49,50],{},"Saving or changing an entry",[45,52,53],{},"Removing an entry",[55,56,57,69,84,95],"tbody",{},[42,58,59,63,66],{},[60,61,62],"td",{},"Name changes",[60,64,65],{},"Updates the selected character's first and last name through the configured framework",[60,67,68],{},"Archives the record; does not restore an earlier name",[42,70,71,74,81],{},[60,72,73],{},"Marriages & divorces",[60,75,76,77,80],{},"Records both partners, date and notes. Disable ",[14,78,79],{},"Marriage in effect"," to enter the divorce date and decision",[60,82,83],{},"Archives the record",[42,85,86,89,92],{},[60,87,88],{},"Weapon licenses",[60,90,91],{},"Grants or revokes the configured license through the Sky Base license provider",[60,93,94],{},"Revokes an active license and archives its entry",[42,96,97,100,103],{},[60,98,99],{},"Business register",[60,101,102],{},"Records the business, registered owner, activity, address and status",[60,104,83],{},[10,106,107,108,111],{},"Marriages do not automatically change surnames. A business entry does not create a framework job or bank account. Person searches use the same ",[14,109,110],{},"Citizens"," roster as File Explorer; an empty roster has no results. Manual citizen entries can be used for marriages and businesses. Name changes and license actions additionally need a linked framework character.",[31,113,115],{"id":114},"choose-which-licenses-doj-can-issue","Choose which licenses DOJ can issue",[10,117,118,119,122,123,126,127,129,130,133,134,137],{},"In ",[19,120,121],{},"/jobconfig"," → ",[14,124,125],{},"DOJ → Registry → License registers",", add a provider license type and the name of its register. Each configured type becomes its own folder, such as ",[14,128,88],{}," or ",[14,131,132],{},"Business licenses",". The shipped list contains only ",[19,135,136],{},"weapon",".",[10,139,140],{},"With the Job Configurator disabled, edit:",[142,143,149],"pre",{"className":144,"code":145,"filename":146,"language":147,"meta":148,"style":148},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.RegistryLicenses = { definitions = {\n    { type = \"weapon\", label = \"Weapon licenses\" },\n    -- Add another type only after creating it in your license provider.\n} }\n","config/registry.lua","lua","",[19,150,151,177,209,216],{"__ignoreMap":148},[152,153,156,160,164,168,171,174],"span",{"class":154,"line":155},"line",1,[152,157,159],{"class":158},"sTEyZ","Config.",[152,161,163],{"class":162},"sBMFI","RegistryLicenses",[152,165,167],{"class":166},"sMK4o"," =",[152,169,170],{"class":158}," { definitions ",[152,172,173],{"class":166},"=",[152,175,176],{"class":158}," {\n",[152,178,180,183,185,188,191,194,197,199,201,203,206],{"class":154,"line":179},2,[152,181,182],{"class":158},"    { type ",[152,184,173],{"class":166},[152,186,187],{"class":166}," \"",[152,189,136],{"class":190},"sfazB",[152,192,193],{"class":166},"\"",[152,195,196],{"class":158},", label ",[152,198,173],{"class":166},[152,200,187],{"class":166},[152,202,88],{"class":190},[152,204,205],{"class":166},"\" ",[152,207,208],{"class":158},"},\n",[152,210,212],{"class":154,"line":211},3,[152,213,215],{"class":214},"sHwdD","    -- Add another type only after creating it in your license provider.\n",[152,217,219],{"class":154,"line":218},4,[152,220,221],{"class":158},"} }\n",[10,223,224],{},"An empty list enables no license registers. Removing a type hides its register while retaining records and existing licenses. A provider's full license catalog does not automatically become an issuing menu here. Citizen-profile license administration has its own permission and is separate from these selected registers.",[226,227,229],"h3",{"id":228},"existing-license-holders","Existing license holders",[10,231,232],{},"Supported providers import existing holders when the register is opened or changed. Import does not grant a license again or invent its original issue date or issuer. Later provider grants and revocations synchronize with the register while preserving notes, authors and clearance.",[10,234,235,236,239],{},"Complete holder import is supported by the ESX, QB, Qbox and standalone Sky license providers, CodeM wallet, and STG wallet with a supported backing provider. Other providers show an incomplete-list notice. A known holder can still be selected from Citizens. A failed provider lookup is an error, not an empty register. Custom providers need a complete online-and-offline ",[19,237,238],{},"Holders(license_type)"," implementation to support the import.",[31,241,243],{"id":242},"view-and-print-a-certificate","View and print a certificate",[10,245,246,247,250,251,254],{},"Save the entry, then choose ",[14,248,249],{},"View certificate",". The certificate uses the saved revision and its assigned published template. Choose ",[14,252,253],{},"Print"," and collect the copy from a configured job printer.",[10,256,257,258,261],{},"The five supplied layouts cover name changes, marriages, divorces, licenses and businesses. Find them together under ",[14,259,260],{},"Document templates → Registry","; the Registry column shows their assignments. The marriage's recorded status selects the marriage or divorce layout.",[10,263,264],{},"The certificate includes the original recording employee, recording date, File ID and revision, plus the employee issuing the extract. The name is typeset as a signature beside a DOJ seal; it is not a captured handwritten signature. Imported licenses retain their import provenance. Printed copies remain tied to the saved version.",[10,266,267,268,273,274,279,280,284],{},"Register certificates use the Jobs Base ",[14,269,270],{},[19,271,272],{},"job_document"," item. Install it and its image in addition to DOJ's document item; see ",[275,276,278],"a",{"href":277},"/docs/jobs/dojjob/reference/inventory","Inventory items",". The current supplied certificate revisions publish automatically while they remain uncustomized. Custom templates must be reviewed and published explicitly. ",[275,281,283],{"href":282},"/docs/jobs/dojjob/features/templates#copy-a-template","Copy a template"," to start a separate layout.",[31,286,288],{"id":287},"configure-or-add-a-register","Configure or add a register",[36,290,291,301],{},[39,292,293],{},[42,294,295,298],{},[45,296,297],{},"File or setting",[45,299,300],{},"Purpose",[55,302,303,312,322,343,353],{},[42,304,305,309],{},[60,306,307],{},[19,308,146],{},[60,310,311],{},"License-register selection, access overrides and optional legacy catalog",[42,313,314,319],{},[60,315,316],{},[19,317,318],{},"config/registry/\u003Ckey>.lua",[60,320,321],{},"Label, fields, default access and certificate template key",[42,323,324,329],{},[60,325,326],{},[19,327,328],{},"config/registry/server/\u003Ckey>.lua",[60,330,331,334,335,338,339,342],{},[19,332,333],{},"Create(context)",", ",[19,336,337],{},"Update(context)"," and ",[19,340,341],{},"Remove(context)"," for server-side effects",[42,344,345,350],{},[60,346,347],{},[19,348,349],{},"config/registry/client/\u003Ckey>.lua",[60,351,352],{},"Optional presentation hooks after a successful action",[42,354,355,360],{},[60,356,357],{},[19,358,359],{},"/jobconfig → DOJ → Registry → Registry file access",[60,361,362],{},"Enabled state, jobs/groups and read/edit clearance for each file register",[10,364,365,366,369],{},"Copy the supplied marriage definition and its server file, choose a unique lowercase key, adapt the fields and restart DOJ. Keep that key stable once records exist. No source or manifest edit is needed. Available field types are text, long text, number, date, boolean and selection; ",[19,367,368],{},"control = \"person\""," uses Citizens selection.",[10,371,372,373,376,377,380,381,384,385,388],{},"Server hooks receive the authorized actor, validated fields and the previous entry. Return ",[19,374,375],{},"true"," to save or ",[19,378,379],{},"false, \"error_key\""," to reject. The registry service handles storage and audit. Before an external change, register compensation through ",[19,382,383],{},"context.OnRollback","; follow the examples and hook contract in the shipped ",[19,386,387],{},"config/registry/README.md",". Client hooks are for presentation and do not authorize writes.",[10,390,391],{},"Writes require current job/duty access, the court-administration role, clearance and the register's write permission. Name and license registers use their dedicated authorization permissions. Existing legacy registry data stays in its own workflow and is not replayed through the new hooks.",[393,394,395],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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":148,"searchDepth":155,"depth":179,"links":397},[398,399,402,403],{"id":33,"depth":179,"text":34},{"id":114,"depth":179,"text":115,"children":400},[401],{"id":228,"depth":211,"text":229},{"id":242,"depth":179,"text":243},{"id":287,"depth":179,"text":288},"Record name changes, marriages, divorces, businesses and selected licenses, then issue a certificate from the saved entry.","md",null,{},true,"/docs/jobs/dojjob/features/registries",{"title":5,"description":404},{"loc":409},"1.docs/0.jobs/5.dojjob/3.features/05.registries","lYW-0GoTlFDc2MDaKWLnDGpnbkWj3PPMRWZindl4wjY",[415,420],{"title":416,"path":417,"stem":418,"description":419,"children":-1},"Document templates","/docs/jobs/dojjob/features/templates","1.docs/0.jobs/5.dojjob/3.features/04.templates","Build shared or personal DOJ templates with required fields, signature lines, headers, watermarks and versioned publishing.",{"title":421,"path":422,"stem":423,"description":424,"children":-1},"Finance and bank investigations","/docs/jobs/dojjob/features/finance","1.docs/0.jobs/5.dojjob/3.features/06.finance","View faction balances, transfer or collect treasury funds, inspect supported citizen accounts and record financial actions.",[],1790629496801]