For our backups we use a Perl script called znapzend.  This automates the creation of snapshots, sending them to the destination, and how long they are retained.  The znapzendzetup command creates backup plans for a dataset and stores the plan as user properties in the dataset's metadata.  

There are two components to znapzend.  One is the znapzend script itself, which runs as a system service in Solaris.  The other is the znapzendzetup script, which creates and stores the backup plans on each dataset.