I attempting to move content from one library to another in mass. I have come into a snag where I am given an error message. "You do not have the level of access necessary to perform the operation you requested. Please contact the owner of the record or your administrator if access is necessary." I am able to move some files but am not able to move other.

Here is some information behind what I have tried.

I am the system admin and workspace admin for both original library and ending library.
I am using the ContentDocument Object and replacing the ParentID. I attempted to use the ContentWorkspaceDoc Object but I am not able to update the LibraryID using Demand tools, Dataloader.io, Data Loader, or Workbench.

Would anyone have insight into what kinds of access rights I would need?


3 Answers 3


People, people, ... hold your whoreses (yes, pun)! It's much easier than that!

Pre-steps: 1. Know the ID of the library you want to move stuff to (to know this, go to the library and copy the id from the url, or do an export on 'ContentWorkspace' and select Name & Id)

Operation: 1.

  1. Open dataloader and choose Export
    1. object 'ContentDocument'
    2. select Id, Title & ParentId
    3. open in spreadsheet
    4. find all documents you want to be moving (by filtering, sorting ...) and replace the 'ParentId' with the Id of the destination library
    5. make a csv out of it
    6. dataloader --> update, choose ContentDocument, choose the csv you just made
    7. Play Kool & the gang, and dance the rest of the day (you were otherwise spending moving stuff manually or fixing errors)

Hurray stackexchange! :)


Before being able to move content in mass even as a Sys Admin,the Content MUST be shared publicly and NOT archived. I ran into the issue where the content was privately shared and was able to move the files manually perfectly fine, but when using the API the sharing must be set to public.


If people need another answer here - I've managed to do this via Apex, but it requires a bit of a workaround in order get around the public sharing requirement:

  1. Create a FeedItem of type "ContentPost" for each document you want to move. Relate the FeedItem to the document using the "RelatedRecordId" and make the "ParentId" a user Id.
  2. Insert the FeedItems
  3. Update the ContentDocument records' ParentId fields
  4. Delete the FeedItems

Obviously, this is far more DML than I'd like, but this seems to work for us.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .