public void processSignRequest() throws ServiceException {
		Report.trace( "bezzotechcosign", "Entering processSignRequest, passed in binder:", null );
		m_binder.putLocal( "xSignatureStatus", "sent-to-cosign" );
		m_cmutils.update();
		m_cmutils.checkout();

		m_binder.putLocal( "CoSign.Document.fields", "fileID;contentType;content" );
		m_binder.putLocal( "CoSign.Document.fileID", m_binder.getLocal( "dDocName" ) );
		m_binder.putLocal( "docId", m_binder.getLocal( "dID" ) );
		ResultSet rset = m_cmutils.getDocInfo( m_binder.getLocal( "docId" ) );
		m_binder.putLocal( "CoSign.Document.contentType", ResultSetUtils.getValue( rset, "dExtension" ) );
		m_binder.putLocal( "CoSignProfile",
				ResultSetUtils.getValue( rset, m_shared.getConfig( "coSignSignatureProfileMetaField" ) ) );
		DataResultSet drset = new DataResultSet();
		drset.copy( rset );
		m_binder.addResultSet( "DOC_INFO", drset );
		Report.debug( "bezzotechcosign", "Required metadata for Signing Ceremony have been gathered from" +
				" content item, resulting binder: ", null );

		m_binder.putLocal( "CoSign.Document.content", PLACEHOLDER_CONTENT );
		String SignRequest = m_WSC.buildSignRequest();

		String msg = "";
		int response = 0;
		try {
			String file = m_cmutils.getFileAsString();
			String input = SignRequest.replaceAll( PLACEHOLDER_CONTENT, file );
			String output = URLEncoder.encode( input, "UTF-8" );
			SignRequest = "inputXML=" + output;
			m_binder.putLocal( "SignRequest", SignRequest );
			response = m_WSC.processSignRequest();
		}
		catch ( UnsupportedEncodingException e ) {
			e.printStackTrace();
			msg += e.getMessage();
			m_undo = true;
		}
		catch ( Exception e ) {
			e.printStackTrace();
			msg += e.getMessage();
			m_undo = true;
		}
		finally {
			if( m_binder.getLocal( "WSC_Session" ) == null ) {
				msg += "\n\tCosign returned without a valid session found";
				m_undo = true;
			}
		}

		logHistory( msg );

		if( m_undo ) {
			m_cmutils.rollback( msg, false );
		}
	}