{"id":18360796,"url":"https://github.com/unb-libraries/isdsbr","last_synced_at":"2025-04-10T03:37:52.526Z","repository":{"id":138630299,"uuid":"409932214","full_name":"unb-libraries/isdsbr","owner":"unb-libraries","description":"Islandora-Dspace data bridge - automated Islandora-Dspace migrations","archived":false,"fork":false,"pushed_at":"2023-06-20T16:45:14.000Z","size":656,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":7,"default_branch":"1.x","last_synced_at":"2025-02-15T18:53:27.648Z","etag":null,"topics":["dspace","islandora","php","robo"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unb-libraries.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-24T11:02:52.000Z","updated_at":"2024-10-03T17:59:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"d4337969-41de-4fd9-96da-914ba1ef8119","html_url":"https://github.com/unb-libraries/isdsbr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unb-libraries%2Fisdsbr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unb-libraries%2Fisdsbr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unb-libraries%2Fisdsbr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unb-libraries%2Fisdsbr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unb-libraries","download_url":"https://codeload.github.com/unb-libraries/isdsbr/tar.gz/refs/heads/1.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248154010,"owners_count":21056534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dspace","islandora","php","robo"],"created_at":"2024-11-05T22:29:51.214Z","updated_at":"2025-04-10T03:37:52.503Z","avatar_url":"https://github.com/unb-libraries.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Islandora-Dspace Bridge\n## Automated Islandora-Dspace Migrations\nAt UNB Libraries, we are migrating all objects from our legacy (bare-metal hosted) Drupal 7 Islandora application into a\n(k8s-deployed) DSpace 7 application. __isdsbr__ is a PHP application written to automate this process. Unless you are also\ndoing exactly this, __isdsbr__ is unlikely to be of use to you. \n\n## Prerequisites\n#### General Requirements\nAlthough __isdsbr__ can be deployed on OSX, the only officially supported operating system is Linux.\n\n#### Software Prerequisites\nYou must have the following tools available for use from the command line:\n\n* [PHP8.0+](https://php.org/): Install via ```apt-get install php-cli```\n* Various PHP Extensions: Install via ```apt-get install php-curl php-ctype php-dom php-gd php-mbstring php-posix php-yaml php-zip```\n* [composer](https://getcomposer.org/): Installation steps [are located here](https://getcomposer.org/download/).\n\n#### Networking\n__isdsbr__ requires your local workstation to make HTTP, HTTPS, SSH and kubectl requests to the Solr, Islandora and\nDSpace hosts. These requests must not be blocked. If you use a proxy server to connect to the web or SSH, you must also\nconfigure your OS to use that proxy by default.\n\n## Initial Setup\n```\ncomposer install\n```\n\n## Workflow\nThe entire process is performed via a series of commands:\n\n### isdsbr:export\nExports Islandora objects to a local path.\n```\n./isdsbr isdsbr:export /tmp/exportFedora\n```\n\n#### Details\n* Uses [standard Solr queries](https://github.com/unb-libraries/isdsbr/blob/1.x/isdsbr.yml.sample#L5), and queries the\nIslandora Solr instance to discover objects targeted for export.\n* Connects (via ssh) to the [fedora host](https://github.com/unb-libraries/isdsbr/blob/1.x/isdsbr.yml.sample#L43) and\nexport the target objects (and associated bitstreams) with ```fedora-export.sh``` to a temporary folder.\n* Copies those objects via ssh to the local path (/tmp/exportFedora).\n  * [Collections](https://github.com/unb-libraries/isdsbr/blob/1.x/isdsbr.yml.sample#L2) are written to separate local\nfolders within the target path, and the target DSpace collection IDs are written to a metadata file within each folder.\n\n### isdsbr:crosswalk\nCrosswalks the Islandora (MODS based) data from a local path into the Dublin Core based Simple Archive Format.\n```\n./isdsbr isdsbr:crosswalk /tmp/exportFedora /tmp/importDspace\n```\n\n#### Details\n* Uses the [configured field map](https://github.com/unb-libraries/isdsbr/blob/1.x/isdsbr.yml.sample#L6) and\n[migrates](https://github.com/unb-libraries/isdsbr/blob/1.x/field_maps/thesis.yml) the MODS metadata and PDF bitstreams\nfor all objects (located in /tmp/exportFedora) to a Dublin Core based Simple Archive Format (/tmp/importDspace).\n  * The first level of folders within the source path is considered to be a collection delimiter, and preserved in the\ntarget output.\n\n### isdsbr:import\nImports the Dublin Core based Simple Archive Format into DSpace.\n```\n./isdsbr isdsbr:import /tmp/importDspace unbscholar-dspace-lib-unb-ca-cd47bfccc-74p7g prod\n```\n\n#### Details\n* The first level of folders within the source path (/tmp/importDspace) is considered to be a collection delimiter.\n* For each collection:\n  * Reads the target DSpace collection from a metadata file.\n  * Compresses, copies a zip file of the objects (via kubectl) to the target DSpace k8s pod \n(name: unbscholar-dspace-lib-unb-ca-645f6fc74b-6rsd7 namespace:prod).\n  * (via kubectl) Extracts the archive and imports the set of objects into the target DSpace collection using\n```dspace import```.\n  * Executes (via kubectl) a ```dspace filter-media``` command on the target DSpace collection.\n  * Copies the generated import map file to this repository's\n[import_maps](https://github.com/unb-libraries/isdsbr/tree/1.x/import_maps) path, naming it appropriately.\n\n\n### isdsbr:import:revert\nReverts a previous DSpace import.\n```\n./isdsbr isdsbr:import:revert ./import_maps/dspace_import_map-1634640294-biology_theses_dissertations.txt unbscholar-dspace-lib-unb-ca-cd47bfccc-74p7g prod\n```\n\n#### Details\n* Copies the desired import_map to revert (./import_maps/dspace_import_map-1634640294-biology_theses_dissertations.txt)\nvia kubectl to the target DSpace k8s pod (name: unbscholar-dspace-lib-unb-ca-cd47bfccc-74p7g namespace:prod).\n* Executes (via kubectl) a ```dspace import -d```.\n\n## Releases\n__isdsbr__ releases are not tagged according to semantic versioning. Using the HEAD commit is recommended.\n\nWe add features to the product often, and deprecate quickly. Expect rapid development that introduces backwards-incompatible changes.\n\n## Author / Contributors\nThis application was created at [![UNB Libraries](https://github.com/unb-libraries/assets/raw/master/unblibbadge.png \"UNB Libraries\")](https://lib.unb.ca) by the following humans:\n\n\u003ca href=\"https://github.com/JacobSanford\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/244894?v=3\" title=\"Jacob Sanford\" width=\"128\" height=\"128\"\u003e\u003c/a\u003e\n\nWe gladly accept improvements and contributions, and if you would like to help improve __isdsbr__, please forward a Pull Request.\n\n## License\n- As part of our 'open' ethos, UNB Libraries licenses its applications and workflows to be freely available to all whenever possible.\n- Consequently, the contents of this repository [unb-libraries/isdsbr] are licensed under the [MIT License](http://opensource.org/licenses/mit-license.html). This license explicitly excludes:\n    - Any website content, which remains the exclusive property of its author(s).\n    - The UNB logo and any of the associated suite of visual identity assets, which remains the exclusive property of the University of New Brunswick.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funb-libraries%2Fisdsbr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funb-libraries%2Fisdsbr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funb-libraries%2Fisdsbr/lists"}