Attaching files to Jira issues from Confluence / offline user issue

Paul Ward September 11, 2018

One of my team used the IFFT Confiforms macro and the Create Jira action to create issues in Jira but found that if a user who was not logged into confluence (a valid use case for us) that the action failed with permissions issues (even though the 'anonymous' checkbox is set):

 

  • Unexpected error while saving the record. Please contact your Confluence support team for assistance (com.atlassian.sal.api.net.ResponseException: Error communicating with JIRA, Bad Request {"errorMessages":[],"errors":{"summary":"Field 'summary' cannot be set. It is not on the appropriate screen, or unknown.","description":"Field 'description' cannot be set. It is not on the appropriate screen, or unknown."}} Used JSON: '{ "fields": { "project": { "key": "IDMSC" }, "issuetype": { "name": "Story" }, "summary": "dd", "description": "*Services Required*\n\n\nComments: dd\n\n||PIMS Solutions||\n|PIMS Store Creation| |\n|PIMS Adhoc Solutions| |\n|PIMS Integration into Retail ID| |\n|Other Integration Activities| |\n\n\n||Project Details||\n|Project Name| dd|\n|IR Number| |\n|Name of Endorsing Director||\n|Project Manager||\n|Business Sponsor||\n|Target Implementation Date| 2018-09-12|\n\n\n||Funding||\n|Integral Plus Network Activity Code| dd|\n|Integral Plus Network Activity Id| dd|\n\n\n||Applicant Details||\n|Employee Number| |\n|Surname| |\n|First Name| dd|\n|Email||\n|Org Structure| |\n|Position Title| |"} }' Request to url = 'https://jira.ae.sda.corp.telstra.com/rest/api/latest/issue/').

They worked around this by using isntead the IFFT Webservice action which hits a proxy server (which has a robot user account which is logged in).

 

I need to add atachments. I have this working with the Create Jira IFFT action however for the above reason it can't be used.

 

Is there a way to get around this "not logged in" error with the Jira action?

 

If not how do I add an attachment using the WebSrvice action instead?

 

 

1 answer

1 accepted

1 vote
Answer accepted
Alex Medved _ConfiForms_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 12, 2018

Yes, you can

Here is the complete storage format for the solution

What id does:

  • creates Jira issue
  • stores it's key back to ConfiForms record
  • sends attachment to created Jira issue
  • creates remote link
