While importing CRM solution using Async service (CRM
solution automated deployment), CRM copy the solution file (zip file) to the
temporary directory with Guid (unique id). That temporary directory located inside
of CRM installation directory. For example in our case it located in “C:\Program
Files\Microsoft Dynamics CRM\CustomizationImport”. When we enable the trace
using CRMDiag Tool it shows error in async service log like following.
>Crm Exception: Message: Access is denied., ErrorCode: -2147187707, InnerException: System.UnauthorizedAccessException: Access to the path 'C:\Program Files\Microsoft Dynamics CRM\CustomizationImport\82c98e8896b34b2cb60e7741971a7921' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
at Microsoft.Crm.CrmTemporaryFile..ctor(Byte[] fileData, String directoryName)
at Microsoft.Crm.Tools.ImportExportPublish.RootImportHandler.ExtractFromCompressedFile(Byte[] compressedCustomizationFile, Boolean extractAllFiles)
at Microsoft.Crm.Tools.ImportExportPublish.RootImportHandler..ctor(ImportXml parent, Boolean overwriteUnmanagedCustomizations, Boolean publishWorkflows, Byte[] compressedCustomizationFile, Boolean setup, Version existingDatabaseVersion, ExecutionContext context, Boolean extractAllFiles)
at Microsoft.Crm.Tools.ImportExportPublish.ImportXml..ctor(Boolean overwriteUnmanagedCustomizations, Boolean publishWorkflows, Byte[] compressedCustomizationFile, Guid importJobId, Boolean convertToManaged, Boolean skipIntermediateImportJobUpdate, ExecutionContext context)
at Microsoft.Crm.Tools.ImportExportPublish.ImportXml..ctor(Boolean overwriteUnmanagedCustomizations, Boolean publishWorkflows, Byte[] compressedCustomizationFile, Guid importJobId, Boolean convertToManaged, ExecutionContext context)
at Microsoft.Crm.WebServices.ImportXmlService.ImportSolutionSkipCapable(Boolean overwriteUnmanagedCustomizations, Boolean publishWorkflows, Byte[] customizationFile, Guid importJobId, Boolean convertToManaged, Boolean skipProductUpdateDependencies, ExecutionContext context)
[2015-10-13 11:51:25.325] Process:CrmAsyncService |Organization:679a4ed3-4cb8-e411-940c-00155d6caa94 |Thread: 4 |Category: Platform.Sdk |User: d791b2fa-ce00-e011-903e-00155d6caa6a |Level: Error |ReqId: 6f0b3483-cfc9-42ae-b684-d9c141391f71 | VersionedPluginProxyStepBase.Execute ilOffset = 0x65
How to fix:
The root cause of this issue is user who run the CRM Async
service does not have write permission to the CRM Customization Import
directory (in our case “C:\Program Files\Microsoft Dynamics
CRM\CustomizationImport”). To fix this issue give necessary permission to the
user who runs CRM Async service.
Identifying user who run CRM Async service
Navigate to Services -> Microsoft Dynamics CRM
Asynchronous Processing Service, then check Log On As
Set permission to the user