Promoting Document Versions into Documents
- --The following playbook is a TEMPLATE that you can use to promote all document versions into actual documents.
- --When a document has a category, append the folder with the document category ID.
- UPDATE
- __M_Documents_Digital_Files
- SET
- --Prepend the Category
- Final_Folder_RelativePath = CONCAT(Final_Folder_RelativePath, Final_DocumentCategory_Id, '\')
- FROM
- __M_Documents_Digital_Files V1
- WHERE 1=1
- --Replace \\ with \
- UPDATE
- __M_Documents_Digital_Files
- SET
- Final_Folder_RelativePath = REPLACE(Final_Folder_RelativePath, '\\', '\')
- select top 100 * from __M_Documents_Digital_Files_Versions
- --Update all versions to have a 3-digit version number
- UPDATE __M_Documents_Digital_Files_Versions SET Final_ReferenceCode = CONCAT('0', Final_ReferenceCode) WHERE LEN(Final_ReferenceCode) < 3
- UPDATE __M_Documents_Digital_Files_Versions SET Final_ReferenceCode = CONCAT('0', Final_ReferenceCode) WHERE LEN(Final_ReferenceCode) < 3
- UPDATE __M_Documents_Digital_Files_Versions SET Final_ReferenceCode = CONCAT('0', Final_ReferenceCode) WHERE LEN(Final_ReferenceCode) < 3
- --Create a document entry for each version
- INSERT INTO __M_Documents_Digital_Files (
- Id,
- Final_Status,
- Final_Parent_Id,
- Final_Parent_Type,
- Final_Folder_RelativePath,
- Final_File_Name,
- Final_File_Extension,
- Final_Created_At,
- Final_Updated_At,
- Original_Status,
- Original_Parent_Id,
- Original_Parent_Type,
- Original_Folder_RelativePath,
- Original_File_Name,
- Original_File_Extension,
- Original_Created_At,
- Original_Updated_At
- )
- SELECT
- CONCAT('PROMOTED --- ', Versions.Id),
- Files.Final_Status,
- Files.Final_Parent_Id,
- Files.Final_Parent_Type,
- Files.Final_Folder_RelativePath,
- CONCAT(Files.Final_File_Name, '_v', Versions.Final_ReferenceCode),
- COALESCE( NULLIF(Versions.Final_File_Extension,''), NULLIF(Files.Final_File_Extension,''), ''),
- COALESCE( Versions.Final_Created_At, Files.Final_Created_At),
- COALESCE( Versions.Final_Updated_At, Files.Final_Updated_At),
- Files.Original_Status,
- Files.Original_Parent_Id,
- Files.Original_Parent_Type,
- Files.Original_Folder_RelativePath,
- CONCAT(Files.Original_File_Name, '_v', Versions.Original_ReferenceCode),
- COALESCE( NULLIF(Versions.Original_File_Extension,''), NULLIF(Files.Original_File_Extension,''), ''),
- COALESCE( Versions.Original_Created_At, Files.Original_Created_At),
- COALESCE( Versions.Original_Updated_At, Files.Original_Updated_At)
- FROM
- __M_Documents_Digital_Files Files,
- __M_Documents_Digital_Files_Versions Versions
- WHERE 1=1
- AND Files.Id = Versions.Final_DocumentFile_Id
- AND Versions.Id NOT LIKE 'PROMOTED --- %'
- AND Files.Id NOT LIKE 'PROMOTED --- %'
- INSERT INTO __M_Documents_Digital_Files_Versions(
- Id,
- Final_Status,
- Final_ReferenceCode,
- Final_DisplayOrder,
- Final_Content_FromPath,
- Final_File_Name,
- Final_File_Extension,
- Final_Created_At,
- Final_Updated_At,
- Final_DocumentFile_Id,
- Original_Status,
- Original_ReferenceCode,
- Original_DisplayOrder,
- Original_Content_FromPath,
- Original_File_Name,
- Original_File_Extension,
- Original_Created_At,
- Original_Updated_At,
- Original_DocumentFile_Id
- )
- SELECT
- CONCAT('PROMOTED --- ', Id),
- Final_Status,
- Final_ReferenceCode,
- Final_DisplayOrder,
- Final_Content_FromPath,
- Final_File_Name,
- Final_File_Extension,
- Final_Created_At,
- Final_Updated_At,
- CONCAT('PROMOTED --- ', Id),
- Original_Status,
- Original_ReferenceCode,
- Original_DisplayOrder,
- Original_Content_FromPath,
- Original_File_Name,
- Original_File_Extension,
- Original_Created_At,
- Original_Updated_At,
- CONCAT('PROMOTED --- ', Id)
- FROM
- __M_Documents_Digital_Files_Versions
- WHERE 1=1
- AND Id NOT LIKE 'PROMOTED --- %'
- -- Mark all files to be not produced
- UPDATE __M_Documents_Digital_Files SET Final_Status = 'Deleted'
- -- Mark these clients (6digit) to produce their files (note, original status is used so we do not produce files that were deleted in netdocs)
- -- We can add as many clients to the production as we would like, just replicate the line.
- UPDATE __M_Documents_Digital_Files SET Final_Status = Original_Status WHERE Id like 'PROMOTED --- %' AND Final_Parent_Id LIKE '030487 --- %'
- UPDATE __M_Documents_Digital_Files SET Final_Status = Original_Status WHERE Id like 'PROMOTED --- %' AND Final_Parent_Id LIKE '064263 --- %'
- UPDATE __M_Documents_Digital_Files SET Final_Status = Original_Status WHERE Id like 'PROMOTED --- %' AND Final_Parent_Id LIKE '063990 --- %'
- UPDATE __M_Documents_Digital_Files_Versions SET Final_DocumentFile_Id = Id, Original_DocumentFile_Id = Id where Id like 'PROMOTED%'
- UPDATE __M_Documents_Digital_Files SET Batch_Number = 0, Result_Id = ''
- UPDATE __M_Documents_Digital_Files_Versions SET Batch_Number = 0, Result_Id = ''
- --RESTORE SETTINGS:
- --RESTORE TO: \\samds\netdocs\FOR HUMANS
- --RESTORE METHOD: By Copying Files
- --MATTER PATH TEMPLATE: {Contact_ReferenceCode} --- {Contact_FullName}\{Matter_ReferenceCode} --- {Matter_Subject}
Related Articles
Promote Document Version Notes to Document Notes
--The following script will promote document version notes --into document notes. This is useful when a destination system --supports notes on documents but does not support notes on --specific document versions. -- --If you are using this script, ...
Synthesize: Missing Document Categories for Documents
The following script will synthesize document categories for invalid Final_DocumentCategory_Id values on documents. -- Some documents are linked to categories that no longer exist. -- Create dummy document categories based on these values. INSERT ...
Document Register: Moving digital documents into a Document Register Matter
/* This script is a template that will help you move library documents (document register / safe custody records) into a general 'Document Register' matter. You should consider this a TEMPLATE that you may want to tweak and adjust for each client's ...
Prioritizing documents based on different criteria
The following scripts provide examples that can be modified to apply different priorities to documents. Prioritize Large/Small Documents If you are restoring into a system that has different action limits at different times, this can help you ...
Synthesize Missing Matters for Documents
Some systems only allow documents to be linked to matters. These scripts will allow you to restore data into these systems. When Matters No Longer Exist The following script with synthesize matters for document related to matters that no longer ...