<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:28:12 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-3447] user metadata fields are absent for reference and sample data</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-3447</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;&lt;b&gt;Overview:&lt;/b&gt; The fields &lt;tt&gt;metadata.createdByUserId&lt;/tt&gt; and &lt;tt&gt;metadata.updatedByUserId&lt;/tt&gt; are not present for reference data or sample data values (e.g. /coursereserves/coursetypes, /groups, /acquisistions-units/units, /instance-formats, etc).&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;Howtoreproduce%3A&quot;&gt;&lt;/a&gt;How to reproduce:&lt;/h2&gt;

&lt;p&gt;Invoke POST /_/tenant with neither X-Okapi-User-Id nor X-Okapi-Token header.&lt;/p&gt;

&lt;p&gt;This is the code that fills the metadata property:&#160;&lt;a href=&quot;https://github.com/folio-org/raml-module-builder/blob/v33.2.7/domain-models-runtime/src/main/java/org/folio/rest/tools/utils/MetadataUtil.java#L33-L55&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/raml-module-builder/blob/v33.2.7/domain-models-runtime/src/main/java/org/folio/rest/tools/utils/MetadataUtil.java#L33-L55&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It creates a metadata property like this:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-quote&quot;&gt;&quot;metadata&quot;&lt;/span&gt;: {
  &lt;span class=&quot;code-quote&quot;&gt;&quot;createdDate&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;2022-03-15T10:34:03.966&quot;&lt;/span&gt;,
  &lt;span class=&quot;code-quote&quot;&gt;&quot;updatedDate&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;2022-03-15T10:34:03.966+00:00&quot;&lt;/span&gt;
} &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h2&gt;&lt;a name=&quot;Howtofix%3A&quot;&gt;&lt;/a&gt;How to fix:&lt;/h2&gt;

&lt;p&gt;Invoke POST /_/tenant with X-Okapi-User-Id header, for example &quot;X-Okapi-User-Id: 715d1d4b-0709-4e71-9066-761ce19674b9&quot;, or with a valid token with a user id.&lt;/p&gt;


