<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:32:32 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-3503] Update Kafka Message Queues for Select Circulation Storage Record Types to Use Outbox Pattern</title>
                <link>https://folio-org.atlassian.net/browse/UXPROD-3503</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;p&gt;Initial implementation of Kafka messaging for loan, request, and check-ins was made without outbox pattern recommended in &lt;a href=&quot;https://folio-org.atlassian.net/wiki/display/DD/Eventual+consistency+for+duplicated+data&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://folio-org.atlassian.net/wiki/display/DD/Eventual+consistency+for+duplicated+data&lt;/a&gt;&#160;(and likely to be the standard approach for data sync in FOLIO). We need to circle back and update these implementations to use this pattern to enhance reliability in future releases.&lt;/p&gt;

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

&lt;ul&gt;
	&lt;li&gt;Update 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;CIRCSTORE-300&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/CIRCSTORE-300&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Add Kafka Domain Event Publishing to Loan Storage&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10309?size=medium&quot; /&gt;
            CIRCSTORE-300
        &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;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;CIRCSTORE-302&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/CIRCSTORE-302&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Add Kafka Domain Event Publishing to Request Storage&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10309?size=medium&quot; /&gt;
            CIRCSTORE-302
        &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;CIRCSTORE-303&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/CIRCSTORE-303&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Add Kafka Domain Event Publishing to Check-in Storage&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10309?size=medium&quot; /&gt;
            CIRCSTORE-303
        &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;
 implementations to use outbox pattern&lt;/li&gt;
&lt;/ul&gt;


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

&lt;ul&gt;
	&lt;li&gt;Adding additional queues to CIRCSTORE&lt;/li&gt;
&lt;/ul&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;ul&gt;
	&lt;li&gt;Migrate CIRCSTORE to Spring Way to use existing libraries available for Spring Way that can implement this pattern&lt;/li&gt;
&lt;/ul&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="13294">UXPROD-3503</key>
            <summary>Update Kafka Message Queues for Select Circulation Storage Record Types to Use Outbox Pattern</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="10001" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p2.svg">P2</priority>
                        <status id="10000" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/generic.png" description="(Migrated on 4 Feb 2024 13:41 UTC)">Draft</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="62e94faeb5b801a9afeeccc1">Tim Auger</assignee>
                                                                <reporter accountid="632e148361dbef2805be710f">Brooks Travis</reporter>
                                    <labels>
                            <label>check-in</label>
                            <label>consortia</label>
                            <label>d2ir-circulation-flow</label>
                            <label>kafka</label>
                            <label>loans</label>
                            <label>requests</label>
                            <label>resourceaccess</label>
                            <label>volaris-candidate</label>
                    </labels>
                <created>Thu, 13 Jan 2022 13:53:01 +0000</created>
                <updated>Mon, 8 May 2023 02:32:03 +0000</updated>
                                                            <fixVersion>TBD</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                <comments>
                                                            <comment id="15949" author="557058:2002428d-c11e-48c4-98e0-a5b1104bd0b6" created="Fri, 28 Jan 2022 12:08:20 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=632e148361dbef2805be710f&quot; class=&quot;user-hover&quot; rel=&quot;632e148361dbef2805be710f&quot; data-account-id=&quot;632e148361dbef2805be710f&quot; accountid=&quot;632e148361dbef2805be710f&quot; rel=&quot;noreferrer&quot;&gt;Brooks Travis&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wouldn&apos;t recommend making any serious changes (like adding new features) without re-writing the module into Spring. In its current state it&apos;s hard to extend the module because of the code comple&#1093;ity and making further changes will make it even worse. Alternatively the code can be refactored staying with Vert&apos;x / RMB frameworks, but I&apos;d suggest switching to Spring as it&apos;s more simple from dev perspective and suits better to existing business tasks.&lt;/p&gt;

&lt;p&gt;Putting an estimate &lt;b&gt;ONLY&lt;/b&gt; for outbox pattern implementation. Let me know if I should include refactoring effort also&lt;/p&gt;

