Versions Compared

Key

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

Status
colourYellow
titlePAGE IN PROGRESS

...

When starting with the Open Access app there are a number of planning tasks and system setup tasks that will need to be completed in advance. A detailed overview of them is available >>> here <<<. 

This includes:

  • Request and Publication setup
    • Request numbering
    • Closure reasons
    • Publishers
    • Licenses
    • Publication identifiers
    • Publication subtypes
  • Charge setup
    • Charge category
    • Default tax rate
    • Payer
  • People setup
    • Institution level
  • Correspondence setup
    • Correspondence category
      Correspondence mode
      Correspondence status
  • Funding details setup
    • Aspect funded
    • Funder
  • Checklist setup
    • Checklist items

There ist also a wonderful description how to add pick list (aka reference data) values via the API >>> here <<<.

In some fields of the data to be imported, references to settings values have to be made in form of UUID or string value references. For this reason, all settings that play a role in the migration must be present in the target system before data import. 

...

Class

UI field

JSON Field

Relationship / Dependency

Type of reference

Example

Journals (works)

API: oa/works/citation

Instance / Namespace

/"instances"/"ids"/"ns"

UI: Settings/Pick list: PublicationIdentifier.Type

API: /oa/refdata

string

issn



/"instances"/"subType"




/"indexedInDOAJ"/




/"oaStatus"/


People (party)

API: oa/party

Institution level 1/"institutionLevel1"/"id"

UI: Settings/Pick list: Party.InstitutionLevel1

API: /oa/refdata

UUID

Requests

API: /oa/publicationRequest

Publisher/"publisher"/"id"

UI: Settings/Pick list: PublicationRequest.Publisher

API: /oa/refdata

UUID

Corresponding author/"correspondingAuthor"/"partyOwner"/"id"

UI: People / person

API: /oa/party

JSON: /"id"/

UUID

Institution level 1/"correspondingAuthor"/"partyOwner"/"institutionLevel1"/"id"

UI: Settings/Pick list: Party.InstitutionLevel1

API: /oa/refdata

UUID


/"correspondingInstitutionLevel1"/"id"

UI: Settings/Pick list: Party.InstitutionLevel1

API: /oa/refdata

UUID

Corresponding author

(implicit)

/"correspondingAuthor"/"role"

UI: Settings/Pick list: RequestParty.Role

API: /oa/refdata

string

corresponding_author

request_contact

(not customizable)


Request contact/"requestContact"/"partyOwner"/"id"

UI: People / person

API: /oa/party

JSON: /"id"/

UUID


/"requestContact"/"role"

UI: Settings/Pick list: RequestParty.Role

API: /oa/refdata

string

corresponding_author

request_contact

(not customizable)


Status/"requestStatus"/UI: Settings/Pick list: PublicationRequest.RequestStatusstring

open, closed

(not customizable)


Publication status

(repeatable)

/"publicationStatuses"[n]/"publicationStatus"/"id"


UI: Settings/Pick list: PublicationStatus.PublicationStatus

API: /oa/refdata

UUID

License/"license"/"id"

UI: Settings/Pick list: PublicationRequest.License

API: /oa/refdata

UUID

Publication type/"publicationType"/"id"

UI: Settings/Pick list: PublicationRequest.Subtype

API: /oa/refdata

UUID

Journal/"work"/"id"

UI: Journal

API: oa/works/citation

JSON: /"id"/

UUID

Journal in DOAJ/"workIndexedInDOAJ"/"id"

UI: -

API: /oa/refdata

UUID(not customizable)

Journal OA status/"workOAStatus"/"id"UI: Settings/Pick list: Work.OaStatusUUID
Charges

Status
titleto do











Checklist

Status
titleto do






Info

Not all possible relationships are listed here, e.g. links to Agreements are not considered for data migration (Leipzig).


Know your UUIDs / references

...

Tip
iconfalse
titleLeipzig example

more data ...

{
        "id""8aaa80fe859fe8ee0185a0ea5d980023",
        "desc""Work.OaStatus",
        "internal"false,
        "values": [
            {
                "id""8aaa80fe859fe8ee0185a0ea5d9b0024",    ← UUID for OA status "Gold"
                "value""gold",
                "label""Gold"
            },
            {
                "id""8aaa80fe859fe8ee0185a0ea5da00025",    ← UUID for OA status "Hybrid"
                "value""hybrid",
                "label""Hybrid"
            },
            {
                "id""8aaa80fe859fe8ee0185bac6b6c9004f",    ← UUID for OA status "Subscribe to Open"
                "value""subscribe_to_open",
                "label""Subscribe to Open (S2O)"
            }
        ]
    },

... more data

...

The following are JSON files (schemas) and how the data correlate with the Leipzig Excel/CSV source file. 

Tip
iconfalse
titleLeipzig example: Journal JSON mapping
{
  "title": "SPALTE-A",
  "instances": [
    {
      "ids": [
        {
          "ns": "issn",
          "id": "SPALTE-B" 
        }
      ],
      "subType": "electronic" 
    },
    {
      "ids": [
        {
          "ns": "issn",
          "id": "SPALTE-C" 
        }
      ],
      "subType": "print" 
    }
  ],
  "indexedInDOAJ": "SPALTE-E",
  "oaStatus": "SPALTE-D",
  "type": "serial" 
}

...

