eOne.FabricWarehouse.psd1

@{
    RootModule        = 'eOne.FabricWarehouse.psm1'

    # The schema version, not just the module's. A customer reporting a problem gives you this
    # number and you know exactly which tables, views and derivations they are running.
    ModuleVersion     = '1.0.0'

    GUID              = 'b1f4b7c2-6a3d-4f1e-9d54-7a1c2e5f8b30'
    Author            = 'eOne Solutions'
    CompanyName       = 'eOne Solutions'
    Copyright         = '(c) eOne Solutions. All rights reserved.'

    Description       = @'
Deploys the eOne Integration for Business Central warehouse schema into Microsoft Fabric: the bcRaw
landing tables the SmartConnect maps insert into, the bc current-state views that resolve them to
one row per record, and the bcModel reporting, lifecycle and data-quality views over those.
 
Install-eOneWarehouse builds a warehouse. Update-eOneWarehouse brings an existing one up to date
without discarding what it holds.
 
Requires the SqlServer module, version 21.1 or newer:
 
    Install-Module SqlServer -Scope CurrentUser -AllowClobber
 
-AllowClobber is not optional on a machine with SSMS installed: its SQLPS module already exports
Invoke-Sqlcmd and the install fails without it. Creating the warehouse item (-CreateWarehouse) also
needs Az.Accounts.
'@


    PowerShellVersion = '5.1'

    # SqlServer is deliberately NOT in RequiredModules. Dependency resolution would install it
    # without -AllowClobber, which fails with CommandAlreadyAvailable on exactly the machines the
    # deployment targets - anything with SQL Server tooling, where SQLPS already exports
    # Invoke-Sqlcmd. The module checks for it at run time and prints the command that works.
    # Az.Accounts stays out for the same reason plus its weight: it is needed only to CREATE a
    # warehouse item, not to deploy into one.
    RequiredModules   = @()

    FunctionsToExport = @('Install-eOneWarehouse', 'Update-eOneWarehouse')
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()

    # No FileList. Deploy-EOneWarehouse.ps1 and sql\ are staged into this folder by the packaging
    # step and live one level up in the repo, so listing them here makes Test-ModuleManifest fail
    # during development for files that are correct at publish time. FileList is informational
    # only; it is not worth failing the manifest test over.

    PrivateData       = @{
        PSData = @{
            # No Prerelease line: this is 1.0.0 proper. The two previews were installed from the
            # real Gallery and driven against a real warehouse before it was promoted, which is
            # what the preview versions were for. Gallery versions are immutable, so a fix ships
            # as 1.0.1 rather than as a replacement.

            Tags         = @('Fabric', 'MicrosoftFabric', 'BusinessCentral', 'Dynamics365',
                             'DataWarehouse', 'eOne', 'SmartConnect', 'ETL')
            ProjectUri   = 'https://github.com/eonesolutions/eone-fabric-warehouse'
            # Both taken from the AppSource listing (appsource/Core/listing.md) so the Gallery,
            # AppSource and app.json cannot describe the product three different ways.
            LicenseUri   = 'https://www.eonesolutions.com/end-user-license-agreement/'
            IconUri      = 'https://raw.githubusercontent.com/eonesolutions/eone-fabric-warehouse/main/icon.png'
            ReleaseNotes = @'
1.0.0
  First release.
 
  - Install-eOneWarehouse deploys the schema: the bcRaw landing tables the SmartConnect maps
    insert into, the bc current-state views that resolve them to one row per record, and the
    bcModel reporting, lifecycle and data-quality views over those.
  - Update-eOneWarehouse recreates every view and adds any missing landing table, leaving existing
    tables and their rows untouched. A first install refuses to run over an existing deployment
    and says so; Install-eOneWarehouse -Rebuild is the deliberate, confirmed way to start again.
  - -CreateWarehouse creates the Fabric warehouse item first, and signs in a second time by itself
    when the second audience needs it.
  - Sign-in checks the session before asking for credentials. A window where another module has
    already bound the assemblies MSAL needs cannot authenticate at all, and now says which module
    and what to do instead of failing on a missing type.
'@

        }
    }
}