protected void postUploadTask(CallingContext cc) throws ODKExternalServiceException {
    // upload data to external service
    if (!fsc.getExternalServicePublicationOption()
        .equals(ExternalServicePublicationOption.STREAM_ONLY)) {

      UploadSubmissions uploadTask = (UploadSubmissions) cc.getBean(BeanDefs.UPLOAD_TASK_BEAN);
      CallingContext ccDaemon = ContextFactory.duplicateContext(cc);
      ccDaemon.setAsDaemon(true);
      uploadTask.createFormUploadTask(fsc, true, ccDaemon);
    }
  }
 @Override
 public void setUploadCompleted(CallingContext cc)
     throws ODKEntityPersistException, ODKOverQuotaException {
   fsc.setUploadCompleted(true);
   if (fsc.getExternalServicePublicationOption() == ExternalServicePublicationOption.UPLOAD_ONLY) {
     fsc.setOperationalStatus(OperationalStatus.COMPLETED);
   }
   Datastore ds = cc.getDatastore();
   User user = cc.getCurrentUser();
   ds.putEntity(fsc, user);
 }
 @Override
 public ExternServSummary transform() {
   return new ExternServSummary(
       fsc.getUri(),
       fsc.getCreatorUriUser(),
       fsc.getOperationalStatus(),
       fsc.getEstablishmentDateTime(),
       fsc.getExternalServicePublicationOption(),
       fsc.getUploadCompleted(),
       fsc.getLastUploadCursorDate(),
       fsc.getLastStreamingCursorDate(),
       fsc.getExternalServiceType(),
       getOwnership(),
       getDescriptiveTargetString());
 }