Tip
iconfalse
titleLeipzig example: Request JSON mapping
{
    "publicationStatuses": [
        {
            "publicationStatus": {
                "id": "Y:publicationStatus1Id" 
            },
            "statusDate": "Z:statusDate1",
            "statusNote": "AA:statusNote1" 
        },
        {
            "publicationStatus": {
                "id": "AB:publicationStatus2Id" 
            },
            "statusDate": "AC:statusDate2",
            "statusNote": "AD:statusNote2" 
        },
        {
            "publicationStatus": {
                "id": "AE:publicationStatus3Id" 
            },
            "statusDate": "AF:statusDate3",
            "statusNote": "AG:statusNote3" 
        },
        {
            "publicationStatus": {
                "id": "AH:publicationStatus4Id" 
            },
            "statusDate": "AI:statusDate4" 
        }
    ],
    "fundings": [],
    "requestStatus": "A:requestStatus",
    "closureReason": null,
    "requestDate": "B:requestDate",
    "externalRequestIds": [
        {
            "externalId": "C:externalId1" 
        },
        {
            "externalId": "D:externalId2" 
        }
    ],
    "correspondingAuthor": {
        "partyOwner": {
            "id": "F:correspondingAuthorPartyOwnerId",
            "alternateEmails": [],
            "institutionLevel1": {
                "id": "L:correspondingInstitutionLevel1Id" 
            }
        },
        "role": "G:correspondingAuthorRole" 
    },
    "correspondingInstitutionLevel1": {
        "id": "L:correspondingInstitutionLevel1Id" 
    },
    "useCorrespondingAuthor": false,
    "requestContact": {
        "partyOwner": {
            "id": "I:requestContactPartyOwnerId",
            "alternateEmails": []
        },
        "role": "J:requestContactRole" 
    },
    "correspondingInstitutionLevel2": "M:correspondingInstitutionLevel2",
    "doi": "N:doi",
    "license": {
        "id": "O:licenseId" 
    },
    "publicationTitle": "P:publicationTitle",
    "publicationType": {
        "id": "Q:publicationTypeId" 
    },
    "publisher": {
        "id": "S:publisherId" 
    },
    "work": {
        "id": "U:workId" 
    },
    "workIndexedInDOAJ": {
        "id": "X:workIndexedInDOAJId" 
    },
    "workOAStatus": {
        "id": "V:workOAStatusId" 
    },
    "requestNumber": "BH:requestNumber",
    "subtype": null,
    "bookDateOfPublication": null,
    "bookPlaceOfPublication": null,
    "agreement": null
}


Tip
iconfalse
titleCharge1 JSON mapping
{
    "tax": "AR:charge1Tax",
    "discountType": {
        "id": "8aaa80fe859fe8ee0185a0ea5d5e0017" 
    },
    "exchangeRate": {
        "coefficient": 1,                               --->>> type:number
        "toCurrency": "EUR" 
    },
    "amount": {
        "baseCurrency": "AQ:charge1AmountBaseCurrency",
        "value": "AP:charge1AmountValue" 
    },
    "category": {
        "id": "AN:charge1CategoryId" 
    },
    "chargeStatus": {
        "id": "AO:charge1StatusId" 
    },
    "description": "OA-Migration",
    "discount": 0,                                     --->>> type:number
    "discountNote": "",
    "paymentPeriod": "2023",
    "payers": [{
        "payerAmount": AT:charge1PayersPayer1Amount,   --->>> type:number
        "payer": {
            "id": "AS:charge1PayersPayer1Id" 
        },
        "payerNote": "AU:charge1PayersPayer1Note" 
    }, {
        "payerAmount": AW:charge1PayersPayer2Amount,   --->>> type:number
        "payer": {
            "id": "AV:charge1PayersPayer2Id" 
        },
        "payerNote": "AX:charge1PayersPayer2Note" 
    }],
    "owner": {
        "id": "BI:chargeOwnerId" 
    }
}


Tip
iconfalse
titleChecklist item JSON mapping
{
    "id": "BI:chargeOwnerId",
    "checklist": [
        {
            "outcome": {
                "value": "AK:checklist1OutcomeValue" 
            },
            "notes": [],
            "definition": {
                "id": "AJ:checklist1DefinitionId" 
            }
        },
        {
            "outcome": {
                "value": "AM:checklist2OutcomeValue" 
            },
            "notes": [],
            "definition": {
                "id": "AL:checklist2DefinitionId" 
            }
        }
    ]
}

All we need is JSON conversion

...

Mainly these might be of interest:

APIUse
GET {{OKAPI}}/oa/refdata?max=100to get all reference data values and UUIDs
POST {{OKAPI}}/oa/works/citationto post journal data
GET {{OKAPI}}/oa/worksto get journal data
GET {{OKAPI}}/oa/works/{{UUID}}to get journal data based on a specific journal UUID
POST {{OKAPI}}/oa/partyto post people data
GET {{OKAPI}}/oa/partyto get people data
GET {{OKAPI}}/oa/party/{{UUID}}to get people data based on a specific person UUID
POST {{OKAPI}}/oa/publicationRequestto post publication requests
GET {{OKAPI}}/oa/publicationRequestto get publication requests
PUT {{OKAPI}}/oa/publicationRequestto update requests, i.e. to import checklist items
GET {{OKAPI}}/oa/publicationRequest/{{UUID}}to get a publication request based on a specific request UUID
POST {{OKAPI}}/oa/chargesto post charges

The actual import can be done e.g. with Postman (Runner function) or ask your local IT, systems librarian or library network.

...