Skip to content

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