Create and manage stores
This article discusses how you can create and manage stores using the new cmdlets in the Zervicepoint Powershell module.
Introduction
Version 1.20.XXXX of Zervicepoint introduces a few new cmdlets designed to create, update and delete stores. This article will provide you with some practical examples.
The new cmdlets covered in this article are:
- Get-ZPStore
- New-ZPStore
- Set-ZPStore
- Remove-ZPStore
- New-ZPCertificate
- New-ZPTrustedIssuer
Please note that in order to retrieve, create, update and remove stores other than the store you're logged in to, you must be a member of the CentralAdministrator role in addition to the ApiStoreAdministrator role required for API access.
Retrieving information about a store
To retrieve information about a store, use the Get-ZPStore cmdlet. You can retrieve a store based on its ID, UniqueID, Name, DisplayName or RouteName. You can also list all the stores in the Zervicepoint instance.
Example: Retrieving stores using Get-ZPStore
# Get store by ID
Get-ZPStore -Id 1
# Get store by UniqueId
Get-ZPStore -UniqueId d74d3d54-2438-4078-a26e-c14b6324d931
# Get store by Name
Get-ZPStore -Name Store
# Get all stores (or the current store if you are not a central aministrator)
Get-ZPStore
Creating a new store from scratch
To create a new store from scratch you can either create a store object using the New-Object cmdlet, populate its members and run the New-ZPStore cmdlet with the -Object parameter, or you can run New-ZPStore passing the store properties as separate parameters. Below are two examples demonstrating the two approaches.
Example: Creating a new store using the -Object parameter
# Get an empty Store object
$store = New-Object Zipper.ZervicePoint.WebApi.PowerShell.Models.Store
# Set general properties
$store.Name = $store.DisplayName = $store.RouteName = "Demo1"
$store.Languages = @("en-US", "sv-SE")
$store.DefaultLanguage = "en-US"
$store.DefaultCulture = "en-US"
$store.DefaultTimeZone = "W. Europe Standard Time"
$store.UseNewUI = $true
# Set authentication properties
$store.IdentityProviderType = [Zipper.ZervicePoint.WebApi.PowerShell.Models.IdentityProviderType]::ADFS
$store.Issuer = "https://auth.company.com/adfs/ls/"
$store.FederationMetadataEndpoint = "https://auth.company.com/FederationMetadata/2007-06/FederationMetadata.xml"
$store.TrustedIssuers.Add((New-ZPTrustedIssuer -Type Login -Name auth.company.com -Thumbprint 56A9436980D7085EC8F25486DA39F3C38CC0F641))
$store.TrustedIssuers.Add((New-ZPTrustedIssuer -Type Provisioning -Name auth.company.com -Thumbprint 56A9436980D7085EC8F25486DA39F3C38CC0F641))
# Set outgoing email properties
$store.SMTPServer = "smtpserver.company.com"
$store.SMTPPort = 25
$store.SMTPEnableSSL = $true
$store.SMTPFromAddress = "noreply@conmpany.com"
# Set store administrators
$store.StoreAdministrators = @("administrator@company.com")
# Set on-premises properties
$store.ClientWebServiceUrl = "https://zervicepoint.company.com:8443/ProviderService.svc/CallProvider"
$store.ProvisioningAccount = "administrator"
# Create a new certificate
$certificate = New-ZPCertificate -CommonName demo1.zervicepoint.company.com -PassThru
# Set thumbprints for datasigning and tokensigning
$store.DataSigningCertificateThumbprint = $certificate.Thumbprint
$store.TokenSigningCertificateThumbprint = $certificate.Thumbprint
# Create the store
New-ZPStore -Object $store
Example: Creating a store using separate parameters
# Create trusted issuer objects for login and provisioning
$loginTrustedIssuer = New-ZPTrustedIssuer -Type Login -Name auth.company.com -Thumbprint 56A9436980D7085EC8F25486DA39F3C38CC0F641
$provisioningTrustedIssuer = New-ZPTrustedIssuer -Type Provisioning -Name auth.company.com -Thumbprint 56A9436980D7085EC8F25486DA39F3C38CC0F641
# Create a certificate for datasigning and tokensigning
$certificate = New-ZPCertificate -CommonName demo2.zervicepoint.company.com -PassThru
# Create the store
New-ZPStore -Name "Demo2" -DisplayName "Demo2" -RouteName "Demo2" -Language @("en-US","sv-SE") -DefaultLanguage "en-US" -DefaultCulture "en-US" -DefaultTimeZone "W. Europe Standard Time" -UseNewUI $true -IdentityProviderType ADFS -Issuer "https://auth.company.com/adfs/ls/" -FederationMetadataEndpoint "https://auth.company.com/FederationMetadata/2007-06/FederationMetadata.xml" -TrustedIssuer @($loginTrustedIssuer,$provisioningTrustedIssuer) -SMTPServer "smtpserver.company.com" -SMTPPort 25 -SMTPEnableSSL $true -SMTPFromAddress "noreply@conmpany.com" -StoreAdministrator @("administrator@company.com") -ClientWebServiceUrl "https://zervicepoint.company.com:8443/ProviderService.svc/CallProvider" -ProvisioningAccount "administrator" -DataSigningCertificateThumbprint $certificate.Thumbprint -TokenSigningCertificateThumbprint $certificate.Thumbprint
Creating a new store based on an existing store
You can use the Get-ZPStore cmdlet to get an existing store object, modify any properties you want, and then pass the store object to the New-ZPStore cmdlet. Here's an example:
Example: Creating a store based on an existing store
# Get an existing store
$store = Get-ZPStore -Name Store
# Modify some properties (Name, RouteName and AddressMappings mast be unique)
$store.Name = "Demo3"
$store.DisplayName = $store.Name
$store.RouteName = $store.Name
$store.AddressMappings.Clear()
$store.StoreAdministrators = @("demo3administrator@company.com")
$certificate = New-ZPCertificate -CommonName demo3.zervicepoint.company.com -PassThru
$store.DataSigningCertificateThumbprint = $certificate.Thumbprint
$store.TokenSigningCertificateThumbprint = $certificate.Thumbprint
# Create the new store
$store | New-ZPStore
Creating a new store and cloning the content of an existing store
When creating a new store using the New-ZPStore cmdlet, you can use the -ContentStore parameter to clone the content (services, shared processes, pages, tags etc) of an existing store. Here's an example:
Example: Creating a store and cloning content of an existing store
# Get an existing store
$store = Get-ZPStore -Name Store
# Set new name, displayname and routename, and clear the address mappings
$store.Name = "Demo4"
$store.DisplayName = $store.Name
$store.RouteName = $store.Name
$store.AddressMappings.Clear()
# Create the new store
$store | New-ZPStore -ContentStore Store
Updating an existing store
To update an existing store, you start by retrieving the store using Get-ZPStore, then changing the desired properties of the store object, and finally passing it to Set-ZPStore. Here's an example:
Example: Generating a new certificate and updating the store
# Get the store
$store = Get-ZPStore -Name Demo1
# Generate new certificate and update the thumbprint properties
$certificate = New-ZPCertificate -CommonName demo2.zervicepoint.company.com -PassThru
$store.DataSigningCertificateThumbprint = $certificate.Thumbprint
$store.TokenSigningCertificateThumbprint = $certificate.Thumbprint
# Commit changes
Set-ZPStore -Object $store
Deleting a store
You can delete an existing store using Remove-ZPStore by either passing the store object (using the pipeline or the -Object parameter), or by passing the ID, UniqueId, Name, DisplayName or RouteName. Below are a few examples:
Example: Deleting a store
# Deleting a store by passing the store object
Get-ZPStore -Name Demo1 | Remove-ZPStore
# Deleting a store by ID
Remove-ZPStore -Id 3
# Deleting a store by Name
Remove-ZPStore -Name Demo3