Enable issue and custom field population in issue creation for external users

Description

Add the ability to include custom fields in the issue creation screen for external share users.
This feature should allow users to view and modify custom fields when creating issues.


Accepted criteria

  • Custom fields should be visible and editable for external share users in the issue creation screen.
  • We should read what fields are required on create screen and allow external user to edit them

Fields

Only found as “single” (non array type):

Type system custom notes
any  
com.pyxis.greenhopper.jira:gh-lexo-rank
com.atlassian.jpo:jpo-custom-field-parent
com.atlassian.jira.ext.charting:timeinstatus
com.atlassian.jconnect.jconnect-plugin:location
com.pyxis.greenhopper.jira:gh-epic-link
... more ...

No need to support it right now.
Maybe once will will integrate with some plugins.
comments-page comment  
date duedate
com.atlassian.jira.plugin.system.customfieldtypes:datepicker
com.atlassian.jpo:jpo-custom-field-baseline-start
com.atlassian.jpo:jpo-custom-field-baseline-end
datetime statuscategorychangedate, resolutiondate, lastViewed, created, updated
com.atlassian.jira.plugin.system.customfieldtypes:datetime
com.atlassian.servicedesk:sd-request-feedback-date
com.atlassian.jira.ext.charting:firstresponsedate
read-only-date-issue-field
... more ...
issuerestriction issuerestriction   ❌ no need to support it
number timespent, timeoriginalestimate, aggregatetimespent, aggregatetimeestimate, workratio, timeestimate, aggregatetimeoriginalestimate
jira.polaris:formula
jira.polaris:boolean
com.atlassian.jira.plugins.proforma-managed-fields:forms-locked-field-cftype
com.atlassian.jira.plugins.proforma-managed-fields:forms-total-field-cftype
... more ...
object  
... some auto-generated trash ...
option-with-child  
com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect
priority priority  
progress aggregateprogress, progress  
project project
com.atlassian.jira.plugin.system.customfieldtypes:project
resolution resolution  
sd-approvals  
com.atlassian.servicedesk.approvals-plugin:sd-approvals
sd-customerrequesttype  
com.atlassian.servicedesk:vp-origin
sd-feedback  
com.atlassian.servicedesk:sd-request-feedback
sd-request-lang  
com.atlassian.servicedesk.servicedesk-lingo-integration-plugin:sd-request-language
sd-servicelevelagreement  
com.atlassian.servicedesk:sd-sla-field
securitylevel security   ❌ no need to support it
status status  
team  
com.atlassian.jira.plugin.system.customfieldtypes:atlassian-team
timetracking timetracking  
votes votes  
watches watches  

Only as array:

Type system custom notes
issuelinks subtasks, issuelinks  
attachment attachment  
worklog worklog  
json  
com.pyxis.greenhopper.jira:gh-sprint
❓ Needs research
sd-customerorganization  
com.atlassian.servicedesk:sd-customer-organizations
component component  
service-entity-field  
com.atlassian.jira.plugins.service-entity:service-entity-field-cftype
cmdb-object-field  
com.atlassian.jira.plugins.cmdb:cmdb-object-cftype
❓ Needs research
sd-asset  
com.atlassian.servicedesk.assets-plugin:assetfield
❓ Needs research

Mixed, found as single and as array:

Type system custom notes
option  
com.atlassian.jira.plugin.system.customfieldtypes:select
com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes
com.atlassian.jira.plugin.system.customfieldtypes:jwm-category
com.pyxis.greenhopper.jira:gh-epic-status
com.atlassian.jira.plugin.system.customfieldtypes:multiselect
com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons
user creator, assignee, reporter
com.atlassian.jira.plugin.system.customfieldtypes:people
com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker
com.atlassian.servicedesk:sd-request-participants
com.atlassian.jira.plugin.system.customfieldtypes:userpicker
com.atlassian.jira.toolkit:participants
... more ...
string labels, description, summary, environment
jira.polaris:interval
com.atlassian.jira.plugin.system.customfieldtypes:textarea
read-only-string-issue-field
com.atlassian.jira.plugin.system.customfieldtypes:textfield
com.atlassian.jira.plugin.system.customfieldtype
... more ...
✅ This requires research. How to know if this is rich text and which one is simple string? Only by ‘custom’ field?

