Bug 32030 - Electronic resource management (ERM)
Summary: Electronic resource management (ERM)
Status: RESOLVED FIXED
Alias: None
Product: Koha
Classification: Unclassified
Component: ERM (show other bugs)
Version: unspecified
Hardware: All All
: P5 - low new feature (vote)
Assignee: Jonathan Druart
QA Contact:
URL:
Keywords: release-notes-needed
Depends on:
Blocks: 32244 32782 32924 33423 33492 35408 32130 32131 32147 32154 32162 32163 32179 32180 32181 32212 32240 32468 32779 32783 32806 32807 32904 32918 32931 33354 33402 33435 33481 33490 33625
  Show dependency treegraph
 
Reported: 2022-10-28 08:37 UTC by Jonathan Druart
Modified: 2023-11-28 08:19 UTC (History)
17 users (show)

See Also:
Change sponsored?: ---
Patch complexity: ---
Documentation contact:
Documentation submission:
Text to go in the release notes:
This new module adds a mechanism to track the selection, acquisition, licensing, access, maintenance, usage, evaluation, retention, and de-selection of a library’s electronic information resources. These resources include, but are not limited to, electronic journals, electronic books, streaming media, databases, datasets, CD-ROMs, and computer software.
Version(s) released in:


Attachments
Bug 32030: Remove maintenance file (9.70 KB, patch)
2022-11-09 07:59 UTC, Jonathan Druart
Details | Diff | Splinter Review
Bug 32030: Fix perlcritic errors (1.93 KB, patch)
2022-11-09 08:01 UTC, Jonathan Druart
Details | Diff | Splinter Review
Bug 32030: Fix Makefile.t (737 bytes, patch)
2022-11-09 08:05 UTC, Jonathan Druart
Details | Diff | Splinter Review
Bug 32030: Add missing additionalProperties to /erm/eholdings/local/titles/import (874 bytes, patch)
2022-11-09 08:13 UTC, Jonathan Druart
Details | Diff | Splinter Review
Bug 32030: Add missing primary key to erm_user_roles table (3.04 KB, patch)
2022-11-09 12:54 UTC, Pedro Amorim
Details | Diff | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Druart 2022-10-28 08:37:13 UTC
We are building an Electronic Resource Management (eRM) module for Koha.

See the related resources for earlier communication:

[Koha] Electronic Resource Management for Koha https://lists.katipo.co.nz/pipermail/koha/2022-February/057447.html

“Electronic resource management (ERM) is the practices and techniques used by librarians and library staff to track the selection, acquisition, licensing, access, maintenance, usage, evaluation, retention, and de-selection of a library’s electronic information resources. These resources include, but are not limited to, electronic journals, electronic books, streaming media, databases, datasets, CD-ROMs, and computer software.”

https://en.wikipedia.org/wiki/Electronic_resource_management

Before the emergence of eRM's, libraries would typically store details of electronic subscriptions in a manual way, for example, Excel spreadsheets, or in cupboards or filing cupboards as paper documents. An eRM allows libraries to store and organise these documents electronically. It also services as an index to electronic subscriptions. An eRM can track the whole lifecycle of an electronic resource, from acquisition, to negotiating an agreement with a publisher, storing the license information, activating title and package resources online to identifying usage patterns with resources.

Libraries will vary in size from small, specialist library (with maybe a few topic specific resources) like a music library to large universities who will subscribe to tens of thousands of titles. It maybe that a library wants to record a few dozens resources each with their own subscription with a publisher, or track thousands of titles from aggregators like EBSCO.  

The code is available at https://gitlab.com/joubu/Koha/-/commits/erm

The entry point is at https://tree.taiga.io/project/joubu-koha-erm/wiki/home

