copy()
Copies a folder, register, or document to a new location using dms.XMLCopy.
When copying a register or folder with copy_cascading=True, all contained
child objects are also copied recursively. When copying a document with
link_document=True, a second location (link) for the same index record is
created instead of a fully independent copy.
1. Signature
-
Sync
-
Async
ecm.dms.copy(
model: ECMFolderModel | ECMRegisterModel | ECMDocumentModel | int,
object_type: int | str | None = None,
*,
folder_id: int | ECMFolderModel | None = None,
register_id: int | ECMRegisterModel | None = None,
register_type: int | None = None,
copy_cascading: bool = False,
link_document: bool = False,
) -> None
await ecm.dms.copy(
model: ECMFolderModel | ECMRegisterModel | ECMDocumentModel | int,
object_type: int | str | None = None,
*,
folder_id: int | ECMFolderModel | None = None,
register_id: int | ECMRegisterModel | None = None,
register_type: int | None = None,
copy_cascading: bool = False,
link_document: bool = False,
) -> None
2. Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
|
|
— |
The object to copy. Either a model instance (must have |
|
|
|
Only required when |
|
|
|
Target folder — a numeric ID or an |
|
|
|
Target register — a numeric ID or an |
|
|
|
Type ID of the target register. Inferred automatically when |
|
|
|
When |
|
|
|
When |
3. Exceptions
| Exception | Condition |
|---|---|
|
|
|
|
4. Examples
4.1. Copy a document to a different folder
-
Sync
-
Async
doc = ecm.dms.select(InvoiceDocument).where(InvoiceDocument.Title == "Original").execute()[0]
target_folder = ecm.dms.select(InvoiceFolder).where(InvoiceFolder.Year == 2025).execute()[0]
ecm.dms.copy(doc, folder_id=target_folder, register_id=-1)
doc = (await ecm.dms.select(InvoiceDocument).where(InvoiceDocument.Title == "Original").execute())[0]
target_folder = (await ecm.dms.select(InvoiceFolder).where(InvoiceFolder.Year == 2025).execute())[0]
await ecm.dms.copy(doc, folder_id=target_folder, register_id=-1)
4.2. Copy a folder with all its children
-
Sync
-
Async
folder = ecm.dms.select(InvoiceFolder).where(InvoiceFolder.Year == 2023).execute()[0]
# Copies the folder and all registers and documents inside it
ecm.dms.copy(folder, folder_id=archive_folder_id, register_id=-1, copy_cascading=True)
folder = (await ecm.dms.select(InvoiceFolder).where(InvoiceFolder.Year == 2023).execute())[0]
await ecm.dms.copy(folder, folder_id=archive_folder_id, register_id=-1, copy_cascading=True)
4.3. Create a linked copy (second location)
-
Sync
-
Async
# The document gets a second location — both point to the same index record
ecm.dms.copy(doc, folder_id=secondary_folder_id, register_id=-1, link_document=True)
await ecm.dms.copy(doc, folder_id=secondary_folder_id, register_id=-1, link_document=True)