For rich text we need to use custom WYSIWYG editor.

Labels - simple comma separated string.|

version fixVersions, versions
com.atlassian.jira.plugin.system.customfieldtypes:version
com.atlassian.jira.plugin.system.customfieldtypes:multiversion
group  
com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker
com.atlassian.jira.plugin.system.customfieldtypes:grouppicker
option2  
com.atlassian.plugins.atlassian-connect-plugin:com.gebsun.plugins.jira.issuechecklist__issue-checklist-templates
com.atlassian.plugins.atlassian-connect-plugin:eu.softwareplant.bigpicture__mode
com.atlassian.plugins.atlassian-connect-plugin:eu.softwareplant.bigpicture__risk-probability
com.atlassian.plugins.atlassian-connect-plugin:eu.softwareplant.bigpicture__risk-consequence
com.atlassian.plugins.atlassian-connect-plugin:io.tempo.jira__team
... more ...
❓ Requires research

Child issues

Issue Type Icon ESFJ-1224 Issue Creation (Parent) - Create subtask from share issue Priority: Lowest
Backlog
Issue Type Icon ESFJ-1225 Issue Creation (Parent) - pick parent on share board/jql/roadmap Priority: Lowest
Backlog

Linked issues

relates to
Issue Type Icon ESFJ-1206 Implement support for issue transition screens Priority: Medium
In Progress

Activity

Automation for Jira 6 December 2024, 09:43

Hello @Mykhailo Iereshchenko,

Please merge code to dev branch.
This is the best moment to add more information that can be helpful to prepare release notes.

  • Can you prepare short overview of change that can be used in release notes?

  • Please provide short GIF that showcase feature.

  • If GIF make no sense, can you provide image that highlights feature that can be used in release notes (cropped & annotated)?

Polina Naumenko 6 December 2024, 09:42

Improvement implemented - QA env

image-20241206-094130.png
Polina Naumenko 3 December 2024, 14:35

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

[00000000e8c06b60] 2024-12-03T15:33:14.892+01:00 ERROR 833110 --- [XNIO-1 task-11] o.a.j.s.config.CustomExceptionHandler    : Error in request: ServletWebRequest: uri=/issue/99123450-361d-4676-81f8-c6f2f988872f/create;client=79.184.249.241
 
  
ovh.atlasinc.connect.jira.Jira$JiraException: POST https://np1.atlassian.net/rest/api/3/issue failed with HTTP status code 400
    at ovh.atlasinc.connect.jira.Jira$HttpErrorHandler.apply(Jira.java:1556)
    at ovh.atlasinc.connect.jira.Jira$HttpErrorHandler.apply(Jira.java:1541)
    at ovh.atlasinc.guarana.http.HttpClient.checkHttpStatus(HttpClient.java:387)
    at ovh.atlasinc.guarana.http.HttpClient.exchange(HttpClient.java:372)
    at ovh.atlasinc.guarana.http.HttpClient.exchange(HttpClient.java:354)
    at ovh.atlasinc.guarana.http.HttpClient.post(HttpClient.java:151)
    at ovh.atlasinc.connect.jira.Jira.createIssue(Jira.java:135)
    at ovh.atlasinc.jira.share.share.external.SharePageController.createIssue(SharePageController.java:287)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:547)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at org.springframework.web.filter.ForwardedHeaderFilter.doFilterInternal(ForwardedHeaderFilter.java:153)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132)
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Polina Naumenko 26 November 2024, 14:13
  • service management project - components

