<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:29:55 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>[UXPROD-3172] Migrate file storage for Agreements and Licenses from database to file store</title>
                <link>https://folio-org.atlassian.net/browse/UXPROD-3172</link>
                <project id="10000" key="UXPROD">UX Product</project>
                    <description>&lt;p&gt;&lt;b&gt;Current situation or problem&lt;/b&gt;:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;When you add a document to an Agreement or License you have the option to upload a file
	&lt;ul&gt;
		&lt;li&gt;This file is stored in the database as a large object&lt;/li&gt;
		&lt;li&gt;PostgreSQL can decide to store this in a different schema&lt;/li&gt;
		&lt;li&gt;This makes replication/migration of a database schema for (e.g.) agreements complicated because you have to also migrate the large storage schema&lt;/li&gt;
		&lt;li&gt;In a multi-tenant situation this means it becomes very challenging to separate out the tenants&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;In scope&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Substitute in a file storage mechanism based S3 compatible protocols instead of the use of the database to store files&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Out of scope&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Implementation of other file storage mechanisms (e.g. box.com)&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Use case(s)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Proposed solution/stories&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Links to additional info&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Questions&lt;/b&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="12134">UXPROD-3172</key>
            <summary>Migrate file storage for Agreements and Licenses from database to file store</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="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10003">Done</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="557058:f42d9c43-226d-4aa3-bb31-9b2dd07920aa">Owen Stephens</reporter>
                                    <labels>
                            <label>erm</label>
                    </labels>
                <created>Fri, 9 Jul 2021 09:21:58 +0000</created>
                <updated>Thu, 3 Mar 2022 15:28:48 +0000</updated>
                            <resolved>Thu, 3 Mar 2022 15:28:48 +0000</resolved>
                                                    <fixVersion>Lotus (R1 2022)</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                <comments>
                                                            <comment id="17381" author="557058:28cce430-5ccd-47e7-88fe-1b26c20ee795" created="Wed, 15 Sep 2021 15:54:58 +0000"  >&lt;p&gt;Edit: the following has been split out to 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;ERM-1938&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/ERM-1938&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Abstract and subclass existing toolkit FileObject (for Agreements)&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            ERM-1938
        &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;
 and 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;ERM-1943&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/ERM-1943&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Abstract and subclass existing toolkit FileObject (for Licenses)&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            ERM-1943
        &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;
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Discussed with &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5bfd62c75f77da6929583d6c&quot; class=&quot;user-hover&quot; rel=&quot;5bfd62c75f77da6929583d6c&quot; data-account-id=&quot;5bfd62c75f77da6929583d6c&quot; accountid=&quot;5bfd62c75f77da6929583d6c&quot; rel=&quot;noreferrer&quot;&gt;steve.osguthorpe&lt;/a&gt; - definitely think the way to go is to make abstract and then subclass the existing com.k_int.web.toolkit.files.FileObject into LOBFileObject and S3FileObject each with the same signature and a different implementation.&#160; Migration should add the default discriminator to the revised table structure to turn all FileObjects into LOBFileObjects. upgrade script can then work through all LOBFileObjects converting them to S3FileObjects. This will likely take time to complete at upgrade. Since licenses don&apos;t have jobs (currently) it may be better manually triggered. Existing LOB attachments should continue to work until all files are migrated.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10008">
                    <name>Defines</name>
                                                                <inwardlinks description="is defined by ">
                                        <issuelink>
            <issuekey id="42740">ERM-1929</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="42836">ERM-1938</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="42841">ERM-1943</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="42361">ERM-1779</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="10141"><![CDATA[Bienenvolk]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10063" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>PO Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i0325b:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10069" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Cornell (Full Sum 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10216"><![CDATA[R4]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10074" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: GBV (MVP Sum 2020)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10238"><![CDATA[R1]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10046" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Release</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10052"><![CDATA[Lotus R1 2022]]></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>Wed, 15 Sep 2021 15:54:58 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>