<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:18:07 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-2088] RFC - handling of cross-module URL&apos;s</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2088</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;The Problem: throughout platform-core, ui-modules use links to detail records within other modules, hard-coding urls complete with query parameters. This creates a fragile coupling between modules, as one module can&apos;t change its own urls for sake of the other modules using them.&lt;br/&gt;
This RFC is to collect and discuss ideas for possible solutions a list thus far (updated as we go):&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;simply document the URLs of a module&apos;s workflows.&lt;/li&gt;
	&lt;li&gt;create a mapping in a module&apos;s package.json of exposed paths - and allow other ui-modules to ingest this rather than hard-code hrefs.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;----------------------- **** ---------------------------&lt;br/&gt;
UPDATE: July 19, 2019&lt;br/&gt;
So the abstraction idea seems to be liked by folks...&lt;br/&gt;
I&apos;m thinking of an addition to the stripes object in the shape of:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
stripes: {
  actions: {
    paths : {
      &lt;span class=&quot;code-quote&quot;&gt;&apos;user-view&apos;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&apos;/users/view/:userid&apos;&lt;/span&gt;,
      &lt;span class=&quot;code-quote&quot;&gt;&apos;user-edit&apos;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&apos;/users/view?layer=edit&amp;amp;id=:userid&apos;&lt;/span&gt;,
      &lt;span class=&quot;code-quote&quot;&gt;&apos;user-create&apos;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&apos;/users/view?layer=create&apos;&lt;/span&gt;,
      &lt;span class=&quot;code-quote&quot;&gt;&apos;loan-view&apos;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&apos;/users/:userid/loans/:loanid&apos;&lt;/span&gt;
      &lt;span class=&quot;code-quote&quot;&gt;&apos;fine-create&apos;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&apos;/users/:userid/feesfines/create&apos;&lt;/span&gt;
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Contrived example. This shape is up for discussion. The keys for paths could be broken out separate objects per-recordType... but this shape lends to simple string lookup rather than some kind of lodash-ish &lt;tt&gt;get&lt;/tt&gt; style lookup.&lt;br/&gt;
The resulting API might look like:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; { getActionURL, getActionList } from @folio/stripes/core;

/* getActionURL() would &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; a url string with the values of the 2nd parameter appropriately
* slotted in. If &lt;span class=&quot;code-quote&quot;&gt;&apos;user-edit&apos;&lt;/span&gt; is unregistered, or &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; string-substitution isn&apos;t completed (configuration not 
* filled out) the function returns &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt; and the consuming module can 
* figure out what it needs to &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; with that...
*/

userEditURL = getActionURL(&lt;span class=&quot;code-quote&quot;&gt;&apos;user-edit&apos;&lt;/span&gt;, { id: someIdVar });

/* getActionList - Utility function, gets a read-only set of the registered action paths in the
* system and their configuration objects... so a developer can check which cross-module actions are 
* available within a platform and what keys are needed &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; their configuration.
*/
getActionList(); &lt;span class=&quot;code-comment&quot;&gt;// =&amp;gt; [ { name: &lt;span class=&quot;code-quote&quot;&gt;&apos;users-edit&apos;&lt;/span&gt;, configurationKeys:&lt;span class=&quot;code-quote&quot;&gt;&apos;id, ...&apos;&lt;/span&gt; }, ...]&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I imagine all configurationKeys would be required.&lt;/p&gt;</description>
                <environment></environment>
        <key id="79605">FOLIO-2088</key>
            <summary>RFC - handling of cross-module URL&apos;s</summary>
                <type id="10002" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium">New Feature</type>
                                            <priority id="10005" iconUrl="https://dev.folio.org/assets/jira-priority/tbd.svg">TBD</priority>
                        <status id="1" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="5cd595118fa24d0dd2de1253">John Coburn</reporter>
                                    <labels>
                            <label>RFC</label>
                    </labels>
                <created>Fri, 7 Jun 2019 21:02:48 +0000</created>
                <updated>Wed, 3 Jun 2020 16:39:54 +0000</updated>
                                                                                <due></due>
                            <votes>2</votes>
                                    <watches>9</watches>
                                                                <comments>
                                                            <comment id="189330" author="557058:09292aa8-9d37-482b-b244-17349bbbf497" created="Mon, 10 Jun 2019 12:48:52 +0000"  >&lt;p&gt;My thoughts - we need a separate E2E testing tool. like &lt;a href=&quot;https://www.cypress.io/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://www.cypress.io/&lt;/a&gt; or &lt;a href=&quot;https://www.protractortest.org/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://www.protractortest.org/&lt;/a&gt;, so we can write meaningful acceptance tests with cross-module navigation. And tests will fail in case of module changed it&apos;s url. I don&apos;t think BigTest supports such testing, but if it does - we can do it within BigTest. &lt;/p&gt;</comment>
                                                            <comment id="189334" author="70121:8c13ab26-e77a-4b3a-aecc-1142bc1f02b2" created="Tue, 11 Jun 2019 13:31:09 +0000"  >&lt;p&gt;I think we should probably decide whether we want to solve the issue of module replacement with this as well. &lt;/p&gt;

&lt;p&gt;Eg, I manage the Licenses app, which has the ability to link a user to a license. A user&apos;s name is hyperlinked to their record in the Users app. If a tenant doesn&apos;t use &lt;tt&gt;ui-users&lt;/tt&gt; but instead uses &lt;tt&gt;myorg-folio-users&lt;/tt&gt;, how does the Licenses app know that? Where should it get the paths? If we didn&apos;t already need the concept of record types for 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;STSMACOM-214&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/STSMACOM-214&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;RFC: Think through re-usable card components for specific kinds of data&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            STSMACOM-214
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
 do we absolutely need them now?&lt;/p&gt;</comment>
                                                            <comment id="189336" author="5cd595118fa24d0dd2de1253" created="Tue, 11 Jun 2019 20:08:18 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A09292aa8-9d37-482b-b244-17349bbbf497&quot; class=&quot;user-hover&quot; rel=&quot;557058:09292aa8-9d37-482b-b244-17349bbbf497&quot; data-account-id=&quot;557058:09292aa8-9d37-482b-b244-17349bbbf497&quot; accountid=&quot;557058:09292aa8-9d37-482b-b244-17349bbbf497&quot; rel=&quot;noreferrer&quot;&gt;Aliaksei Chumakou&lt;/a&gt; I believe the issue that you mention could be resolved if we had testing that occurred at the platform level atop the isolated module level. Modules themselves cannot take for granted the existence of any other ui-modules in the system. The platform, however, knows which apps it is including, and could be expected to test that sort of cross-functionality. The details of that sort of setup are a little outside of the scope of this discussion, but if there were a centralized way of pulling the recordTypes/URL&apos;s exposed by existing UI modules, those could actually be stubbed out in BigTest at the module level and the &apos;presence&apos; of those links tested in isolation of the module.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=70121%3A8c13ab26-e77a-4b3a-aecc-1142bc1f02b2&quot; class=&quot;user-hover&quot; rel=&quot;70121:8c13ab26-e77a-4b3a-aecc-1142bc1f02b2&quot; data-account-id=&quot;70121:8c13ab26-e77a-4b3a-aecc-1142bc1f02b2&quot; accountid=&quot;70121:8c13ab26-e77a-4b3a-aecc-1142bc1f02b2&quot; rel=&quot;noreferrer&quot;&gt;md331&lt;/a&gt; I feel like inter-operational matters are best handled at the platform level - and the closest we have to that is stripes-core - so beseeching stripes-core (or some other centralized thing) is the way the paths would be gotten. 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;STSMACOM-214&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/STSMACOM-214&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;RFC: Think through re-usable card components for specific kinds of data&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            STSMACOM-214
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
 seems like it has more of a data-dependency than a UI/URL dependency. given the appropriate endpoint to fetch, a module could just render the data however its requirements state it ought to. Despite that, I still lobbed the centralized recordType registry into the ring... I think you&apos;d still need it to keep from hard-coding URL&apos;s to UI&apos;s on the front-end...&lt;/p&gt;</comment>
                                                            <comment id="189338" author="5bffed52a1b46046f530c8f7" created="Wed, 12 Jun 2019 09:21:04 +0000"  >&lt;blockquote&gt;
&lt;p&gt;I manage the Licenses app, which has the ability to link a user to a license. A user&apos;s name is hyperlinked to their record in the Users app. If a tenant doesn&apos;t use ui-users but instead uses myorg-folio-users, how does the Licenses app know that? Where should it get the paths?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The Licenses app neither knows nor cares whether the tenant has deployed vanilla ui-users or ui-mikes-awesome-users. The responsibility is on ui-mikes-awesome-users to provide the same URL endpoints as ui-users: that&apos;s what it means to be a drop-in replacement for ui-users.&lt;/p&gt;

&lt;p&gt;Does that mean my users module has to use &lt;em&gt;all&lt;/em&gt; the same paths as ui-users? I suppose not: there are (at least notionally) a documented set of paths that constitute the API of the users module &#8212; or, more precisely, of the &quot;users app&quot; interface, which ui-users happens to be one implementation of.&lt;/p&gt;

&lt;p&gt;So when ui-licences links to &lt;tt&gt;/users/view/123&lt;/tt&gt; that doesn&apos;t mean &quot;make ui-users show user 123&quot;, it means &quot;show user 123 by means of whatever users module we happen to have&quot;.&lt;/p&gt;</comment>
                                                            <comment id="189341" author="70121:8c13ab26-e77a-4b3a-aecc-1142bc1f02b2" created="Wed, 12 Jun 2019 11:33:20 +0000"  >&lt;p&gt;That&apos;s what I would expect, &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5bffed52a1b46046f530c8f7&quot; class=&quot;user-hover&quot; rel=&quot;5bffed52a1b46046f530c8f7&quot; data-account-id=&quot;5bffed52a1b46046f530c8f7&quot; accountid=&quot;5bffed52a1b46046f530c8f7&quot; rel=&quot;noreferrer&quot;&gt;Mike Taylor&lt;/a&gt;. My question is really how do we achieve that? It seems like this is another issue that requires a record-type-keyed registry.&lt;/p&gt;

&lt;p&gt;So my hope is that if we do it right, we can do it once and tackle both the card/association and URL problems at the same time.&lt;/p&gt;</comment>
                                                            <comment id="189342" author="5bffed52a1b46046f530c8f7" created="Wed, 12 Jun 2019 12:27:05 +0000"  >&lt;p&gt;I&apos;m not sure they&apos;re the same problem.&lt;/p&gt;

&lt;p&gt;With our computer-scientist hats on, we could go off and design a machine-readable UI constraint language for describing the incoming-URL contracts that UI modules implement &#8212; or, come to think of it, couldn&apos;t we just use RAML?&lt;/p&gt;

&lt;p&gt;But maybe in practice, it suffices to add a few lines in the ui-users &lt;tt&gt;README.md&lt;/tt&gt; saying &quot;This UI modules responds to the following URIs: (insert list). Any drop-in replacement must do likewise.&quot;&lt;/p&gt;

&lt;p&gt;To me, that feels like a very different thing from the kind of solution we want for the cards.&lt;/p&gt;</comment>
                                                            <comment id="189344" author="70121:8c13ab26-e77a-4b3a-aecc-1142bc1f02b2" created="Wed, 12 Jun 2019 13:06:54 +0000"  >&lt;blockquote&gt;&lt;p&gt;But maybe in practice, it suffices to add a few lines in the ui-users README.md saying &quot;This UI modules responds to the following URIs: (insert list). Any drop-in replacement must do likewise.&quot;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I mentally discarded this solution because I&apos;m really not a fan &lt;img class=&quot;emoticon&quot; src=&quot;/images/icons/emoticons/tongue.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; &lt;/p&gt;

&lt;p&gt;I mean, it doesn&apos;t even solve the issue outlined in this issue&apos;s description since it&apos;s &quot;a fragile coupling between modules, as one module can&apos;t change its own urls for sake of the other modules using them.&quot;&lt;/p&gt;</comment>
                                                            <comment id="189345" author="5bffed52a1b46046f530c8f7" created="Wed, 12 Jun 2019 13:18:09 +0000"  >&lt;p&gt;No, &lt;em&gt;of course&lt;/em&gt; one module can&apos;t change its own URLs. Neither can any module of any kind change its contract once it&apos;s committed to it. That&apos;s what &quot;contract&quot; &lt;em&gt;means&lt;/em&gt;.&lt;/p&gt;</comment>
                                                            <comment id="189346" author="70121:8c13ab26-e77a-4b3a-aecc-1142bc1f02b2" created="Wed, 12 Jun 2019 13:27:49 +0000"  >&lt;p&gt;If we create an API then it can...&lt;/p&gt;</comment>
                                                            <comment id="189347" author="5bffed52a1b46046f530c8f7" created="Wed, 12 Jun 2019 13:40:35 +0000"  >&lt;p&gt;Why create another API when there is one already?&lt;/p&gt;</comment>
                                                            <comment id="189349" author="5cd595118fa24d0dd2de1253" created="Wed, 12 Jun 2019 14:54:36 +0000"  >&lt;p&gt;An API I picture for a non-users module that wants to link to a users module would go something like this...&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; { getSharedURL } from `@folio/stripes/core`;

&lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; url = getSharedURL(&lt;span class=&quot;code-quote&quot;&gt;&apos;user.detail&apos;&lt;/span&gt;, { id: userIdVar });
{ url &amp;amp;&amp;amp; &amp;lt;Link to={url} /&amp;gt;

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Where ui-users (or whichever appropriate user-handling module) has appropriately indicated&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
stripes: {
  types: {
    user: {
      paths: {
        detail: &lt;span class=&quot;code-quote&quot;&gt;&apos;/users/view/:id&apos;&lt;/span&gt;
      }
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This puts the API at the stripes level, not directly coupling modules and makes room for graceful fallback that&apos;s up to the consuming module. All a ui-module has to do, if it does update its URL paths, is update those shared paths in its package.json - so it doesn&apos;t have to worry about updating its documentation or bumping its major version, or whispering to other module maintainers to &quot;please update the url&apos;s you&apos;ve used for me.&quot;&lt;br/&gt;
There&apos;s possibly room in this API for &lt;tt&gt;getSharedComponent()&lt;/tt&gt; as well...&lt;/p&gt;</comment>
                                                            <comment id="189351" author="5bffed52a1b46046f530c8f7" created="Wed, 12 Jun 2019 14:58:00 +0000"  >&lt;p&gt;&lt;tt&gt;&#175;&amp;#95;(&#12484;)_/&#175;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;I&apos;ve got no objection to what John proposes. I just don&apos;t see what it gets us. Sometimes, and extra layer of indirection is just another place for things to go wrong and another bit of code that needs documenting, testing and maintaining.&lt;/p&gt;

&lt;p&gt;Still, if you want to build this, I won&apos;t argue against it.&lt;/p&gt;</comment>
                                                            <comment id="189353" author="5d1cd1e35e43080ce8bf881f" created="Thu, 13 Jun 2019 17:30:36 +0000"  >&lt;p&gt;Either way we have interfaces that replacement modules need to implement.&lt;/p&gt;

&lt;p&gt;The current (poorly documented) interface is the set of public URLs that we want to be reliably linkable (eg. it doesn&apos;t have to be the whole URL scheme). So a candidate to replace users has to have &lt;tt&gt;view/:id&lt;/tt&gt;, &lt;tt&gt;edit/:id&lt;/tt&gt;, etc. (note that we&apos;d want these relative to the app&apos;s route)&lt;/p&gt;

&lt;p&gt;And what you propose is to add another layer such that modules are free to form their own routes and the interface becomes they must map a route to &lt;tt&gt;user.view&lt;/tt&gt;, one to &lt;tt&gt;user.edit&lt;/tt&gt; etc.&lt;/p&gt;

&lt;p&gt;I understand presently we&apos;re changing URLs around because we&apos;re moving from heavily overlay based stuff, which was kinda fiddly with a bit too much resting in the query string, but do we actually anticipate whatever URL scheme we settle on to be that onerous as an interface or change very often afterwards?&lt;/p&gt;

&lt;p&gt;Long term, I do get that it&apos;s probably not great to dictate (some of) the routes must be the same for all modules you might choose to mount at /whatever, but I suspect it&apos;s not urgent and that we might be better off designing this mapping alongside the breadcrumbs/app sections stuff that somewhat relates to it.&lt;/p&gt;</comment>
                                                            <comment id="189355" author="5cd595118fa24d0dd2de1253" created="Thu, 13 Jun 2019 21:26:28 +0000"  >&lt;p&gt;Conventionally, it&apos;s difficult to dictate an entire pathname - and I would even feel weird about expecting a module/recordType to have a certain shape of URL...&lt;br/&gt;
ui-users is home to at least three recordTypes... not sure how to best express the convention here beyond that which comes from the relationship of the data - and these would only be valid until, say, Loans and Accounts decides to become its own module...&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
users/view/:id
users/:id/loans/view/:loanid
users/:id/accounts/view/:accountid
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Similar issue with the overlay-based query-string.&lt;/p&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="10677">UXPROD-961</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="11709">UXPROD-1991</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="61957">STCOR-410</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="61315">STRIPES-646</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="61958">STCOR-411</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="27433">STSMACOM-214</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10007">
                    <name>Requires</name>
                                                                <inwardlinks description="is required by">
                                        <issuelink>
            <issuekey id="29449">UX-275</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10183"><![CDATA[Stripes Force]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzzt1j:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 10 Jun 2019 12:48:52 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                </customfields>
    </item>
</channel>
</rss>