Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The following modules have no dependencies and can be easily divided into separate applications:

app-graphql-1.0.0.json

app-license-1.0.0.json

app-interaction-1.0.0.json

app-gobi-1.0.0.json

app-rtac-1.0.0.json

mod-grpahql

mod-licenses

mod-service-interaction

mod-gobi

mod-rtac

folio_licenses

folio_service-interaction

folio_gobi-settings

Candidates for Splitting with Minimal Changes:

The following modules can be divided into smaller applications if certain dependencies are resolved or eliminated entirely.

The primary candidate is the Notification application, which consists of five modules.

Please refer to the screenshot below:

graph_output.png

Questions:

Catalog of applications with modules, structured according to business operations and dependencies.

Below is a preliminary catalog of modules grouped by backend and UI within the application, based on the technical analysis. This catalog highlights applications that can be separated without requiring code changes.

Code Block
languagejson
{
  "applications": [
    {
      "id": "app-notification",
      "modules": [
        "mod-notify-3.2.1-SNAPSHOT.133",
        "mod-event-config-2.7.2-SNAPSHOT.67",
        "mod-sender-1.12.1-SNAPSHOT.50",
        "mod-batch-print-1.2.0-SNAPSHOT.11",
        "mod-email-1.17.1-SNAPSHOT.86",
        "mod-template-engine-1.20.1-SNAPSHOT.97"
      ]
    },
    {
      "id": "app-graphql",
      "modules": [
        "mod-graphql-1.12.1000355"
      ]
    },
    {
      "id": "app-license",
      "modules": [
        "mod-licenses-6.1.0-SNAPSHOT.258",
        "folio_licenses-11.1.10990000000022",
        "folio_plugin-find-license-11.1.10990000000014"
      ]
    },
    {
      "id": "app-interaction",
      "modules": [
        "mod-service-interaction-4.1.0-SNAPSHOT.118",
        "folio_plugin-find-interface-5.1.100000167",
        "folio_service-interaction-3.1.10990000000026",
        "folio_dashboard-6.1.10990000000044"
      ]
    },
    {
      "id": "app-gobi",
      "modules": [
        "mod-gobi-2.9.0-SNAPSHOT.240",
        "folio_gobi-settings-3.1.109000000424"
      ]
    },
    {
      "id": "app-rtac",
      "modules": [
        "mod-rtac-3.8.0-SNAPSHOT.98"
      ]
    },
    {
      "id": "app-list",
      "modules": [
        "folio_lists-3.0.209900000000432",
        "mod-fqm-manager-2.1.0-SNAPSHOT.354",
        "mod-lists-2.1.0-SNAPSHOT.97",
        "folio_plugin-query-builder-1.1.40990000000053"
      ]
    },
    {
      "id": "app-bulk-edit",
      "modules": [
        "folio_bulk-edit-4.1.4090000003083",
        "mod-bulk-operations-2.1.0-SNAPSHOT.268"
      ]
    },
    {
      "id": "app-bulk-edit",
      "modules": [
        "folio_bulk-edit-4.1.4090000003083",
        "mod-bulk-operations-2.1.0-SNAPSHOT.268"
      ]
    },
    {
      "id": "app-inventory",
      "modules": [
        "folio_inventory-12.0.1090000007895",
        "mod-inventory-storage-27.2.0-SNAPSHOT.1031",
        "mod-inventory-20.3.0-SNAPSHOT.794",
        "folio_plugin-find-instance-8.0.109000000741",
        "folio_plugin-find-package-title-6.1.100000316",
        "mod-inventory-update-3.4.2-SNAPSHOT.133",
        "folio_plugin-create-inventory-records-4.1.100000535"
      ]
    },
    {
      "id": "app-organization",
      "modules": [
        "folio_organizations-5.1.100000787",
        "mod-organizations-2.0.0-SNAPSHOT.62",
        "mod-organizations-storage-4.8.0-SNAPSHOT.106",
        "folio_plugin-find-contact-5.1.100000172",
        "folio_plugin-find-interface-5.1.100000167",
        "folio_plugin-find-organization-5.1.109000000259"
      ]
    },
    {
      "id": "app-orders",
      "modules": [
        "folio_orders-6.0.4090000001749",
        "mod-orders-12.9.0-SNAPSHOT.947",
        "mod-orders-storage-13.8.0-SNAPSHOT.384",
        "folio_plugin-find-po-line-5.1.100000285",
        "folio_acquisition-units-5.1.100000246",
        "mod-ebsconet-2.3.0-SNAPSHOT.78"
      ]
    },
    {
      "id": "app-data-export",
      "modules": [
        "folio_export-manager-3.1.109000000587",
        "folio_data-export-6.1.1090000001023",
        "mod-data-export-worker-3.3.0-SNAPSHOT.514",
        "mod-data-export-spring-3.3.1-SNAPSHOT.276",
        "mod-data-export-5.1.0-SNAPSHOT.435",
        "folio_plugin-bursar-export-4.0.20990000000096"
      ]
    },
    {
      "id": "app-data-import",
      "modules": [
        "folio_data-import-7.1.8090000002696",
        "mod-data-import-3.2.0-SNAPSHOT.304",
        "mod-di-converter-storage:2.3.0-SNAPSHOT.61",
        "folio_plugin-find-import-profile-7.1.100000232",
        "mod-source-record-manager-3.9.0-SNAPSHOT.967",
        "folio_plugin-find-import-profile-7.1.100000232",
        "mod-source-record-storage-5.9.0-SNAPSHOT.634",
        "mod-di-converter-storage-2.3.0-SNAPSHOT.61"
      ]
    },
    {
      "id": "app-agreement",
      "modules": [
        "folio_agreements-11.1.109900000000173",
        "mod-agreements-7.1.0-SNAPSHOT.718",
        "folio_plugin-find-eresource-7.1.1099000000008",
        "folio_plugin-find-agreement-11.1.10990000000011",
        "folio_local-kb-admin-8.1.10990000000011"
      ]
    },
    {
      "id": "app-search",
      "modules": [
        "mod-search-3.3.0-SNAPSHOT.597"
      ]
    },
    {
      "id": "app-authority",
      "modules": [
        "folio_marc-authorities-5.1.1090000007641",
        "mod-entities-links-3.1.0-SNAPSHOT.281",
        "folio_stripes-authority-components-4.1.109000000959",
        "folio_stripes-marc-components-1.0.10000093"
      ]
    },
    {
      "id": "app-serials",
      "modules": [
        "mod-serials-management-1.1.0-SNAPSHOT.108",
        "folio_serials-management-1.1.10990000000070"
      ]
    },
    {
      "id": "app-oai",
      "modules": [
        "folio_oai-pmh-5.1.109000000422",
        "mod-oai-pmh-3.14.0-SNAPSHOT.354"
      ]
    },
    {
      "id": "app-courses",
      "modules": [
        "folio_courses-6.1.109000000458",
        "mod-courses-1.4.11-SNAPSHOT.161"
      ]
    },
    {
      "id": "app-circulation",
      "modules": [
        "mod-audit-2.9.1-SNAPSHOT.168",
        "mod-circulation-storage-17.3.0-SNAPSHOT.417",
        "mod-circulation-24.3.0-SNAPSHOT.1253",
        "mod-calendar-3.2.0-SNAPSHOT.169",
        "folio_circulation-9.2.1090000002242",
        "folio_calendar-11.0.2099000000006",
        "folio_remote-storage-5.1.109000000315",
        "mod-remote-storage-3.2.1-SNAPSHOT.206",
        "folio_circulation-log-4.1.109000000440",
        "mod-ncip-1.15.2-SNAPSHOT.88",
        "folio_receiving-5.0.5090000001301",
        "folio_requests-9.2.1090000002996",
        "folio_checkin-9.2.109000000876",
        "folio_checkout-11.0.1090000001088",
        "mod-patron-blocks-1.11.0-SNAPSHOT.100",
        "mod-feesfines-19.2.0-SNAPSHOT.230"
      ]
    },
    {
      "id": "app-users",
      "modules": [
        "folio_users-11.0.1090000005958",
        "mod-patron-6.2.0-SNAPSHOT.136",
        "mod-user-import-3.9.0-SNAPSHOT.100"
      ]
    },
    {
      "id": "app-finances",
      "modules": [
        "folio_finance-6.0.109000000868",
        "mod-finance-5.0.0-SNAPSHOT.257",
        "mod-finance-storage-8.7.0-SNAPSHOT.364",
        "folio_plugin-find-fund-3.1.100000171"
      ]
    },
    {
      "id": "app-invoice",
      "modules": [
        "folio_invoice-6.0.4090000001067",
        "mod-invoice-5.9.0-SNAPSHOT.445",
        "mod-invoice-storage-5.9.0-SNAPSHOT.161"
      ]
    },
    {
      "id": "app-quick-marc",
      "modules": [
        "folio_quick-marc-9.0.1090000002742",
        "mod-quick-marc-5.2.0-SNAPSHOT.294",
        "mod-invoice-storage-5.9.0-SNAPSHOT.161"
      ]
    }
  ]
}

