<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:21:53 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-2604] SPIKE: investigate upgrade/migrate strategy for reference data</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2604</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Module tenant initialization for both first-time init and for upgrades calls the &lt;tt&gt;&amp;#95;tenant&lt;/tt&gt; interface, and tenant parameters included in the Okapi install API call are passed to the module, including &lt;tt&gt;loadSample&lt;/tt&gt; and &lt;tt&gt;loadReference&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;As currently implemented in most modules, this will cause the module to attempt to load all reference data on module upgrade (not just new data). New records will be created if needed, and existing records (matched by UUID) will be overlaid.&lt;/p&gt;

&lt;p&gt;Due to this, issues arise if the tenant has altered or deleted any of the reference data loaded by the module when it was first enabled. Any changes will of course be overwritten with the system default, and deleted records will be re-created.&lt;/p&gt;

&lt;p&gt;More subtle problems arise if the record type in question has data constraints (for example, the requirement that a particular property be unique), and the tenant has created a new record of that type which causes a conflict with incoming reference data. As currently implemented, this kind of conflict causes the module upgrade to fail, potentially leaving the tenant data in an inconsistent state.&lt;/p&gt;

&lt;p&gt;These kinds of issues would very likely also arise if an operator specified &lt;tt&gt;loadSample=true&lt;/tt&gt; in an upgrade, but that is currently untested, and seems like an unlikely use case, at least for production.&lt;/p&gt;</description>
                <environment></environment>
        <key id="81628">FOLIO-2604</key>
            <summary>SPIKE: investigate upgrade/migrate strategy for reference data</summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</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="5c706fbb47a54a6728e59df2">Wayne Schneider</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>devops-backlog</label>
                    </labels>
                <created>Mon, 18 May 2020 13:36:25 +0000</created>
                <updated>Mon, 22 Jun 2020 18:34:21 +0000</updated>
                            <resolved>Mon, 22 Jun 2020 18:34:21 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                <comments>
                                                            <comment id="198699" author="5c706fbb47a54a6728e59df2" created="Mon, 18 May 2020 13:56:13 +0000"  >&lt;p&gt;Discussion paper for SysOps SIG has been posted: &lt;a href=&quot;https://discuss.folio.org/t/reference-data-and-upgrades/2858&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://discuss.folio.org/t/reference-data-and-upgrades/2858&lt;/a&gt;. Will collect feedback from SIG and discuss at the meeting on 22 May.&lt;/p&gt;</comment>
                                                            <comment id="198702" author="5c706fbb47a54a6728e59df2" created="Wed, 27 May 2020 13:17:30 +0000"  >&lt;p&gt;Proposal on Wiki: &lt;a href=&quot;https://folio-org.atlassian.net/wiki/display/SYSOPS/Upgrades+with+Reference+data&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://folio-org.atlassian.net/wiki/display/SYSOPS/Upgrades+with+Reference+data&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="198705" author="5c706fbb47a54a6728e59df2" created="Tue, 2 Jun 2020 14:43:39 +0000"  >&lt;p&gt;Proposal will be discussed in TC on 3 June.&lt;/p&gt;</comment>
                                                            <comment id="198707" author="5c706fbb47a54a6728e59df2" created="Tue, 9 Jun 2020 14:36:05 +0000"  >&lt;p&gt;Discussion in the TC was wide-ranging, and the topic will be discussed again, to be sure. &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Ab8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; class=&quot;user-hover&quot; rel=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; data-account-id=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; accountid=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; rel=&quot;noreferrer&quot;&gt;Jakub Skoczen&lt;/a&gt; asked for a description of the basic operational issue that needs to be solved. In a nutshell:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;By using the UI or the APIs (that is, in sanctioned ways) it is possible to create user data that conflicts with incoming reference data on module upgrade&lt;/li&gt;
	&lt;li&gt;This conflict causes loading reference data to fail&lt;/li&gt;
	&lt;li&gt;This failure aborts the entire upgrade. Okapi continues to route to the original (un-upgraded) module set for the tenant.&lt;/li&gt;
	&lt;li&gt;The storage module schemas, however, may have been fully or partially upgraded, so system storage may be left in an inconsistent state. It is likely impossible to know the state of the system storage without Okapi logfile analysis and module upgrade code inspection.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="198709" author="5c706fbb47a54a6728e59df2" created="Mon, 22 Jun 2020 18:34:11 +0000"  >&lt;p&gt;Created issue 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;FOLIO-2655&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2655&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Upgrade fails on failure to update reference 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/10303?size=medium&quot; /&gt;
            FOLIO-2655
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-complete jira-macro-single-issue-export-pdf&quot;&gt;Open&lt;/span&gt;
            &lt;/span&gt;
 and put into Core: Platform backlog.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="79677">FOLIO-2655</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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="10155"><![CDATA[FOLIO DevOps]]></customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1878">DevOps: sprint 90</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 18 May 2020 13:56:13 +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>