<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:15:37 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-1747] include edge-oai-pmh in folio-snapshot/testing</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-1747</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Deploy edge-oai-pmh in folio-snapshot and folio-testing.&lt;/p&gt;

&lt;p&gt;The said module includes a ModuleDecriptor and a LaunchDecriptor but is non-standard in a several different ways:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;the module does not register any paths (interface) with Okapi&lt;/li&gt;
	&lt;li&gt;the module may required a fixed port (not assigned by okapi) and that port should be exposed on the firewall&lt;/li&gt;
	&lt;li&gt;OR the firewall should be configured to route traffic based on fixed path&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="81127">FOLIO-1747</key>
            <summary>include edge-oai-pmh in folio-snapshot/testing</summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</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="10003">Done</resolution>
                                                        <assignee accountid="5cd423bebc70090d6ce241b1">Ian Hardy</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>platform-backlog</label>
                    </labels>
                <created>Mon, 28 Jan 2019 13:06:15 +0000</created>
                <updated>Wed, 3 Jun 2020 16:39:26 +0000</updated>
                            <resolved>Mon, 1 Apr 2019 12:31:10 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>8</watches>
                                                                <comments>
                                                            <comment id="194805" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Tue, 29 Jan 2019 15:00:34 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; class=&quot;user-hover&quot; rel=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; data-account-id=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; accountid=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; rel=&quot;noreferrer&quot;&gt;Hongwei Ji&lt;/a&gt; can you please provide information about how the modules are deployed at EBSCO right now?&lt;/p&gt;</comment>
                                                            <comment id="194807" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Tue, 29 Jan 2019 15:06:06 +0000"  >&lt;p&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; can you please fix up the description according to what we discussed during stand up?&lt;/p&gt;</comment>
                                                            <comment id="194810" author="557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c" created="Tue, 29 Jan 2019 15:25:02 +0000"  >&lt;p&gt;Sure. &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; and &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;. We deploy all edge modules behind one dedicated load balancer (different from the one used by Okapi) for separation and scalability. To route traffic to different edge modules we use path based routing. For now we have following rules defined:&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;