A dependency graph of applications divided by business operations.

The diagram below shows a graph representing all dependencies between the applications listed in the catalog. The graph includes applications without circular dependencies, which can be split independently; however, some applications have circular dependencies that must be resolved before further separation into smaller components.

...

The teams assigned to manage the maintenance of the newly split applications.

Application

Team

app-graphql

Thor

app-license-1.0.0

Bienenvolk

app-interaction

Bienenvolk

app-gobi-1.0.0

Thunderjet

app-rtac-1.0.0

Dreamliner

app-oai

Firebird

app-serials

K-Int

Decision record

Based on our discussion, we have agreed not to add additional functionality in EUREKA to manage circular dependencies. Instead, we’ll ask the team to resolve these dependencies first, allowing us to split them into smaller applications further once ready. Simultaneously, we have agreed to split approximately seven smaller applications during the Sunflower release and assign the appropriate team for future maintenance. Additionally, we identified one candidate application, app-organization, which can be split if the Sunflower team can do so during the release.

Conclusion

To continue applying the algorithm, we can attempt to group certain modules within the applications and create stories for the team, outlining the required changes and how to implement them. However, this process must still be aligned with subject matter experts, who will also work on splitting modules into applications, and then negotiate an approach that strikes a balance.

...

Spike Status:

Status
colourYellow
titleIn Progress

View file
nameapp-graph-1.0.0.json
View file
nameapp-interaction-1.0.0.json
View file
nameapp-license-1.0.0.json
View file
nameapp-gobi-1.0.0.json

View file
nameapp-rtac-1.0.0.json