private static async Task <PpsObject> AppendAsync(IPpsAttachments attachments, PpsEnvironment environment, Func <Task <PpsObject> > createObject)
        {
            // every file one transaction, and exception handling
            using (var trans = await environment.MasterData.CreateTransactionAsync(PpsMasterDataTransactionLevel.Write))
            {
                var obj = await createObject();

                attachments.Append(obj);
                trans.Commit();
                return(obj);
            }
        }         // func AppendAsync
 private void OnAttachmentsSourceChanged(IPpsAttachments newValue, IPpsAttachments oldValue)
 {
     zusaList.ItemsSource = newValue;
 }         // proc OnAttachmentsSourceChanged
 /// <summary>Append a stream to the attachemnts list</summary>
 /// <param name="attachments"></param>
 /// <param name="environment"></param>
 /// <param name="source"></param>
 /// <param name="name"></param>
 /// <param name="mimeType"></param>
 /// <returns></returns>
 public static Task <PpsObject> AppendAsync(this IPpsAttachments attachments, PpsEnvironment environment, Stream source, string name, string mimeType)
 => AppendAsync(attachments, environment, () => environment.CreateNewObjectFromStreamAsync(source, name, mimeType));
        }         // func AppendAsync

        /// <summary>Append a file to the attachments list.</summary>
        /// <param name="attachments"></param>
        /// <param name="environment"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static Task <PpsObject> AppendAsync(this IPpsAttachments attachments, PpsEnvironment environment, string fileName)
        => AppendAsync(attachments, environment, () => environment.CreateNewObjectFromFileAsync(fileName));