Import into organization's collection

It would be nice to be able to import entries directly into a specific collection.

Use Case: Credentials related to specific clients and teams are organized in a collection. When migrating from a different password manager a password file might need to be imported directly into a specific collection. Since many Entries are named similar but come from different sources, importing all files and then assigning them afterwards is tididious or even impossible.

Therefore: Importing all entries of a file and assigning them to a specific collection would be useful.

I second this. Especially because there is no option to move multiple entries into a collection.
When migrating from another PWmanager it’s very troublesome to open/move one entry after the other (I have 500+ entries to move).

(I wonder there are not more people asking for this option).

I worked around this missing feature by exporting the old keepass database as xml and transformed it using excel to export it as bitwarden csv. The Bitwarden csv allows you to specify collections to which an entry belongs.

But there is a caveat: The import does not check whether a collection already exists and creates new collections for each imported csv file.

How did you do that Tobias? :slight_smile:

I exported the KeePass database as xml and used Excel’s Power Query feature to import it into a sheet. I created a second sheet to convert the entries to a table that could be exported in a csv that bitwarden could understand. It required some cross references.

Unfortunately I cannot share my excel files and don’t have time to create a step by step guide. In hindsight, I wish I had written a script that does not require excel instead.

Here is what the Power Query Editor used as a configuration. The configuration depends on how you organized your KeePass folders and entries. Just to give you an idea:

    Source = Xml.Tables(File.Contents("C:\PATH\TO\KeePass-export.xml")),
    Table1 = Source{1}[Table],
    Table0 = Table1{0}[Table],
    #"Changed Type" = Table.TransformColumnTypes(Table0,{{"UUID", type text}, {"Name", type text}, {"Notes", type text}, {"IconID", Int64.Type}, {"IsExpanded", type logical}, {"DefaultAutoTypeSequence", type text}, {"EnableAutoType", type text}, {"EnableSearching", type text}, {"LastTopVisibleEntry", type text}}),
    Group1 = #"Changed Type"{0}[Group],
    #"Changed Type1" = Table.TransformColumnTypes(Group1,{{"UUID", type text}, {"Name", type text}, {"Notes", type text}, {"IconID", Int64.Type}, {"IsExpanded", type logical}, {"DefaultAutoTypeSequence", type text}, {"EnableAutoType", type logical}, {"EnableSearching", type logical}, {"LastTopVisibleEntry", type text}}),
    #"Expanded Entry" = Table.ExpandTableColumn(#"Changed Type1", "Entry", {"UUID", "IconID", "ForegroundColor", "BackgroundColor", "OverrideURL", "Tags", "Times", "String", "AutoType", "History"}, {"Entry.UUID", "Entry.IconID", "Entry.ForegroundColor", "Entry.BackgroundColor", "Entry.OverrideURL", "Entry.Tags", "Entry.Times", "Entry.String", "Entry.AutoType", "Entry.History"}),
    #"Expanded Entry.String" = Table.ExpandTableColumn(#"Expanded Entry", "Entry.String", {"Key", "Value"}, {"Entry.String.Key", "Entry.String.Value"}),
    #"Expanded Entry.String.Value" = Table.ExpandTableColumn(#"Expanded Entry.String", "Entry.String.Value", {"Element:Text", "Attribute:ProtectInMemory"}, {"Entry.String.Value.Element:Text", "Entry.String.Value.Attribute:ProtectInMemory"})
    #"Expanded Entry.String.Value"

This feature would be incredibly useful. I seem to be having very similar issues when attempting to bulk import records to my company’s organization. I’ve used an export of our existing data to ensure the format is correct for each of the CSV and JSON options. However…

  1. When using CSV import (which uses collection names) the collection names are duplicated with every import.
  2. When using the JSON format (which uses collection IDs - far better idea) the collection IDs are ignored.
1 Like

Wow! That’s terrible. Just minutes ago I purchased a Family Organization and immediately wish I had chosen to self host.