Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pr 2026 d #41

Merged
merged 66 commits into from
Nov 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
d060db6
open development branch
ihardy May 14, 2024
b73ec84
PR-1709 Implement NCIP RequestItem function
JanisSaldabols May 3, 2024
3a395c5
PR-1709 Fix problem with missing Scheme attribute
JanisSaldabols May 17, 2024
b88bc5f
PR-1709 Add other scheme class
JanisSaldabols May 17, 2024
677d278
PR-1709 Add option to make title level request
JanisSaldabols May 20, 2024
8e0bfdf
PR-1709 Make valid response with all mandatory fields
JanisSaldabols May 21, 2024
5b5cb73
PR-1709 Use user barcode for request item
JanisSaldabols May 22, 2024
b1a1a18
PR-1709 Log properties
JanisSaldabols May 22, 2024
700f9c6
PR-1709 Log properties
JanisSaldabols May 22, 2024
d17441e
PR-1709 remove properties logging
JanisSaldabols May 22, 2024
1f61090
PR-1758 Set service point by code
JanisSaldabols May 27, 2024
fd1baee
PR-1758 Use pickup location to set service point
JanisSaldabols May 27, 2024
77b42fb
PR-1776 Return loan id on check out
JanisSaldabols Jun 3, 2024
ba5046d
PR-1777 Return requester id in request item call
JanisSaldabols Jun 3, 2024
5a0c3f2
PR-1781 Return loan id, user id and fix request id
JanisSaldabols Jun 17, 2024
d8d533b
PR-1786 Implement NCIP CancelRequestItem
JanisSaldabols Jun 18, 2024
aac39db
PR-1786 Implement NCIP CancelRequestItem
JanisSaldabols Jun 18, 2024
034fd7a
PR-1786 Implement NCIP CancelRequestItem
JanisSaldabols Jun 18, 2024
c51dfca
PR-1786 Try to fix missing entity
JanisSaldabols Jun 18, 2024
05975b8
PR-1786 Add integration test
JanisSaldabols Jun 19, 2024
4e7ccfe
PR-1786 Rename for maven to pass
JanisSaldabols Jun 19, 2024
30e8e59
PR-1786 Return item id
JanisSaldabols Jun 19, 2024
9cfc3c6
PR-1785 Implement NCIP DeleteItem
JanisSaldabols Jun 20, 2024
4696282
PR-1785 Implement NCIP DeleteItem
JanisSaldabols Jun 21, 2024
893c165
PR-1814 Check user pin
JanisSaldabols Jul 2, 2024
225485f
PR-1821 Add default patron fee option (#27)
JanisSaldabols Jul 23, 2024
c045244
PR-1861 Implement CreateUserFiscalTransaction for charging fees (#29)
JanisSaldabols Aug 2, 2024
8fb83c2
PR-1861 Return user UUID and Fee UUID (#31)
JanisSaldabols Aug 5, 2024
fe40253
PR-1876 Add item ID to fee in barcode
JanisSaldabols Aug 13, 2024
246cee8
PR-1906 Add ILL request id to ILS request and loan
JanisSaldabols Aug 20, 2024
784b715
PR-1908 Add item uuid to AcceptItem
JanisSaldabols Aug 22, 2024
120a07f
PR-1910 Add item soft delete option
JanisSaldabols Aug 27, 2024
04df33f
PR-1910 Fix failing test
JanisSaldabols Aug 27, 2024
44f84e4
PR-1926 Return location structure
JanisSaldabols Sep 3, 2024
3309970
PR-1926 Return location structure
JanisSaldabols Sep 3, 2024
aa80dc7
PR-1798 Update extensiblecatalog ncip version to 4.1.0
JanisSaldabols Sep 3, 2024
3a3ae4c
PR-1798 Fix Sonar findings
JanisSaldabols Sep 4, 2024
be3516b
Merge pull request #102 from indexdata/PR-1709-dev
JanisSaldabols Sep 4, 2024
827324b
Update NEWS.md file
JanisSaldabols Sep 4, 2024
67a76f5
[maven-release-plugin] prepare release v1.15.0
JanisSaldabols Sep 4, 2024
1f286bf
[maven-release-plugin] prepare for next development iteration
JanisSaldabols Sep 4, 2024
9980233
Merge pull request #103 from folio-org/v1.15.0-branch
JanisSaldabols Sep 4, 2024
4c28ab7
Fix error of building release v1.15.0
JanisSaldabols Sep 4, 2024
9b22743
prepare for next development iteration
JanisSaldabols Sep 4, 2024
281c51a
MODNCIP-71: Upgrade dependencies for Ramsons
julianladisch Sep 10, 2024
f136632
Merge pull request #101 from folio-org/MODNCIP-71-dependencies-ramsons
julianladisch Sep 10, 2024
030c2a0
MODNCIP-68 Add option to specify item location in RequestItem call
JanisSaldabols Sep 10, 2024
4fbc3d5
MODNCIP-68 Add callNumber to CheckOutItem response
JanisSaldabols Sep 25, 2024
84880d9
Tmp release 1.15.1 (#106)
JanisSaldabols Oct 3, 2024
e430647
Update permissions list in README file (#107)
JanisSaldabols Oct 7, 2024
49d6736
Update permissions list in README file (#108)
JanisSaldabols Oct 7, 2024
92faa91
Return user UUID in LookupUser call (#109)
JanisSaldabols Oct 8, 2024
4c3c286
Tmp release 1.15.2 (#110)
JanisSaldabols Oct 9, 2024
3f4039b
Update ModuleDescriptor-template.json MODNCIP-75 (#111)
mis306lu Oct 9, 2024
d5cfecb
Add missing NCIP user rights (#112)
JanisSaldabols Oct 10, 2024
9049ca9
MODNCIP-76 - Upgrade "holdings-storage" API (#113)
SvitlanaKovalova1 Oct 16, 2024
0894ba3
Updating documentation & permissions (#114)
mis306lu Oct 22, 2024
17f977f
Update ncip.properties testing alternative default configs (#115)
mis306lu Oct 28, 2024
b8f2ada
Correcting permissions in readme - adding to descriptor (#116)
mis306lu Oct 29, 2024
01fab08
Update NEWS.md update date in news.md (#117)
mis306lu Oct 31, 2024
46c1a7f
PR-2025 Fix URL unsupported character problem in fee search (#118)
JanisSaldabols Nov 11, 2024
5a9a9e9
Update NEWS.md file
JanisSaldabols Nov 11, 2024
2d65b98
[maven-release-plugin] prepare release v1.15.4
JanisSaldabols Nov 11, 2024
9f34917
[maven-release-plugin] prepare for next development iteration
JanisSaldabols Nov 11, 2024
7fe75b8
PR-2026 Change request fulfillment preference configurable
JanisSaldabols Nov 12, 2024
4b47b94
Merge branch 'development' into PR-2026-D
JanisSaldabols Nov 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
## 1.15.0 2024-06-10
## 1.15.4 2024-11-11
* Update documentation
* Clean configuration
* Fix bug in fee search

## 1.15.3 2024-10-31
* [MODNCIP-75](https://folio-org.atlassian.net/browse/MODNCIP-75) inventory API version update (13.0 to 14.0)
* [MODNCIP-76](https://folio-org.atlassian.net/browse/MODNCIP-76) Upgrade `holdings-storage` to 8.0
* Update modulePermissions for new services

## 1.15.2 2024-10-08
* Return user UUID in LookupUser call

## 1.15.1 2024-10-03
* [MODNCIP-71](https://folio-org.atlassian.net/browse/MODNCIP-71) Upgrade dependencies for Ramsons
* [MODNCIP-68](https://folio-org.atlassian.net/browse/MODNCIP-68) Add callNumber to CheckOutItem response

## 1.15.0 2024-09-04
* [MODNCIP-69](https://folio-org.atlassian.net/browse/MODNCIP-69) API version update (mod-inventory-storage)
* [MODNCIP-67](https://folio-org.atlassian.net/browse/MODNCIP-67) mod-ncip v1.14.X asserts compatibility with circulation interface v12 and 13 but actually requires v14
* [PR-1709](https://openlibraryfoundation.atlassian.net/browse/PR-1709) Implement NCIP RequestItem function in FOLIO mod-ncip
* [PR-1786](https://openlibraryfoundation.atlassian.net/browse/PR-1786) Implement NCIP CancelRequestItem
* [PR-1785](https://openlibraryfoundation.atlassian.net/browse/PR-1785) Implement NCIP DeleteItem
* [PR-1814](https://openlibraryfoundation.atlassian.net/browse/PR-1814) Check user pin
* [PR-1861](https://openlibraryfoundation.atlassian.net/browse/PR-1861) Implement CreateUserFiscalTransaction for charging fees
* [PR-1910](https://openlibraryfoundation.atlassian.net/browse/PR-1910) Add item soft delete option
## 1.14.5 2024-04-04
* [MODNCIP-65](https://folio-org.atlassian.net/browse/MODNCIP-65) if preferredFirstName is present use in lookupUserResponse
## 1.14.4 2023-10-25
Expand Down
65 changes: 37 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,13 @@ NISO Circulation Interchange Protocol (NCIP) support in FOLIO
## Preparation
1. The NCIP module requires a FOLIO user with the following permissions:
```
ncip.all
inventory-storage.items.collection.get
ui-circulation.settings.overdue-fines-policies
ui-circulation.settings.lost-item-fees-policies
automated-patron-blocks.collection.get
circulation-storage.circulation-rules.get
manualblocks.collection.get

ncip.all
inventory-storage.items.collection.get
ui-circulation.settings.lost-item-fees-policies
ui-circulation.settings.overdue-fines-policies
automated-patron-blocks.collection.get
circulation-storage.circulation-rules.get
manualblocks.collection.get
```
### IMPORTANT NOTE ABOUT FOLIO USER - It has to be assigned a patron group. There is an issue with 'create item' which requires the user to be assigned a patron group.

Expand Down Expand Up @@ -48,6 +47,8 @@ NISO Circulation Interchange Protocol (NCIP) support in FOLIO
* (18) request.note.name Request note name. Default value "ILL note"
* (19) request.note.enabled Request note enabled. Will add ILL request ID to loan and ILS request. Default value `false`
* (20) item.soft.delete DeleteItem will use soft delete or delete entities. Default value `true`
* (21) request.fulfillment_preference ILS request fulfillment preference when RequestItem. Default value `Hold Shelf`
* (22) request.accept.fulfillment_preference ILS request fulfillment preference when AcceptItem. Default value `Hold Shelf`

Notes
* You can assign different values to these settings per Agency ID used in the NCIP requests. This approach lets you setup different values for different Agency IDs. For example, if Relais calls your NCIP server with the Agency ID of 'Relais' you can configure values for that agency. If ReShare calls your NCIP server using a different Agency ID, you can set up different configuration values to be used for ReShare requests. These settings have to exist for each Agency ID that will be used in the NCIP requests.
Expand Down Expand Up @@ -140,26 +141,29 @@ There are three types of settings that can exist in mod-configuration for the NC

#### NCIP Properties

| MODULE | configName (the AgencyID) | code | value (examples) |
|-----------|:-------------------------:|:-----------------------------------|-------------------:|
| NCIP | Relais | instance.type.name | RESHARE |
| NCIP | Relais | instance.source | RESHARE |
| NCIP | Relais | item.material.type.name | RESHARE |
| NCIP | Relais | item.perm.loan.type.name | RESHARE |
| NCIP | Relais | item.status.name | Available |
| NCIP | Relais | item.perm.location.code | RESHARE_DATALOGISK |
| NCIP | Relais | holdings.perm.location.code | RESHARE_DATALOGISK |
| NCIP | Relais | instance.custom.identifier.nam | ReShare Request ID |
| NCIP | Relais | checkout.service.point.code | online |
| NCIP | Relais | checkin.service.point.code | online |
| NCIP | Relais | response.includes.physical.address | false |
| NCIP | Relais | user.priv.ok.status | OK |
| NCIP | Relais | user.priv.blocked.status | BLOCKED |
| NCIP | Relais | cancel.request.reason.name | Item Not Available |
| NCIP | Relais | cancel.request.reason.patron.name | Item Not Available |
| NCIP | Relais | request.note.name | ILL note |
| NCIP | Relais | request.note.enabled | false |
| NCIP | Relais | item.soft.delete | true |
| MODULE | configName (the AgencyID) | code | value (examples) |
|-----------|:-------------------------:|:--------------------------------------|-------------------:|
| NCIP | Relais | instance.type.name | RESHARE |
| NCIP | Relais | instance.source | RESHARE |
| NCIP | Relais | item.material.type.name | RESHARE |
| NCIP | Relais | item.perm.loan.type.name | RESHARE |
| NCIP | Relais | item.status.name | Available |
| NCIP | Relais | item.perm.location.code | RESHARE_DATALOGISK |
| NCIP | Relais | holdings.perm.location.code | RESHARE_DATALOGISK |
| NCIP | Relais | instance.custom.identifier.nam | ReShare Request ID |
| NCIP | Relais | checkout.service.point.code | online |
| NCIP | Relais | checkin.service.point.code | online |
| NCIP | Relais | response.includes.physical.address | false |
| NCIP | Relais | user.priv.ok.status | OK |
| NCIP | Relais | user.priv.blocked.status | BLOCKED |
| NCIP | Relais | cancel.request.reason.name | Item Not Available |
| NCIP | Relais | cancel.request.reason.patron.name | Item Not Available |
| NCIP | Relais | request.note.name | ILL note |
| NCIP | Relais | request.note.enabled | false |
| NCIP | Relais | item.soft.delete | true |
| NCIP | Relais | user.email.type | mailto |
| NCIP | Relais | request.fulfillment_preference | Hold Shelf |
| NCIP | Relais | request.accept.fulfillment_preference | Hold Shelf |


You will need a set of these settings in mod-configuration for each individual Agency ID making NCIP requests. Example of an AgencyID in an NCIP request:
Expand Down Expand Up @@ -254,6 +258,11 @@ Sample XML Request:

https://github.com/folio-org/mod-ncip/blob/master/docs/sampleNcipMessages/checkInItem.xml

##### Delete Item
##### Request Item
##### Cancel Request Item
##### Create User Fiscal Transaction

### About the Extensible Catalog NCIP Toolkit

The eXtensible Catalog (XC) NCIP Toolkit was developed as a stand-alone Web application that would receive NCIP requests, communicate with your ILS (via a ‘connector’) and send back an XML response.
Expand Down
20 changes: 17 additions & 3 deletions descriptors/ModuleDescriptor-template.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
"automated-patron-blocks.collection.get",
"addresstypes.collection.get",
"circulation.requests.item.post",
"circulation-storage.circulation-rules.get",
"circulation-storage.cancellation-reasons.collection.get",
"ui-circulation.settings.overdue-fines-policies",
"ui-circulation.settings.lost-item-fees-policies",
"inventory-storage.all",
Expand All @@ -29,18 +31,30 @@
"configuration.entries.item.get",
"usergroups.item.get",
"manualblocks.collection.get",
"note.types.collection.get",
"accounts.collection.get",
"circulation.check-out-by-barcode.post",
"circulation.check-in-by-barcode.post",
"circulation.loans.collection.get",
"circulation.requests.collection.get",
"inventory.instances.item.post",
"inventory.instances.item.delete",
"inventory-storage.holdings.item.delete",
"inventory.items.collection.get",
"inventory.items.item.delete",
"inventory.items.item.put",
"inventory.instances.collection.get",
"inventory.instances.item.delete",
"inventory-storage.holdings.item.post",
"inventory-storage.service-points-users.collection.get",
"inventory.items.item.post",
"inventory-storage.service-points.item.get"
"inventory-storage.service-points.item.get",
"owners.collection.get",
"feefines.collection.get",
"accounts.item.post",
"circulation.requests.item.get",
"circulation.requests.item.put",
"note.types.collection.get"
]
},
{
Expand Down Expand Up @@ -93,11 +107,11 @@
},
{
"id":"holdings-storage",
"version":"7.0"
"version":"6.0 7.0 8.0"
},
{
"id":"inventory",
"version":"10.2 11.0 12.0 13.0"
"version":"10.2 11.0 12.0 13.0 14.0"
},
{
"id":"circulation",
Expand Down
53 changes: 21 additions & 32 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.folio</groupId>
<artifactId>mod-ncip</artifactId>
<version>1.14.6-SNAPSHOT</version>
<version>1.15.5-SNAPSHOT</version>
<name>NCIP</name>
<description>NCIP responder for FOLIO (internal module)</description>

Expand All @@ -15,7 +15,7 @@
</licenses>

<properties>
<vertx.version>4.4.6</vertx.version>
<vertx.version>4.5.10</vertx.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
Expand Down Expand Up @@ -45,18 +45,18 @@
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.16.0</version>
<version>1.17.1</version>
</dependency>
<!--ncip toolkit dependencies start -->
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
<version>5.3.2</version>
<groupId>com.github.dozermapper</groupId>
<artifactId>dozer-core</artifactId>
<version>7.0.0</version>
<exclusions>
<exclusion>
<groupId>commons-beanutils</groupId>
Expand All @@ -67,7 +67,7 @@
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
<version>2.3.9</version>
</dependency>
<dependency>
<groupId>org.extensiblecatalog.ncip.v2</groupId>
Expand Down Expand Up @@ -134,49 +134,44 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.36</version>
</dependency>
<dependency>
<groupId>org.folio</groupId>
<artifactId>util</artifactId>
<version>35.0.6</version>
<version>35.2.2</version>
</dependency>
<dependency>
<groupId>org.folio.okapi</groupId>
<artifactId>okapi-common</artifactId>
<version>5.1.1</version>
<version>6.0.2</version>
</dependency>
<!-- Test dependencies -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<artifactId>hamcrest</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.1.0</version>
<version>5.13.0</version>
<scope>test</scope>
</dependency>
<dependency>
Expand All @@ -193,13 +188,7 @@
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.restassured</groupId>
<artifactId>xml-path</artifactId>
<version>2.9.0</version>
<version>5.5.0</version>
<scope>test</scope>
</dependency>

Expand Down Expand Up @@ -252,17 +241,17 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.13.0</version>
<configuration>
<release>11</release>
<release>17</release>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<version>3.3.1</version>
<executions>
<execution>
<id>filter-descriptor-inputs</id>
Expand All @@ -287,7 +276,7 @@
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0</version>
<version>1.0.1</version>
<executions>
<execution>
<id>rename-descriptor-outputs</id>
Expand All @@ -314,7 +303,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<version>3.5.0</version>
<configuration>
<includes>
<include>**/*Test.java</include>
Expand All @@ -326,7 +315,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4</version>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
Expand All @@ -353,7 +342,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<version>3.1.1</version>
<configuration>
<preparationGoals>clean verify</preparationGoals>
<tagNameFormat>v@{project.version}</tagNameFormat>
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/org/folio/ncip/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ public class Constants {
public static final String BLOCKED = "BLOCKED";
public static final String OK = "OK";
public static final String ID = "id";
public static final String TITLE = "title";
public static final String STATUS = "status";
public static final String REQUEST_LEVEL = "requestLevel";
public static final String TOTAL_RECORDS = "totalRecords";
public static final String HOLDINGS_RECORD_ID = "holdingsRecordId";
public static final String LOCATION = "location";
public static final String AUTH_UID = "Username";
public static final String AUTH_BARCODE = "Barcode Id";
public static final String ACTIVE = "ACTIVE";
Expand Down
5 changes: 1 addition & 4 deletions src/main/java/org/folio/ncip/FolioNcipHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,8 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
Expand Down Expand Up @@ -320,7 +317,7 @@ public void initNcipProperties(RoutingContext context) throws Exception {
}

ncipProperties.put(tenant, properties);
logger.info("Has tenant properties " + (ncipProperties.get(tenant) != null));
logger.info("Has tenant properties {}", (ncipProperties.get(tenant) != null));
}


Expand Down
Loading
Loading