If request path is /prod/rtac/*, then forward to edge-rtac module;
If request path is /patron*, then forward to edge-patron module;
If request path is /orders*, then forward to edge-orders module;
If request path is /oai*, then forward to edge-oai-pmh module;
If request path is /resolve/*, then forward to edge-resolver module;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Currently edge modules need to convert API key to FOLIO institution user name and password. You have to store a copy of the username/password somewhere outside FOLIO. It is not ideal. Maybe we can consider to enhance FOLIO/Okapi to support API key authentication directly. Thanks.&lt;/p&gt;</comment>
                                                            <comment id="194816" author="5f9abc1eb45b2e007453f423" created="Tue, 29 Jan 2019 15:34:02 +0000"  >&lt;p&gt;The load balancer configuration that Hongwei describes above is also what I was thinking - path-based routing utilizing the endpoints provided by the edge modules.  I was thinking of deploying an nginx container configured with the path-based routes.  &lt;/p&gt;

&lt;p&gt;Additional information about credentials and other configuration options the edge modules require can be found at: &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/folio-org/edge-common&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/edge-common&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For folio-snapshot/testing,  perhaps the EphemeralStore option (external config file) is the easiest. &lt;/p&gt;
</comment>
                                                            <comment id="194819" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Tue, 29 Jan 2019 18:29:14 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; class=&quot;user-hover&quot; rel=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; data-account-id=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; accountid=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; rel=&quot;noreferrer&quot;&gt;Hongwei Ji&lt;/a&gt; If we did the apiKey authentication in Okapi we would need to put the module behind it (as in a regular module), otherwise the authentication could not be enforced. Another solution would be let the Edge module create the institutional user at the point when Okapi informs it about a new tenant (see my last comment in 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;FOLIO-1713&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1713&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Edge module support in FOLIO/Okapi&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10307?size=medium&quot; /&gt;
            FOLIO-1713
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-complete jira-macro-single-issue-export-pdf&quot;&gt;Blocked&lt;/span&gt;
            &lt;/span&gt;
)&lt;/p&gt;</comment>
                                                            <comment id="194821" author="557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c" created="Tue, 29 Jan 2019 20:26:21 +0000"  >&lt;p&gt;Hi &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;, auth could not be enforced, do you mean by Okapi? When client make a request with API key to edge modules, edge modules can check Okapi to see if the key is valid or not. If not, the request can be rejected. Does that count as enforced?&lt;/p&gt;</comment>
                                                            <comment id="194824" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Wed, 30 Jan 2019 10:33:15 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; class=&quot;user-hover&quot; rel=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; data-account-id=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; accountid=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; rel=&quot;noreferrer&quot;&gt;Hongwei Ji&lt;/a&gt; My understanding is that the &quot;edge&quot; modules in questions are structured like this:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;proxy module running in front of Okapi (edge-rtac, edge-oai-pmh)&lt;/li&gt;
	&lt;li&gt;regular module that implements the external protocol (mod-rtac, mod-oai-pmh)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;What would be the purpose of the edge- part if we added apiKey authentication (and key provisioning) to Okapi? &lt;/p&gt;</comment>
                                                            <comment id="194828" author="557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c" created="Wed, 30 Jan 2019 13:48:32 +0000"  >&lt;p&gt;I do not want to get into the debate of edge module purpose/design. &lt;img class=&quot;emoticon&quot; src=&quot;/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;. What I am trying say is that API key authentication seems to a generic feature and Okapi/Folio should consider to support that. Also, current edge modules have to store folio password somewhere, it is kind redundant, don&apos;t you think &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;? Also if someone changed the password, the client to edge module will get an error even thought API key has not been changed. &lt;img class=&quot;emoticon&quot; src=&quot;/images/icons/emoticons/sad.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                                                            <comment id="194832" author="5c706fbb47a54a6728e59df2" created="Wed, 30 Jan 2019 13:54:50 +0000"  >&lt;p&gt;For the AWS environment builds, should we expose a separate port for edge modules? Another design would be to run a single nginx that serves the stripes bundle, proxies Okapi, and proxies the edge modules, all on a single port.&lt;/p&gt;</comment>
                                                            <comment id="194834" author="5c706fbb47a54a6728e59df2" created="Wed, 30 Jan 2019 13:58:51 +0000"  >&lt;p&gt;It looks like the modules&apos; endpoints are documented in the raml for the module (which is sensible)...are those endpoints part of the external API definition? That is, for example, is it required that the OAI-PMH service be exposed at the path &lt;tt&gt;/oai&lt;/tt&gt;, or could we use a common prefix for all the paths, like &lt;tt&gt;/edge/oai&lt;/tt&gt;, &lt;tt&gt;/edge/rtac&lt;/tt&gt;, etc.&lt;/p&gt;</comment>
                                                            <comment id="194836" author="557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c" created="Wed, 30 Jan 2019 14:02:16 +0000"  >&lt;p&gt;Yes, they are. &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;. That&apos;s why put everything in one end point is difficult due to potential path conflict.&lt;/p&gt;</comment>
                                                            <comment id="194839" author="5c706fbb47a54a6728e59df2" created="Wed, 30 Jan 2019 14:31:55 +0000"  >&lt;p&gt;OK, so here is one way to get this done for the environment builds (thanks &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=61cd0ca0bce5e00069e98be7&quot; class=&quot;user-hover&quot; rel=&quot;61cd0ca0bce5e00069e98be7&quot; data-account-id=&quot;61cd0ca0bce5e00069e98be7&quot; accountid=&quot;61cd0ca0bce5e00069e98be7&quot; rel=&quot;noreferrer&quot;&gt;David Crossley&lt;/a&gt; for a great conversation to work this through):&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Update the security settings for our environment builds to expose edge modules on an external port (any opinions about what port?)&lt;/li&gt;
	&lt;li&gt;Create a role in folio-ansible to set up nginx as a load balancer in front of the edge modules (could be container or host-based...given the configuration flexibility required, I would suggest that host-based would be more convenient)&lt;/li&gt;
	&lt;li&gt;Create a role in folio-ansible to deploy and configure edge modules. This role would need to:&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Query Okapi to determine the dependencies of the edge module, then deploy and enable those dependencies for the tenant&lt;/li&gt;
	&lt;li&gt;Pull the Docker image for the edge module, configure, and deploy (outside Okapi), assigning a port&lt;/li&gt;
	&lt;li&gt;Configure nginx to proxy for the edge module&lt;/li&gt;
	&lt;li&gt;Enable the edge module for the tenant and assign permissionSets to admin user (assuming there may be permissionSets that need to be loaded)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;How do edge modules work in a multi-tenant environment? Does there need to be a different instance of each edge module for each tenant?&lt;/p&gt;</comment>
                                                            <comment id="194842" author="557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c" created="Wed, 30 Jan 2019 14:43:17 +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;, all tenants will share the same edge(s). Why do we need different instance for each tenant?&lt;/p&gt;</comment>
                                                            <comment id="194844" author="5c706fbb47a54a6728e59df2" created="Wed, 30 Jan 2019 17:26:11 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; class=&quot;user-hover&quot; rel=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; data-account-id=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; accountid=&quot;557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c&quot; rel=&quot;noreferrer&quot;&gt;Hongwei Ji&lt;/a&gt; &amp;#8211; How does the edge module know which tenant header to pass for any given request it receives?&lt;/p&gt;</comment>
                                                            <comment id="194846" author="557058:4f6bed01-40a6-48d5-8471-7ef21f5ea97c" created="Wed, 30 Jan 2019 17:45:22 +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;, the tenant info is in the API key. When receiving a request with API key, edge modules decrypt the key to know tenant and user, and then do a look up to get password from vault.&lt;/p&gt;</comment>
                                                            <comment id="194849" author="5cf6c546b87c300f36eb7b9a" created="Mon, 4 Mar 2019 22:02:33 +0000"  >&lt;p&gt;See &lt;a href=&quot;https://github.com/folio-org/edge-common/releases/tag/v2.0.1&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/edge-common/releases/tag/v2.0.1&lt;/a&gt; &lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;$ java -jar target/edge-common-api-key-utils.jar -g -t diku -u diku_admin
eyJzIjoiYlNXMkZhRWpMaSIsInQiOiJkaWt1IiwidSI6ImRpa3VfYWRtaW4ifQ==

$ java -jar target/edge-common-api-key-utils.jar -p eyJzIjoiYlNXMkZhRWpMaSIsInQiOiJkaWt1IiwidSI6ImRpa3VfYWRtaW4ifQ==
Salt: bSW2FaEjLi
Tenant ID: diku
Username: diku_admin

$ echo eyJzIjoiYlNXMkZhRWpMaSIsInQiOiJkaWt1IiwidSI6ImRpa3VfYWRtaW4ifQ== | base64 --decode
{&quot;s&quot;:&quot;bSW2FaEjLi&quot;,&quot;t&quot;:&quot;diku&quot;,&quot;u&quot;:&quot;diku_admin&quot;}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                                                            <comment id="194852" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 11 Mar 2019 12:37:31 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5cf6c546b87c300f36eb7b9a&quot; class=&quot;user-hover&quot; rel=&quot;5cf6c546b87c300f36eb7b9a&quot; data-account-id=&quot;5cf6c546b87c300f36eb7b9a&quot; accountid=&quot;5cf6c546b87c300f36eb7b9a&quot; rel=&quot;noreferrer&quot;&gt;Craig McNally&lt;/a&gt; this issue remains blocked on EDGEOAI-28 but it looks like the work there is almost complete. Is there an ETA? I would like to understand if we can put it into the sprint.&lt;/p&gt;</comment>
                                                            <comment id="194855" author="5cf6c546b87c300f36eb7b9a" created="Mon, 11 Mar 2019 16:34:41 +0000"  >&lt;p&gt;Should be done now.  See &lt;a href=&quot;https://github.com/folio-org/edge-oai-pmh/releases/tag/v2.0.0&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/edge-oai-pmh/releases/tag/v2.0.0&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="194858" author="5cd423bebc70090d6ce241b1" created="Wed, 27 Mar 2019 17:36:55 +0000"  >&lt;p&gt;This is queued up for tonight&apos;s builds. edge-oai-pmh will be available at:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://folio-snapshot.aws.indexdata.com:8000/oai&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;http://folio-snapshot.aws.indexdata.com:8000/oai&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://folio-testing-backend01.aws.indexdata.com:8000/oai&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;http://folio-testing-backend01.aws.indexdata.com:8000/oai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;example:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://folio-snapshot.aws.indexdata.com:8000/oai?apikey=eyJzIjoiNXNlNGdnbXk1TiIsInQiOiJkaWt1IiwidSI6ImRpa3UifQ==&amp;amp;verb=Identify&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;http://folio-snapshot.aws.indexdata.com:8000/oai?apikey=eyJzIjoiNXNlNGdnbXk1TiIsInQiOiJkaWt1IiwidSI6ImRpa3UifQ==&amp;amp;verb=Identify&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="194861" author="5cf6c546b87c300f36eb7b9a" created="Wed, 27 Mar 2019 20:50:30 +0000"  >&lt;p&gt;I&apos;m not sure how traffic is routed/load balanced/proxied through these deployments, but I just ran into something yesterday which might also impact this...&lt;/p&gt;

&lt;p&gt;mod-oai-pmh&apos;s GET /oai/records/{id} endpoint requires that the ID portion be URLencoded, so you&apos;ll need to be careful that proxied requests aren&apos;t unencoding that before it gets to the module.&lt;/p&gt;

&lt;p&gt;In my case I had to make adjustments to my NGINX config to make this work.  This should only be a problem if the reverse proxy is between edge-oai-pmh and mod-oai-pmh.&lt;/p&gt;

&lt;p&gt;Let&apos;s see how it goes once this is up tomorrow and if you need help with this I can share some notes with you.&lt;/p&gt;</comment>
                                                            <comment id="194865" author="5cd423bebc70090d6ce241b1" created="Thu, 28 Mar 2019 13:24:00 +0000"  >&lt;p&gt;I think I see the issue you&apos;re describing in the logs for the mod-oai-pmh container&lt;/p&gt;

&lt;p&gt;{{28 Mar 2019 13:00:06:939 INFO  LogUtil &lt;span class=&quot;error&quot;&gt;&amp;#91;34173415eqId&amp;#93;&lt;/span&gt; 10.36.1.153:40750 GET /oai/records/oai%3AarXiv.org%3Acs%2F0112017 identifier=oai:arXiv.org:cs/0112017&amp;amp;metadataPrefix=oai_dc HTTP_1_1 400 734 21 tid=diku Bad Request &lt;br/&gt;
}}&lt;/p&gt;

&lt;p&gt;Nginx is unencoding the request before it gets to edge-oai-pmh (but isn&apos;t between the two modules). I&apos;ll look at the config, and I won&apos;t say no to seeing your notes if they&apos;re handy.&lt;/p&gt;</comment>
                                                            <comment id="194868" author="5cf6c546b87c300f36eb7b9a" created="Thu, 28 Mar 2019 15:22:34 +0000"  >&lt;p&gt;See &lt;a href=&quot;https://stackoverflow.com/questions/28684300/nginx-pass-proxy-subdirectory-without-url-decoding/37584637#37584637&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://stackoverflow.com/questions/28684300/nginx-pass-proxy-subdirectory-without-url-decoding/37584637#37584637&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That&apos;s probably more helpful than me regurgitating the same information&lt;/p&gt;</comment>
                                                            <comment id="194871" author="5cd423bebc70090d6ce241b1" created="Fri, 29 Mar 2019 18:56:47 +0000"  >&lt;p&gt;Looking at this a bit more carefully&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;mod-oai-pmh&apos;s GET /oai/records/&lt;/p&gt;
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: {id}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt; endpoint requires that the ID portion be URLencoded, so you&apos;ll need to be careful that proxied requests aren&apos;t unencoding that before it gets to the module.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I think the IDs are making it to mod-oai-pmh intact (see the id in the response here) &lt;a href=&quot;http://folio-snapshot.aws.indexdata.com:8000/oai/?verb=GetRecord&amp;amp;identifier=oai:folio.org:diku/fb857902-3ab2-4c34-9772-14ad7acdfe76&amp;amp;metadataPrefix=oai_dc&amp;amp;apikey=eyJzIjoiNXNlNGdnbXk1TiIsInQiOiJkaWt1IiwidSI6ImRpa3UifQ==&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;http://folio-snapshot.aws.indexdata.com:8000/oai/?verb=GetRecord&amp;amp;identifier=oai:folio.org:diku/fb857902-3ab2-4c34-9772-14ad7acdfe76&amp;amp;metadataPrefix=oai_dc&amp;amp;apikey=eyJzIjoiNXNlNGdnbXk1TiIsInQiOiJkaWt1IiwidSI6ImRpa3UifQ==&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is from the mod-oai-pmh log. In the get, the ID is URLencoded&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;29 Mar 2019 18:34:33:077 INFO  LogUtil [61852548eqId] 10.36.1.135:34994 GET /oai/records/oai%3Afolio.org%3Adiku%2Ffb857902-3ab2-4c34-9772-14ad7acdfe76 identifier=oai:folio.org:diku/fb857902-3ab2-4c34-9772-14ad7acdfe76&amp;amp;metadataPrefix=oai_dc HTTP_1_1 404 772 39 tid=diku Not Found
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="80928">FOLIO-1630</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="38507">EDGCOMMON-19</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="37237">EDGOAIPMH-28</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81079">FOLIO-1758</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81081">FOLIO-1759</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10001">
                    <name>Cloners</name>
                                                                <inwardlinks description="is cloned by">
                                        <issuelink>
            <issuekey id="81069">FOLIO-1748</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_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzx7cn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1418">Core: Platform - Sprint 60</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10044" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 29 Jan 2019 15:25:02 +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>