SmartSimple variable syntax functions add logic, calculations, PDF attachments, and data lookups to Web Page View fields, template formulae, browser scripts, and related configuration. Functions covered include HistoryOf, ssAttach, ssCalculation, ssEscape, ssLogic, ssParseNum, ssEncrypt, ssGet, and ssURL.
It is recommended that global administrators enable the new syntax. Locate the System Options section in Global Settings, and toggle Enable New Variable Syntax on.
HistoryOf Function
The HistoryOf function searches for specific entries in field history. The Track Changes field permission must be active before the function can query field history.
Once field history is available to query, access the function through the Syntax Checker. To open the Syntax Checker, enter Edit mode on the record, click Options, select Configuration Mode, and then select Syntax Checker. The HistoryOf function is available in the window that opens.
HistoryOf Syntax
The HistoryOf function uses this syntax:
@HistoryOf(FIELDNAME::CONDITION::TEMPLATE::SORTFIELD::SORTDIRECTION::LIMIT)@
HistoryOf Parameters and Examples
The HistoryOf function uses these parameters:
| Parameter | Definition |
|---|---|
| FIELDNAME | The field name to query. |
| CONDITION | The condition for the search. This can be a specific field value (old or current), a date that indicates when an update occurred, or a user associated with the update. Available fields: [Value], [OldValue], [UpdatedTime], [UpdatedBy]. |
| TEMPLATE | Defines how the results display. Available fields: [Value], [OldValue], [UpdatedTime], [UpdatedBy]. Include additional text for clarity. |
| SORTFIELD | The parameter value used as the sort criterion. Options: [Value], [OldValue], [UpdatedTime], [UpdatedBy]. |
| SORTDIRECTION | asc (ascending) or desc (descending). |
| LIMIT | The maximum number of matching entries to display. |
- A parameter space can stay empty, but the double-colon separators must remain in place. At minimum, specify
FIELDNAMEalong with eitherCONDITIONorTEMPLATE. - For
FIELDNAME, use a standard or custom field name, or a custom field ID.
Example
Display one record where the Application Name field was updated after February 1, 2019, sorted in descending order by field value.
@HistoryOf(Application Name::[UpdatedTime]2019-02-01::::[Value]::desc::1)@
Example
Display the most recent person who set the status to Approved, if that status was assigned more than once, with the date and time.
@HistoryOf(Status::[Value]='Approved'::Update to [Value] by [UpdatedBy] at [UpdatedTime]::[UpdatedTime]::desc::1)@
Example
Display up to five matches where the Description field contains the string test, with no display template, sorted in descending order by UpdatedTime.
@HistoryOf(Description::[Value] like %test%::::[UpdatedTime]::desc::5)@
Example
Display the last person to modify the Status of the record, including the old and current values, with the date and time.
@HistoryOf(Status::::Changed from [OldValue] to [Value] by [UpdatedBy] on [UpdatedTime]::[UpdatedTime]::desc::1)@
CONDITION Parameter Syntax
For a numeric field, use the comparison operators >, <, >=, <=, and =.
Example
Match a numeric field value that equals 30.
[Value]=30
To check whether a text field contains a substring, use LIKE and %.
Example
Match a text field value that contains hello.
[Value] LIKE '%hello%'
For a custom date or datetime field, use the comparison operators >, <, >=, <=, and =. Date values use the format YYYY-MM-DD or YYYY-MM-DD HH:mm:ss.
Example
Match a date or datetime field value later than 2019-01-23 13:30:40.
[Value] > '2019-01-23 13:30:40'
- Date formatters also apply to the
[UpdatedTime]field.
HistoryOf Usage Notes
These usage notes cover the base search format and TEMPLATE formatting for the HistoryOf function.
- The HistoryOf function also accepts the base search format:
@HistoryOf(FIELDNAME)@
The TEMPLATE parameter can include HTML tags for formatting, such as paragraph or break tags:
<p>[Value]</p>
Example
Find the first or last time the record Status changed to Completed.
<!--@sscalculation(DATE_FORMAT("@HistoryOf(Status::[Value]='Completed'::[UpdatedTime]::[UpdatedTime]::desc::1)@","%d/%m/%Y"))-->ssAttach Function
The ssAttach function attaches one or more PDF documents stored in a Single File field or a Smart Folder to a Web Page View field.
To attach a PDF to the beginning or end of the Web Page View, use this syntax:
<!--@ssattach(position;pdf file location)-->
In this syntax:
-
positionis eitherbeforeorafter. -
pdf file locationfollows the format shown in the following table.
| File Source | Syntax | Comments |
|---|---|---|
| Smart Folder | /files/folder1/folder2/File_Name.pdf | Select View URL from the File Options drop-down menu next to the file in the Smart Folder. Omit the initial part of the URL so the location begins with /files/..., as shown in the examples below. |
| Single File Custom Field | @Custom Field Name.value@ | |
| Multiple Files Custom Field | @Custom Field Name.files@ | The function attaches all PDF files stored in the field. |
The syntax also accepts single or multiple file fields on parent or grandparent levels:
@parent.Custom Field Name.value@ @parent.parent.Custom Field Name.files@
Example
Attach a PDF from a Smart Folder before the current Web Page View field page.
<!--@ssattach(before;/files/1234/123/myfile.pdf )-->
Example
Attach a PDF from a Smart Folder after the current Web Page View field page.
<!--@ssattach(after;/files/1234/123/myfile.pdf )-->
Example
Attach a PDF from a Single File Custom Field named AttachPDFFile before the current page, and include .value.
<!--@ssattach(before;@AttachPDFFile.value@)-->
Example
Attach PDF files to a Level 1 Web Page View from the universal tracking application (UTA)/module Role Custom Fields in the contact section, where 123456 is the Custom Field ID.
[#(?object=contact)<!--@ssattach(after;$?opr_123456.value$)-->#]
Example
Attach PDF files to a Level 1 Web Page View from the organization Custom Fields associated as the Customer on the Level 1 record, where UploadFieldName is the field name of the multi-file upload custom field on the organization record.
<!--@ssattach(after;@client.UploadFieldName.files@)-->
- Place the ssAttach function anywhere within the HTML tags of the Web Page View field.
- The first PDF document file determines all PDF page settings, whether the file is static or generated by SmartSimple.
Use multiple ssAttach statements to attach multiple PDF files from different sources:
<!--@ssattach(before;/files/1234/123/myfileheader.pdf )--> <!--@ssattach(after;/files/1234/123/myfilefooter.pdf )--> <!--@ssattach(after;/files/1234/123/myfileappendix.pdf )--> <html><body> My Pdf file </body></html>
The ssLogic syntax can vary the PDF files to attach based on conditional statements:
<!--@sslogic('@type@'='contact')-->
<!--@ssattach(after;@parent.contract.value@)-->
<!--@else-->
<!--@ssattach(after;@parent.othercontract.value@)-->
<!--@end-->To attach a file from a transaction to a Level 1 Web Page View, use this syntax:
@client.[#(?object=transaction::criteria=typename="Transaction Name" and statusname="Submitted"::orderby=trsts desc) <!--@ssattach(after;$fieldname.value$)-->#]@
Example
Attach a file from a submitted Audited Financial Statements transaction to a Level 1 Web Page View.
@client.[#(?object=transaction::criteria=typename="Audited Financial Statements" and statusname="Submitted"::orderby=trsts desc) <!--@ssattach(after;$Recent Audited Financial statements.value$)-->#]@
ssCalculation Function
The ssCalculation function is a variable syntax for Web Page Views, Store Value system variables, and Read Only system variables. It works similarly to ssLogic but performs calculations based on the formula provided:
<!--@sscalculation('@field@'*0.05)-->The function returns the computed value of the formula and replaces the ssCalculation tag. ssCalculation allows calculations directly within Web Page Views without JavaScript, which avoids problems when creating PDF files from Web Page Views that contain JavaScript.
The ssCalculation method uses MySQL syntax. The method accepts any MySQL function, such as concat(...), format(...), or round(...).
ssCalculation in a List
To calculate a sum of the values in a custom field for all transactions associated with a company or contact, use this syntax:
<!--@sscalculation( [#(?object=transaction)$add this$+#]0)-->
- When calculating a sum, include the zero at the end of the statement. For example, if there are transactions with values of 10, 15, and 20, the statement within the square brackets,
[#(?object=transaction)$add this$+#], becomes10+15+20+. The zero at the end ensures the evaluated statement does not end with a plus sign, which would cause an error. - To retrieve information from Level 1 while at Level 2 within the ssCalculation tag, use the parent keyword.
Example
Retrieve a Level 1 value while at Level 2 by using the parent keyword.
<!--@sscalculation(date_format("@parent.fullstartdate@","%Y"))-->@datetime(parent.startdate)@ or @parent.fullstartdate@.Example
Sum a value on a Company Role field (Custom Field ID 123456) for all companies with the role of Funding Agency and a value stored on Level 1 (Custom Field ID 545454), formatted with no decimal places.
<!--@sscalculation(format(( [#(?object=company::criteria=rolename='Funding Agency') $?opc_123456.value$ + #] @#545454.value#@),0))-->
Example
Calculate the average of all values (Custom Field ID 1755555) on a specific Level 2 Type (typeid=54321), excluding a particular status (statusid not 10001), rounded to the nearest whole number.
<!--@sscalculation(format(([#(?object=activity::criteria=typeid='54321' and status.statusid not in ('10001')) $1755555$ + #] 0 )/@level2.count(*):typeid='54321' and status.statusid not in ('10001')@,0))-->
Example
Determine the difference in days between two dates.
<!--@sscalculation(datediff('@datetime(currentdate)@','@Last Contact Date@'))-->
Example
Add a number of months to a date equal to the quantity selected in another field.
<!--@sscalculation(DATE_ADD('@Anticipated Project End Date@', INTERVAL @system.Grants-FinalDisbursementDelay@ MONTH))-->
Example
Subtract a number of months from a date by using a negative number for the INTERVAL, such as -6 months.
<!--@sscalculation(DATE_ADD('@Anticipated Project End Date@', INTERVAL -6 MONTH))-->
Example
Calculate the difference in months between two date values by using PERIOD_DIFF.
<!--@sscalculation(PERIOD_DIFF(DATE_FORMAT('@Anticipated Project End Date@','%Y%m'),DATE_FORMAT('@Anticipated Project Start Date@','%Y%m')))-->
Example
Calculate the difference in months between two date values by using TIMESTAMPDIFF.
<!--@sscalculation(TIMESTAMPDIFF( MONTH,'@Start Date.value@','@End Date.value@') )-->
ssCalculation to Change Date Formats
To present date or time information from a custom field in another format, such as month-day-year, use this syntax at Level 2 to reference the field fieldname at Level 1:
<!--@sscalculation(date_format("@parent.fieldname@","%M %d, %Y"))-->In the format string, %M is the month name, %d is the two-digit day, and %Y is the four-digit year. Use the following arguments to format the date or time information:
| Format | Description |
|---|---|
| %M %d, %Y | Returns the date in the format September 30, 2012. |
| %a | Returns the abbreviated day of the week, for example, Sun. for Sunday. |
| %b | Returns the abbreviated name of the month, for example, Sep for September. |
| %c | Returns the month number in abbreviated format, for example, 9 for September. |
| %d | Returns the numeric day of the month (01-31). |
| %e | Returns the numeric day of the month (1-31). |
| %h | Returns the hour (01-12). |
| %i | Returns the minutes (00-59). |
| %j | Returns the day of the year (001-366). |
| %k | Returns the hour (0-23). |
| %l | Returns the hour (1-12). |
| %m | Returns the month number, for example, 09 for September. |
| %p | Returns AM/PM information, for example, AM. |
| %r | Returns the full time in 12-hour format, for example, 12:00:00 AM. |
| %s | Returns seconds (00-59). |
| %u | Returns the week number (00-53) where Monday is the first day of the week. |
| %w | Returns the day of the week (0=Sunday ... 6=Saturday). |
| %y | Returns the abbreviated year, for example, 12 for 2012. |
| %D | Returns the ordinal day of the month, for example, 30th. |
| %H | Returns the hour (00-23). |
| %M | Returns the month name, for example, September. |
| %T | Returns the full time in 24-hour format, for example, 23:00:00. |
| %U | Returns the week number (00-53) where Sunday is the first day of the week. |
| %W | Returns the day of the week, for example, Sunday. |
| %Y | Returns the four-digit year, for example, 2013. |
ssCalculation is not required when the referenced custom field is at the same level as the field referencing it, such as a Level 2 custom field referenced in a Web Page View field at Level 2. In that case, use the syntax described for Web Page View field variables.
ssCalculation to Replace Text
Use ssCalculation to replace text in a field value.
Example
A Select Many Checkbox Field produces a semicolon-separated list of selected values.
Option 1;Option 2;Option 3
Example
Replace the semicolons in the list with a comma and a space.
<!--@sscalculation(REPLACE("@Select Many Checkbox Field@",";",", "))-->The result is:
Option 1, Option 2, Option 3
ssCalculation References
MySQL date format documentation is available in the MySQL Date and Time Functions reference on an external website.
ssEscape Syntax
The ssEscape syntax escapes double quotes in text fields. This prevents code from breaking on the page when template formulae, visibility conditions, and browser scripts reference field values that contain double quotes.
The ssEscape syntax uses this structure:
New syntax
{{ssEscape(.....)}}Old syntax
<ssEscape>.....</ssEscape>
Example
Escape double quotes from a single line text field by using template formulae.
@level1.name@="<ssEscape>@level1.Proposal Title@</ssEscape>";
Example
Escape double quotes from a multiple lines text field by using template formulae.
@level1.description@="<ssEscape>@level1.Project Description.value@</ssEscape>";
Example
Escape double quotes from a variable by using browser scripts.
var name="<ssEscape>@name@</ssEscape>"; if(name=="") function goes here....
Example
Escape double quotes from a single line text field by using ssLogic or visibility conditions.
<!--@sslogic("<ssEscape>@name@</ssEscape>"!="")-->
There is a project title with double quotes
<!--@end-->ssLogic Syntax
Web Page View fields can use a SmartSimple logic interpreter. Web page logic displays specific content or runs certain actions only when a set condition is true.
SmartSimple logic uses the following syntax:
New syntax
{{ss_if(CONDITION)}}
The content to display when the condition is true.
This can be more than one line.
{{ss_endif}}Old syntax
<!--@sslogic(CONDITION)--> The content to display when the condition is true. This can be more than one line. <!--@end-->
- The content to display (the middle line) can be plain text or HTML.
- Use quotes (single or double) around the variable and value. The choice of quotes depends on the variable's contents. For names that contain apostrophes, use double quotes when referencing that variable.
- ssLogic does not support nested logic statements. An ssLogic statement cannot contain another ssLogic statement.
- ssLogic does not accept ssCalculation syntax. The ssLogic syntax handles the calculations on its own.
- ssLogic works in workflow emails at Level 1 only.
- In general, use double quotes to enclose variables rather than single quotes. An apostrophe (a single quote) in the content can disrupt processing, and double quotes are less common as content. To prevent the entry of double quotes, consider an onchange event on the source field.
Example
Display an image of a Christmas tree if the month is December.
New syntax
{{ss_if(month(now())=12)}}
<img src="images/xmasstree.jpg" alt="" />
{{ss_endif}}Old syntax
<!--@sslogic(month(now())=12)--> <img src="images/xmasstree.jpg" alt="" /> <!--@end-->
Example
Test for Not Equal by preceding the equal sign with an exclamation point, as in this message for all provinces except Ontario.
<!--@sslogic("@province@"!="Ontario")-->
You are outside of Ontario
<!--@end-->ssLogic Else Logic
Use an else operator to display one of two texts, one when a condition is met and another when it is not.
Example
Display one message if the individual is an adult and another if the individual is a minor.
<!--@sslogic(@age@>=18)--> The individual is an adult. <!--@else--> The individual is a minor. <!--@end-->
Example
Display two checkboxes, where the Adult checkbox is selected if the individual is an adult and the Minor checkbox is selected if not.
<!--@sslogic(@parent.owner.age@>=18)--> <input checked="checked" type="checkbox" /> Adult <input type="checkbox" /> Minor <!--@else--> <input type="checkbox" /> Adult <input checked="checked" type="checkbox" /> Minor <!--@end-->
ssLogic Multiple Options (else if Syntax)
Use multiple else if operators when there are more than two options:
New syntax
{{ss_if(condition 1)}}aaa
{{ss_elseif(condition 2)}}bbb
{{ss_elseif(condition 3)}}ccc
{{ss_else}}ddd
{{ss_endif}}Old syntax
<!--@sslogic(condition 1)-->aaa <!--@else if(condition 2)-->bbb <!--@else if(condition 3)-->ccc <!--@else-->ddd <!--@end-->
Example
Display a message based on the value of the possibility field.
<!--@sslogic("@possibility@"="Yes")-->
This will occur for certain.
<!--@else if("@possibility@"="No")-->
This is not occurring.
<!--@else if("@possibility@"="Maybe")-->
This may or may not occur.
<!--@else-->
No one knows what will happen.
<!--@end-->ssLogic Multiple Conditions
An ssLogic statement can include more than one condition.
Example
Include more than one condition in the same ssLogic statement.
<!--@sslogic('@year@'='2008' AND ('@month@'='1' OR '@month@'='2'))-->
This is only displayed if the year is 2008 and the month is either January or February.
<!--@end-->Fields That Store Single or Double Quotes
ssLogic can display fields that contain single or double quotes. Use the escape[] function, and wrap the function in single quotes:
<!--@sslogic('escape["23456$]'!='')-->
<!--@sslogic('escape[@Field Name@]'!='')-->ssLogic Object Lists
ssLogic also accepts object lists:
<!--@sslogic("[#(?object=contact::criteria=rolename='Supervisor'::groupfunction=count)~userid~#]">0)-->
There is at least one Supervisor
<!--@else-->
There are no Supervisors
<!--@end-->ssLogic with ssAttach
ssLogic can determine which PDF file ssAttach attaches to the Web Page View.
Example
Attach myfilefooter.pdf if the Type/Template is Contract, and myotherfilefooter.pdf if not.
<!--@sslogic("@type@"="Contract")-->
<!--@ssattach(after;/files/1234/123/myfilefooter.pdf)-->
<!--@else-->
<!--@ssattach(after;/files/1234/123/myotherfilefooter.pdf )-->
<!--@end-->Hide Add or Delete Form Buttons by Role
The following browser script hides the add and delete form buttons for a specific role:
<!--@sslogic("@me.inRole(Applicant)@")-->
var oldLoadXML = loadXML;
loadXML = function() {
oldLoadXML();
disableProjectedAthletesInterimReport();
}
function disableProjectedAthletesInterimReport()
{
$("a[name='addDynamicRowButton']").each(function( index ) {
$(this).parent().hide();
});
$("a[name$='_deletebutton']").each(function( index ) {
$(this).parent().hide();
});
}
<!--@end-->ssParseNum Function
The ssParseNum function uses JavaScript to convert a formatted string that contains symbols such as $ or % to a number.
ssParseNum(value, emptyok);
ssParseNum Parameters and Examples
The ssParseNum function uses these parameters:
| Parameter | Description |
|---|---|
| value | Required. The value to convert to a number. For example, $5,000.00 and 5,000% convert to 5000. |
| emptyok | Optional. A true or false value. If emptyok is true, ssParseNum returns an empty string when the value is empty. If emptyok is false, ssParseNum returns 0 when the value is empty. |
Example
Convert a formatted currency value to a number.
ssParseNum($5,000.50);
The function returns 5000.5.
To display a ratio of two fields that are set to currency formatting, convert the values to numbers by using ssParseNum:
ssParseNum([field1])/ssParseNum([field2])
ssParseNum Requirements
The ssParseNum function is part of the sstools.js library. Add the library to Browser Script custom fields, or to template pages, signup pages, and similar pages, by using this syntax:
<SCRIPT type="text/javascript" language="javascript" src="/sstools.js"></SCRIPT>
Currency Format in Edit Mode
For custom fields that use the Show Currency Format in Edit Mode setting, use this syntax:
ssParseNumFromCurrency(value,getLocalestrByCurrency(code),1,emptyok);
The getLocalestrByCurrency function gets the default locale of the currency code. For example, CAD results in en-CA, not fr-CA. If the locale of the formatted currency is known, such as da-DK, fr-FR, or fr-CA, use this syntax instead:
ssParseNumFromCurrency(value,locale,1,emptyok);
| Parameter | Description |
|---|---|
| value | Required. The value to convert to a number. For example, $5,000.00 and 5,000 convert to 5000. |
| emptyok | Optional. A true or false value. If emptyok is true, the function returns an empty string when the value is empty. If emptyok is false, the function returns 0 when the value is empty. |
| code | Required. The three-letter currency code defined by ISO 4217. Example: JPY for Japanese Yen. |
Example
Convert two currency fields to numbers by using the default locale of the CAD currency code, and subtract the second from the first.
ssParseNumFromCurrency([YER Total revenue],getLocalestrByCurrency('CAD'),1,true) - ssParseNumFromCurrency([YER Total expenses],getLocalestrByCurrency('CAD'),1,true)
Example
Convert two currency fields to numbers by using the fr-CA locale, and subtract the second from the first.
ssParseNumFromCurrency([YER Total revenue],'fr-CA',1,true) - ssParseNumFromCurrency([YER Total expenses],'fr-CA',1,true)
ssEncrypt Function
The ssEncrypt and ssEncrypt2 functions dynamically generate encrypted tokens for URLs that access entities within SmartSimple. The two functions use different encryption methods, so the entity involved determines whether ssEncrypt or ssEncrypt2 applies.
Level 1 Template Page Token
The Level 1 template page token uses this syntax:
New syntax
{{ssEncrypt(typeid,rootcompanyid)}}Old syntax
<ssEncrypt>typeid,rootcompanyid</ssEncrypt>
Level 2 Template Page Token
The Level 2 template page token uses this syntax:
New syntax
{{ssEncrypt(typeid,appid,rootcompanyid)}}Old syntax
<ssEncrypt>typeid,appid,rootcompanyid</ssEncrypt>
To encrypt parameters in an internet-enabled Level 2 template (at the URL /ex/ex_Evtpage.jsp), use ssEncrypt2:
- Instead of
eventid, usecodedid. - Instead of
parentids, useenparentids.
An unencrypted URL looks like this:
https://alias.smartsimple.com/ex/ex_Evtpage.jsp?token=Gw4NRhwGZVhdQhNRXxdTQlRVbFI%3D&parentids=@parent.opportunityid@&eventid=@eventid@
The encrypted version looks like this:
https://alias.smartsimple.com/ex/ex_Evtpage.jsp?token=Gw4NRhwGZVhdQhNRXxdTQlRVbFI%3D&enparentids=<ssEncrypt2>@opportunityid@</ssEncrypt2>&codedid=<ssEncrypt2>@eventid@</ssEncrypt2>
Web Page View Token
The Web Page View token uses this syntax:
<ssEncrypt2>objectid</ssEncrypt2>
Example
Access the Web Page View with custom field ID 123456 associated with a contact.
<input type=button class=Button value="Open" onclick="_openpageview('123456','<ssEncrypt2>@userid@</ssEncrypt2>',1)" >If URL Parameter Encryption is enabled, also encrypt the custom field ID by using ssEncrypt3.
Example
Encrypt the custom field ID for custom field 654321 on a Level 1.
<input type=button class=Button value="Open" onclick="_openpageview('<ssEncrypt3>654321</ssEncrypt3>','<ssEncrypt2>@opportunityid@</ssEncrypt2>',1)" >Contact Role Intersection (Level 1)
The contact role intersection token for Level 1 uses this syntax:
<ssEncrypt2>oprid</ssEncrypt2>
Example
Open a custom field on the Level 1 UTA/module role.
<input type=button class="Button" onclick="javascript:openRoleFields('<ssEncrypt2>@oprid@</ssEncrypt2>',@roleid@)" value="My Vote"/>
<script>
function openRoleFields(objectid,roleid){
fieldid_window = window.open('/s_editcustomfields.jsp?iswin=1&objecttype=91&opportunityid=@levelone.opportunityid@&itemlist='+roleid+'&objectid='+objectid,'field_window','menubar=no,scrollbars=yes,width=850,height=300,status=no,resizable=yes,top=200,left=200,dependent=yes,alwaysRaised=yes');
fieldid_window.opener = window;
fieldid_window.focus();
}
</script>Transaction Token
The transaction token uses this syntax:
New syntax
{{ssEncrypt(userid,typeid)}}Old syntax
<ssEncrypt>userid,typeid</ssEncrypt>
ssGet Variable
The ssGet variable retrieves information from external databases, including the OFAC (Office of Foreign Assets Control) database, Watch List Integration third-party providers, and U.S. census data. The syntax varies depending on the database that supplies the information.
OFAC Configuration
SmartSimple can run on-request checks against the OFAC online database. For example, on an organization profile, a Web Page View field can display the check results.
In a typical result, the OFAC check returns a match result for the company name, such as a single 100% match, with separate results for any associated contacts. The syntax for configuring the OFAC check is:
New syntax
{{ssGet(OFAC,entity;;firstname;;lastname;;search options;;roleslist;;meta template;;line template)}}Old syntax
@ssGet(OFAC,entity;;firstname;;lastname;;search options;;roleslist;;meta template;;line template)@
OFAC Settings
The OFAC check uses these settings:
| Setting | Description |
|---|---|
| Entity | Accepts people, company, or all. |
| firstname | An individual's first name or company name. |
| lastname | An individual's last name. SmartSimple ignores this setting if entity is company or all. |
| search options | Accepts 1, 2, or 3. 1 searches the current object only (when entity is people or company). 2 searches people underneath (when entity is company only). 3 searches the current object and people underneath (when entity is company only). |
| rolelist | Applies if search options is set to 2 or 3. Use comma-delimited role IDs or role names, but do not mix IDs with names. |
| meta template | Template for how the header of results is returned. If left empty, the default template applies. Variables: [[entity]] (search type), [[name]] (name of search result), [[recordcount]] (number of records returned by the OFAC search), [[now]] (current date). Example: Search type: [[entity]], Search for: [[name]], Records returned: [[recordcount]], Date: [[now]] |
| line template | Template for how the body of results is returned. If left empty, the default template applies. Variables: [[index]] (index number), [[id]] (OFAC ID for result), [[name]] (OFAC name for result), [[type]] (OFAC type for result), [[alias]] (other aliases used), [[details]] (OFAC designation for the entity returned, including the date updated in the OFAC database), [[score]] (percentage score of the result match). For example, the company name Boko Haram returns a 100% match, and an organization named Bozo Haram returns an 88.9% match with Boko Haram. |
To run an ad hoc OFAC check on a specific organization record, create a Web Page View field within the organization custom fields and configure it with the ssGet OFAC syntax.
When using a Web Page View field, you can enable Save to Server in the field settings. This defines an upload field on the organization profile where SmartSimple saves the stored PDF copy of the OFAC results when triggered.
Watch List Scanning Configuration
SmartSimple Watch List providers, CSI Web and Lexis Nexis Bridger, provide access to additional third-party service lists beyond the OFAC list. Either provider requires a contractual agreement. The SmartSimple instance uses the account credentials received from the provider.
Click the System Administration gear in the upper navigation bar, select Global Settings from the drop-down menu, and click the Integrations tab. Locate the Watch List Settings section, and enter the billing ID and password for the third-party service.
When using CSI Web, settings define the watch lists to search against and the scan threshold, which displays only results that match or exceed the percentage match threshold. The supported third-party services with CSI Web include:
- U.S. Bureau of Industry and Security.
- Department of State - Bureau of International Security and Nonproliferation list.
- Department of State - Defense Trade Controls Debarred Parties list.
- International Criminal Police Organization (INTERPOL).
- Politically Exposed Persons, CIA Foreign Officials.
- Office of Inspector General.
- Excluded Parties List System provided by the General Services Administration (GSA).
- Financial Crimes Enforcement Network.
- FinCEN Money Services Business.
- World Bank Ineligible Firms.
- Terrorist Exclusion List.
- FBI Most Wanted Fugitives.
When using Lexis Nexis Bridger, the Lexis Nexis account, not the SmartSimple instance, manages the watch list services included in each scan, along with the threshold settings. The syntax for configuring the Watch List check is:
New syntax
{{ssGet(ServiceName,entity;;firstname;;lastname;;search options;;roleslist;;meta template;;line template;;additional search attribute)}}Old syntax
@ssGet(ServiceName,entity;;firstname;;lastname;;search options;;roleslist;;meta template;;line template;;additional search attribute)@
The ServiceName depends on the third-party service:
- CSI Web:
WatchList - Lexis Nexis:
LexisNexis
U.S. Census Database Configuration
The syntax for retrieving U.S. census data depends on the information requested:
@ssGet(FFD,FIPS;;@address@ @city@ @state@)@
New syntax
{{ssGet(FFD,Profile;;year;;Address or FIPS code;;level;;[[template]])}}Old syntax
@ssGet(FFD,Profile;;year;;Address or FIPS code;;level;;[[template]])@
ssURL Syntax
The ssURL function dynamically resolves URLs for system objects and actions. It lets configuration teams reference system objects by using variables, which streamlines setup when systems are cloned.
Previously, configuration teams had to manually modify URLs because of unique attributes such as IDs that vary in cloned systems. With this syntax, links to assets such as login and signup pages, report charts, submission buttons, and portal sections automatically resolve to the correct system asset after cloning, with no manual adjustments.
SmartSimple introduced this syntax for internal staff and partners.
ssURL Syntax Elements
The ssURL function uses this syntax:
@ssurl(objecttype,action,identifier)@
In this syntax:
-
objecttypeis the type of object to reference, for example,Signupfor a registration page. -
actionis the operation to perform or access, such asVieworCreateLevelOne. -
identifieris the name of the object to reference, for example, the name assigned to a signup page or an autoloader. When multiple identifiers exist, separate them with double semicolons (;;). Ensure that all objects have a unique identifier. If two autoloaders have identical names, the system returns the autoloader with the lower ID.
ssURL Usage Examples
The following table shows the syntax and resolved result for each object type:
| Description | objecttype | action | identifier | Syntax and Resolved Result |
|---|---|---|---|---|
| Signup Page | signup | view | Signup Page Name | User signup page: @ssurl(signup,view,pagename)@ resolves to /s_signup.jsp?token=XVtQC1oGZlBfRxddXxdSQUlSZ1R9Ew%3D%3D Organization signup page: @ssurl(signup,view,pagename)@ resolves to /s_csignup.jsp?token=XVtQHUUGZV1YShBFQhdQXlZSZVxy Single user and organization page: resolves to /s_csignup.jsp?token=XVtQHUUGbFxRQhFaXxdSQUlSZ1R9HQ%3D%3D&ptoken=XVtQC1oGZlBeQBNZXxdSQUlTYFZzEg%3D%3D Multiple users and organization page: resolves to /s_csignup.jsp?token=XVtQHUUGbFxcRhRRXxdSQUlSZ1R9Eg%3D%3D |
| UTA/module - Main List View | uta | listview | UTA/module Name | @ssurl(uta,listview,utaname)@ resolves to /iface/uta/uta_list.jsp?appid=102161 |
| UTA/module - Create Level 1 | uta | createlevelone | UTA/module Name | @ssurl(uta,createlevelone,utaname)@ resolves to /Apps/app_editopportunity.jsp?appid=102161&opportunityid=0 |
| UTA/module - Template Page | uta | templatepage | UTA/module Name, Type Name | @ssurl(uta,templatepage,utaname;;typename)@ resolves to /ex/ex_Apppage.jsp?token=HwwPRhMGZVla |
| UTA/module - Impact Quadrant | uta | impactquadrant | UTA/module Name, Quadrant Name | @ssurl(uta,impactquadrant,utaname;;quadrantname)@ resolves to /Apps/db/db_impact.jsp?impactid=@Hw0ERBkfbV5bQRRQRh8~ |
| Report | report | view | Report Name | @ssurl(report,view,reportname)@ resolves to /userreport/ur_openreport.jsp?reportid=44372 |
| Report Chart | reportchart | view | Report Name, Chart Name | Client-side chart: @ssurl(reportchart,view,reportname;;chartname)@ resolves to /ex/ex_highchart.jsp?enc=1&chartid=...&reportid=...&rootcompany=... Server-side chart: resolves to /servlet/wChart?width=300&height=200&codedid=... |
| Report Dashboard | dashboard | view | Dashboard Name | @ssurl(dashboard,view,dashboardname)@ resolves to /userreport/ur_viewdb.jsp?dashbid=2348 |
| Smart Folder (View) | smartfolder | view | Smart Folder Name | @ssurl(smartfolder,view,foldername)@ resolves to /s_editresource.jsp?display=1&resourceid=68826 |
| Smart Folder - View (Internet Enabled) | smartfolder | viewinet | Smart Folder Name | @ssurl(smartfolder,viewinet,foldername)@ resolves to /files/113/68827/169542folderinet/net |
| AI Insight | aiinsight | view | Name | @ssurl(aiinsight,view,name)@ resolves to /AI/ai_workingwithai.jsp?token=%40HwwMTxwbeFhFQhFFQRxZQVVTZFV1G3BhHQ~~ |