Introduction

Delphix provides two similar, but different, mechanisms for customizing data management operations on SQL Server:

  1. Pre-Script and Post-Script
    • available only for backwards compatibility
  2. Hooks
    • introduced for SQL Server in Delphix virtualization engine v4.3
    • this is the more fully-functional mechanism

Both of these mechanisms are designed to allow custom-built scripts to be executed on a target host before or after Delphix operations such as dSource synchronizing, VDB provisioning, VDB refreshing, rewinding a VDB, or starting or stopping a VDB.  The purpose of such programmatic call-outs is to permit each Delphix object to be customized as needed.

For example, it is common to reset the passwords for database- or application-accounts when cloning from production, so that non-production users can access those accounts without jeopardizing security or privacy in production.  Likewise, there are other data which might need to be changed when cloning production to non-production, such as the IP hostnames or addresses of related systems, the pathnames of objects located in file-systems, and other application context settings which will need to be pointed to their appropriate equivalent in their non-production environment.  Sometimes, it might be automatically logging completed actions to an enterprise audit trail, or automatically starting another action.

For all of these customization purposes and more, hooks can be crafted to satisfy the purpose

NOTE: in this section, we'll describe how to use both the hook and pre-/post-script mechanisms, but it is strongly recommended the Hooks functionality is used over the pre-/post-script functionality.  

Hook Operations not supported by default

By default, the Delphix Engine does not provided hook operations for SQL Server dSources or VDBs.  Please submit a support case with Delphix Support to enable hooks, if necessary?

Please note also that Pre-/Post-Script and Hooks functionality are mutually-exclusive.  If Hooks are not enabled, then Pre-/Post-Scripts are available.  If Hooks are enabled, then Pre-/Post-Scripts are not available.

Execution Environment

Pre-/Post-Scripts execute as a Windows Powershell session only, while Hooks can execute either as a Windows Powershell session (default), or as a Masking job session.

For pre-/post-scripts and hooks defined as Windows Powershell sessions, the execution environment is...

  • For dSources, the Powershell session executes on the staging (validated-sync) target host using the environment user Windows domain account assigned to the dSource.
  • For VDBs or vFiles, the Powershell session executes on the VDB target host using the environment user Windows domain account assigned to the VDB or vFile.

Hooks which are defined as masking job sessions execute on the Delphix masking engine, and adhere to the environment, connector, and rule-set configurations of that previously-defined masking job.  For more information, please go to the Delphix Masking Engine Users Guide.

Types of Operations

Hooks for dSources

Hook
Description
Pre-Sync

Pre-sync hook operations are executed before a Snapsync of a dSource.

These operations can quiesce data to be captured during the Snapsync, or stop application processes that may interfere with the Snapsync operation.

Post-Sync

Post-Sync hook operations are executed after a Snapsync operation of a dSource.

These operations can undo any changes made by the pre-sync hooks. They will run regardless of the success of pre-sync hook operations or the Snapsync itself.

Hooks for VDBs and vFiles

Hook
Description
Configure Clone

Operations performed after initial provision or after a refresh.

This hook will run after the virtual dataset has been started.
During a refresh, this hook will run before the Post-Refresh hook.

Pre-Refresh

Operations performed before a refresh.
This hook will run before the virtual dataset has been stopped.

These operations can cache data from the virtual dataset to be restored after the refresh completes.

Post-Refresh

Operations performed after a refresh.
This hook will run after the virtual dataset has been started and after the Configure Clone hook.
This hook will not run if the refresh or Pre-Refresh hook operations fail.

These operations can restore cached data after the refresh completes.

Pre-Rewind

Operations performed before a rewind.
This hook will run before the virtual dataset has been stopped. 

These operations can cache data from the virtual dataset to be restored after the rewind completes.

Post-Rewind

Operations performed after a rewind. This hook will not run if the rewind or Pre-Rewind hook operations fail.
This hook will run after the virtual dataset has been started.
This hook will not run if the rewind or Pre-Rewind hook operations fail.

These operations can restore cached data after the rewind completes.

Pre-Snapshot

Operations performed before a snapshot.

These operations can quiesce data to be captured during the snapshot, or stop processes that may interfere with the snapshot.

Post-Snapshot

Operations performed after a snapshot.
This hook will run regardless of the success of the snapshot or Pre-Snapshot hook operations.

These operations can undo any changes made by the Pre-Snapshot hook.

Pre-Start

Operations performed before startup of a VDB or vFile.

These operations can be used to initialize configuration files, or stop processes that might interfere with the virtual dataset.

Post-Start

Operations performed after startup of a VDB of vFile.

These operations can be used to clean up any temporary files, or restart processes that may have been stopped by a Pre-Start hook, or log notifications.

Pre-Stop

Operations performed before shutdown of a VDB or vFile.

These operations can quiesce data or processes prior to virtual dataset shutdown.

Post-Stop

Operations performed after shutdown of a VDB or vFile.

These operations can be used to log notifications, clean up any temporary files, or stop/restart related processes.

Sequence of Operations

 The most basic thing to understand about hooks is when they execute.  There are many different hooks in Delphix, so understanding the sequence of operations is important to understanding the power of this capability, and the granularity to which operations can be separated.

Here is a list of Delphix operations and the order in which hooks and pre-/post-scripts are executed...

Linking or Syncing a dSource

SequenceDelphix operationHookPre-/Post-script
t0  Pre-Script
t1 Pre-Sync 
t1dSource Sync  
t2 Post-Sync 
t3  Post-Script

VDB Provision

SequenceDelphix operationHookPre-/Post-script
t0  Pre-Script
t1 Pre-Start 
t2VDB start  
t3 Post-Start 
t4  Post-Script
t5 Configure Clone 
t6 Pre-Snapshot 
t7VDB snapshot  
t8 Post-Snapshot 

 VDB Refresh

SequenceDelphix operationHookPre-/Post-script
t0 Pre-Refresh 
t1 Pre-Stop 
t2VDB stop  
t3 Post-Stop 
t4  Pre-Script
t5 Pre-Start 
t6VDB start  
t7 Post-Start 
t8  Post-Script
t9 Configure Clone 
t10 Post-Refresh 
t11 Pre-Snapshot 
t12VDB snapshot  
t13 Post-Snapshot 

 VDB Snapshot

SequenceDelphix operationHookPre-/Post-Script
t0 Pre-Snapshot 
t1VDB snapshot  
t2 Post-Snapshot 

 VDB Rewind

SequenceDelphix operationHookPre-/Post-Script
t0 Pre-Rewind 
t1 Pre-Stop 
t2VDB stop  
t3 Post-Stop 
t4  Pre-Script
t5 Pre-Start 
t6VDB start  
t7 Post-Start 
t8  Post-Script
t9 Post-Rewind 
t10 Pre-Snapshot 
t11VDB snapshot  
t12 Post-Snapshot