Creating Jira issues using OSLC services

The factory to create Jira issues using OSLC vocabulary is declared on the Service Provider representing the Jira project.

Identify the URL of the creation factory

To determine the URL of the OSLC creation factory:

  1. Request the Service Provider of the Jira project of interest.
  2. Identify the <oslc:Service> XML element whose <oslc:domain> is http://open-services.net/ns/cm# for Change Management or http://open-services.net/ns/qm# for Quality Management.
  3. Identify the nested <oslc:CreationFactory> XML element whose <oslc:resourceType> is the required one.
    Domain Resource Type Resource Type URL
    Change Management Change Request http://open-services.net/ns/cm#ChangeRequest
    Quality Management Test Case http://open-services.net/ns/qm#TestCase
    Test Plan http://open-services.net/ns/qm#TestPlan
    Test Execution Record http://open-services.net/ns/qm#TestExecutionRecord
    Test Result http://open-services.net/ns/qm#TestResult
    Test Script http://open-services.net/ns/qm#TestScript
  4. Optionally, identify the nested <oslc:resourceShape> XML element that defines the URL for fetching the resource type and knowing what properties are editable.
  5. Identify the nested <oslc:creation> XML element that defines the URL for the creation factory.
<rdf:RDF 
  ...
  <oslc:ServiceProvider rdf:about="https://SERVER:PORT/rest/oslc/1.0/cm/project/PROJECT-ID">
    <oslc:service>
      <oslc:Service>
        <oslc:domain rdf:resource="http://open-services.net/ns/cm#"/>
        <oslc:creationFactory>
          <oslc:CreationFactory>
            <oslc:resourceType rdf:resource="http://open-services.net/ns/cm#ChangeRequest"/>
            <oslc:resourceShape rdf:resource="https://SERVER:PORT/rest/oslc/1.0/cm/resourceShape/PROJECT-ID/ChangeRequest"/>
            <oslc:creation rdf:resource="https://SERVER:PORT/rest/oslc/1.0/cm/PROJECT-ID/ChangeRequest"/>
          </oslc:CreationFactory>
        </oslc:creationFactory>
        ...
      </oslc:Service>
    </oslc:service>
  </rdf:Description>
</rdf:RDF>
<rdf:RDF 
  ...
  <oslc:ServiceProvider rdf:about="https://SERVER:PORT/rest/oslc/1.0/qm/project/PROJECT-ID">
    ...
    <oslc:service>
      <oslc:Service>
        <oslc:domain rdf:resource="http://open-services.net/ns/qm#"/>
        <oslc:creationFactory>
          <oslc:CreationFactory>
            <oslc:resourceType rdf:resource="http://open-services.net/ns/qm#TestCase"/>
            <oslc:resourceShape rdf:resource="https://SERVER:PORT/rest/oslc/1.0/qm/resourceShape/PROJECT-ID/TestCase"/>
            <oslc:creation rdf:resource="https://SERVER:PORT/rest/oslc/1.0/qm/PROJECT-ID/TestCase"/>
          </oslc:CreationFactory>
        </oslc:creationFactory>
        ...
      </oslc:Service>
    </oslc:service>
  </rdf:Description>
</rdf:RDF>

Execute the creation factory

<rdf:RDF
  ...
  <rdf:Description>
    <rdf:type rdf:resource="http://open-services.net/ns/cm#ChangeRequest"/>
    <dcterms:type rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Task</dcterms:type>
    <dcterms:title rdf:parseType="Literal">My Task issue created through the creation factory</dcterms:title>
  </rdf:Description>
</rdf:RDF>
<rdf:RDF
  ...
  <rdf:Description>
    <rdf:type rdf:resource="http://open-services.net/ns/qm#TestCase"/>
    <dcterms:type rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Test</dcterms:type>
    <dcterms:title rdf:parseType="Literal">My Test issue created through the creation factory</dcterms:title>
  </rdf:Description>
</rdf:RDF>

Important considerations to have in mind:

Here is a response sample for one of the requests above:

<rdf:RDF
  ...
  <rdf:Description rdf:about="https://SERVER:PORT/rest/oslc/1.0/cm/issue/ISSUE-KEY">
    <dcterms:creator rdf:resource="https://SERVER:PORT/rest/oslc/1.0/cm/user/PROJECT_ID"/>
    <oslc_cm:inprogress rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:inprogress>
    <dcterms:type>Task</dcterms:type>
    <dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2025-07-01T16:58:05.596Z</dcterms:modified>
    <dcterms:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2025-07-01T16:58:05.596Z</dcterms:created>
    <process:projectArea rdf:resource="https://SERVER:PORT/rest/oslc/1.0/process/project-area/PROJECT_ID"/>
    <acc:accessContext rdf:resource="https://SERVER:PORT/rest/oslc/1.0/acclist#10000"/>
    <oslc:instanceShape rdf:resource="https://SERVER:PORT/rest/oslc/1.0/cm/resourceShape/PROJECT_ID/issue"/>
    <oslc_cm:status>To Do</oslc_cm:status>
    <oslc_cm:closed rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:closed>
    <oslc:shortId>ISSUE-KEY</oslc:shortId>
    <rdf:type rdf:resource="http://open-services.net/ns/cm#ChangeRequest"/>
    <dcterms:title rdf:parseType="Literal">My issue created through the creation factory</dcterms:title>
    <oslc:serviceProvider rdf:resource="https://SERVER:PORT/rest/oslc/1.0/cm/project/PROJECT_ID"/>
    <dcterms:identifier>ISSUE-KEY</dcterms:identifier>
    <oslc_cm:approved rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:approved>
    <oslc:shortTitle rdf:parseType="Literal">ISSUE-KEY</oslc:shortTitle>
    <oslc_cm:fixed rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:fixed>
    <jira:reporter rdf:resource="https://SERVER:PORT/rest/oslc/1.0/cm/user/PROJECT_ID"/>
  </rdf:Description>
</rdf:RDF>