EndNote Zotero field mapping

I need to transfer many, many EndNote libraries to Zotero. The EndNote libraries used 4 custom fields extensively and I need to get the content of those fields into a structured Zotero field(s). (Not added to Zotero as a note.)

My solution is to move the content of the custom fields to different fields (a function that EndNote does fine) before creating the xml. But I can't find an EndNote <> Zotero field map so it is really challenging to figure out what fields I should use.

Again, this library transfer process is going to be repeated regularly over the next few years so I can't just MacGyver this once. I've searched the Zotero support and forums sites, as well as the web and haven't been able to find this resource.

Is an EndNote <> Zotero field map available? Or any suggestions for a better way to move my libraries? Thanks!
  • See https://www.zotero.org/support/kb/endnote_import for an overview and https://github.com/zotero/translators/blob/master/Endnote XML.js for the detailed import mapping https://github.com/zotero/translators/blob/14845896b7b75611b3b9801cf8fc736618533f97/Endnote XML.js#L332


    What item types are you using and what are the custom fields being used for? One option would be to download the translator .js file, modify how custom1 to custom4 are mapped for the item type you are working with, then copy this to the translators folder in your Zotero data directory (https://www.zotero.org/support/zotero_data). You should save the original translator file as a backup and put it back when you are done with the import.

  • I had just found my way to the github files and opened the Endnot_xml.js, :-). I'm not a coder in this language, but appreciate the guidance about how to potentially use that file to smooth the import to Zotero without requiring first moving data around in EndNote.

    We use multiple item types and the custom fields contain key information used during the original literature search and categorization. It is crucial that this key information moves to Zotero structured fields.

    Based on this information, do you have any additional thoughts?

    Thank you!
  • you'll need to think about which Zotero fields you want to use first. There aren't that many "structured" fields you have available across all item types and you can't add custom fields.
  • edited 5 days ago
    Thanks adamsmith. Is there a list of structured fields that are available across all item types?

    Also, is there a field type in EndNote that feeds into the "Extra" field in Zotero?
  • I don't believe we have anything mapping to Extra in the current export, but if you look at the .js file, it's pretty easy to add.

    All fields for all items are here: https://pobrien333.github.io/zot2csl/
    I believe the only fields shared across all item types are the ones listed at the bottom, though if you have a slightly reduced number of types (e.g. no legal ones) there are some more:

    DOI
    Citation Key
    URL
    Accessed
    Short Title
    Language
    License
    Extra

    Of those, I'd strongly advise against using DOI, URL, Accessed, or Citation Key for anything they're not intended for. Language and short title are also not ideal, so you're mainly stuck with License/Rights and Extra
  • Thanks! I'll see what I can do with these.
  • I tried to modify the EndNote_XML.js file using the code below. I carefully followed the existing coding language and made these updates in Notepad. I moved the edited .js file back to the correct location (zotero/translators), quit and restarted Zotero, ran the import, and got an error "The selected file is not in a supported format."

    The xml from EndNote will upload using the unedited version of the .js.

    Any ideas?

    var fieldMap = {
    //same for all itemTypes
    abstract: "abstractNote",
    "call-num": "callNumber",
    "electronic-resource-num": "DOI",
    "remote-database-name": "libraryCatalog",
    "abbr-1": "journalAbbreviation",
    "short-title": "shortTitle",
    "full-title": "publicationTitle",
    language: "language",
    "access-date": "accessDate",
    custom1: "rights", //JB edit 02Mar26
    custom4: "extra", //JB edit 02Mar26
    // label: "Citation Key", (handled below, since it has to go into Extra)
    //These two are in the RIS - not sure what they'd be in Endnote XML
    //DB:"archive",
    //AN:"archiveLocation",

    AND

    "accession-num": {
    PMID: ["journalArticle"] //JEB edit 02Mar26
    },
    //custom1: {
    filingDate: ["patent"], //not in spec
    scale: ["map"],
    place: ["conferencePaper"]
    },
    custom2: {
    issueDate: ["patent"]
    PMCID: ["journalArticle"] //JEB edit 02Mar26 "handled below since we don't actually have that variable (yet)"
    },
    custom3: {
    artworkSize: ["artwork"],
    proceedingsTitle: ["conferencePaper"],
    runningTime: ["videoRecording"],
    country: ["patent"]
    },
    //custom4: {
    //RIS has this, but I can't find any reason for that: "creators/wordsBy":["audioRecording"],
    "creators/attorneyAgent":["patent"], //we're not using this for export
    genre: ["film"]
    },
  • You're missing a comma after
    custom2: {
    issueDate: ["patent"]

    (elements of an object or a array are always comma-delimited. Zotero's translator editor -- Tools --> Developer -- has a linting function that catches & warns about issues like this. It does expect a folder for translators outside of Zotero -- typically a checked out git repository, but you can just use a copy of the translator folder locally, too)
  • That did it adamsmith! The modified translator worked and my EndNote custom fields are now in "License"(rights) and Extra. Thanks again for the help.
Sign In or Register to comment.