&lt;p&gt;cc: &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=712020%3A6cd480e4-95eb-4431-b12a-94975974683d&quot; class=&quot;user-hover&quot; rel=&quot;712020:6cd480e4-95eb-4431-b12a-94975974683d&quot; data-account-id=&quot;712020:6cd480e4-95eb-4431-b12a-94975974683d&quot; accountid=&quot;712020:6cd480e4-95eb-4431-b12a-94975974683d&quot; rel=&quot;noreferrer&quot;&gt;Oleksandr Dmytriiev&lt;/a&gt; , &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=62a96ae7192edb006f9f1bf9&quot; class=&quot;user-hover&quot; rel=&quot;62a96ae7192edb006f9f1bf9&quot; data-account-id=&quot;62a96ae7192edb006f9f1bf9&quot; accountid=&quot;62a96ae7192edb006f9f1bf9&quot; rel=&quot;noreferrer&quot;&gt;Khalilah Gambrell&lt;/a&gt; , &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A003b2b3f-c9ac-4207-96eb-21cdb3765e26&quot; class=&quot;user-hover&quot; rel=&quot;557058:003b2b3f-c9ac-4207-96eb-21cdb3765e26&quot; data-account-id=&quot;557058:003b2b3f-c9ac-4207-96eb-21cdb3765e26&quot; accountid=&quot;557058:003b2b3f-c9ac-4207-96eb-21cdb3765e26&quot; rel=&quot;noreferrer&quot;&gt;Oleksii Petrenko&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="15950" author="62a96ae7192edb006f9f1bf9" created="Tue, 6 Sep 2022 14:31:28 +0000"  >&lt;p&gt;Hey &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=632e148361dbef2805be710f&quot; class=&quot;user-hover&quot; rel=&quot;632e148361dbef2805be710f&quot; data-account-id=&quot;632e148361dbef2805be710f&quot; accountid=&quot;632e148361dbef2805be710f&quot; rel=&quot;noreferrer&quot;&gt;Brooks Travis&lt;/a&gt;&#160; and &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=62e94faeb5b801a9afeeccc1&quot; class=&quot;user-hover&quot; rel=&quot;62e94faeb5b801a9afeeccc1&quot; data-account-id=&quot;62e94faeb5b801a9afeeccc1&quot; accountid=&quot;62e94faeb5b801a9afeeccc1&quot; rel=&quot;noreferrer&quot;&gt;Tim Auger&lt;/a&gt;, how can this be In Refinement when there are no user stories tied to it?&#160;&lt;/p&gt;</comment>
                                                            <comment id="15951" author="62e94faeb5b801a9afeeccc1" created="Fri, 5 May 2023 18:41:49 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=632e148361dbef2805be710f&quot; class=&quot;user-hover&quot; rel=&quot;632e148361dbef2805be710f&quot; data-account-id=&quot;632e148361dbef2805be710f&quot; accountid=&quot;632e148361dbef2805be710f&quot; rel=&quot;noreferrer&quot;&gt;Brooks Travis&lt;/a&gt; It is not clear to me what problem we are trying to solve. Can you help me understand? Thanks.&lt;/p&gt;</comment>
                                                            <comment id="15952" author="632e148361dbef2805be710f" created="Mon, 8 May 2023 02:32:03 +0000"  >&lt;p&gt;Failed message send. Right now, the Kafka message is published as part of the logic that writes the changes to circulation storage. If Kafka is unavailable, the message could be dropped and never received by the subscribing parties (mod-inn-reach in this case). Outbox pattern for Kafka messages was the recommendation for implementing them more widely, but there was a problem with how the RMB modules were implemented that made it basically impossible without a rewrite, so they just implemented them like inventory. This should probably be classed as tech debt.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10001">
                    <name>Cloners</name>
                                            <outwardlinks description="clones">
                                        <issuelink>
            <issuekey id="12183">UXPROD-3380</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10053" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Back End Estimate</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10124"><![CDATA[XXL < 30 days]]></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="10188"><![CDATA[Volaris]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10050" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Front End Estimate</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10094"><![CDATA[Out of scope]]></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|i03za7:</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_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>Fri, 28 Jan 2022 12:08:20 +0000</customfieldvalue>

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