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.