Release Notes

April 2020

S-Docs 4.205

Major Updates:

Security 

  • At S-Docs, security is our top priority. We are constantly testing our security measures to ensure our application is as secure as possible and always in accordance with Salesforce standards. This rigorous testing has resulted in improved app functionality, and continues to differentiate S-Docs as the most secure solution for document generation & e-signature for Salesforce.  

Speed 

  • Generating documents quickly is one of our main differentiators. Over the past few months, we’ve improved our processing power and can now generate extremely large documents at the speed of a single-page generation….with just one click!   

Template Customization  

  • Ever wish you could add both Salesforce field labels and field values directly to your template? Now you can. We’ve added this feature to our template editor. This ensures that your field labels will always be accurate in your documents, even if you change them in Salesforce. It works with any base object, making it extremely versatile for a multitude of use cases. Here’s an example with the syntax for the Account object below: 
    • Syntax: {{!Label.Account.NumberOfClients}} - {{!Account.NumberOfClients}} 
    • Output: Number of Clients - 16

Using the S-Docs Named Query Feature? 

  • We’ve expanded on this feature allowing you to query for multiple records at the start of a template and reference the returned fields for any of those records as merge fields later in the template. This feature, designed for flexibility and avoiding redundancy, has become more powerful than ever before.

Minor Updates:

General

  • Support was added for collapsible Runtime Prompt options
  • Adds an option in the Document Options tab of the template editor to only create attachments when emails are sent
  • Support was added for attaching Lightning Knowledge files to emails
  • Support was added for lookup fields when using the <distinct>FieldName__c</distinct> feature for LineItemsSOQL queries
    • Example: <distinct>Lookup__r.FieldName__c</distinct>
  • An update was made to sort LineItems and LineItemsSOQL queries on the QuoteLineItem and OpportunityLineItem objects by the SortOrder field if no <orderby> tags are specified
    • This will not be applied to related lists containing <soql> tags
  • Support was added for special characters in DOCX rich-text fields
  • Support was added for sorting Mass Merge documents by a number value by adding the parameter “NUM” to the field labeled “When using this template in mass merge, sort the docs in the consolidated single doc by this field” on the Document Options tab in the template editor.
  • Adds field ObjSortVal__c to S-Doc object. This field can have base object record field data stored in it and then be sorted on when combining multiple documents into a single combined document
    • Example: SDJobTemplateController.combineSDocs('ORDER BY ObjSortVal__c ASC', 'PDF')
    • This update also adds the field ObjSortValFieldsForSDoc__c to the S-Docs Job object. This can be populated with a comma-delimited list of base object field names, which will then be used to populate the ObjSortVal__c on the generated S-Doc.
      • Usage: A user can insert an S-Docs Job with ObjSortValFieldsForSDoc__c set to something like Type,StageName and the corresponding field data values for the base object record will be stored in the S-Doc object’s ObjSortVal__c field 
  • Support was added for passing parameters into components to be used as merge fields.
    • Example:
      BASE TEMPLATE:
      <!--{{!<LineItemsSOQL>
      <component>Component_Template</component>
      <soql>SELECT Id FROM Opportunity WHERE AccountId='{{!Account.Id}}'</soql>
      </LineItemsSOQL>}}-->
      COMPONENT TEMPLATE:
      Opportunity ID: {{!Opportunity.id}}
      Opportunity Name: {{!Opportunity.name}}
      Opportunity StageName: {{!Opportunity.stagename}}
  • Support was added for disabling the “Allow Edit” option for all users regardless of template settings unless the current user's profile is whitelisted
    • Usage: To whitelist a profile, go to /apex/SDOC__SDConfig and enter the profile’s name in the "Whitelisted Profiles for Document Editing" text box. Note that separate profiles should be delimited by new lines in this text box.
  • Support was added for automatically linking a file or attachment to the parent object when a user has Auto-Create File or Auto-Create Attachment checked on line items objects.
    • This is because Salesforce does not allow you to create Files or Attachments on line items objects such as OpportunityLineItem.

Apex Button Parameters

  • Support was added for parameter AFEquals
    • Usage: If AFEquals=’true’, text-based additionalFields will be evaluated based on exact match rather than using ‘LIKE’
  • Support was added for parameter generatedFields to show fields from the template detail page on the generated documents page
    • Usage: Add generatedFields=’Base_Object_Type__c,Name’ to button code to show the related list object and the template name in columns in the table on the generated document page
  • Support was added for parameter useAttNameForDocName
    • Usage: If useAttNameForDocName=’true’, the attachment name will be used instead of the document name on the generated documents page
  • Support was added for parameter AFPicklist
    • Usage: If AFPicklist=’false’ it will hide the picklist that is shown on the template selection page when using the AdditionalFields=’...’ parameter
  • Support was added for the replyToMostRecentEmail
    • Usage: If replyToMostRecentEmail=’true’ it will include the most recent email's text in the body on the S-Docs email page

