@adam - Fyi in case this is potentially a wider issue: though adding the empty .psm1 file does the trick and resolved the dashboards not loading, we are having to do this for multiple modules. For example, from our log file this morning:
2022-03-11 09:02:29.887 -05:00 [WRN] Failed to sync
System.IO.FileNotFoundException: Could not find file 'C:\ProgramData\UniversalAutomation\Repository\Modules\ExchangeOnlineManagement\2.0.5\ExchangeOnlineManagement.psm1'.
File name: 'C:\ProgramData\UniversalAutomation\Repository\Modules\ExchangeOnlineManagement\2.0.5\ExchangeOnlineManagement.psm1'
at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle)
at System.IO.FileStream.CreateFileOpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.File.AsyncStreamReader(String path, Encoding encoding)
at System.IO.File.InternalReadAllTextAsync(String path, Encoding encoding, CancellationToken cancellationToken)
at UniversalAutomation.Services.ModulesConfigurationScript.ReadAsync(Boolean initialSync) in D:\a\universal\universal\src\Universal.Server\Services\Configuration\Modules.cs:line 51
at UniversalAutomation.Services.UniversalConfigurationService.NotifyChange(String fileName) in D:\a\universal\universal\src\Universal.Server\Services\UniversalConfigurationService.cs:line 148
2022-03-11 09:02:33.577 -05:00 [INF] Starting job using Process.
2022-03-11 09:05:43.776 -05:00 [WRN] Failed to sync
System.IO.FileNotFoundException: Could not find file 'C:\ProgramData\UniversalAutomation\Repository\Modules\MSOnline\1.1.183.66\MSOnline.psm1'.
File name: 'C:\ProgramData\UniversalAutomation\Repository\Modules\MSOnline\1.1.183.66\MSOnline.psm1'
at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle)
at System.IO.FileStream.CreateFileOpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.File.AsyncStreamReader(String path, Encoding encoding)
at System.IO.File.InternalReadAllTextAsync(String path, Encoding encoding, CancellationToken cancellationToken)
at UniversalAutomation.Services.ModulesConfigurationScript.ReadAsync(Boolean initialSync) in D:\a\universal\universal\src\Universal.Server\Services\Configuration\Modules.cs:line 51
at UniversalAutomation.Services.UniversalConfigurationService.NotifyChange(String fileName) in D:\a\universal\universal\src\Universal.Server\Services\UniversalConfigurationService.cs:line 148
2022-03-11 09:09:16.208 -05:00 [WRN] Failed to sync
System.IO.FileNotFoundException: Could not find file 'C:\ProgramData\UniversalAutomation\Repository\Modules\SharePointPnPPowerShellOnline\3.29.2101.0\SharePointPnPPowerShellOnline.psm1'.
File name: 'C:\ProgramData\UniversalAutomation\Repository\Modules\SharePointPnPPowerShellOnline\3.29.2101.0\SharePointPnPPowerShellOnline.psm1'
at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle)
at System.IO.FileStream.CreateFileOpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.File.AsyncStreamReader(String path, Encoding encoding)
at System.IO.File.InternalReadAllTextAsync(String path, Encoding encoding, CancellationToken cancellationToken)
at UniversalAutomation.Services.ModulesConfigurationScript.ReadAsync(Boolean initialSync) in D:\a\universal\universal\src\Universal.Server\Services\Configuration\Modules.cs:line 51
at UniversalAutomation.Services.UniversalConfigurationService.NotifyChange(String fileName) in D:\a\universal\universal\src\Universal.Server\Services\UniversalConfigurationService.cs:line 148
Searching for .psm1 files in C:\ProgramData\UniversalAutomation\Repository\Modules shows that some modules do have them as expected, and in fact the missing ExchangeOnlineManagement.psm1 is under the ExchangeOnlineManagement\2.0.5\netCore and ExchangeOnlineManagement\2.0.5\netFramework folders:
The 0 size ones are the empty ones we added to get the dashboards to load.
Perhaps Universal.Server\Services\Configuration\Modules.cs always looks for (and expects) the script module .psm1 in the root, whereas it may not exist entirely or instead lives in a sub-folder?
Thanks.