Skip to content

Centralized Organization Management and Registry#463

Open
coltonbooth wants to merge 20 commits into
developmentfrom
feature/central-org-mgmt
Open

Centralized Organization Management and Registry#463
coltonbooth wants to merge 20 commits into
developmentfrom
feature/central-org-mgmt

Conversation

@coltonbooth

Copy link
Copy Markdown
Member

Summary
This PR introduces a centralized Organization Registry to ensure consistency across metadata records. It replaces free-text organization entry with a searchable
registry, while providing a workflow for users to request new organizations and for admins to manage them.

Key Features

  1. Organization Registry & Search
  • Registry Autocomplete: Replaced the standard text field in the ContactEditor with an Autocomplete component linked to the central registry.
  • Alias/Acronym Support: Search logic now checks English names, French names, and "Accepted Name Variants" (e.g., searching for "DFO" will successfully find
    "Department of Fisheries and Oceans").
  1. User Request Workflow
  • Request Dialog: Users who cannot find their organization can submit a "Request New Organization" form.
  • Acronym Submission: Added a dedicated field for users to provide acronyms or alternative names during the request process.
  • Firebase Integration: Requests are stored in a new organizationRequests node in the Realtime Database.
  1. Administrative Dashboard
  • Management Page: A new OrganizationAdmin page allows authorized users to manage the registry.
  • Review & Edit: Admins can review pending requests and—crucially—edit the details (correcting typos or adding ROR IDs/acronyms) before final approval.
  • Seeding Tool: Included functionality to seed the registry from a JSON configuration.
  1. Security & Data Integrity
  • Database Rules: Updated database.rules.json to ensure only authenticated users can submit requests and only admins can manage the registry.
  • Slugification: Organizations are indexed by URL-friendly slugs for stable referencing across records.

Technical Changes

  • Frontend: New components OrganizationAdmin and RequestOrganizationDialog; updated ContactEditor and ContactTab.
  • Utilities: Centralized logic in firebaseOrganizationFunctions.js (CRUD) and organizationUtils.js (search/slugify).
  • Data Model: Updated blankRecord.js to include schemas for organizations and requests.

How to Test

  1. User Side:
    • Go to the Contact tab of any record.
    • Try searching the "Organization Registry" for an existing org (e.g., "Hakai").
    • Click "Request to add it" to submit a new organization with an acronym (e.g., Name: "Department of Fisheries and Oceans", Acronym: "DFO").
  2. Admin Side:
    • Navigate to the Organization Admin page.
    • Open the "Pending Requests" tab.
    • Click "Review" on the DFO request, edit any fields if necessary, and click "Approve".
    • Verify that searching "DFO" in the Contact Editor now returns the full organization name.

@github-actions

github-actions Bot commented Feb 20, 2026

Copy link
Copy Markdown

Visit the preview URL for this PR (updated for commit 2633701):

https://cioos-metadata-form-dev-258dc--pr463-feature-central-o-divf3089.web.app

(expires Fri, 17 Jul 2026 14:33:21 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: c9b6275cb4b6311b719349f5e25e457b5691d09c

@JessyBarrette

Copy link
Copy Markdown
Member

Its starting to take shape @coltonbooth one thing I can see missing in the form the logos associated to the organizations. CKAN gives the ability to have both a french and english version of them. Can you add this to the organization schema too :)

@JessyBarrette

Copy link
Copy Markdown
Member

Also the original form used to containt also an innput for the address, and email that are both missing from your form.

@JessyBarrette

JessyBarrette commented Feb 26, 2026

Copy link
Copy Markdown
Member

Here's a few things missing to todo:

Missing fields in the form

  • orgDescriptionEn
  • orgDescriptionFr
  • orgAddress
  • orgLogoEn / orgLogoEnUrl (?)
  • orgLogoFr / orgLogoFrUrl (?)
  • orgRorVersion
  • rename Accepted Name Variant by Aliases
  • orgSlug
    • Can be pregenerated by orgNameFr or orgNameEn: lowercase and non alphanumerical charcters replaced by (-)
    • Slug can also be modified by the user manually

Form Changes

  • Drop organization fields from the form and just keep the org selector.

Form Contact Items saved

What do we save in the contact specific fields?

Save organizations to github

Organization info and logos can be saved to github cioos-siooc/cioos-commons in a organizations directory.
Define that repo via a env variable.

Logos handling

  • Add comment to say svgs are preferable.
  • Accept still PNG, SVG, JPG? JPEG?
  • Logo cropping and resize:
    If we have a good tool to manage it could be nice
    • If scallers the images can be transform to a max size 250px width or length.
    • can be cropable

…d Rejected working as expected as well as sync from github. Using atomic commits and retry with exponential backoff
@JessyBarrette

JessyBarrette commented Mar 5, 2026

Copy link
Copy Markdown
Member

Nice that's starting to take shape. One thing with the organization form maybe, its a little all over the different components. It would be good regroup the different components together for clarity.

  • (identity)
    Labels, name slug
    Logos
    URL
    Description
  • (Aliases)
  • (Location)
    address, city, country
  • (Identifiers)
    ROR

Also another point, we used to have in the contact section a method to search the ROR API to retrieve an organization information. This was somewhat working but had a bunch of issues.

It would be good we could have the ability to search an organization via the ROR API and fill the approriate fields if possible (not all the fields are available in ROR).

@JessyBarrette

Copy link
Copy Markdown
Member

Also as mentioned in the standup, retrieve all the organizations listed in the different RA catalogues and try to populate an initial list of organizations to review.

We can should also retrieve the whole list of orgName listed for each contacts in the form. This is basically the list of responsible organizations in the catalogue.cioos.ca.

Colton Booth added 2 commits March 18, 2026 12:53
@JessyBarrette

Copy link
Copy Markdown
Member

Ok I had a quick look, I can now see some changes in the organization form. I still find it a little hard to read so I'll, have a quick look at it.

One issue I can see now is related to contacts that are already filled, they dont get accosiated to an organization. I'm wondering if this is because those orgs are within the pending state.

I think the best workflow would be to have contact organization be able to be matched to a pending organization but we want to block a submission of a dataset when a contact is associated to a pending state organization

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

2 participants