Related List Column Attributes

  • Support was added for queryname and queryname2 merge fields in LineItemsSOQL prefix/postfix column attributes
  • Support was added for the related list <column…> attribute escapeXMLChars
    • This will escape characters from the cell value that will cause XML parsing errors when included in XML tags
    • Example: <column escapeXMLChars="true" allprefix="<template lastname__c='" allpostfix="'>testing</template>">name</column>
  • Support was added for single quotes in the replaceAll attribute for related list columns
    • You must use #QUOT# in replaceAll first comma delimited string
      Example:
      <lineitems>
      <class>table1</class>
      <listname>attachments</listname>
      <column>bodylength</column>
      <column replaceAll="#QUOT#,#escqt#" >name</column>
      </lineitems>
  • Support was added for rendering HTML into the document when using the <column render="..."> feature
    • Example: <column render="RECORD.StageName == 'Closed',<span style='font-color:red;'>Closed</span>,Open">
  • Support was added for RENDER1 and RENDER2 when using the <column render="..."> feature
    • Example: <column render="RECORD.Country__c == germany,[RENDER1]RECORD.City__c == berlin,north[RENDER2]RECORD.City__c == munich,south[ENDRENDER2][ENDRENDER1]">id</column>

Merge Field Attributes

  • Support was added for the merge field attribute replaceAll
    • Example: {{!Opportunity.Some_Field__c replaceAll="..."}}
  • Support was added for the merge field attribute render
    • For use when evaluating text fields that may contain rich-text-like contents in render statements
    • Example: {{!Opportunity.Rich_Text_Containing_Field__c render}}
  • Support was added for merge field attribute mspin
    • Example: {{!Opportunity.Multi_Select_Picklist__c mspin="true"}}, which converts multi-select picklists to a format that works with the SOQL IN operator
    • Usage: You can use <soql>... WHERE Order_Number__c IN {{!Opportunity.Multi_Select_Picklist__c mspin="true"}}</soql> and this will evaluate to something like <soql>... WHERE Order_Number__c IN ('1','4','5')</soql> at runtime
  • Support was added for the merge field attribute URLENCODE 
    • Example: {{!Contact.LastName URLENCODE}}

S-Sign 2.78

Major Updates:

Improved Workflows 

  • New functionality has been added to S-Sign enabling users to send an S-Sign Request to multiple potential signers at once, without requiring a signing order. This makes sending S-Sign signature requests even easier.  

Customization Features 

  • We’ve added more customizable email notification templates that are sent when certain actions are taken during the lifecycle of an S-Sign request. These new templates meet the needs of more complex use cases and ensure your branding - logo, text, colors - is consistent across all touchpoints.
    • Templates include confirmation emails, declination emails, and deferral emails.
  • S-Sign now has improved email bounce handling. If your S-Sign signature request bounces, you can now change that recipient's email and resend it without having to generate a new request. This is also useful if you need to update any signer email addresses of an active signature request beyond the first signer.
  • S-Sign now supports Global License Assignment & Removal for large organizations. This cuts down the tedious admin work required during implementation, or upon an influx of new hires or personnel changes.  

Minor Updates:

General

  • Support was added for pre-setting the Signer Name field in the signature pad when available in the Signer Profile 
  • Adds “Email is provided by previous signer if” field on Signer Profiles
    • You can set this field to a RENDER expression (e.g. {{!Opportunity.StageName}} == ‘Closed’) and then if that expression evaluates to true, the signer will be prompted after signing to provide the email address of the signer with the profile where this field is populated (rather than the email being provided by the sender of the request)
  • Adds a variety of new special merge fields for S-Sign templates
  • Adds “Disable System Emails” setting in the S-Sign Template Settings which will disable all confirmation emails, e-signature request emails, etc.
  • Support was added for preventing certain signer profiles from getting audit records
    • Use case: If borrowers don’t need to see Audit records, but lenders should see them.
  • Support was added for default text inputs for Text SSign Fields. There are three options available: 
    • If you want to write back to Salesforce and have a default value upon opening the request 
      • Write back to filled in (Merge Field required) + Text Default filled in (Merge Field or plain text)
    • If you want to write back to Salesforce but not have a default value 
      • Write back to filled in + Text Default not filled in
    • If you don’t want to write back to Salesforce but do want a default value 
      • Write back to not filled in + Text Default filled in

For more information about these fields, click here.