Promoting Document Versions into Documents

Promoting Document Versions into Documents


  1. --The following playbook is a TEMPLATE that you can use to promote all document versions into actual documents.

  2. --When a document has a category, append the folder with the document category ID.
  3. UPDATE 
  4.     __M_Documents_Digital_Files
  5. SET
  6.     --Prepend the Category
  7.     Final_Folder_RelativePath = CONCAT(Final_Folder_RelativePath, Final_DocumentCategory_Id, '\')
  8. FROM
  9.     __M_Documents_Digital_Files V1
  10. WHERE 1=1


  11. --Replace \\ with \
  12. UPDATE
  13.     __M_Documents_Digital_Files
  14. SET
  15.     Final_Folder_RelativePath = REPLACE(Final_Folder_RelativePath, '\\', '\')

  16. select top 100 * from __M_Documents_Digital_Files_Versions

  17. --Update all versions to have a 3-digit version number
  18. UPDATE __M_Documents_Digital_Files_Versions SET Final_ReferenceCode = CONCAT('0', Final_ReferenceCode) WHERE LEN(Final_ReferenceCode) < 3
  19. UPDATE __M_Documents_Digital_Files_Versions SET Final_ReferenceCode = CONCAT('0', Final_ReferenceCode) WHERE LEN(Final_ReferenceCode) < 3
  20. UPDATE __M_Documents_Digital_Files_Versions SET Final_ReferenceCode = CONCAT('0', Final_ReferenceCode) WHERE LEN(Final_ReferenceCode) < 3


  21. --Create a document entry for each version
  22. INSERT INTO __M_Documents_Digital_Files (
  23. Id, 
  24. Final_Status, 
  25. Final_Parent_Id, 
  26. Final_Parent_Type, 
  27. Final_Folder_RelativePath, 
  28. Final_File_Name, 
  29. Final_File_Extension, 
  30. Final_Created_At, 
  31. Final_Updated_At,

  32. Original_Status, 
  33. Original_Parent_Id, 
  34. Original_Parent_Type, 
  35. Original_Folder_RelativePath, 
  36. Original_File_Name, 
  37. Original_File_Extension, 
  38. Original_Created_At, 
  39. Original_Updated_At
  40. )
  41. SELECT
  42. CONCAT('PROMOTED --- ', Versions.Id),

  43. Files.Final_Status,
  44. Files.Final_Parent_Id, 
  45. Files.Final_Parent_Type, 
  46. Files.Final_Folder_RelativePath, 
  47. CONCAT(Files.Final_File_Name,  '_v', Versions.Final_ReferenceCode),
  48. COALESCE( NULLIF(Versions.Final_File_Extension,''), NULLIF(Files.Final_File_Extension,''), ''),
  49. COALESCE( Versions.Final_Created_At, Files.Final_Created_At),
  50. COALESCE( Versions.Final_Updated_At, Files.Final_Updated_At),

  51. Files.Original_Status,
  52. Files.Original_Parent_Id, 
  53. Files.Original_Parent_Type, 
  54. Files.Original_Folder_RelativePath, 
  55. CONCAT(Files.Original_File_Name,  '_v', Versions.Original_ReferenceCode),
  56. COALESCE( NULLIF(Versions.Original_File_Extension,''), NULLIF(Files.Original_File_Extension,''), ''),
  57. COALESCE( Versions.Original_Created_At, Files.Original_Created_At),
  58. COALESCE( Versions.Original_Updated_At, Files.Original_Updated_At)

  59. FROM
  60. __M_Documents_Digital_Files Files,
  61. __M_Documents_Digital_Files_Versions Versions
  62. WHERE 1=1
  63. AND Files.Id = Versions.Final_DocumentFile_Id
  64. AND Versions.Id NOT LIKE 'PROMOTED --- %'
  65. AND Files.Id NOT LIKE 'PROMOTED --- %'



  66. INSERT INTO __M_Documents_Digital_Files_Versions(
  67. Id, 

  68. Final_Status, 
  69. Final_ReferenceCode, 
  70. Final_DisplayOrder, 
  71. Final_Content_FromPath, 
  72. Final_File_Name, 
  73. Final_File_Extension, 
  74. Final_Created_At, 
  75. Final_Updated_At,
  76. Final_DocumentFile_Id,

  77. Original_Status, 
  78. Original_ReferenceCode, 
  79. Original_DisplayOrder, 
  80. Original_Content_FromPath, 
  81. Original_File_Name, 
  82. Original_File_Extension, 
  83. Original_Created_At, 
  84. Original_Updated_At,
  85. Original_DocumentFile_Id
  86. )
  87. SELECT
  88. CONCAT('PROMOTED --- ', Id),

  89. Final_Status,
  90. Final_ReferenceCode,
  91. Final_DisplayOrder,
  92. Final_Content_FromPath,
  93. Final_File_Name,
  94. Final_File_Extension,
  95. Final_Created_At,
  96. Final_Updated_At,
  97. CONCAT('PROMOTED --- ', Id),

  98. Original_Status,
  99. Original_ReferenceCode,
  100. Original_DisplayOrder,
  101. Original_Content_FromPath,
  102. Original_File_Name,
  103. Original_File_Extension,
  104. Original_Created_At,
  105. Original_Updated_At,
  106. CONCAT('PROMOTED --- ', Id)
  107. FROM
  108. __M_Documents_Digital_Files_Versions
  109. WHERE 1=1
  110. AND Id NOT LIKE 'PROMOTED --- %'



  111. -- Mark all files to be not produced
  112. UPDATE __M_Documents_Digital_Files SET Final_Status = 'Deleted'

  113. -- Mark these clients (6digit) to produce their files (note, original status is used so we  do not produce files that were deleted in netdocs)
  114. -- We can add as many clients to the production as we would like, just replicate the line.
  115. UPDATE __M_Documents_Digital_Files SET Final_Status = Original_Status WHERE Id like 'PROMOTED --- %' AND Final_Parent_Id LIKE '030487 --- %'
  116. UPDATE __M_Documents_Digital_Files SET Final_Status = Original_Status WHERE Id like 'PROMOTED --- %' AND Final_Parent_Id LIKE '064263 --- %'
  117. UPDATE __M_Documents_Digital_Files SET Final_Status = Original_Status WHERE Id like 'PROMOTED --- %' AND Final_Parent_Id LIKE '063990 --- %'

  118. UPDATE __M_Documents_Digital_Files_Versions SET Final_DocumentFile_Id = Id, Original_DocumentFile_Id = Id where Id like 'PROMOTED%'

  119. UPDATE __M_Documents_Digital_Files SET Batch_Number = 0, Result_Id = ''
  120. UPDATE __M_Documents_Digital_Files_Versions SET Batch_Number = 0, Result_Id = ''

  121. --RESTORE SETTINGS:
  122. --RESTORE TO: \\samds\netdocs\FOR HUMANS
  123. --RESTORE METHOD: By Copying Files
  124. --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 ...