<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:26:26 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>[UICR-142] [Frontend development] Implement: prevent conflict once detected. Enable &quot;failOnConflict&quot; </title>
                <link>https://folio-org.atlassian.net/browse/UICR-142</link>
                <project id="10180" key="UICR">ui-courses</project>
                    <description>&lt;h2&gt;&lt;a name=&quot;Requirement&quot;&gt;&lt;/a&gt;Requirement&lt;/h2&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;#3 &lt;span class=&quot;error&quot;&gt;&amp;#91;Frontend development&amp;#93;&lt;/span&gt; Implement: prevent conflict once detected. Enable &quot;failOnConflict&quot;&lt;/li&gt;
	&lt;li&gt;Teams follows documentation available:  &lt;a href=&quot;https://github.com/folio-org/raml-module-builder#optimistic-locking&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/raml-module-builder#optimistic-locking&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Dependency version updates required?&lt;/li&gt;
	&lt;li&gt;Implement the following UX messaging:
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;Conflict detection indication  (success)&lt;/li&gt;
		&lt;li&gt;Conflict detection indication (error)&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;&lt;a name=&quot;Acceptancecriteria&quot;&gt;&lt;/a&gt;Acceptance criteria &lt;/h3&gt;
&lt;p&gt;Given I click Save on a record &lt;br/&gt;
When an indicator displays that another person is editing the same record &lt;br/&gt;
Then ???&lt;/p&gt;

&lt;p&gt;Given I take an action on a record &lt;br/&gt;
When an indicator displays that another person is editing the same record &lt;br/&gt;
Then ???&lt;/p&gt;

&lt;p&gt;Given I take an action on a record &lt;br/&gt;
When an indicator displays that a system is editing the same record &lt;br/&gt;
Then ???&lt;/p&gt;

&lt;p&gt;Given a system is updating a record &lt;br/&gt;
When another system is updating  the same record &lt;br/&gt;
Then ???&lt;/p&gt;

&lt;p&gt;Given an automated process is updating a record &lt;br/&gt;
When another automated system is updating the same record &lt;br/&gt;
Then &lt;/p&gt;

&lt;p&gt;Given I take an action on a record OR edit a record&lt;br/&gt;
When an Optimistic locking error occurs &lt;br/&gt;
Then ???&lt;/p&gt;




&lt;h2&gt;&lt;a name=&quot;Definitionofdone&quot;&gt;&lt;/a&gt;Definition of done&lt;/h2&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Implement E2E tests&lt;/li&gt;
	&lt;li&gt;Verify that  key use cases are addressed&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;NOTE: POs should review below scenarios and edit based on workflows.&amp;#93;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&lt;a name=&quot;Potentialmultipleusersareeditingthesamerecordatthesametimescenariosfortesting&quot;&gt;&lt;/a&gt;Potential multiple users are editing the same record at the same time scenarios for testing &lt;/h3&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;User A Action &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;User B Action &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;User C Action&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;One of these Users hits Save outcome&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Edits a field on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Deletes a field on same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Edits a field on same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Edits a field on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Take a non-delete action on same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;N/A&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Edits a field on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Moves a record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Edits a field on record 1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Edits a field on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Deletes a same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;N/A&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Edits a field on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Takes an action on same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;N/A&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Edits a field on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Takes an action on a dependent field on same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;N/A&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Takes an action on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Takes an action on same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;N/A&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;h3&gt;&lt;a name=&quot;Potentialscenariosfor1userandsystemtryingtoactonthesamerecord%2Ceitherindividualrecordsorbatch&quot;&gt;&lt;/a&gt;Potential scenarios for 1 user and system trying to act on the same record, either individual records or batch&lt;/h3&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;User A Action &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;System B Action &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;System C Action&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;First User/System to Save Outcome&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Edits a field on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Edits same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Edits same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Edits a field on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Takes an action on same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; N/A&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Takes an action on record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Edits same record&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; N/A&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;





</description>
                <environment></environment>
        <key id="73194">UICR-142</key>
            <summary>[Frontend development] Implement: prevent conflict once detected. Enable &quot;failOnConflict&quot; </summary>
                <type id="10005" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10309?size=medium">Story</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="10001">Duplicate</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="5c48911b54e1e6466b11f38c">Erin Nettifee</reporter>
                                    <labels>
                            <label>clone_user_story</label>
                            <label>courses</label>
                            <label>optimistic_locking</label>
                    </labels>
                <created>Thu, 17 Jun 2021 12:13:50 +0000</created>
                <updated>Wed, 7 Jul 2021 15:08:53 +0000</updated>
                            <resolved>Wed, 7 Jul 2021 15:07:59 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                        <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="10168"><![CDATA[None]]></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|i02zkf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </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>