<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:28:40 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-3015] ACQ Mods - Prevent update conflicts (two automated processes acting on the same record)</title>
                <link>https://folio-org.atlassian.net/browse/UXPROD-3015</link>
                <project id="10000" key="UXPROD">UX Product</project>
                    <description>&lt;p&gt;&lt;b&gt;Problem statement&lt;/b&gt;&lt;br/&gt;
 In FOLIO, most storage modules follow the &quot;last writer wins&quot; strategy for handling record updates. From the UI perspective this may lead to a situation when a stale record (older version of a give record) previously loaded into the UI may override a more recent version on the server. Hence relevant updates may get lost in the process and the user is not made aware of what has happened.&lt;/p&gt;

&lt;p&gt;This situation can happen when multiple data imports are happening at the same time (or data import and a user acting on the same record at the same time) and can affect many records at the same time. Cleanup can then be very time-consuming and confusing.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Proposed solution&lt;/b&gt;&lt;br/&gt;
 From the storage and API perspective, optimistic locking is the proposed strategy to handle conflicts. Handling of updates in FOLIO should rely on more explicit semantics, both in the storage (backend) APIs and the way it is communicated to the user through the UI.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Use cases:&lt;/b&gt; &lt;br/&gt;
 &lt;b&gt;Two automated processes acting on the same record&lt;/b&gt;.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;TBD&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;User impact&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;prevent collisions?&lt;/li&gt;
	&lt;li&gt;notify the user when they happen and offer them a choice? Something like, &quot;Sorry AgentB has already updated the record and your working copy might not be up-to-date? Would you like to:&quot; (a) Update anyway (b) Reload.&lt;/li&gt;
&lt;/ol&gt;
</description>
                <environment></environment>
        <key id="13620">UXPROD-3015</key>
            <summary>ACQ Mods - Prevent update conflicts (two automated processes acting on the same record)</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>
                            <parent id="11697">UXPROD-1814</parent>
                                    <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="10007" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/generic.png" description="Issue is better defined and ready for the development team to review and to estimate issue. Not ready for development to begin implementation. Issue may need to be further refined. The issue is currently being worked on by team (PO and/or dev). (Migrated on 4 Feb 2024 13:41 UTC)">In Refinement</status>
                    <statusCategory id="4" key="indeterminate" colorName="yellow"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="557058:2f7b6349-450b-419a-ba54-c181f51383ad">Dennis Bridges</assignee>
                                                                <reporter accountid="557058:2f7b6349-450b-419a-ba54-c181f51383ad">Dennis Bridges</reporter>
                                    <labels>
                            <label>Support</label>
                            <label>acq-dev-grooming</label>
                            <label>acq-morningglory-candidate</label>
                            <label>tech-debt</label>
                    </labels>
                <created>Fri, 26 Mar 2021 15:39:08 +0000</created>
                <updated>Wed, 6 Apr 2022 14:33:35 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>17</watches>
                                                                <comments>
                                                            <comment id="18056" author="557058:8706d157-cdce-499e-99c4-4cd5ce1200ec" created="Tue, 13 Apr 2021 17:57:15 +0000"  >&lt;p&gt;I&apos;d like to suggest a couple of things: 1) optimistic locking needs to be implemented across the board in FOLIO, so let&apos;s make sure that it is implemented similarly across the board, i.e., not one way in order data and another in users and yet another in SRS; and 2) longer-term, the issue of having separate stores for the apps and in the UIs needs to be rethought. This is not a microservices issue, as some might suggest, this is an underlying design choice that is generating a large number of issues related to OL as well as synchronization.&#160;&lt;/p&gt;</comment>
                                                            <comment id="18057" author="5af5e627525ba96b58654f12" created="Wed, 14 Apr 2021 13:01:51 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A8706d157-cdce-499e-99c4-4cd5ce1200ec&quot; class=&quot;user-hover&quot; rel=&quot;557058:8706d157-cdce-499e-99c4-4cd5ce1200ec&quot; data-account-id=&quot;557058:8706d157-cdce-499e-99c4-4cd5ce1200ec&quot; accountid=&quot;557058:8706d157-cdce-499e-99c4-4cd5ce1200ec&quot; rel=&quot;noreferrer&quot;&gt;Tom Wilson&lt;/a&gt;: &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A2f7b6349-450b-419a-ba54-c181f51383ad&quot; class=&quot;user-hover&quot; rel=&quot;557058:2f7b6349-450b-419a-ba54-c181f51383ad&quot; data-account-id=&quot;557058:2f7b6349-450b-419a-ba54-c181f51383ad&quot; accountid=&quot;557058:2f7b6349-450b-419a-ba54-c181f51383ad&quot; rel=&quot;noreferrer&quot;&gt;Dennis Bridges&lt;/a&gt; is out until next week. As far as I know, if any optimistic locking gets worked on in Juniper, at most it will be a POC for one module (most likely Inventory). But best for &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; to confirm. All of the POs for other modules have not yet created stories for this work until the POC is completed, and we have some received some recommendations on how to implement in our modules. I can confirm that this work is &lt;b&gt;definitely not&lt;/b&gt; scheduled for R2/Juniper for Acquisitions or Data Import.&lt;/p&gt;</comment>
                                                            <comment id="18058" author="63e2a2771b13d42998e4e706" created="Thu, 15 Apr 2021 13:47:32 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A8706d157-cdce-499e-99c4-4cd5ce1200ec&quot; class=&quot;user-hover&quot; rel=&quot;557058:8706d157-cdce-499e-99c4-4cd5ce1200ec&quot; data-account-id=&quot;557058:8706d157-cdce-499e-99c4-4cd5ce1200ec&quot; accountid=&quot;557058:8706d157-cdce-499e-99c4-4cd5ce1200ec&quot; rel=&quot;noreferrer&quot;&gt;Tom Wilson&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;the issue of having separate stores for the apps and in the UIs needs to be rethought.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;What do you mean by having separate stores for the apps and the UIs?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10001">
                    <name>Cloners</name>
                                            <outwardlinks description="clones">
                                        <issuelink>
            <issuekey id="11584">UXPROD-2798</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10008">
                    <name>Defines</name>
                                                                <inwardlinks description="is defined by ">
                                        <issuelink>
            <issuekey id="66457">MODINVOICE-274</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="66477">MODINVOICE-233</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="66458">MODINVOICE-297</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="10185"><![CDATA[Thunderjet]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10014" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue key="$xmlutils.escape($text)">Platform, DevOps and Release Management</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10063" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>PO Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>60.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i02icv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10071" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: 5Colleges (Full Jul 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10224"><![CDATA[R2]]></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="10213"><![CDATA[R1]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10070" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Duke (Full Sum 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10218"><![CDATA[R1]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10089" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: TAMU (MVP Jan 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10316"><![CDATA[R3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10091" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: U of AL (MVP Oct 2020)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10325"><![CDATA[R2]]></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>Tue, 13 Apr 2021 17:57:15 +0000</customfieldvalue>

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