<ac:structured-macro ac:macro-id="634f4a34-b8ba-464d-b222-e123d65cc4e0" ac:name="confiform" ac:schema-version="1">
  <ac:parameter ac:name="formName">ji</ac:parameter>
  <ac:parameter ac:name="showOnlyOwnRecords">true</ac:parameter>
  <ac:parameter ac:name="registrationFormTitle">Create JIRA issue with ConfiForms Webservice connection</ac:parameter>
  <ac:rich-text-body>
    <ac:structured-macro ac:macro-id="dd25632e-211e-4820-8754-836d4ade9236" ac:name="confiform-entry-register" ac:schema-version="1">
      <ac:parameter ac:name="overrideSaveButtonLabel">Create</ac:parameter>
      <ac:parameter ac:name="registrationButtonLabel">Register me</ac:parameter>
      <ac:parameter ac:name="embedded">true</ac:parameter>
      <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
      <ac:rich-text-body>
        <p>
          <br/>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <p>
      <ac:structured-macro ac:macro-id="8a572845-1d28-4560-a4d8-f8102317e419" ac:name="confiform-field-definition" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">summary</ac:parameter>
        <ac:parameter ac:name="fieldLabel">Summary</ac:parameter>
        <ac:parameter ac:name="type">text</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <ac:structured-macro ac:macro-id="2e5a8660-272b-43f6-801d-a3131c3665c5" ac:name="confiform-field-definition" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">desc1</ac:parameter>
        <ac:parameter ac:name="fieldLabel">Description</ac:parameter>
        <ac:parameter ac:name="type">text</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <ac:structured-macro ac:macro-id="7d641f3b-1fd7-4e47-a63e-a2b040782730" ac:name="confiform-field-definition" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">desc2</ac:parameter>
        <ac:parameter ac:name="fieldLabel">More details:</ac:parameter>
        <ac:parameter ac:name="type">textarea</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <ac:structured-macro ac:macro-id="7c8f347e-7704-441f-92f2-990cac31a7d5" ac:name="confiform-field-definition" ac:schema-version="1">
        <ac:parameter ac:name="css">width:100px;</ac:parameter>
        <ac:parameter ac:name="fieldName">jk</ac:parameter>
        <ac:parameter ac:name="fieldLabel">Jira key</ac:parameter>
        <ac:parameter ac:name="type">read_only</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <ac:structured-macro ac:macro-id="a06f0ccf-0e36-4d07-b47d-cb38a345c0fe" ac:name="confiform-field-definition-rules" ac:schema-version="1">
        <ac:parameter ac:name="condition">id:[empty]</ac:parameter>
        <ac:parameter ac:name="fieldName">jk</ac:parameter>
        <ac:parameter ac:name="action">Hide field</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <ac:structured-macro ac:macro-id="1b02c04d-3480-4397-9ddb-9b0e556b4351" ac:name="confiform-field-definition" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">fi</ac:parameter>
        <ac:parameter ac:name="fieldLabel">fi</ac:parameter>
        <ac:parameter ac:name="type">file</ac:parameter>
      </ac:structured-macro>
    </p>
    <ac:structured-macro ac:macro-id="53fe3481-065d-41c4-be5d-a7a1268b0450" ac:name="confiform-ifttt" ac:schema-version="1">
      <ac:parameter ac:name="action">WebService Request</ac:parameter>
      <ac:parameter ac:name="extras">4bb4c41a51f289a07507d50a1b841a4d</ac:parameter>
      <ac:parameter ac:name="event">onCreated</ac:parameter>
      <ac:parameter ac:name="title">/rest/api/2/issue/</ac:parameter>
      <ac:parameter ac:name="extras2">X-Atlassian-Token: no-check;Content-Type: application/json;Content-Type:charset=UTF-8</ac:parameter>
      <ac:parameter ac:name="who">POST</ac:parameter>
      <ac:rich-text-body>
        <ac:structured-macro ac:macro-id="46d25e82-d4db-4e38-9b96-f5c6159c473f" ac:name="noformat" ac:schema-version="1">
          <ac:plain-text-body><![CDATA[{
    "fields": {
       "project":
       { 
          "key": "JTEST"
       },
       "summary": "[entry.summary.escapeJSON]",
       "assignee":{"name":"admin"},
       "description": "[entry.desc1.escapeJSON] \n [entry.desc2.escapeJSON]",
       "issuetype": {
          "name": "Bug"
       }
   }
}]]></ac:plain-text-body>
        </ac:structured-macro>
      </ac:rich-text-body>
    </ac:structured-macro>
    <p>
      <br/>
    </p>
    <p>
      <br/>
    </p>
    <ac:structured-macro ac:macro-id="f00edb26-9174-4f7a-9570-d598e92dce10" ac:name="confiform-ifttt" ac:schema-version="1">
      <ac:parameter ac:name="extras4">true</ac:parameter>
      <ac:parameter ac:name="action">Create ConfiForms Entry</ac:parameter>
      <ac:parameter ac:name="event">onCreated</ac:parameter>
      <ac:parameter ac:name="title">entryId=[entry.id]&amp;jk=${iftttResult_0}</ac:parameter>
      <ac:rich-text-body>
        <p>
          <br/>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <ac:structured-macro ac:macro-id="fe3beac3-95ef-49ae-b42c-e3168a2f57b7" ac:name="confiform-ifttt" ac:schema-version="1">
      <ac:parameter ac:name="action">WebService Request</ac:parameter>
      <ac:parameter ac:name="extras">4bb4c41a51f289a07507d50a1b841a4d</ac:parameter>
      <ac:parameter ac:name="event">onCreated</ac:parameter>
      <ac:parameter ac:name="title">/rest/api/latest/issue/[entry.jk.asJSON.key]/attachments</ac:parameter>
      <ac:parameter ac:name="additionalContext">file</ac:parameter>
      <ac:parameter ac:name="extras2">X-Atlassian-Token: no-check;</ac:parameter>
      <ac:parameter ac:name="who">POST</ac:parameter>
      <ac:rich-text-body>
        <p>
          <ac:structured-macro ac:macro-id="1271c70c-7c2b-4ed2-b009-d2e731ec4a8b" ac:name="confiform-field" ac:schema-version="1">
            <ac:parameter ac:name="fieldName">fi</ac:parameter>
          </ac:structured-macro>
        </p>
        <p>
          <br/>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <ac:structured-macro ac:macro-id="d4d6ee84-0f33-4713-b0c4-04baad175345" ac:name="confiform-ifttt" ac:schema-version="1">
      <ac:parameter ac:name="action">WebService Request</ac:parameter>
      <ac:parameter ac:name="extras">4bb4c41a51f289a07507d50a1b841a4d</ac:parameter>
      <ac:parameter ac:name="event">onCreated</ac:parameter>
      <ac:parameter ac:name="title">/rest/api/latest/issue/[entry.jk.asJSON.key]/remotelink</ac:parameter>
      <ac:parameter ac:name="additionalContext">file</ac:parameter>
      <ac:parameter ac:name="extras2">X-Atlassian-Token: no-check;</ac:parameter>
      <ac:parameter ac:name="who">POST</ac:parameter>
      <ac:rich-text-body>
        <ac:structured-macro ac:macro-id="56a89f71-7d60-496a-ab45-2d6f6db4bd34" ac:name="noformat" ac:schema-version="1">
          <ac:plain-text-body><![CDATA[{ 
    "object": { 
        "url":"https://wiki.vertuna.com/pages/viewpage.action?pageId=19104427", 
        "title":"[entry._page.title.escapeJSON]"
    } 
}]]></ac:plain-text-body>
        </ac:structured-macro>
      </ac:rich-text-body>
    </ac:structured-macro>
  </ac:rich-text-body>