&lt;p&gt;Then MetadataUtil creates a metadata property like this:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-quote&quot;&gt;&quot;metadata&quot;&lt;/span&gt;: {
  &lt;span class=&quot;code-quote&quot;&gt;&quot;createdDate&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;2022-03-15T10:34:03.966&quot;&lt;/span&gt;,
  &lt;span class=&quot;code-quote&quot;&gt;&quot;updatedDate&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;2022-03-15T10:34:03.966+00:00&quot;&lt;/span&gt;,
  &lt;span class=&quot;code-quote&quot;&gt;&quot;createdByUserId&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;715d1d4b-0709-4e71-9066-761ce19674b9&quot;&lt;/span&gt;,
  &lt;span class=&quot;code-quote&quot;&gt;&quot;updatedByUserId&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;715d1d4b-0709-4e71-9066-761ce19674b9&quot;&lt;/span&gt;
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This works for all examples listed above (tested against master branch on March 15, 2022):&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;/coursereserves/coursetypes (mod-courses)&lt;/li&gt;
	&lt;li&gt;/groups (mod-users)&lt;/li&gt;
	&lt;li&gt;/acquisistions-units/units (mod-orders-storage)&lt;/li&gt;
	&lt;li&gt;/instance-formats (mod-inventory-storage)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Note that mod-users might not be enabled for the tenant at that time.&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;Background%3A&quot;&gt;&lt;/a&gt;Background:&lt;/h2&gt;

&lt;p&gt;I don&apos;t remember it working this way before, but this also reproduces in folio-juniper and folio-kiwi, which suggests it &lt;em&gt;did&lt;/em&gt; work this way before and I just didn&apos;t notice. It also reproduces on bugfest (
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;BF-244&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/BF-244&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Redeploy MDEXP on Lotus Bugfest&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            BF-244
        &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;
), an environment that is built very differently (data are migrated from previous FOLIO releases, rather than reference and sample data being installed fresh).&lt;/p&gt;

&lt;p&gt;In any case, there is an expectation among librarians viewing the UI that reference data will have these metadata fields populated, but they aren&apos;t and Prokopvych (the module owners) don&apos;t understand why. Maybe it&apos;s a problem with how the module stores these values or sends them to Okapi (a problem for the module owners) or maybe RMB has changed its expectations (a problem for the RMB owners) or maybe the system&apos;s assumptions about these data during setup and migration are incorrect (a problem for ref-env and bugfest devops teams).&lt;/p&gt;</description>
                <environment></environment>
        <key id="82260">FOLIO-3447</key>
            <summary>user metadata fields are absent for reference and sample data</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="10001" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p2.svg">P2</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="10000">Won&apos;t Do</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="615afd1cd9820f0070a09ef0">Zak Burke</reporter>
                                    <labels>
                    </labels>
                <created>Mon, 14 Mar 2022 16:40:08 +0000</created>
                <updated>Wed, 30 Mar 2022 14:53:26 +0000</updated>
                            <resolved>Thu, 24 Mar 2022 19:39:27 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                <comments>
                                                            <comment id="197410" author="63e2a2771b13d42998e4e706" created="Tue, 15 Mar 2022 10:09:25 +0000"  >&lt;p&gt;&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; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5f9abc1eb45b2e007453f423&quot; class=&quot;user-hover&quot; rel=&quot;5f9abc1eb45b2e007453f423&quot; data-account-id=&quot;5f9abc1eb45b2e007453f423&quot; accountid=&quot;5f9abc1eb45b2e007453f423&quot; rel=&quot;noreferrer&quot;&gt;John Malconian&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5f8314dfbdef80006f6f572d&quot; class=&quot;user-hover&quot; rel=&quot;5f8314dfbdef80006f6f572d&quot; data-account-id=&quot;5f8314dfbdef80006f6f572d&quot; accountid=&quot;5f8314dfbdef80006f6f572d&quot; rel=&quot;noreferrer&quot;&gt;Adam Dickmeiss&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5ee89462f7aa140abd82d11d&quot; class=&quot;user-hover&quot; rel=&quot;5ee89462f7aa140abd82d11d&quot; data-account-id=&quot;5ee89462f7aa140abd82d11d&quot; accountid=&quot;5ee89462f7aa140abd82d11d&quot; rel=&quot;noreferrer&quot;&gt;Julian Ladisch&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5c706fbb47a54a6728e59df2&quot; class=&quot;user-hover&quot; rel=&quot;5c706fbb47a54a6728e59df2&quot; data-account-id=&quot;5c706fbb47a54a6728e59df2&quot; accountid=&quot;5c706fbb47a54a6728e59df2&quot; rel=&quot;noreferrer&quot;&gt;Wayne Schneider&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is my understanding that these properties are populated automatically by RMB when the incoming request for them contains specific headers (either {{X-Okapi-User-Id or parsing the token maybe).&lt;/p&gt;

&lt;p&gt;That suggests to me that the request made by the Okapi to the Tenant API for each module has to receive those headers. And thus, the request to Okapi to trigger that (likely the install endpoint) would too.&lt;/p&gt;

&lt;p&gt;How wrong is my understanding of how the creation of reference / sample records works?&lt;/p&gt;

&lt;p&gt;If it&apos;s not far off, do the reference environments provide those headers when installing the modules for the &lt;tt&gt;diku&lt;/tt&gt; tenant?&lt;/p&gt;</comment>
                                                            <comment id="197412" author="5c706fbb47a54a6728e59df2" created="Tue, 15 Mar 2022 11:03:09 +0000"  >&lt;p&gt;Reference/sample data is loaded by the module when the &lt;tt&gt;_\tenant&lt;/tt&gt; API is called with the &lt;tt&gt;loadReference=true&lt;/tt&gt; and/or &lt;tt&gt;loadSample=true&lt;/tt&gt; parameters. In the reference environments, this is trigger by a POST request to the &lt;tt&gt;/&amp;#95;/proxy/tenants/diku/install&lt;/tt&gt; endpoint with the list of modules to be enabled. The call to that API for is made in the context of the supertenant tenant (that is, with no &lt;tt&gt;x-okapi-tenant&lt;/tt&gt; header) and without an &lt;tt&gt;x-okapi-token&lt;/tt&gt; or &lt;tt&gt;x-okapi-user-id&lt;/tt&gt;. From what I understand, the RMB modules call their own API when they load reference/sample data; I don&apos;t know the mechanics of those calls (i.e. if they are proxied through Okapi or indeed if they are using the network APIs at all).&lt;/p&gt;</comment>
                                                            <comment id="197415" author="5ee89462f7aa140abd82d11d" created="Tue, 15 Mar 2022 11:23:00 +0000"  >&lt;p&gt;When invoking POST /_/tenant for mod-users one need to know the user id of a user to put into metadata in advance because that user doesn&apos;t exist yet.&lt;/p&gt;</comment>
                                                            <comment id="197418" author="5ee89462f7aa140abd82d11d" created="Tue, 15 Mar 2022 11:28:17 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=615afd1cd9820f0070a09ef0&quot; class=&quot;user-hover&quot; rel=&quot;615afd1cd9820f0070a09ef0&quot; data-account-id=&quot;615afd1cd9820f0070a09ef0&quot; accountid=&quot;615afd1cd9820f0070a09ef0&quot; rel=&quot;noreferrer&quot;&gt;Zak Burke&lt;/a&gt; Which user id should be put into &lt;tt&gt;metadata.createdByUserId&lt;/tt&gt; when creating the /groups sample data? There doesn&apos;t exist any user at that time.&lt;/p&gt;</comment>
                                                            <comment id="197421" author="63e2a2771b13d42998e4e706" created="Tue, 15 Mar 2022 12:05:40 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5c706fbb47a54a6728e59df2&quot; class=&quot;user-hover&quot; rel=&quot;5c706fbb47a54a6728e59df2&quot; data-account-id=&quot;5c706fbb47a54a6728e59df2&quot; accountid=&quot;5c706fbb47a54a6728e59df2&quot; rel=&quot;noreferrer&quot;&gt;Wayne Schneider&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The call to that API for is made in the context of the supertenant tenant (that is, with no x-okapi-tenant header) and without an x-okapi-token or x-okapi-user-id. From what I understand, the RMB modules call their own API when they load reference/sample data; I don&apos;t know the mechanics of those calls (i.e. if they are proxied through Okapi or indeed if they are using the network APIs at all).&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Does that mean that both Okapi&apos;s install endpoint and thus the Tenant APIs in the modules are running outside of the context of a user, meaning that there cannot be a user associated with the creation of reference or sample data?&lt;/p&gt;</comment>
                                                            <comment id="197424" author="5ee89462f7aa140abd82d11d" created="Tue, 15 Mar 2022 12:53:09 +0000"  >&lt;p&gt;Yes, the Okapi APIs don&apos;t take a user id or a token:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;POST /_/proxy/tenants/{tenant_id}/modules&lt;/li&gt;
	&lt;li&gt;POST /_/proxy/tenants/{tenant_id}/install&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href=&quot;https://s3.amazonaws.com/foliodocs/api/okapi/r/okapi.html&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://s3.amazonaws.com/foliodocs/api/okapi/r/okapi.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We might change Okapi so that these APIs take a user id or token and pass it to the /_/tenant API of the module. Then the metadata will be populated as requested.&lt;/p&gt;</comment>
                                                            <comment id="197426" author="63e2a2771b13d42998e4e706" created="Tue, 15 Mar 2022 14:38:28 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5ee89462f7aa140abd82d11d&quot; class=&quot;user-hover&quot; rel=&quot;5ee89462f7aa140abd82d11d&quot; data-account-id=&quot;5ee89462f7aa140abd82d11d&quot; accountid=&quot;5ee89462f7aa140abd82d11d&quot; rel=&quot;noreferrer&quot;&gt;Julian Ladisch&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Yes, the Okapi APIs don&apos;t take a user id or a token:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;POST /_/proxy/tenants/
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: {tenant_id}&lt;/span&gt; &lt;p&gt;/modules&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;POST /_/proxy/tenants/&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;/install&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oh, so no environment that uses the install endpoint will ever create reference or sample data (assuming RMB&apos;s implementation) will have a created / updated by on initial creation?&lt;/p&gt;

&lt;p&gt;Have I interpreted that correctly?&lt;/p&gt;</comment>
                                                            <comment id="197429" author="615afd1cd9820f0070a09ef0" created="Thu, 24 Mar 2022 19:39:27 +0000"  >&lt;p&gt;This is a limitation of the system. These values are installed via Okapi&apos;s &lt;tt&gt;.../install&lt;/tt&gt;&#160;endpoint, which does not take a token or user-id. IOW, the problem is not &quot;we&apos;re not correctly providing the user-id to an endpoint that accepts one&quot;, the problem is &quot;the endpoint does not accept a user-id&quot;, and that is (at least for now) by design.&lt;/p&gt;</comment>
                                                            <comment id="197432" author="63e2a2771b13d42998e4e706" created="Tue, 29 Mar 2022 09:24:52 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=615afd1cd9820f0070a09ef0&quot; class=&quot;user-hover&quot; rel=&quot;615afd1cd9820f0070a09ef0&quot; data-account-id=&quot;615afd1cd9820f0070a09ef0&quot; accountid=&quot;615afd1cd9820f0070a09ef0&quot; rel=&quot;noreferrer&quot;&gt;Zak Burke&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What does won&apos;t do mean in the context of this issue? That we have decided not to change / remove this limitation of the system or something else?&lt;/p&gt;</comment>
                                                            <comment id="197435" author="615afd1cd9820f0070a09ef0" created="Wed, 30 Mar 2022 13:10:06 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;,&#160;I closed this prior to seeing your most recent comments on 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;BF-224&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/BF-224&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Loan Type Created by [User] not populated&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;
            BF-224
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-complete jira-macro-single-issue-export-pdf&quot;&gt;Draft&lt;/span&gt;
            &lt;/span&gt;
, and prior to a recent conversation with &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5cffed1a5d548b0c51d6b19b&quot; class=&quot;user-hover&quot; rel=&quot;5cffed1a5d548b0c51d6b19b&quot; data-account-id=&quot;5cffed1a5d548b0c51d6b19b&quot; accountid=&quot;5cffed1a5d548b0c51d6b19b&quot; rel=&quot;noreferrer&quot;&gt;Anton Emelianov&lt;/a&gt;&#160;where he described how automated testing could be affected by this missing data. At the time I filed this, I expected it to be a problem like &quot;We forgot to include the user&apos;s ID in a POST request&quot; with a simple solution (include the ID). At the time I closed this it had become clear (based on comments from Wayne and Julian) that the solution was not simply &quot;not simple&quot; but in fact fundamentally impossible given the nature of how these data are installed.&#160;&lt;/p&gt;

&lt;p&gt;In short, I filed it thinking it would be an easy fix for a minor glitch and closed it on learning it would require fundamental changes to the system.&#160;&lt;/p&gt;

&lt;p&gt;Part of me wonders though: in the UI, we use a&#160;&lt;a href=&quot;https://github.com/folio-org/stripes-smart-components/tree/7e97f68894253f7e4abb225295b2ae75b70d38bb/lib/ViewMetaData&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;shared component to display object metadata&lt;/a&gt;&#160;(created-at, created-by) that accepts a &quot;systemId&quot; prop to label changes made by automated processes. Could we leverage similar logic here and sidestep this whole thing? e.g. if &lt;tt&gt;createdBy&lt;/tt&gt;&#160;is empty, the UI shows &quot;System&quot; or &quot;Root&quot; or &quot;Admin&quot; or whatever. That won&apos;t benefit API users, but maybe it would allow us to sidestep this thorny issue in a useful way.&#160;&lt;/p&gt;</comment>
                                                            <comment id="197440" author="63e2a2771b13d42998e4e706" created="Wed, 30 Mar 2022 13:46:18 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=615afd1cd9820f0070a09ef0&quot; class=&quot;user-hover&quot; rel=&quot;615afd1cd9820f0070a09ef0&quot; data-account-id=&quot;615afd1cd9820f0070a09ef0&quot; accountid=&quot;615afd1cd9820f0070a09ef0&quot; rel=&quot;noreferrer&quot;&gt;Zak Burke&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;In short, I filed it thinking it would be an easy fix for a minor glitch and closed it on learning it would require fundamental changes to the system. &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Thank you for clarifying that.&lt;/p&gt;

&lt;p&gt;It was ambiguous to me whether closing it meant we won&apos;t address it now or we won&apos;t address the design limitation at all.&lt;/p&gt;</comment>
                                                            <comment id="197443" author="63e2a2771b13d42998e4e706" created="Wed, 30 Mar 2022 13:52:37 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=615afd1cd9820f0070a09ef0&quot; class=&quot;user-hover&quot; rel=&quot;615afd1cd9820f0070a09ef0&quot; data-account-id=&quot;615afd1cd9820f0070a09ef0&quot; accountid=&quot;615afd1cd9820f0070a09ef0&quot; rel=&quot;noreferrer&quot;&gt;Zak Burke&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;in the UI, we use a shared component to display object metadata (created-at, created-by) that accepts a &quot;systemId&quot; prop to label changes made by automated processes. Could we leverage similar logic here and sidestep this whole thing? e.g. if createdBy is empty, the UI shows &quot;System&quot; or &quot;Root&quot; or &quot;Admin&quot; or whatever. &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Yes, we could do that. I think it&apos;s a product question as to whether that is a viable option. I do think it&apos;s rather disingenuous (but then folks are ok with the existing system user workaround too).&lt;/p&gt;

&lt;p&gt;To be honest, I thought that (presented missing as &lt;tt&gt;automated process&lt;/tt&gt;) was what the shared component already did.&lt;/p&gt;

&lt;p&gt;I thought that was how we got around blank updated by properties for background tasks triggered by a timer e.g. ageing loaned items to lost and charging fees / fines.&lt;/p&gt;

&lt;p&gt;I think we are missing a modelling trick here:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;is it legitimate for records to have no created by / updated by (I think we removed that constraint when we realised automated tasks as currently implemented wouldn&apos;t work)?&lt;/li&gt;
	&lt;li&gt;if it isn&apos;t, then we need to model workflows in a way that every step happens in the context of a user&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;&lt;p&gt;That won&apos;t benefit API users, but maybe it would allow us to sidestep this thorny issue in a useful way.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;At least for the reference UI. Any folks building their own interfaces will need to implement their own reaction.&lt;/p&gt;</comment>
                                                            <comment id="197447" author="615afd1cd9820f0070a09ef0" created="Wed, 30 Mar 2022 14:00:09 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;, there are multiple places where metadata is displayed. In one place, we use a shared component to show &quot;System&quot; given a system-id; in other places we do nothing. My half-baked proposal is for the &quot;other places&quot; to show &quot;System&quot; when given nothing.&#160;&lt;/p&gt;</comment>
                                                            <comment id="197449" author="63e2a2771b13d42998e4e706" created="Wed, 30 Mar 2022 14:06:41 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=615afd1cd9820f0070a09ef0&quot; class=&quot;user-hover&quot; rel=&quot;615afd1cd9820f0070a09ef0&quot; data-account-id=&quot;615afd1cd9820f0070a09ef0&quot; accountid=&quot;615afd1cd9820f0070a09ef0&quot; rel=&quot;noreferrer&quot;&gt;Zak Burke&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;there are multiple places where metadata is displayed. In one place, we use a shared component to show &quot;System&quot; given a system-id; in other places we do nothing. My half-baked proposal is for the &quot;other places&quot; to show &quot;System&quot; when given nothing. &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Sure, I understood the proposal. &lt;/p&gt;

&lt;p&gt;For some reason, I thought we already did say system for blank created / updated by (which obviously we don&apos;t, otherwise folks wouldn&apos;t have noticed this issue)&lt;/p&gt;

&lt;p&gt;Out of interest, what would be an example of a &lt;tt&gt;system ID&lt;/tt&gt;?&lt;/p&gt;</comment>
                                                            <comment id="197452" author="615afd1cd9820f0070a09ef0" created="Wed, 30 Mar 2022 14:41:10 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;, handling of &quot;System&quot; users was described in 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;UIDATIMP-156&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UIDATIMP-156&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Make sure file extensions item source fields for updated and created lines renders correctly for record created by System&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;
            UIDATIMP-156
        &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 added in &lt;a href=&quot;https://github.com/folio-org/stripes-smart-components/pull/453&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;PR #453&lt;/a&gt; where the description includes, &quot;if it contains only zeros then assume that this is System ... render system user which has a default value&quot;. The actual implementation is not hard-coded to &quot;only zeros&quot; but is configurable and could handle empty string, provided all necessary props are present.&lt;/p&gt;</comment>
                                                            <comment id="197455" author="63e2a2771b13d42998e4e706" created="Wed, 30 Mar 2022 14:53:10 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=615afd1cd9820f0070a09ef0&quot; class=&quot;user-hover&quot; rel=&quot;615afd1cd9820f0070a09ef0&quot; data-account-id=&quot;615afd1cd9820f0070a09ef0&quot; accountid=&quot;615afd1cd9820f0070a09ef0&quot; rel=&quot;noreferrer&quot;&gt;Zak Burke&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;handling of &quot;System&quot; users was described in 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;UIDATIMP-156&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UIDATIMP-156&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Make sure file extensions item source fields for updated and created lines renders correctly for record created by System&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;
            UIDATIMP-156
        &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 added in PR #453&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Thank you for repeating it here (and including references). That isn&apos;t an area I&apos;m familiar with.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&quot;if it contains only zeros then assume that this is System ... render system user which has a default value&quot;. The actual implementation is not hard-coded to &quot;only zeros&quot; but is configurable and could handle empty string, provided all necessary props are present.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Ah, we chose the &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.7&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;nil UUID&lt;/a&gt; to denote a system user in that context. I didn&apos;t know that. Thank you, that is useful to know.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="66769">BF-224</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="10144"><![CDATA[Core: Platform]]></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_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|hzx2vb:r6m1oi</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="128">CP: R3 2022 roadmap</customfieldvalue>
    <customfieldvalue id="2000">DevOps Sprint 135</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 15 Mar 2022 10:09:25 +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>