And the current work activities can be seen at https://tree.taiga.io/project/joubu-koha-erm/kanban
Comment 1 Jonathan Druart 2022-10-28 08:41:01 UTC
This is currently sponsored by PTFS-Europe, ByWater Solutions and BibLibre, but additional sponsors and developers involved in this project are more than welcome!
Comment 2 Jonathan Druart 2022-10-28 15:55:47 UTC
This is ready for testing!
Comment 3 Kyle M Hall 2022-10-28 19:53:13 UTC
QA Notes:
* I can only find my logged in user when searching for users to add to an agreement ( http://192.168.1.20:8081/cgi-bin/koha/erm/agreements/add )
* Spelling error: negociation => negotiatio
* If I attach a very large document to a license ( like 70 MB ), not only does the file not attach, but I lose all my existing files as well. ( http://192.168.1.20:8081/cgi-bin/koha/erm/licenses/1 ) 
* "Search agreements" in the top bar shifts everything down by a couple pixels compared to "Search packages" and "Search titles"
Comment 4 Jonathan Field 2022-10-29 12:00:03 UTC
On Point 1 Kyle, when you add users to an Agreement you ONLY see users who have the ERM permission, that is by design so that you do not retrieve many regular patrons. Is that what you are seeing or something else?
Comment 5 Jonathan Druart 2022-10-31 06:27:32 UTC
(In reply to Kyle M Hall from comment #3)

Thanks a lot, Kyle! I am very happy to get feedback on this new module :)

> QA Notes:
> * I can only find my logged in user when searching for users to add to an
> agreement ( http://192.168.1.20:8081/cgi-bin/koha/erm/agreements/add )

It's expected, see Jonathan's answer.

> * Spelling error: negociation => negotiatio

Fixed.

> * If I attach a very large document to a license ( like 70 MB ), not only
> does the file not attach, but I lose all my existing files as well. (
> http://192.168.1.20:8081/cgi-bin/koha/erm/licenses/1 ) 

Reported on https://tree.taiga.io/project/joubu-koha-erm/us/130

> * "Search agreements" in the top bar shifts everything down by a couple
> pixels compared to "Search packages" and "Search titles"

That's a Koha bug, that should be reported on its own bug.
I do recreate on /cgi-bin/koha/circ/circulation-home.pl if I zoom in.
Reported on bug 32047.
Comment 6 Jonathan Druart 2022-11-01 07:36:06 UTC
(In reply to Jonathan Druart from comment #5)
> (In reply to Kyle M Hall from comment #3)
> > * If I attach a very large document to a license ( like 70 MB ), not only
> > does the file not attach, but I lose all my existing files as well. (
> > http://192.168.1.20:8081/cgi-bin/koha/erm/licenses/1 ) 
> 
> Reported on https://tree.taiga.io/project/joubu-koha-erm/us/130

Fixed!
Comment 7 Martin Renvoize 2022-11-01 09:44:46 UTC
Still working through the code.. so far so good.

One query however, in EHoldingsEBSCOPackageAgreements.vue you use a <style scoped> block to localise some modal css.. should/can this be moved to the standard scss sheets?  My reading suggests that 'scoped' is deprecated already? (Must admit, I've never seen it so had to google)
Comment 8 Martin Renvoize 2022-11-01 09:55:51 UTC
Ah, I see.. the vue docs actually recommend it.. https://vuejs.org/guide/introduction.html#the-progressive-framework
Comment 9 Martin Renvoize 2022-11-01 11:46:06 UTC
So.. I now understand 'scoped'.. it's not the html spec 'scoped'.. it's a vue version that builds.

I still wonder how much of it we actually need.. but perhaps stripping it back and trying to apply our global css rules is a follow-up task as part of our general UI effort.

Generally.. I'm really happy to see the Vue Single-File Components being used, it makes the code so easily readable and understandable keeping it all together in a nice tightly packed file instead of spread all over the place the way I'm doing with our old fashioned modals and things.

That said.. I might need some tips on getting vim to highlight things nicely.. having mixes of css, html and javascript in the same file messes with my current setup.
Comment 10 Victor Grousset/tuxayo 2022-11-02 05:21:37 UTC
(In reply to Kyle M Hall from comment #3)
> * I can only find my logged in user when searching for users to add to an
> agreement ( http://192.168.1.20:8081/cgi-bin/koha/erm/agreements/add )

(In reply to Jonathan Field from comment #4)
> On Point 1 Kyle, when you add users to an Agreement you ONLY see users who
> have the ERM permission, that is by design so that you do not retrieve many
> regular patrons. Is that what you are seeing or something else?

Works as expected when having multiple users with ERM permission or superlibrarians.

Also tested addition multiple users and custom roles via the AV.
And basic creation of license, package, title

Any guidelines to test this? Beside from filling every field and being creating to try to find edge cases.
Comment 11 Jonathan Field 2022-11-02 12:43:31 UTC
We're in the process of producing some documentation for this in order that our team can add this to the Koha manual. For now you can find it in this document - https://docs.google.com/document/d/1W23B1M9G8uvd5mN3Hlpld7uYLTBXN_7dNBz5WY8ZfiA/edit?usp=sharing
Comment 12 Victor Grousset/tuxayo 2022-11-02 20:14:41 UTC
Thanks Jonathan!

Testing notes:
After `apt install libmojolicious-plugin-renderfile-perl` you need to restart the services to have it work. Otherwise:

[2022/11/02 19:54:30] [ERROR] Warning: Could not load REST API spec bundle: Plugin "RenderFile" missing, maybe you need to install it?
[2022/11/02 20:05:50] [ERROR] GET /api/v1/erm/documents/1/file/content: unhandled exception (Mojo::Exception)<<Can't locate object method "render_file" via package "Koha::REST::V1::ERM::Documents" at /kohadevbox/koha/Koha/REST/V1/ERM/Documents.pm line 53.>>
Comment 13 Victor Grousset/tuxayo 2022-11-05 23:37:21 UTC
In the /agreements page, the «Filter by expired: [X] on» is confusing. It's not clear that it must be ticked for the date field to have any effect. Or maybe unchecked has a different effect. But it seems not.

https://wtf.roflcopter.fr/pics/foywDHSU/5E4BFfT6.png

The doc draft says
> At the top of the Agreements page you will notice a Filter box. The purpose of this is to allow you to quickly filter expired agreements or agreements which may have an upcoming renewal (and therefore might require action).

There doesn't seem to be another filter mode when unchecked.

From the code it seems the date field is only used when the box is ticked. Is that done to be able to keep an expiration date saved without having it used? (it's not saved so it's not that)
Otherwise the filter could just be used when the date field is populated.
Comment 14 Victor Grousset/tuxayo 2022-11-07 05:32:28 UTC
At "sub agreement_relationships"

+        my $back_links = {
+            'supersedes'       => 'is-superseded-by',
+            'is-superseded-by' => 'supersedes',
+            'provides_post-cancellation_access_for' => 'has-post-cancellation-access-in',
+            'has-post-cancellation-access-in'       => 'provides_post-cancellation_access_for',
+            'tracks_demand-driven_acquisitions_for' => 'has-demand-driven-acquisitions-in',
+            'has-demand-driven-acquisitions-in'     => 'tracks_demand-driven_acquisitions_for',
+            'has_backfile_in'  => 'has_frontfile_in',
+            'has_frontfile_in' => 'has_backfile_in',
+            'related_to'       => 'related_to',
+        };


What are the rules for using - or _? Like "has-demand-driven-acquisitions-in" and "tracks_demand-driven_acquisitions_for"
Just in case, with some greps I double checked that there wasn't a mixup between - and _ anywhere, all good! 👍️
Comment 15 Jonathan Druart 2022-11-07 07:54:39 UTC
(In reply to Victor Grousset/tuxayo from comment #13)
> In the /agreements page, the «Filter by expired: [X] on» is confusing. It's
> not clear that it must be ticked for the date field to have any effect. Or
> maybe unchecked has a different effect. But it seems not.
> 
> https://wtf.roflcopter.fr/pics/foywDHSU/5E4BFfT6.png

It's not how it appears, it should be displayed like this: https://snipboard.io/Pv5a9O.jpg

> The doc draft says
> > At the top of the Agreements page you will notice a Filter box. The purpose of this is to allow you to quickly filter expired agreements or agreements which may have an upcoming renewal (and therefore might require action).
> 
> There doesn't seem to be another filter mode when unchecked.

Another filter mode? What do you mean?

> From the code it seems the date field is only used when the box is ticked.
> Is that done to be able to keep an expiration date saved without having it
> used? (it's not saved so it's not that)
> Otherwise the filter could just be used when the date field is populated.

You only need to click the checkbox to search for "expired on today" (it will populate the date with today when the checkbox is ticked). That's something you couldn't have with your suggestion.

I don't think the current behaviour is confusing, really. We could eventually hide 'on [date]' when the checkbox is not checked. We are talking about providing a MVP for 22.11 inclusion, not trying to catch minor UI design flaws ;)

(In reply to Victor Grousset/tuxayo from comment #14)
> At "sub agreement_relationships"
> 
> +        my $back_links = {
> +            'supersedes'       => 'is-superseded-by',
> +            'is-superseded-by' => 'supersedes',
> +            'provides_post-cancellation_access_for' =>
> 'has-post-cancellation-access-in',
> +            'has-post-cancellation-access-in'       =>
> 'provides_post-cancellation_access_for',
> +            'tracks_demand-driven_acquisitions_for' =>
> 'has-demand-driven-acquisitions-in',
> +            'has-demand-driven-acquisitions-in'     =>
> 'tracks_demand-driven_acquisitions_for',
> +            'has_backfile_in'  => 'has_frontfile_in',
> +            'has_frontfile_in' => 'has_backfile_in',
> +            'related_to'       => 'related_to',
> +        };
> 
> 
> What are the rules for using - or _? Like
> "has-demand-driven-acquisitions-in" and
> "tracks_demand-driven_acquisitions_for"
> Just in case, with some greps I double checked that there wasn't a mixup
> between - and _ anywhere, all good! 👍️

Coming from Folio: https://github.com/folio-org/ui-agreements/blob/master/src/constants/agreementRelationshipTypes.js
I guess the idea was to have '_' for spaces and '-' for '-', but yes, it's inconsistent.

Note that we are displaying the code when we should display strings.
Reported on https://tree.taiga.io/project/joubu-koha-erm/us/138
Comment 16 Jonathan Field 2022-11-07 08:32:32 UTC
(In reply to Victor Grousset/tuxayo from comment #13)
> In the /agreements page, the «Filter by expired: [X] on» is confusing. It's
> not clear that it must be ticked for the date field to have any effect. Or
> maybe unchecked has a different effect. But it seems not.
> 
> https://wtf.roflcopter.fr/pics/foywDHSU/5E4BFfT6.png
> 
> The doc draft says
> > At the top of the Agreements page you will notice a Filter box. The purpose of this is to allow you to quickly filter expired agreements or agreements which may have an upcoming renewal (and therefore might require action).

I agree with Jonathan, it works as it was intended as far as I'm concerned. The idea was to have something like the Print Serials page (cgi-bin/koha/serials/checkexpiration.pl) where you can look up upcoming subscriptions (electronic in this case). This filter has benefits as it's more versatile, you can look up expired subscriptions for example.    
> 
> There doesn't seem to be another filter mode when unchecked.
> 
> From the code it seems the date field is only used when the box is ticked.
> Is that done to be able to keep an expiration date saved without having it
> used? (it's not saved so it's not that)
> Otherwise the filter could just be used when the date field is populated.

Not sure what you mean here but the table filters really provide all the other filtering you might need I would say. For example, Status: cancelled etc.
Comment 17 Martin Renvoize 2022-11-07 12:07:54 UTC
OK.. I've gone through eRM pretty rigorously now.. every question I've had I've answered by going through the vue docs.

Happy to add my SO line for QA.. marking as such.
Comment 18 Jonathan Druart 2022-11-07 12:29:38 UTC
(In reply to Martin Renvoize from comment #17)
> OK.. I've gone through eRM pretty rigorously now.. every question I've had
> I've answered by going through the vue docs.
> 
> Happy to add my SO line for QA.. marking as such.

Added to the remote branch, thanks!
Comment 19 Kyle M Hall 2022-11-07 14:04:17 UTC
I am provisionally passing QA on this. The only open issue is uploading large documents ( https://tree.taiga.io/project/joubu-koha-erm/us/130 ). If that gets sorted ( even by limited the size of uploads or such ) I think everything will be good!
Comment 20 Jonathan Field 2022-11-07 14:10:25 UTC
(In reply to Kyle M Hall from comment #19)
> I am provisionally passing QA on this. The only open issue is uploading
> large documents ( https://tree.taiga.io/project/joubu-koha-erm/us/130 ). If
> that gets sorted ( even by limited the size of uploads or such ) I think
> everything will be good!

Thanks Kyle! The upload document issue is sorted with this commit https://gitlab.com/joubu/Koha/-/commit/468ae2cf215630274f953b539bc3b373cb8f73f8 so, hopefully, all is good!
Comment 21 Kyle M Hall 2022-11-07 14:54:09 UTC
(In reply to Jonathan Field from comment #20)
> Thanks Kyle! The upload document issue is sorted with this commit
> https://gitlab.com/joubu/Koha/-/commit/
> 468ae2cf215630274f953b539bc3b373cb8f73f8 so, hopefully, all is good!

💯
Comment 22 Victor Grousset/tuxayo 2022-11-08 04:37:43 UTC
(In reply to Jonathan Druart from comment #15)
> It's not how it appears, it should be displayed like this:
> https://snipboard.io/Pv5a9O.jpg

Weird, I still have it wrong on default zoom after getting latest code and running yarn install.
I see it fine on the ERM sandbox.


> > There doesn't seem to be another filter mode when unchecked.
> 
> Another filter mode? What do you mean?

I was hypothesizing that the checkbox could be to switch from agreements having expired before or equal to the date field. And to switch to agreements having expired precisely at the date. The checkbox is next to the "on" so I though it activated the "on" to modify the filter. To only show the agreements having expired precisely on the date.
Or something else.

 
> > From the code it seems the date field is only used when the box is ticked.
> > Is that done to be able to keep an expiration date saved without having it
> > used? (it's not saved so it's not that)
> > Otherwise the filter could just be used when the date field is populated.
> 
> You only need to click the checkbox to search for "expired on today" (it
> will populate the date with today when the checkbox is ticked). That's
> something you couldn't have with your suggestion.

Ah ok the checkbox actually does something different! Now I though it was just a switch meaning "take the next date field filter into account". Which seems redundant and confusing. So my confusion came from wrongly understanding this.
Wait, when I click it doesn't populate the field. And no JS console error to help. Same with Chromium. Same on ERM sandbox.
 
> I don't think the current behaviour is confusing, really. We could
> eventually hide 'on [date]' when the checkbox is not checked. We are talking
> about providing a MVP for 22.11 inclusion, not trying to catch minor UI
> design flaws ;)

Well at first my comment would have been about the expiration date filter not working at all. I might have messed up when trying with the agreement periods (End date vs Cancellation deadline) and though it was the license period. Since the licenses have an expired status. But of course it wasn't the license period.
But I finally got it working but thought either the checkbox was redundant and was just to enable the use of the date filter. Or that there was two filter modes or something else that I missed. Anyway, yes at that moment I lost the focus on the MVP since indeed the expiration filter works! Let's keep that for follow-ups.
 
> (In reply to Victor Grousset/tuxayo from comment #14)
> Coming from Folio:
> https://github.com/folio-org/ui-agreements/blob/master/src/constants/
> agreementRelationshipTypes.js
> I guess the idea was to have '_' for spaces and '-' for '-', but yes, it's
> inconsistent.

Ok it's to be consistent with another project. Makes sense even if they don't :P
Thanks for the clarifications :)
Comment 23 Jonathan Druart 2022-11-08 05:29:03 UTC
(In reply to Kyle M Hall from comment #19)
> I am provisionally passing QA on this.

I've added your signed-off-by lines, thanks!
Comment 24 Jonathan Druart 2022-11-08 05:30:15 UTC
(In reply to Victor Grousset/tuxayo from comment #22)
> Wait, when I click it doesn't populate the field. And no JS console error to
> help. Same with Chromium. Same on ERM sandbox.

Click filter without date selected, today date will be used.
Comment 25 Tomás Cohen Arazi 2022-11-08 13:08:03 UTC
Pushed to master for 22.11.

Nice work everyone, thanks!
Comment 26 Martin Renvoize 2022-11-08 14:08:30 UTC
First draft of documentation is now merged into the manual.. Lucy (from ptfs-e) is reviewing and refining it now it's made it upstream :)
Comment 27 Jonathan Druart 2022-11-09 07:59:11 UTC
Created attachment 143458 [details] [review]
Bug 32030: Remove maintenance file

This script is actually not used.
Comment 28 Jonathan Druart 2022-11-09 08:01:34 UTC
Created attachment 143459 [details] [review]
Bug 32030: Fix perlcritic errors
Comment 29 Jonathan Druart 2022-11-09 08:05:01 UTC
Created attachment 143460 [details] [review]
Bug 32030: Fix Makefile.t
Comment 30 Jonathan Druart 2022-11-09 08:13:51 UTC
Created attachment 143461 [details] [review]
Bug 32030: Add missing additionalProperties to /erm/eholdings/local/titles/import

This fixes xt/api.t
Comment 31 Jonathan Druart 2022-11-09 08:27:34 UTC
TestBuilder.t is failing on ERM::User::Roles, it's missing a primary key on erm_user_roles I think

Can be tested with:

use t::lib::TestBuilder;
my $builder = t::lib::TestBuilder->new;
my $m = 'Koha::ERM::UserRoles';
eval "require $m";
my $object = $builder->build_object( { class => $m } ); 
say ref($object);

Should display "Koha::ERM::UserRole", not be empty
Comment 32 Jonathan Druart 2022-11-09 08:39:51 UTC
(In reply to Jonathan Druart from comment #31)
> TestBuilder.t is failing on ERM::User::Roles, it's missing a primary key on
> erm_user_roles I think
> 
> Can be tested with:
> 
> use t::lib::TestBuilder;
> my $builder = t::lib::TestBuilder->new;
> my $m = 'Koha::ERM::UserRoles';
> eval "require $m";
> my $object = $builder->build_object( { class => $m } ); 
> say ref($object);
> 
> Should display "Koha::ERM::UserRole", not be empty

I confirm that the following changes fix the test:

ALTER TABLE erm_user_roles ADD COLUMN user_role_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index 54ed708304a..33e2980576b 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -2865,13 +2865,15 @@ CREATE TABLE `erm_agreement_periods` (
 
 DROP TABLE IF EXISTS `erm_user_roles`;
 CREATE TABLE `erm_user_roles` (
+    `user_role_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
     `agreement_id` INT(11) NULL COMMENT 'link to the agreement',
     `license_id` INT(11) NULL COMMENT 'link to the license',
     `user_id` INT(11) NOT NULL COMMENT 'link to the user',
     `role` VARCHAR(80) NOT NULL COMMENT 'role of the user',
     CONSTRAINT `erm_user_roles_ibfk_1` FOREIGN KEY (`agreement_id`) REFERENCES `erm_agreements` (`agreement_id`) ON DELETE CASCADE ON UPDATE CASCADE,
     CONSTRAINT `erm_user_roles_ibfk_2` FOREIGN KEY (`license_id`) REFERENCES `erm_licenses` (`license_id`) ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `erm_user_roles_ibfk_3` FOREIGN KEY (`user_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE
+    CONSTRAINT `erm_user_roles_ibfk_3` FOREIGN KEY (`user_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
+    PRIMARY KEY(`user_role_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
Then `dbic`.

But the REST API spec and Vue part need to be adjusted.
Comment 33 Katrin Fischer 2022-11-09 10:46:39 UTC
We've had some issues in the past when adding new modules and them not working in a package installation (missing paths I think?) - if it hasn't been done yet, might be nice to verify all is good in a package installation too.
Comment 34 Tomás Cohen Arazi 2022-11-09 12:49:58 UTC
Follow-ups pushed to master. Please file a new bug for the outstanding issue with TestBuilder.
Comment 35 Pedro Amorim 2022-11-09 12:54:21 UTC
Created attachment 143502 [details] [review]
Bug 32030: Add missing primary key to erm_user_roles table
Comment 36 Marcel de Rooy 2022-11-09 13:09:04 UTC
File not found : js/vue/dist/main.js at /usr/share/koha/Koha/Template/Plugin/Asset.pm line 84.

Does this module not work on a dev install ?
Comment 37 Marcel de Rooy 2022-11-09 13:10:21 UTC
(In reply to Marcel de Rooy from comment #36)
> File not found : js/vue/dist/main.js at
> /usr/share/koha/Koha/Template/Plugin/Asset.pm line 84.
> 
> Does this module not work on a dev install ?

This makes a whole block on the main page disappear..
Comment 38 Marcel de Rooy 2022-11-09 13:21:56 UTC
Well, probably this needs a lot of additional configuration and I dont know where to find all that stuff.. In short, cant test it without documentation.
Comment 39 Jonathan Druart 2022-11-09 13:32:31 UTC
(In reply to Marcel de Rooy from comment #36)
> File not found : js/vue/dist/main.js at
> /usr/share/koha/Koha/Template/Plugin/Asset.pm line 84.
> 
> Does this module not work on a dev install ?

`yarn build_js` will generate it
Should have been done by Tomas, as we agreed on...
Comment 40 Jonathan Druart 2022-11-09 13:33:18 UTC
(In reply to Marcel de Rooy from comment #38)
> Well, probably this needs a lot of additional configuration and I dont know
> where to find all that stuff.. In short, cant test it without documentation.

See comment 26, and kohadocs repo.
Comment 41 Pedro Amorim 2022-11-09 17:57:18 UTC
Outstanding issue related to primary key of erm_user_roles table created at https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=32154
Comment 42 Jonathan Druart 2022-11-10 06:34:39 UTC
(In reply to Jonathan Druart from comment #39)
> (In reply to Marcel de Rooy from comment #36)
> > File not found : js/vue/dist/main.js at
> > /usr/share/koha/Koha/Template/Plugin/Asset.pm line 84.
> > 
> > Does this module not work on a dev install ?
> 
> `yarn build_js` will generate it
> Should have been done by Tomas, as we agreed on...

This was wrong, we agreed on generating them at releasing time. See https://lists.koha-community.org/pipermail/koha-devel/2022-November/047385.html for more details.
Comment 43 Jonathan Druart 2022-11-17 10:11:58 UTC
Update - koha-testing-docker and misc4dev have been updated to run `yarn build_js` when the container is setting up (during the `reset_all` step).

Which means the eRM module is now working out of the box in ktd, and ready to test new patches on sandboxes.