There is no UI for these settings. All changes must be made by editing
LwL.ProfileUnity.Client.exe.config directly on each managed endpoint (or via GPP/SCCM/Intune file deployment). Incorrect XML syntax will prevent the ProfileUnity client from loading — always validate XML after editing.Default values shown are for 6.9.5. Earlier versions may not support all keys listed. Keys not present in the config file use their built-in defaults — you only need to add a key to override it.
Every environment is unique. No configuration change described in this article should be treated as authoritative for your deployment. All settings changes should be reviewed against your specific workload, tested in a non-production environment, and validated before any production rollout.
📄 Contents
- › Overview
- › Logging Settings
- › Core Execution Settings
- › Portability Settings
- › Printer Settings
- › Drive Mapping Settings
- › Postflight / Logoff Settings
- › Offline Detection Settings
- › Shortcut Settings
- › Registry Module Settings
- › Application Restrictions Settings
- › FlexApp Integration Settings
- › Azure Blob Storage Settings
- › AWS S3 Settings
- › Parallelism & Performance Settings
- › Additional Timeouts & Retries
- › Common Scenarios
- › Quick Reference
Overview
The file LwL.ProfileUnity.Client.exe.config is a standard .NET application configuration file located in the ProfileUnity client installation directory (C:\Program Files\ProfileUnity\). It controls low-level runtime behavior of the ProfileUnity client process — settings that are intentionally not exposed in the management console because they are infrastructure-specific tuning parameters rather than policy settings.
Settings are stored as <add key="SettingName" value="SettingValue"/> elements within the <appSettings> section. Boolean values accept True or False (case-insensitive). Integer values are in the units indicated in the Notes column. String values should not be quoted.
All keys use PascalCase and are case-sensitive. The prefix indicates the feature area:
Portability* for profile portability, Azure* for Azure Blob, S3* for AWS S3, FlexApp* for FlexApp, etc.Logging Settings
Control verbosity and structure of the ProfileUnity client log file.
| Setting | Default | Notes |
|---|---|---|
LogLevel |
Info | Log verbosity. Values: Off, Error, Warn, Info, Debug, Trace. Use Debug when troubleshooting; revert to Info in production to avoid disk I/O overhead. |
LogPerModule |
False | When True, writes a separate log file per functional module (portability, FlexApp, printers, etc.) in addition to the main log. Useful for isolating which component is causing a logon delay. |
LogMaxFileSizeMb |
10 | Maximum size of the main log file in megabytes before it rolls over. Increase for high-verbosity captures during troubleshooting sessions. |
LogMaxBackupFiles |
5 | Number of rolled-over log file backups to retain. Oldest files are deleted when this limit is reached. |
Core Execution Settings
These settings affect how the ProfileUnity client process initializes and handles errors.
Error Handling
| Setting | Default | Notes |
|---|---|---|
SuppressErrors |
False | When True, non-fatal errors encountered during rule processing are silently swallowed and do not interrupt logon. Recommended only in mature, stable deployments where known benign errors would otherwise generate noise. Use with DisplaySuppressedErrors for visibility. |
DisplaySuppressedErrors |
False | When True and SuppressErrors is also True, suppressed errors are still written to the log file but do not surface as user-visible dialogs. |
Path Settings
| Setting | Default | Notes |
|---|---|---|
ProfileUnityRelativePath |
(empty) | Override the relative path used when resolving the ProfileUnity share root. Leave empty in standard deployments. Only set if your share structure deviates from the default layout. |
Startup Timing
| Setting | Default | Notes |
|---|---|---|
StartupDelayMs |
0 | Milliseconds to wait after the client process starts before beginning rule evaluation. Use sparingly — adding artificial delay increases logon time. Only set when race conditions with third-party agents are confirmed. |
Portability Settings
The buffer, compression, and parallelism settings below apply to all storage types (SMB file shares, Azure Blob, and AWS S3). For cloud-specific transfer tuning, see: Azure Blob Storage Settings and AWS S3 Settings.
Portability settings directly affect how user profile data is read and written. Incorrect tuning (especially buffer sizes and hashing) can cause data loss or corruption. Always validate changes in a non-production environment with a representative workload before deploying broadly.
Buffer & Compression
| Setting | Default | Notes |
|---|---|---|
PortabilityCopyBufferSize |
1048576 | Read/write buffer size in bytes for portability file copy operations. Default is 1 MB (1048576). Increase to 4 MB (4194304) or 8 MB (8388608) on high-bandwidth file server paths to reduce copy time. Has no effect on Azure or S3 transfers (those use SDK chunking). |
PortabilityCompression |
(empty) | Compression algorithm for portability archives. Values: lzo (fastest, low CPU), zip (balanced), 7z (best ratio, high CPU), or empty (no compression). LZO is recommended when bandwidth is the constraint. Leave empty when CPU is the constraint or when using a storage tier with built-in compression. |
Archive Behavior
| Setting | Default | Notes |
|---|---|---|
PortabilitySkipFileArchiveCreationIfEmpty |
True | Skip creating an empty archive file during save if no data would be written. Prevents zero-byte archive clutter on the storage share. Recommended: keep True. |
PortabilityForceBackup |
False | Force a backup of the existing portability archive before overwriting, regardless of policy settings. Enable temporarily when testing significant configuration changes. |
PortabilityForceRestore |
False | Force a full restore from the portability archive at logon, bypassing incremental logic. Use only for troubleshooting suspected incremental restore issues. |
PortabilitySaveDespiteErrors |
False | When True, the portability save operation continues to completion even if individual file copy errors are encountered. Useful in environments with transient file lock conflicts. |
Parallelism
| Setting | Default | Notes |
|---|---|---|
PortabilityLogonParallelRules |
True | When True, portability rules are evaluated in parallel during logon rather than serially. This is the single highest-impact performance setting for portability. Keep True unless you observe rule ordering conflicts that require serial execution. |
PortabilityParallelRegAndFile |
False | When True, registry and file portability operations run concurrently. Provides additional throughput on fast SMB shares. Not recommended for Azure or S3 backends — use cloud-specific concurrency settings instead. |
File Locking & Reliability
| Setting | Default | Notes |
|---|---|---|
PortabilityUnlockFilesEnabled |
True | When True, the client attempts to unlock files held open by other processes before saving portability data. Reduces save failures due to locked profile files. |
PortabilityPostToEventLogOnFailure |
True | When True, portability save or restore failures are written to the Windows Application Event Log in addition to the ProfileUnity log file. Enables alerting via SIEM or event-log monitoring tools. |
PortabilityDisableHashing |
False | When True, skips MD5/SHA hash verification of portability archives. Eliminates hash computation overhead at the cost of integrity checking. Only consider if hashing is confirmed as a logon-time bottleneck via profiling. |
Printer Settings
Control timeout and retry behavior when mapping network printers during logon.
| Setting | Default | Notes |
|---|---|---|
PrintersConnectTimeoutInMs |
5000 | Milliseconds to wait for a single printer connection attempt before timing out. Increase on slow WAN links or when print servers are geographically distant. |
PrintersMaxAttemptsToAdd |
3 | Number of times to retry a failed printer connection before moving on. Higher values increase logon time when print servers are unreachable — keep at 3 or lower in most environments. |
Drive Mapping Settings
Control timeout behavior when mapping network drives during logon.
| Setting | Default | Notes |
|---|---|---|
DriveMappingMapTimeoutInMs |
5000 | Milliseconds to wait for a single drive map operation before timing out. Increase on slow networks; decrease in environments where quick failure-over is preferred. |
DriveMappingMaxRetries |
2 | Number of retry attempts for a failed drive mapping before skipping. Each retry adds up to DriveMappingMapTimeoutInMs of potential delay. |
Postflight / Logoff Settings
These settings control behavior during the logoff / postflight phase when portability data is saved.
| Setting | Default | Notes |
|---|---|---|
PostflightTimeoutMs |
120000 | Maximum milliseconds the postflight process is allowed to run before being forcibly terminated. Default is 2 minutes. Increase for users with very large portability data sets. |
PostflightWaitForProcessesMs |
5000 | Milliseconds to wait for user processes to exit cleanly before beginning the postflight save. Increase if locked-file errors are common at logoff. |
Offline Detection Settings
ProfileUnity performs a DNS/network test at logon to determine whether the endpoint is connected to the corporate network. These settings tune that test.
| Setting | Default | Notes |
|---|---|---|
OfflineTestDnsEntry |
(empty) | Hostname or FQDN to resolve as the online/offline connectivity test. Leave empty to use the ProfileUnity server hostname derived from the share path. Set to a reliable internal DNS name (e.g., your domain controller) if the default resolution is unreliable. |
OfflineTestTimeoutMs |
3000 | Milliseconds to wait for the DNS resolution to succeed before concluding the endpoint is offline. Reduce on fast LAN environments; increase on slow WAN or VPN connections. |
OfflineFallbackEnabled |
True | When True, the client applies the offline rule set when the connectivity test fails. When False, the client skips rule processing entirely if offline. |
Shortcut Settings
Control how ProfileUnity creates and manages desktop/Start Menu shortcuts.
| Setting | Default | Notes |
|---|---|---|
ShortcutCreateTimeoutMs |
2000 | Milliseconds to wait when creating a single shortcut before timing out. Increase if shortcut creation is failing on slow-responding shells. |
ShortcutRetryOnFailure |
True | When True, retries shortcut creation once after a failure before logging the error. |
Registry Module Settings
Settings for the registry portability and policy modules.
| Setting | Default | Notes |
|---|---|---|
RegistryPortabilityTimeoutMs |
30000 | Maximum milliseconds allowed for the full registry portability import/export operation. Increase for users with large registry hives (many custom application settings). |
RegistryImportRetries |
2 | Number of retry attempts on registry import failure before aborting. |
Application Restrictions Settings
Control the UI behavior of the Application Restrictions (app blocking) module.
| Setting | Default | Notes |
|---|---|---|
HideAppRestrictNotify |
False | When True, suppresses the toast/balloon notification shown to the user when an application is blocked by an Application Restrictions rule. Useful in kiosk or shared-desktop environments where the notification is inappropriate. |
FlexApp Integration Settings
These settings control how the ProfileUnity client interacts with FlexApp package mounting and assignment.
Mount Timeouts & Retries
| Setting | Default | Notes |
|---|---|---|
FlexAppVhdMountTimeoutMs |
30000 | Milliseconds to wait for a FlexApp VHD/VHDX to mount before declaring a mount failure. Increase on slow storage back-ends or when mounting over WAN connections. |
FlexAppMaxTries |
3 | Number of mount attempts for a FlexApp package before marking it as failed for this session. Each attempt waits up to FlexAppSleepBetweenTriesMs before retrying. |
FlexAppSleepBetweenTriesMs |
2000 | Milliseconds to wait between FlexApp mount retry attempts. Tune with FlexAppMaxTries to balance reliability against added logon latency. |
Parallelism
| Setting | Default | Notes |
|---|---|---|
FlexAppNonJitCutReplayInParallel |
True | When True, non-JIT FlexApp cut/replay operations run in parallel. Reduces overall FlexApp assignment time when multiple packages are assigned to a user. Disable only if parallel mount conflicts are observed. |
Filter Evaluation
| Setting | Default | Notes |
|---|---|---|
FilterParallelEvaluation |
True | When True, FlexApp filter rules are evaluated in parallel across assigned packages. Significant performance gain when a user has many package assignments. Disable if filter evaluation order dependency is required. |
LayeredAppAsyncExecution |
True | When True, layered application assignments execute asynchronously during logon. Reduces perceived logon time by deferring non-critical app layer attachment. |
Azure Blob Storage Settings
These settings tune Azure Blob Storage transfer behavior when portability data or FlexApp packages are stored in Azure Blob. Relevant only in Azure-backed deployments.
| Setting | Default | Notes |
|---|---|---|
AzureMaximumConcurrency |
64 | Maximum number of concurrent Azure Blob SDK transfer threads. Default is 64. Reduce if Azure throttling (HTTP 429) is observed; increasing beyond default rarely helps and can worsen throttling. |
AzureInitialTransferSizeMb |
1 | Initial block size in megabytes for Azure Blob uploads/downloads. Increase to 4–8 MB for large profile archives on high-bandwidth Azure regions. |
AzureMaximumTransferSizeMb |
4 | Maximum block size in megabytes the SDK may use when auto-scaling transfer chunks. Pair with AzureInitialTransferSizeMb. |
AzureGetGroupMaxTries |
3 | Number of retry attempts for Azure Blob group-fetch operations (e.g., listing container contents). Increase in regions with higher transient error rates. |
AzureGetGroupTimeoutSeconds |
30 | Seconds before an Azure group-fetch operation times out. Increase if Azure management-plane operations are slow in your region. |
AWS S3 Settings
These settings tune AWS S3 transfer behavior when portability data or FlexApp packages are stored in S3. Relevant only in S3-backed deployments.
| Setting | Default | Notes |
|---|---|---|
S3ReadWriteTimeoutMs |
(empty) | S3 read/write timeout override in milliseconds. Empty = use SDK default. Set for endpoints with high-latency or throttled S3 access. Tune together with S3TimeoutMs. |
S3TimeoutMs |
(empty) | S3 connection timeout override in milliseconds. Empty = use SDK default. Increase if S3 endpoint connection attempts are timing out before data transfer begins. |
Parallelism & Performance Settings
General parallelism and performance settings that apply across multiple modules. For storage-specific parallelism, see Azure Blob Storage Settings and AWS S3 Settings.
| Setting | Default | Notes |
|---|---|---|
PowershellScriptFilterTimeoutMs |
10000 | Milliseconds to wait for a PowerShell script filter to return a result. Increase if complex filter scripts are timing out; keep low to prevent slow scripts from blocking logon. |
TimeoutMsForIsRDSWmi |
5000 | Milliseconds to wait for the WMI query that determines whether the session is running on an RDS host. Increase if WMI is slow to respond in your environment (common on freshly booted servers). |
MaxParallelThreads |
8 | Upper bound on the total number of parallel worker threads the ProfileUnity client may spawn during logon. Reduce on CPU-constrained endpoints (e.g., 2-vCPU VMs) to prevent thread contention. |
Additional Timeouts & Retries
Miscellaneous timeout and retry knobs not covered in the section-specific tables above.
| Setting | Default | Notes |
|---|---|---|
GlobalRuleTimeoutMs |
60000 | Maximum milliseconds allowed for any single rule to complete. Rules exceeding this limit are aborted and logged as timed out. Increase only for known-slow rule types (e.g., large registry imports). |
NetworkRetryCount |
3 | Number of times to retry any network operation (share access, DNS, etc.) before failing. Applies globally unless overridden by a module-specific retry setting. |
NetworkRetryDelayMs |
1000 | Milliseconds to wait between network retry attempts. Exponential backoff is not applied — each retry waits exactly this duration. |
Common Scenarios
Use the scenarios below as a starting point for diagnosing and resolving common configuration issues.
► Enabling Debug Logging for a Troubleshooting Session
- Set
LogLeveltoDebug(orTracefor maximum verbosity). - Set
LogPerModuletoTrueto get per-module log files. - Reproduce the issue, then collect log files from
C:\ProgramData\ProfileUnity\Logs\. - Revert
LogLeveltoInfoafter capturing logs.
► Portability Taking Too Long at Logon
On-Prem / SMB File Server
- Verify
PortabilityLogonParallelRules = True. - Increase
PortabilityCopyBufferSizeto 4 MB (4194304) or 8 MB (8388608) for high-bandwidth paths. - If compression is enabled, try
PortabilityCompression = lzo(fastest) or set to empty (none). - Consider enabling
PortabilityParallelRegAndFileafter testing on your specific storage platform. - If hashing is confirmed as a bottleneck, evaluate
PortabilityDisableHashing = Truewith Liquidware Support.
Azure Blob Storage
- Verify
PortabilityLogonParallelRules = True. - Increase
AzureInitialTransferSizeMbandAzureMaximumTransferSizeMb(e.g., 4–8 MB) for large profile archives on high-bandwidth connections. - If Azure throttling is observed, reduce
AzureMaximumConcurrency(default 64) rather than increasing it. - Compression (lzo/zip/7z) is generally less effective over Azure due to endpoint-side decompression overhead — test before enabling.
AWS S3
- Verify
PortabilityLogonParallelRules = True. - If transfer timeouts occur, set
S3ReadWriteTimeoutMsandS3TimeoutMsto values matching your S3 endpoint's observed latency characteristics. - Increase
PortabilityCopyBufferSizefor high-throughput S3 regions with good bandwidth.
► FlexApp Packages Failing to Mount
- Increase
FlexAppVhdMountTimeoutMs(e.g., to 60000) to rule out timeout as the cause. - Increase
FlexAppMaxTriesto 5 and setFlexAppSleepBetweenTriesMsto 3000 to add retry resilience. - Enable
LogLevel = DebugandLogPerModule = True, then reproduce the failure to capture detailed mount attempt logs.
► Users Incorrectly Detected as Offline
- Set
OfflineTestDnsEntryto a reliable internal hostname (e.g., your primary domain controller FQDN). - Increase
OfflineTestTimeoutMsif VPN or slow WAN connections are causing the DNS test to time out before completing.
Quick Reference
The most commonly tuned settings, their defaults, and when to change them.
| Setting | Default | Applies To | Change When… |
|---|---|---|---|
LogLevel |
Info | All | Troubleshooting logon issues or profiling performance. |
LogPerModule |
False | All | Isolating which module is causing logon delays. |
SuppressErrors |
False | All | Silencing known benign errors in stable environments. |
DisplaySuppressedErrors |
False | All | Keeping suppressed errors visible in logs despite suppression. |
PortabilityCopyBufferSize |
1048576 | All | Logon takes too long on a high-bandwidth SMB share. |
PortabilityCompression |
(empty) | All | Bandwidth is the bottleneck (try lzo) or CPU is the bottleneck (try empty). |
PortabilitySkipFileArchiveCreationIfEmpty |
True | All | Empty archives are cluttering the share (keep True). |
PortabilityLogonParallelRules |
True | All | Almost never — keep True unless rule ordering conflicts exist. |
PortabilityParallelRegAndFile |
False | On-Prem | Logon is slow on a fast SMB share and parallel reg+file is safe. |
PortabilityForceBackup / ForceRestore |
False | All | Temporarily testing major config changes or diagnosing restore issues. |
PortabilitySaveDespiteErrors |
False | All | Transient file lock errors are causing save aborts. |
PortabilityUnlockFilesEnabled |
True | All | File lock conflicts cause save failures (keep True). |
PortabilityPostToEventLogOnFailure |
True | All | Event-log alerting is needed for portability failures (keep True). |
OfflineTestDnsEntry |
(empty) | All | Users are incorrectly detected as offline. |
OfflineTestTimeoutMs |
3000 | All | VPN/WAN connectivity test times out before completing. |
PrintersConnectTimeoutInMs |
5000 | On-Prem | Printer mapping times out on slow WAN or distant print servers. |
PrintersMaxAttemptsToAdd |
3 | On-Prem | Printer mapping is unreliable but print servers are reachable. |
DriveMappingMapTimeoutInMs |
5000 | On-Prem | Drive mapping times out on slow networks. |
FlexAppVhdMountTimeoutMs |
30000 | On-Prem | FlexApp mounts are timing out on slow storage. |
FlexAppNonJitCutReplayInParallel |
True | All | FlexApp assignment is slow with many packages (keep True). |
FlexAppMaxTries |
3 | On-Prem | FlexApp mounts fail intermittently due to transient errors. |
FlexAppSleepBetweenTriesMs |
2000 | On-Prem | Tuning retry cadence for FlexApp mount retries. |
AzureMaximumConcurrency |
64 | Azure | Azure throttling (HTTP 429) is observed — reduce, don’t increase. |
AzureGetGroupMaxTries |
3 | Azure | Transient Azure API errors are causing group-fetch failures. |
AzureGetGroupTimeoutSeconds |
30 | Azure | Azure management-plane operations are slow in your region. |
FilterParallelEvaluation |
True | All | Many FlexApp packages are assigned and filter evaluation is slow. |
LayeredAppAsyncExecution |
True | All | Non-critical app layer attachment is delaying logon completion. |
PowershellScriptFilterTimeoutMs |
10000 | All | Complex PowerShell filter scripts are timing out. |
TimeoutMsForIsRDSWmi |
5000 | All | WMI is slow on your RDS hosts. |
HideAppRestrictNotify |
False | All | App-block notifications are inappropriate (kiosk/shared desktop). |
S3ReadWriteTimeoutMs / S3TimeoutMs |
(empty) | S3 | S3 transfer or connection timeouts are occurring. |
ProfileUnityRelativePath |
(empty) | All | Share structure deviates from the default ProfileUnity layout. |
| Product | Liquidware ProfileUnity | Component | ProfileUnity Client (LwL.ProfileUnity.Client.exe) |
| Applies To | ProfileUnity 6.8.5 and later | Updated | July 2026 |