Rnwood.Dataverse.Data.PowerShell.psd1

@{
# Script module or binary module file associated with this manifest.
RootModule = ""

# Version number of this module.
ModuleVersion = "2.0.0"

# ID used to uniquely identify this module
GUID = 'CF2F6EF2-D649-4DBE-909F-CF3C6FED6112'

# Author of this module
Author = 'Rob Wood <rob@rnwood.co.uk>'

# Company or vendor of this module
CompanyName = 'Rob Wood'

Description = 'Dataverse data manipulation cmdlets'

# Copyright statement for this module
Copyright = '(c) 2024 Robert Wood <rob@rnwood.co.uk>. See licence.'

CompatiblePSEditions = @("Core", "Desktop")

# Description of the functionality provided by this module
# Description = ''

# Minimum version of the Windows PowerShell engine required by this module
# For Desktop edition: 5.1+
# For Core edition: 7.4+ (requires .NET 8.0 runtime)
PowerShellVersion = '5.1'

# Name of the Windows PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the Windows PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Assemblies that must be loaded prior to importing this module
RequiredAssemblies = @()

RequiredModules = @()

PrivateData = @{
    PSData = @{
        ReleaseNotes = 'BREAKING CHANGES:
  - support multilingual sitemap titles and descriptions with LCID (#248)

Features:
  - add PowerShell Gallery links and installation docs to GitHub releases (#258)
  - add Set/Remove-DataverseSolutionComponent cmdlets (#197)
  - add cmdlets for plugin assembly, package, type, step, and image management (#196)
  - add Get/Set/Remove-DataverseWebResource cmdlets with file system integration (#195)
  - add comprehensive e2e test for form manipulation (#251)
  - extend set-dataverseattritibemetadata so it can create lookup fields (and e2e tests for all metadata ops) (#252)
  - add cmdlets to manage record sharing in Dataverse (#239)
  - add icon webresource validation to Set-DataverseEntityMetadata (#249)
  - add get/set/remove cmdlets for form CRUD operations and form components with positioning support and raw XML control manipulation (#194)
  - change Get-DataverseEntityMetadata to use -Exclude* parameters (#242)
  - add -Published parameter to metadata Get cmdlets (#240)
  - include unpublished records by default in sitemap/appmodule cmdlets (#241)
  - add icon properties and EntityMetadata parameter to Set-DataverseEntityMetadata (#235)
  - convert Invoke-DataverseRequest NameAndInputs responses to PSObjects with display values (#220)
  - add RetrieveAsIfPublished and -Publish parameter to metadata cmdlets (#231)
  - cmdlets for sitemap and sitemap entry CRUD operations (#193)
  - add AppModule cmdlets for managing model-driven apps (#227)
  - view management cmdlets (Get/Set/Remove) with FetchXML and simplified filter syntax (#192)
  - implement conventional commits-based versioning, release notes, and PR validation for CI builds (#209)
  - Publish CI builds with auto-versioned -ci suffix to GitHub releases and PowerShell Gallery (#199)
  - Experimental intelligent upgrade vs install decision for solution import & Solution component listing for solution files and environment and comparison of status. (#172)
  - saving and loading of connections (#166)
  - Add client certificate authentication support to Get-DataverseConnection (#164)
  - Add parallel processing support to Set-DataverseRecord with MaxDegreeOfParallelism parameter (#161)
  - Add batching, streaming, and paging optimizations to MatchOn retrieval in Get-DataverseRecord and Remove-DataverseRecord cmdlets (#156)
  - Add batching support (#142)

Bug Fixes:
  - replace SVG logo with PNG for better device compatibility (#257)
  - remove PowerShell 7+ syntax for PS 5.1 compatibility (#255)
  - add required attributes to sitemap entries and fix update handling (#250)
  - restore corrupted savedquery.xml from git history (commit db9171b) (#247)
  - intercept RetrieveUnpublished requests in mock connection (#245)
  - make Name optional for updates and remove incorrect IsManaged validation (#232)
  - ensure unmanaged solutions return correct components (#229)
  - query unpublished data first in AppModule and Sitemap cmdlets (#230)
  - Rename Remove-DataverseAttribute to Remove-DataverseAttributeMetadata (#223)
  - prevent double-incrementing versions on main branch when multiple PRs merge (#221)
  - ManyToMany relationship creation - add missing IntersectEntitySchemaName property (#215)
  - Prerelease string formatting in publish.yml
  - ArgumentCompleters.ps1 test structure causing error and hanging (#210)
  - Argument completers use default connection when -Connection not provided (#204)

Other Changes:
  - Improve README clarity and feature descriptions
  - Tidy up README and other docs
  - ensure all new features are in the features list
  - remove markdown TOC auto-generation and all embedded TOCs (#256)
  - parallelize e2e tests and gate publishing on all matrix jobs (#253)
  - fix failing form tests (#246)
  - Tidy up README features list
  - Fix solution component extraction. (#233)
  - centralize not found exception detection in QueryHelpers (#228)
  - Allow querying unpublished (#226)
  - Ensure build was generated for last commit
  - update dependency microsoft.web.webview2 to 1.0.3595.46 (#216)
  - update dependency markmpn.sql4cds.engine to 10.1.1 (#222)
  - Remove low-value tests and improve test parallelization (#219)
  - Separate PR title validation into dedicated workflow with edited event trigger (#218)
  - Delete obsolete file
  - validate conventional commit from PR title instead of description. (#217)
  - Remove bad safety features and best practices sections
  - Simplify metadata section by removing key concepts
  - Update installation instructions for PowerShell module
  - Fix powershell gallery release notes - Run # Add release notes to module manifest ParserError: D:\a\_temp\97de41b4-4218-4b00-84e7-d0c412ceea3c.ps1:11 Line
  - Fix PS5 test failures caused by parallel job module isolation, script scoping, and assembly loading (#212)
  - Add branch filter for main in publish workflow
  - Fix slow CI tests by refactoring to Common.ps1 include pattern, optimize metadata loading, and enable parallel execution (#211)
  - Add cmdlets for managing environment variables and connection references (#191)
  - Use date-based CI version format with SemVer 1.0 compliance (#208)
  - Reduce test retry delays from 1s to 0.1s for 10x faster execution (#206)
  - Remove flawed code coverage reporting from CI (#200)
  - Add -SkipIfSameVersion and -SkipIfLowerVersion switches to Import-DataverseSolution (#205)
  - Modify prerelease string format in publish.yml
  - Fix CI release creation failing on duplicate tag names (#207)
  - Remove SDK-generated cmdlets and generator (#203)
  - Skip long-running e2e tests in CI/CD (#202)
  - Fix CI publish: Remove invalid -AllowPrerelease parameter from Publish-Module (#201)
  - Add metadata get/set/remove cmdlets for entity, attributes, relationships (#190)
  - Tests: ensure e2e tests stop on first error (#198)
  - Fix column :Raw and :Display suffix parsing in Get-DataverseRecord (#188)
  - update actions/upload-artifact action to v5 (#186)
  - tests: unskip 7 tests by using available contact entity metadata (#187)
  - update actions/github-script action to v8 (#185)
  - Tests: extend test coverage across more key functionality (#184)
  - Set-DataverseRecord
  - update actions/github-script action to v8 (#180)
  - update actions/setup-dotnet action to v5 (#181)
  - update actions/upload-artifact action to v5 (#182)
  - Add CI test coverage reporting with instrumented line/branch coverage and PR deltas (#178)
  - tests: Tidy up tests (#176)
  - update dependency microsoft.powerplatform.dataverse.client to 1.2.10 (#50)
  - update dependency azure.identity to 1.17.0 (#95)
  - update dependency microsoft.identity.client.extensions.msal to 4.78.0 (#169)
  - update actions/checkout action to v5 (#175)
  - Breaking change: PowerShell (core) support for < 7.4 is dropped (#173)
  - Restructure documentation from monolithic README into modular docs/ hierarchy (#174)
  - Add solution management cmdlets: Get-DataverseSolution, Get-DataverseSolutionFile, Publish-DataverseCustomizations, Remove-DataverseSolution, Set-DataverseSolution (#171)
  - Add -FromPac parameter to Get-DataverseConnection for PAC CLI profile integration (#170)
  - Add Export/Import-DataverseSolution cmdlets with async job monitoring, connection references, environment variables, good default mode and upgrade to install fallback for other modes (#167)
  - Add Ctrl+C (StopProcessing) support to Get-DataverseRecord and Invoke-DataverseSql cmdlets including during IO operations (#165)
  - Fix repeated "Waiting X.Xs for next retry" verbose messages in batch processors (#163)
  - Enable retries with parallelism in Set-DataverseRecord and Remove-DataverseRecord (#162)
  - Implement parallel processing for Remove-DataverseRecord using MaxDegreeOfParallelism parameter (#160)
  - Split inner classes from cmdlets into separate files using partial classes (#159)
  - Extract shared utilities to eliminate code duplication across cmdlets (#158)
  - Add MatchOn and AllowMultipleMatches support to Remove-DataverseRecord, Set-DataverseRecord, and Get-DataverseRecord (#155)
  - Ensure BypassBusinessLogicExecution parameters are applied at both batch and individual request levels (#154)
  - Fix ExecuteMultiple response mapping for multi-request contexts (#152)
  - Fix Set-DataverseRecord -PassThru to always return PSObject for uniformity (#153)
  - Fix RetrievalBatchProcessor processing failed items immediately instead of retrying (#151)
  - Fix OptionSetValueCollection equality comparison in RemoveUnchangedColumns (#150)
  - Fix CallerId not correctly restored after non-batch request execution (#149)
  - improve maintainability of set-dataverserecord cmdlet which has become very complex (#143)
  - Ensure help doesn''t build when it shouldn''t. Ensure cmdlets build when debugging if they changed. (#141)
  - Support acces token auth for integration into already authenticated scenarios (#140)
  - Extract control flow to context class and separate batch processor in RemoveDataverseRecordCmdlet (#137)
  - Implement configurable retries on all main cmdlets and fix regressions from batched retrieval (#135)
  - Add batched retrieval to Set-DataverseRecord for improved performance when using the default options (#128)
  - Add comprehensive tests for Set-DataverseRecord covering all parameters and documented behaviors (#132)
'
;
        ExternalModuleDependencies = @()
    }
}

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
ScriptsToProcess = @('ValidateVersion.ps1')

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
NestedModules = 
@(if ($PSEdition -eq 'Core') {
    @(
        "loader/net8.0/Rnwood.Dataverse.Data.PowerShell.Loader.dll",
        "cmdlets/net8.0/Rnwood.Dataverse.Data.PowerShell.Cmdlets.dll",
        "Get-DataverseRecordsFolder.psm1",
        "Set-DataverseRecordsFolder.psm1"
    )
}
 else {
     @(
        "loader/net462/Rnwood.Dataverse.Data.PowerShell.Loader.dll",
        "cmdlets/net462/Rnwood.Dataverse.Data.PowerShell.Cmdlets.dll",
        "cmdlets/net462/Microsoft.Xrm.Sdk.dll",
        "Get-DataverseRecordsFolder.psm1",
        "Set-DataverseRecordsFolder.psm1"
     )
 }
)


# Functions to export from this module
FunctionsToExport = '*'

# Cmdlets to export from this module
CmdletsToExport = '*'

# Variables to export from this module
VariablesToExport = '*'

# Aliases to export from this module
AliasesToExport = '*'

# List of all modules packaged with this module
ModuleList = @()

# List of all files packaged with this module
# FileList = @()


# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''
}