NPM does not support git pointers to subfolders in the package.json file. This breaks the build.
Solutions
A NPM post-install hook clones the platform repo and installs the CE Webapps
Cons
There might be authentication problems when cloning a maintenance repo
Repo and credential management is usually done by Jenkins (conflict with the separation of concerns)
Whenever the enterprise webapps are built, the platform repo needs to be cloned
Might degrade development experience
Pros
Besides solving the problem with authentication, not much to do on the CI side
The Jenkins job clones the platform repo and the package.json of the EE Webapp points to a concrete folder
Cons
The currently used SCM plugin on Jenkins does not support cloning multiple repositories
Bigger restructuring of CI jobs and release scripts/jobs
Pros
Better separation of concerns compared to solution #1
Better development experience compared to solution #1
The CE Webapp NPM package is published to our Nexus, and the EE Webapp consumes the package from our Nexus
Pros
Low effort for the cambpm runtime team
No CI changes; everything is in control of our own codebase
Good development experience
Cons
NPM has no snapshot concept
Currently, the Apache HTTP Server our Nexus is running on is configured in a way that URLs with escaped forward slashes are blocked, which breaks Nexus mirroring and is a blocker for this solution
AllowEncodedSlashes[1] should be configured to On
Infra has concerns:
For the #infra team, it is time-consuming to configure and test Nexus so that NPM packages can be stored
Nexus doesn’t seem to scale that well, and the #infra team doesn’t want to make us even more dependent on Nexus
Solution #3 but using GitHub packages instead of Nexus
Cons
NPM has no snapshot concept
Published packages cannot be unpublished via the command line (but via automated GitHub action)
Test release jobs and PR-based CI cannot easily run isolated
Access token needed (Bot account needs to be added to our GitHub Org)
Only 50 GB storage available (+0,25 $/GB) => We would need a cleanup concept (at least for the snapshot versions)
Pros
See Pros of Solution #3
Publish the CE frontend sources as maven artifact to Nexus and consume it in the EE Webapp
Pros
Compared to solution #3 and #4, we don't introduce new systems to our build processes
We have profound knowledge about Maven and know how to rule it
Effort is compared to all other solutions low for the cambpm runtime team as well as for the infra team
Compared to solution #3 and #4, we can simply reuse the snapshot concept of Maven
Cons
Frontend build is dependent on the backend build (this is not really a valid point since we either link the repos or use the watch script during development)
Add package.json file to the root directory of the camunda-bpm-platform repository (brought up by martin.stamm)
Pros
Effort is compared to all other solutions low for the cambpm runtime team as well as for the infra team
We can continue to use the git repository reference in the package.json of the EE repo
Frontend build is not dependent on backend build (this is not really a valid point since we either link the repos or use the watch script during development)
Cons
The whole platform repository with all Java sources is cloned whenever npm i is executed (it takes one minute to download the whole repo)
Seems a bit hacky, and people might wonder why we have a useless package.json in our repository root
{"searchers":{"groups":[{"searchers":[{"name":"Project","id":"project","key":"issue.field.project","isShown":true,"lastViewed":1743514473863},{"name":"Summary","id":"summary","key":"issue.field.summary","isShown":true},{"name":"Type","id":"issuetype","key":"issue.field.issuetype","isShown":true,"lastViewed":1743514473865},{"name":"Status","id":"status","key":"issue.field.status","isShown":true,"lastViewed":1743514473873},{"name":"Priority","id":"priority","key":"issue.field.priority","isShown":true},{"name":"Resolution","id":"resolution","key":"issue.field.resolution","isShown":true},{"name":"Creator","id":"creator","key":"issue.field.creator","isShown":true},{"name":"Affects Version","id":"version","key":"issue.field.affectsversions","isShown":true},{"name":"Fix Version","id":"fixfor","key":"issue.field.fixversions","isShown":true},{"name":"Component","id":"component","key":"issue.field.components","isShown":true,"lastViewed":1743514473876},{"name":"% Limits","id":"workratio","key":"issue.field.workratio","isShown":true},{"name":"Link types","id":"issue_link_type","key":"issue.field.issuelinks","isShown":true},{"name":"Environment","id":"environment","key":"issue.field.environment","isShown":true},{"name":"Description","id":"description","key":"issue.field.description","isShown":true},{"name":"Comment","id":"comment","key":"issue.field.comment","isShown":true},{"name":"Label","id":"labels","key":"issue.field.labels","isShown":true},{"name":"Query","id":"text","key":"text","isShown":true},{"name":"Approvals","id":"customfield_12210","key":"com.atlassian.servicedesk.approvals-plugin:sd-approvals","isShown":true},{"name":"Association Count","id":"customfield_13911","key":"com.atlassian.jira.plugin.system.customfieldtypes:float","isShown":true},{"name":"Associations","id":"customfield_13910","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":true},{"name":"BPM Version","id":"customfield_12911","key":"com.atlassian.jira.plugin.system.customfieldtypes:select","isShown":true},{"name":"Customer Request Type","id":"customfield_11010","key":"com.atlassian.servicedesk:vp-origin","isShown":true},{"name":"Development","id":"customfield_12310","key":"com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary","isShown":true},{"name":"Effort","id":"customfield_12810","key":"com.atlassian.jira.plugin.system.customfieldtypes:select","isShown":false},{"name":"Email Distribution List","id":"customfield_12915","key":"com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes","isShown":true},{"name":"Environment","id":"customfield_10411","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":false},{"name":"Environment","id":"customfield_11210","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":false},{"name":"Epic","id":"customfield_11810","key":"com.atlassian.jira.plugin.system.customfieldtypes:labels","isShown":true},{"name":"Epic","id":"customfield_10031","key":"com.atlassian.jira.plugin.system.customfieldtypes:labels","isShown":false},{"name":"Epic Colour","id":"customfield_10813","key":"com.pyxis.greenhopper.jira:gh-epic-color","isShown":false},{"name":"Epic Link","id":"customfield_10810","key":"com.pyxis.greenhopper.jira:gh-epic-link","isShown":true},{"name":"Epic Name","id":"customfield_10811","key":"com.pyxis.greenhopper.jira:gh-epic-label","isShown":true},{"name":"Epic Status","id":"customfield_10812","key":"com.pyxis.greenhopper.jira:gh-epic-status","isShown":false},{"name":"Epic/Theme","id":"customfield_10091","key":"com.atlassian.jira.plugin.system.customfieldtypes:labels","isShown":true},{"name":"Flagged","id":"customfield_10090","key":"com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes","isShown":true},{"name":"Global Rank","id":"customfield_10110","key":"com.pyxis.greenhopper.jira:gh-global-rank","isShown":true},{"name":"Groups","id":"customfield_14510","key":"com.atlassian.servicedesk:sd-request-groups","isShown":true},{"name":"Help Request Type","id":"customfield_12713","key":"com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons","isShown":true},{"name":"High Level Steps","id":"customfield_12616","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":true},{"name":"LDAP Groups Picker","id":"customfield_12914","key":"com.onresolve.jira.groovy.groovyrunner:multiple-ldap-picker-cf","isShown":false},{"name":"Linked major incidents","id":"customfield_13010","key":"com.atlassian.servicedesk.incident-management-plugin:sd-incidents-link","isShown":false},{"name":"Number of Licenses Needed","id":"customfield_12116","key":"com.atlassian.jira.plugin.system.customfieldtypes:float","isShown":true},{"name":"Optimize PM Priority","id":"customfield_12811","key":"com.pyxis.greenhopper.jira:gh-lexo-rank","isShown":true},{"name":"Organizations","id":"customfield_12211","key":"com.atlassian.servicedesk:sd-customer-organizations","isShown":true},{"name":"Original story points","id":"customfield_13413","key":"com.atlassian.jpo:jpo-custom-field-original-story-points","isShown":true},{"name":"PM Priority","id":"customfield_12010","key":"com.atlassian.jira.plugin.system.customfieldtypes:float","isShown":false},{"name":"Parent Link","id":"customfield_13410","key":"com.atlassian.jpo:jpo-custom-field-parent","isShown":false},{"name":"Preconditions - Dats","id":"customfield_12615","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":true},{"name":"Preconditions - Users","id":"customfield_12614","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":true},{"name":"Progress","id":"customfield_13110","key":"com.atlassian.jira.plugin.system.customfieldtypes:textfield","isShown":true},{"name":"Project","id":"customfield_11910","key":"com.atlassian.jira.plugin.system.customfieldtypes:labels","isShown":true},{"name":"Purpose of the IT-Tool","id":"customfield_12114","key":"com.atlassian.jira.plugin.system.customfieldtypes:textfield","isShown":true},{"name":"Questions","id":"customfield_12910","key":"com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes","isShown":true},{"name":"Rank","id":"customfield_11410","key":"com.pyxis.greenhopper.jira:gh-lexo-rank","isShown":true},{"name":"Rank","id":"customfield_11411","key":"com.pyxis.greenhopper.jira:gh-lexo-rank","isShown":true},{"name":"Rank (Obsolete)","id":"customfield_10041","key":"com.atlassian.jira.plugin.system.customfieldtypes:float","isShown":false},{"name":"Rank (Obsolete)","id":"customfield_10092","key":"com.atlassian.jira.plugin.system.customfieldtypes:float","isShown":false},{"name":"Rank (Obsolete)","id":"customfield_10414","key":"com.pyxis.greenhopper.jira:gh-global-rank","isShown":true},{"name":"Rank (Obsolete)","id":"customfield_10415","key":"com.pyxis.greenhopper.jira:gh-global-rank","isShown":true},{"name":"Release Version History","id":"customfield_10210","key":"com.pyxis.greenhopper.jira:greenhopper-releasedmultiversionhistory","isShown":true},{"name":"Request participants","id":"customfield_11412","key":"com.atlassian.servicedesk:sd-request-participants","isShown":true},{"name":"SP Effort","id":"customfield_13310","key":"com.atlassian.jira.plugin.system.customfieldtypes:select","isShown":true},{"name":"Satisfaction","id":"customfield_12212","key":"com.atlassian.servicedesk:sd-request-feedback","isShown":true},{"name":"Sprint","id":"customfield_10710","key":"com.pyxis.greenhopper.jira:gh-sprint","isShown":true},{"name":"Steps","id":"customfield_12618","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":true},{"name":"Story Points","id":"customfield_11710","key":"com.atlassian.jira.plugin.system.customfieldtypes:float","isShown":false},{"name":"Target Quality","id":"customfield_13510","key":"com.atlassian.jira.plugin.system.customfieldtypes:select","isShown":false},{"name":"Team","id":"customfield_13414","key":"com.atlassian.teams:rm-teams-custom-field-team","isShown":true},{"name":"Test Goals","id":"customfield_12613","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":true},{"name":"Time to Resolution","id":"customfield_11124","key":"com.atlassian.servicedesk:sd-sla-field","isShown":true},{"name":"Time to Response","id":"customfield_11121","key":"com.atlassian.servicedesk:sd-sla-field","isShown":true},{"name":"Time to Response - Ericsson","id":"customfield_11122","key":"com.atlassian.servicedesk:sd-sla-field","isShown":true},{"name":"Time to Response - Test","id":"customfield_11123","key":"com.atlassian.servicedesk:sd-sla-field","isShown":true},{"name":"Time to resolution","id":"customfield_11110","key":"com.atlassian.servicedesk:sd-sla-field","isShown":true},{"name":"Time to temporary Solution","id":"customfield_11510","key":"com.atlassian.servicedesk:sd-sla-field","isShown":true},{"name":"Tips","id":"customfield_12617","key":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","isShown":true},{"name":"Title Keywords","id":"customfield_10070","key":"com.atlassian.jira.plugin.system.customfieldtypes:textfield","isShown":true},{"name":"Tool Price per Year","id":"customfield_12612","key":"com.atlassian.jira.plugin.system.customfieldtypes:textfield","isShown":true},{"name":"URL of DPA","id":"customfield_12610","key":"com.atlassian.jira.plugin.system.customfieldtypes:url","isShown":true},{"name":"URL of Terms and Conditions","id":"customfield_12611","key":"com.atlassian.jira.plugin.system.customfieldtypes:url","isShown":true},{"name":"URL of the Tool","id":"customfield_12112","key":"com.atlassian.jira.plugin.system.customfieldtypes:url","isShown":true},{"name":"Which Data will be Processed?","id":"customfield_12117","key":"com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes","isShown":true},{"name":"issueFunction","id":"customfield_11311","key":"com.onresolve.jira.groovy.groovyrunner:jqlFunctionsCustomFieldType","isShown":true}],"type":"DETAILS","title":"Details"},{"searchers":[{"name":"Created Date","id":"created","key":"issue.field.created","isShown":true},{"name":"Updated Date","id":"updated","key":"issue.field.updated","isShown":true},{"name":"Resolution Date","id":"resolutiondate","key":"issue.field.resolution.date","isShown":true},{"name":"Due Date","id":"duedate","key":"issue.field.duedate","isShown":true},{"name":"Postponed Until","id":"customfield_12712","key":"com.atlassian.jira.plugin.system.customfieldtypes:datetime","isShown":true},{"name":"Satisfaction date","id":"customfield_12213","key":"com.atlassian.servicedesk:sd-request-feedback-date","isShown":true},{"name":"Target end","id":"customfield_13412","key":"com.atlassian.jpo:jpo-custom-field-baseline-end","isShown":true},{"name":"Target start","id":"customfield_13411","key":"com.atlassian.jpo:jpo-custom-field-baseline-start","isShown":true}],"type":"DATES","title":"Dates"},{"searchers":[{"name":"Assignee","id":"assignee","key":"issue.field.assignee","isShown":true,"lastViewed":1743514473875},{"name":"Reporter","id":"reporter","key":"issue.field.reporter","isShown":true},{"name":"Authorized support contacts","id":"customfield_10410","key":"com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker","isShown":false},{"name":"DRI","id":"customfield_13210","key":"com.atlassian.jira.plugin.system.customfieldtypes:userpicker","isShown":true},{"name":"Manager","id":"customfield_12620","key":"com.atlassian.jira.plugin.system.customfieldtypes:userpicker","isShown":true},{"name":"Reviewer","id":"customfield_12121","key":"com.atlassian.jira.plugin.system.customfieldtypes:userpicker","isShown":true},{"name":"Reviewer - Ext","id":"customfield_12619","key":"com.atlassian.jira.plugin.system.customfieldtypes:userpicker","isShown":true},{"name":"Tester","id":"customfield_13311","key":"com.atlassian.jira.plugin.system.customfieldtypes:userpicker","isShown":true}],"type":"PEOPLE","title":"People"}]},"values":{"issuetype":{"name":"Type","editHtml":"\n\n\n\n <div class=\"field-group aui-field-issuetype\" >\n <label for=\"searcher-type\">Type</label> <select class=\"select js-default-checkboxmultiselect\"\n id=\"searcher-type\"\n multiple=\"multiple\"\n name=\"type\"\n data-max-inline-results-displayed=\"100\"\n data-placeholder-text=\"Find Issue Types...\">\n <optgroup>\n \n <option class=\" \"\n id=\"type_-2\"\n title=\"All Standard Issue Types\"\n value=\"-2\">All Standard Issue Types</option>\n \n <option class=\" \"\n id=\"type_-3\"\n title=\"All Sub-Task Issue Types\"\n value=\"-3\">All Sub-Task Issue Types</option>\n </optgroup>\n\n <optgroup label=\"Standard Issue Types\">\n \n <option class=\" imagebacked 13832 \"\n data-icon=\"/secure/viewavatar?size=xsmall&avatarId=12443&avatarType=issuetype\"\n data-fallback-icon=\"/images/icons/issuetypes/blank.png\"\n id=\"type_1\"\n title=\"Bug Report\"\n value=\"1\">Bug Report</option>\n \n <option class=\" imagebacked 13832 \"\n data-icon=\"/secure/viewavatar?size=xsmall&avatarId=12454&avatarType=issuetype\"\n data-fallback-icon=\"/images/icons/issuetypes/blank.png\"\n id=\"type_7\"\n title=\"Epic\"\n value=\"7\">Epic</option>\n \n <option class=\" imagebacked 13832 \"\n data-icon=\"/secure/viewavatar?size=xsmall&avatarId=12451&avatarType=issuetype\"\n data-fallback-icon=\"/images/icons/issuetypes/blank.png\"\n id=\"type_2\"\n title=\"Feature Request\"\n value=\"2\">Feature Request</option>\n \n <option class=\" imagebacked 13832 \"\n data-icon=\"/secure/viewavatar?size=xsmall&avatarId=12458&avatarType=issuetype\"\n data-fallback-icon=\"/images/icons/issuetypes/blank.png\"\n id=\"type_3\"\n title=\"Task\"\n value=\"3\">Task</option>\n </optgroup>\n\n <optgroup label=\"Sub-Task Issue Types\">\n \n <option class=\" imagebacked 13832 \"\n data-icon=\"/secure/viewavatar?size=xsmall&avatarId=12456&avatarType=issuetype\"\n data-fallback-icon=\"/images/icons/issuetypes/blank.png\"\n id=\"type_6\"\n title=\"Sub-task\"\n value=\"6\">Sub-task</option>\n </optgroup>\n </select>\n </div>\n ","validSearcher":true,"isShown":true},"component":{"name":"Component","viewHtml":" <div class=\"searcherValue\">\n \n <label class=\"fieldLabel\" for=\"fieldcomponent\">Component:</label><span id=\"fieldcomponent\" class=\"fieldValue\">\n \n webapp </span></div>\n","editHtml":"\n <div class=\"field-group aui-field-projectconstant\" >\n <label for=\"searcher-component\">Component</label> <select class=\"select js-default-checkboxmultiselectcomponent\"\n id=\"searcher-component\"\n multiple=\"multiple\"\n name=\"component\"\n data-max-inline-results-displayed=\"100\"\n aria-label=\"Search for components\">\n <optgroup label=\"\">\n <option value=\"-1\" title=\"No Component\">No Component</option>\n <option value=\"id:admin\" title=\"admin\">admin</option>\n <option value=\"id:archetypes\" title=\"archetypes\">archetypes</option>\n <option value=\"id:assert\" title=\"assert\">assert</option>\n <option value=\"id:blog.camunda.org\" title=\"blog.camunda.org\">blog.camunda.org</option>\n <option value=\"id:bpmn model api\" title=\"bpmn model api\">bpmn model api</option>\n <option value=\"id:camunda modeler\" title=\"camunda modeler\">camunda modeler</option>\n <option value=\"id:camunda modeler eclipse plugin\" title=\"camunda modeler eclipse plugin\">camunda modeler eclipse plugin</option>\n <option value=\"id:camunda.org\" title=\"camunda.org\">camunda.org</option>\n <option value=\"id:CI\" title=\"CI\">CI</option>\n <option value=\"id:cmmn model api\" title=\"cmmn model api\">cmmn model api</option>\n <option value=\"id:cockpit\" title=\"cockpit\">cockpit</option>\n <option value=\"id:commons\" title=\"commons\">commons</option>\n <option value=\"id:commons-ui\" title=\"commons-ui\">commons-ui</option>\n <option value=\"id:connect\" title=\"connect\">connect</option>\n <option value=\"id:continuous integration\" title=\"continuous integration\">continuous integration</option>\n <option value=\"id:cycle\" title=\"cycle\">cycle</option>\n <option value=\"id:dmn model api\" title=\"dmn model api\">dmn model api</option>\n <option value=\"id:dmn-engine\" title=\"dmn-engine\">dmn-engine</option>\n <option value=\"id:dmn-ui\" title=\"dmn-ui\">dmn-ui</option>\n <option value=\"id:docker\" title=\"docker\">docker</option>\n <option value=\"id:documentation\" title=\"documentation\">documentation</option>\n <option value=\"id:engine\" title=\"engine\">engine</option>\n <option value=\"id:environments\" title=\"environments\">environments</option>\n <option value=\"id:external task client java\" title=\"external task client java\">external task client java</option>\n <option value=\"id:external task client js\" title=\"external task client js\">external task client js</option>\n <option value=\"id:forum\" title=\"forum\">forum</option>\n <option value=\"id:license-book\" title=\"license-book\">license-book</option>\n <option value=\"id:network\" title=\"network\">network</option>\n <option value=\"id:online-trial\" title=\"online-trial\">online-trial</option>\n <option value=\"id:optimize\" title=\"optimize\">optimize</option>\n <option value=\"id:quarkus\" title=\"quarkus\">quarkus</option>\n <option value=\"id:renderer\" title=\"renderer\">renderer</option>\n <option value=\"id:rest-distro\" title=\"rest-distro\">rest-distro</option>\n <option value=\"id:rpa\" title=\"rpa\">rpa</option>\n <option value=\"id:run\" title=\"run\">run</option>\n <option value=\"id:scala-dmn\" title=\"scala-dmn\">scala-dmn</option>\n <option value=\"id:sdk-js\" title=\"sdk-js\">sdk-js</option>\n <option value=\"id:spin\" title=\"spin\">spin</option>\n <option value=\"id:spring-boot\" title=\"spring-boot\">spring-boot</option>\n <option value=\"id:tasklist\" title=\"tasklist\">tasklist</option>\n <option value=\"id:template-engines\" title=\"template-engines\">template-engines</option>\n <option value=\"id:user interface\" title=\"user interface\">user interface</option>\n <option selected=\"selected\" value=\"id:webapp\" title=\"webapp\">webapp</option>\n <option value=\"id:webapp-react\" title=\"webapp-react\">webapp-react</option>\n <option value=\"id:welcome\" title=\"welcome\">welcome</option>\n <option value=\"id:wildfly-swarm\" title=\"wildfly-swarm\">wildfly-swarm</option>\n </optgroup>\n </select>\n </div>\n \n","jql":"component = webapp","validSearcher":true,"isShown":true},"project":{"name":"Project","viewHtml":" <div class=\"searcherValue\">\n \n <label class=\"fieldLabel\" for=\"fieldpid\">Project:</label><span id=\"fieldpid\" class=\"fieldValue\">\n \n <a data-pid=\"10230\" data-issue-type-ids=\"\" href=\"/browse/CAM\" title=\"Browse camunda BPM project\">camunda BPM</a> </span></div>\n","editHtml":" \n <div class=\"field-group aui-field-project\" >\n <label for=\"searcher-pid\">Project</label> <select class=\"js-project-checkboxmultiselect\"\n data-placeholder-text=\"Find Projects...\"\n id=\"searcher-pid\"\n multiple=\"multiple\"\n name=\"pid\">\n <optgroup label=\"Recent Projects\">\n </optgroup>\n <optgroup label=\"All Projects\" >\n <option data-icon=\"/secure/projectavatar?pid=10230&size=small\"\n selected=\"selected\" title=\"camunda BPM\"\n value=\"10230\">\n camunda BPM (CAM)\n </option>\n \n <option data-icon=\"/secure/projectavatar?pid=10730&size=small\"\n title=\"Camunda Optimize\"\n value=\"10730\">\n Camunda Optimize (OPT)\n </option>\n </optgroup>\n </select>\n </div>\n \n\n","jql":"project = CAM","validSearcher":true,"isShown":true},"assignee":{"name":"Assignee","editHtml":"\n \n <div class=\"field-group aui-field-userlist\" >\n <label for=\"searcher-assigneeSelect\">Assignee</label> <fieldset rel=\"assignee\" class=\"hidden user-group-searcher-params\">\n </fieldset>\n <select class=\"js-usergroup-checkboxmultiselect\" multiple=\"multiple\" id=\"assignee\" name=\"assignee\" data-placeholder-text=\"Enter username or group\">\n <optgroup>\n <option class=\"headerOption\" data-icon=\"https://jira.camunda.com/secure/useravatar?size=xsmall&avatarId=10163\" value=\"empty\" title=\"Unassigned\">Unassigned</option>\n </optgroup>\n <optgroup>\n </optgroup>\n </select>\n <input type=\"hidden\" name=\"check_prev_assignee\" value=\"true\">\n </div>\n \n","validSearcher":true,"isShown":true},"status":{"name":"Status","editHtml":"\n <div class=\"field-group aui-field-constants\" >\n <label for=\"searcher-status\">Status</label> <select class=\"select js-default-checkboxmultiselectstatuslozenge\"\n data-placeholder-text=\"Find Statuses...\"\n id=\"searcher-status\"\n multiple=\"multiple\"\n name=\"status\"\n data-max-inline-results-displayed=\"100\"\n data-footer-text=\"-92 more options. Continue typing to refine further.\" data-status-lozenge=\"true\">\n <optgroup >\n <option class=\"imagebacked\" data-icon=\"/images/icons/statuses/open.png\" value=\"1\" title=\"Open\" data-simple-status=\"{"id":"1","name":"Open","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"/images/icons/statuses/open.png","statusCategory":{"id":2,"key":"new","colorName":"default"}}\">Open</option>\n <option class=\"imagebacked\" data-icon=\"/images/icons/statuses/inprogress.png\" value=\"3\" title=\"In Progress\" data-simple-status=\"{"id":"3","name":"In Progress","description":"This issue is being actively worked on at the moment by the assignee.","iconUrl":"/images/icons/statuses/inprogress.png","statusCategory":{"id":4,"key":"indeterminate","colorName":"inprogress"}}\">In Progress</option>\n <option class=\"imagebacked\" data-icon=\"/images/icons/statuses/reopened.png\" value=\"4\" title=\"Reopened\" data-simple-status=\"{"id":"4","name":"Reopened","description":"This issue was once resolved, but the resolution was deemed incorrect. From here issues are either marked assigned or resolved.","iconUrl":"/images/icons/statuses/reopened.png","statusCategory":{"id":2,"key":"new","colorName":"default"}}\">Reopened</option>\n <option class=\"imagebacked\" data-icon=\"/images/icons/statuses/resolved.png\" value=\"5\" title=\"Resolved\" data-simple-status=\"{"id":"5","name":"Resolved","description":"A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.","iconUrl":"/images/icons/statuses/resolved.png","statusCategory":{"id":3,"key":"done","colorName":"success"}}\">Resolved</option>\n <option class=\"imagebacked\" data-icon=\"/images/icons/statuses/closed.png\" value=\"6\" title=\"Closed\" data-simple-status=\"{"id":"6","name":"Closed","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"/images/icons/statuses/closed.png","statusCategory":{"id":3,"key":"done","colorName":"success"}}\">Closed</option>\n <option class=\"imagebacked\" data-icon=\"/images/icons/statuses/invisible.png\" value=\"10004\" title=\"In Test\" data-simple-status=\"{"id":"10004","name":"In Test","description":"","iconUrl":"/images/icons/statuses/invisible.png","statusCategory":{"id":4,"key":"indeterminate","colorName":"inprogress"}}\">In Test</option>\n <option class=\"imagebacked\" data-icon=\"/images/icons/statuses/generic.png\" value=\"10005\" title=\"Ready\" data-simple-status=\"{"id":"10005","name":"Ready","description":"","iconUrl":"/images/icons/statuses/generic.png","statusCategory":{"id":2,"key":"new","colorName":"default"}}\">Ready</option>\n <option class=\"imagebacked\" data-icon=\"/images/icons/statuses/generic.png\" value=\"11414\" title=\"Documentation Review\" data-simple-status=\"{"id":"11414","name":"Documentation Review","description":"","iconUrl":"/images/icons/statuses/generic.png","statusCategory":{"id":2,"key":"new","colorName":"default"}}\">Documentation Review</option>\n </optgroup>\n</select>\n </div>\n \n","validSearcher":true,"isShown":true}}}
[{"id":-1,"name":"My open issues","jql":"assignee = currentUser() AND resolution = Unresolved order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":true},{"id":-2,"name":"Reported by me","jql":"reporter = currentUser() order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":true},{"id":-4,"name":"All issues","jql":"order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-5,"name":"Open issues","jql":"resolution = Unresolved order by priority DESC,updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-9,"name":"Done issues","jql":"statusCategory = Done order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-3,"name":"Viewed recently","jql":"issuekey in issueHistory() order by lastViewed DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-6,"name":"Created recently","jql":"created >= -1w order by created DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-7,"name":"Resolved recently","jql":"resolutiondate >= -1w order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false},{"id":-8,"name":"Updated recently","jql":"updated >= -1w order by updated DESC","isSystem":true,"sharePermissions":[],"requiresLogin":false}]