image-20241126-140755.png
Polina Naumenko 15 November 2024, 13:21

1

2

3

{
    "message": "{customfield_10061=Specify a valid 'id' or 'name' for Category} (Error code: 0000000008fa6c46)"
}

Project: work management

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

 {
    "id": "customfield_10061",
    "key": "customfield_10061",
    "name": "Category",
    "untranslatedName": "Category",
    "custom": true,
    "orderable": true,
    "navigable": true,
    "searchable": true,
    "clauseNames": [
      "Category[Category]",
      "cf[10061]"
    ],
    "schema": {
      "type": "option",
      "custom": "com.atlassian.jira.plugin.system.customfieldtypes:jwm-category",
      "customId": 10061
    }
Polina Naumenko 15 November 2024, 13:11

Request type: No request type by default

image-20241115-130830.png
Polina Naumenko 15 November 2024, 13:03

1

2

3

{
"message": "{customfield_10052=Specify a valid 'id' or 'name' for Pending reason, customfield_10053=Operation value must be an array of group objects, customfield_10050=Specify a valid 'id' or 'name' for Urgency} (Error code: 000000006f226aa3)"
}
image-20241115-125213.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

  {
    "id": "customfield_10052",
    "key": "customfield_10052",
    "name": "Pending reason",
    "untranslatedName": "Pending reason",
    "custom": true,
    "orderable": true,
    "navigable": true,
    "searchable": true,
    "clauseNames": [
      "cf[10052]",
      "Pending reason",
      "Pending reason[Dropdown]"
    ],
    "schema": {
      "type": "option",
      "custom": "com.atlassian.jira.plugin.system.customfieldtypes:select",
      "customId": 10052
    }

image-20241115-130320.png
Polina Naumenko 6 November 2024, 09:51

@Mykhailo Iereshchenko when a ticket is being created in Jira

  • priority is Medium by default

image-20241106-095112.png

The field is empty in ES:

image-20241106-095043.png

Unable to open a new created share

image-20241106-095225.png
  • long name does not fix in a frame

image-20241106-095639.png
  • should an external user be able to create a new label like in Jira?

Currently he can only select from a list of created ones

image-20241106-095748.png
  • not sure what is with ‘Your new issue was created but could not be opened’, i tried to find a sequence of steps to reproduce it but every time it’s random to me, most of the time it happens when i fill out all fields

image-20241106-100913.png
Mykhailo Iereshchenko 5 November 2024, 16:17

We also do not support following types: request-language, affected services, team, user

Polina Naumenko 31 October 2024, 15:19

@Mykhailo Iereshchenko

image-20241031-145203.png
image-20241031-145444.png
image-20241031-145501.png
image-20241031-145514.png

Missing Reporter, Assignee, Team

Mykhailo Iereshchenko 31 October 2024, 11:02

@Polina Naumenko color issue is fixed

Polina Naumenko 29 October 2024, 15:26
  • Components, Fix versions, labels are not in dark mode

image-20241029-152111.png
  • Create button in Create issue window doesn’t work @Mykhailo Iereshchenko

Polina Naumenko 29 October 2024, 13:01

@Mykhailo Iereshchenko

  • create button is not displayed in the preview and a share

The button also does not function

image-20241029-125957.png
Automation for Jira 18 October 2024, 08:54

Hello @Mykhailo Iereshchenko

This is the best moment to add more information that can be helpful for tester.

  • What areas are affected?

  • What are potential edge cases?

  • Was it checked for XSS problems?

  • Does change affect security, is new data exposed?

Please attach - Before / After screenshot if possible.

Automation for Jira 24 September 2024, 06:06

Hello [~accountid:],
Task is ready for review.

@Mykhailo Iereshchenko please make sure reviewer
have easy access to contend to be reviewed.

If this is code change. Please make sure PR is created.
If this is new documentation, blogpost, etc. Please provide link to page.