<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 22:22:35 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>[SUP-74] Regression: Inventory Storage Batch Sync APIs upsert functionality returns 409s</title>
                <link>https://folio-org.atlassian.net/browse/SUP-74</link>
                <project id="10247" key="SUP">Support</project>
                    <description>&lt;p&gt;&lt;b&gt;Overview:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The Inventory Storage Batch Sync APIs upsert functionality is used extensively at initial data migration from legacy systems and is an important lifeline for fixing wide mistakes or corrections that needs to happen to records on a larger scale (millions of records)&lt;/p&gt;

&lt;p&gt;With the introduction of the optimistic&#160; locking functionality in Inventory, the upsert functionality of the batch APIs is no longer functioning without supplying the correct _version property of the individual objects.&lt;/p&gt;

&lt;p&gt;Since these APIs - to my knowledge - are mainly used at migration time (migration from the legacy system) in order to overlay data and correct large batches of data, this new constraint makes the upsert part of these APIs more or less useless.&#160;&lt;/p&gt;

&lt;p&gt;My proposal is that a new parameter is added, &quot;ignoreOptimisticLocking&quot; or similar, that allows you to sidestep the optimistic locking when using these APIs.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Steps to Reproduce:&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Post a batch of instances (with no _version property) to FOLIO using &lt;a href=&quot;https://s3.amazonaws.com/foliodocs/api/mod-inventory-storage/p/instance-sync.html#instance_storage_batch_synchronous_post&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;/instance-storage/batch/synchronous&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Alter something in the records.&lt;/li&gt;
	&lt;li&gt;Post the same batch (still, with no _version property)&#160; with some updated records to &lt;tt&gt;/instance-storage/batch/synchronous?upsert=true&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;b&gt;Expected Results:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The records are received by FOLIO and successfully updated&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Actual Results:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The batches fail with a HTTP 409&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Additional Information:&lt;/b&gt;&lt;br/&gt;
JSON schemas do not require the _version property.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Interested parties:&lt;/b&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="78945">SUP-74</key>
            <summary>Regression: Inventory Storage Batch Sync APIs upsert functionality returns 409s</summary>
                <type id="10001" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium">Bug</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="10001">Duplicate</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="712020:0a02d059-b8b9-48b3-8a58-727ec44d05d2">Theodor Tolstoy (One-Group.se)</reporter>
                                    <labels>
                    </labels>
                <created>Wed, 8 Jun 2022 07:51:14 +0000</created>
                <updated>Wed, 8 Jun 2022 19:27:58 +0000</updated>
                            <resolved>Wed, 8 Jun 2022 08:45:35 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                <comments>
                                                            <comment id="187789" author="712020:0a02d059-b8b9-48b3-8a58-727ec44d05d2" created="Wed, 8 Jun 2022 08:45:35 +0000"  >&lt;p&gt;Dupe of &lt;a href=&quot;https://folio-org.atlassian.net/browse/MODINVSTOR-910&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://folio-org.atlassian.net/browse/MODINVSTOR-910&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="187790" author="600c4a3b74c3e200718680d8" created="Wed, 8 Jun 2022 13:36:21 +0000"  >&lt;p&gt;Fetching the correct version via API is not a viable workaround &amp;#8211; particularly for large organizations and consortia where the number of records is well into the millions.&lt;/p&gt;

&lt;p&gt;Aside from the excessive time and operational impact on library operations, this can&apos;t help but impact performance for all users of shared systems.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10002">
                    <name>Duplicate</name>
                                            <outwardlinks description="duplicates">
                                        <issuelink>
            <issuekey id="56447">MODINVSTOR-910</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                        <customfield id="customfield_10107" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Affected Institution</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10388"><![CDATA[!!!ALL!!!]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <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_10045" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Potential Workaround</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>- Fetching the correct version from the APIs? This would slow down the process significantly&lt;br/&gt;
- Making the migration tooling maintain a record of what the version is? </customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10106" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>RCA Group</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10367"><![CDATA[TBD]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i04w1m:</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, 8 Jun 2022 13:36:21 +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>