</ac:structured-macro>
<ac:structured-macro ac:macro-id="d309c641-56ef-46cb-b01f-19590d41605e" ac:name="confiform-table" ac:schema-version="1">
  <ac:parameter ac:name="formName">ji</ac:parameter>
  <ac:rich-text-body>
    <p>
      <ac:structured-macro ac:macro-id="bb4766d6-cbfe-40c6-ace4-f3dcd21dcc99" ac:name="confiform-field" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">jk.asJSON.key</ac:parameter>
      </ac:structured-macro>
    </p>
    <p>
      <ac:structured-macro ac:macro-id="18b7e9fe-30c3-4a04-886e-6a47446af441" ac:name="confiform-field" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">created</ac:parameter>
      </ac:structured-macro>
    </p>
  </ac:rich-text-body>
</ac:structured-macro>
Paul Ward September 12, 2018

Thanks for that!

 

I had some local help and ended up with a solution that sends the file to Jira rather than linking to that attachment in Confluence. What I have now works fine but I may consider moving to this to save having two copies of the file (currently we ignore the form data, we only use confi as  front end to capture the details we save in Jira)

 

<p>Add attachments (Note: requires proxy robot account n106475 to have attachment privs in Jira project)</p>
<ac:structured-macro ac:macro-id="fec47931-c68e-4dfa-a18b-263f6302c2b8" ac:name="confiform-ifttt" ac:schema-version="1">
  <ac:parameter ac:name="condition">!SupportingDocumentation:[empty]</ac:parameter>
  <ac:parameter ac:name="silent">true</ac:parameter>
  <ac:parameter ac:name="action">WebService Request</ac:parameter>
  <ac:parameter ac:name="extras">aaf9ed605d0193362321ba0def15c9b7</ac:parameter>
  <ac:parameter ac:name="event">onCreated</ac:parameter>
  <ac:parameter ac:name="title">/rest/api/latest/issue/[entry.jiraEngagementNumber]/attachments</ac:parameter>
  <ac:parameter ac:name="additionalContext">file</ac:parameter>
  <ac:parameter ac:name="extras2">X-Atlassian-Token: no-check;</ac:parameter>
  <ac:parameter ac:name="who">POST</ac:parameter>
<ac:rich-text-body>
   <p>
      <ac:structured-macro ac:macro-id="d0236fc2-5d9f-4ca3-b77a-beea297496c1" ac:name="confiform-field" ac:schema-version="1">
        <ac:parameter ac:name="fieldName">SupportingDocumentation</ac:parameter>
      </ac:structured-macro> </p>
  </ac:rich-text-body>
</ac:structured-macro>

 

Suggest an answer

Log in or Sign up to answer