LawBase Admin KnowledgeBase
SQL Database Schema Description
When creating SQL statements use the following general information about the database schema.
As SQL prog using SQL Server SQL2017, gen SQL stmts for tasks:
Retr recs from 'PAGE0' master tbl, (Case Files);
Join 'PAGE0' with 'PAGE1' - 'PAGE999' using 'PAGE0.serial' and 'PAGE#.caseserial' fields;
Retr recs from 'CONTACT0' master tbl, (Contacts);
Join 'CONTACT0' with 'CONTACT1' - 'CONTACT999' using 'CONTACT0.serial' and 'CONTACT#.caseserial' fields;
Retr recs from 'Notes','Calendar','History','OfficeLink','SmsHistory', join these tbls with 'DetailTable.CaseSerial' = 'MasterTable.serial', incl 'duedate' from detail tables;
When searching names in 'Calendar', join with 'TicklerNames' using 'ticklernames.login'; Calendar main display is 'What' Notes main display is 'Memo';
Users stored in 'User_profile', incl 'login'. 'ActiveUser' stores 'Y' or 'N'; Incl SQL comments('--') in front of non - SQL code;
Ensure all fields are returned unless specific ones requested or 'GROUP BY' used; Use 'GETDATE()' instead of 'CURRENT_TIMESTAMP.';
Use ':CurUser' for current user; Prefer SQL 'in' over multiple 'or's when possible; Retain foreign key defs: TicklerNames.CalSerial REFERENCES CALENDAR.Serial
PAGE0.Typelaw REFERENCES Typelaw.Serial
Contact0.TYPELAW REFERENCES Typelaw.Serial
User:find all pending calendars for the atty group
Bot: select * from calendar where status='PENDING' and serial in (select calserial from ticklernames where ticklernames.login in (select login from group_profile where login = 'atty'))
User:find all case files with a calendar on drew's calendar
Bot:select * from page0 where exists (select caseserial from calendar inner join ticklernames where ticklernames.login = 'Drew')
User:find all contacts with no calendars on the paralegal group calendar
Bot:select * from contact0 where not exists (select 1 from calendar where calendar.caseserial = contact0.serial and calendar.serial in (select calserial from ticklerNames where login in (select login from group_profile where login = 'paralegal')))
SmartFolders
Create a result column to hyperlink to a specific field.
Leveraging LBURL you can create a column with a hyperlink that will launch the file and open the desired tab and focus on a field. In your select statement for a SmartFolder, create a select like:
'url:lawbase:linkserial='+page10.linkserial+'^Focus=issue~'+isnull(page10.issue,'')
This will create a hyperlink that will launch page10 for the selected item and focus the issue field. After the ~ indicates the text to show on the screen.
Use a SQL View in a SmartFolder
Always be sure to have the header (e.g. page0 or contact0, etc.) as the first table, pulling the security and serial from that table and then join to the view.
Example1 :
List details from 3 subgrids into one list
create view Discovery as
select page0.security, page0.serial, page0.clientnm, page0.clientmatter, page14a.CLDesc as Description, page14a.CLRespDue as RespDue, 'Client' as Type from page0
left outer join page14a on page14a.caseserial = page0.serial
where CLComp='N'
union
select page0.security, page0.serial, page0.clientnm, page0.clientmatter, page14b.OPDesc, page14b.OPrespDue, 'Opposing Party' as Type
from page0
left outer join page14b on page14b.caseserial = page0.serial
where OPComp='N'
union
select page0.security, page0.serial, page0.clientnm, page0.clientmatter, page14c.ODDesc, page14c.ODrespDue, 'Other' as Type
from page0
left outer join page14c on page14c.caseserial = page0.serial
where ODComp='N'
GO
In SmartFolder use the following SQL
select page0.security, page0.serial, Discovery.* from page0 inner join Discovery on Discovery.serial = page0.serial
Example 2:
create view InsuranceCoConflict as
select page0.serial,page0.clientno, page0.fname, page0.lname, page8.insuranceco as link, contact0.lname as inscarrier, 'InsuranceCo' as type from page0 inner joinpage8 on page8.caseserial = page0.serial inner join contact0 on page8.insuranceco = contact0.linkserial
union all
select page0.serial, page0.clientno, page0.fname, page0.lname, page8.Holderinsuranceco as link, contact0.lname as inscarrier, 'HolderInsuranceCo' as type frompage0 inner join page8 on page8.caseserial = page0.serial inner join contact0 on page8.holderinsuranceco = contact0.linkserial
GO
The SQL of the SmartFolder is:
select page0.serial, page0.security, Insurancecoconflict.* from page0 inner join insurancecoconflict on insurancecoconflict.serial = page0.serial
Example 3:
This is a way to use a view to especially cross FlexBases. If you have information that can use a union (name number and names of columns), create a view with the union and then create the SmartFolder. NOTE: One issue with this – the SmartFolder results will not use security. So if there is a case that the user doesn’t have rights to, they will see the case on the results BUT they will not be able to double click to get into the case. So potentially security on the SmartFolder should be used if necessary.
Create the View but needs three fields: serial, security and flexbase.
CREATE view [dbo].[TODAYSNOTES2] AS
select page0.serial, security, lname as name,noteby,memo, 1 as FlexSerial,
notetype, notespent,
Cast(notespent/60 as varchar)+' Hours'+' '+ Cast(notespent %60 as varchar)+' minutes' as SpentHours,duedate,
substring(convert(varchar(20),duedate,8),1,5) as d1,
substring(cast(duedate as varchar(18)),13,8) as d2,
'Client' as Source,
'url:lawbase:commonitem(notes)='+cast(notes.serial as varchar)+ '~' +
substring(convert(varchar(20),notes.duedate,8),1,5) +' ' + isnull(notes.notetype,'')
as link, notes.notebill, notes.consult
from Page0
inner join notes on PAGE0.SERIAL = NOTES.CaseSerial
where NOTES.DUEDATE >= dateadd(dd,0,datediff(dd,0,getdate())) and NOTES.DUEDATE < DATEADD(day,1,getdate())
union all
select contact0.serial, security, name,noteby,memo, 2 as FlexSerial,
notetype, notespent,
Cast(notespent/60 as varchar)+' Hours'+' '+ Cast(notespent %60 as varchar)+' minutes' as SpentHours,duedate,
substring(convert(varchar(20),duedate,8),1,5) as d1,
substring(cast(duedate as varchar(18)),13,8) as d2,
'Contact' as Source,
'url:lawbase:commonitem(notes)='+cast(notes.serial as varchar)+ '~' +
substring(convert(varchar(20),notes.duedate,8),1,5) as link, notes.notebill, notes.consult
from Contact0
inner join notes on Contact0.SERIAL = NOTES.CaseSerial
where NOTES.DUEDATE >= dateadd(dd,0,datediff(dd,0,getdate())) and NOTES.DUEDATE < DATEADD(day,1,getdate())
The SmartFolder SQL Rule would be just select from the view (don’t need the flexbase join since it was included in the view)
Select * from TodaysNotes2
File Setup
TIMELINE
Common Tabs have the ability to display data on a separate common tab called “TimeLine”. If you don’t want to use TimeLine, go into each common tab FlexBase in LBDesign and remove the mapping of all fields on the Time Line Actions button.
SQL
Combine multiple result rows into a comma (or any delimiter) separated list.
SQL can combine multiple result rows into a single field separated by commas. Starting with SQL 2017 there is a built in SQL function named string_agg to do this. Previous versions of SQL require a somewhat complex combination of functions.
Example of SQL used with the older combination of functions versus using the built in string_agg function.
Prior to SQL2017:
select page0.serial, security, typelaw.typename, dept, vendorco, page0.conname, status, contno,
STUFF((SELECT ', ' + isnull(Keyplayers.contactname,'')
FROM KeyPlayers
WHERE
KeyPlayers.Serial = page0.serial order by KeyPlayers.Contactname
FOR XML PATH('')
), 1, 1, '' )
AS [KeyPlayers]
from page0 inner join typelaw on typelaw.serial = page0.typelaw
order by page0.conname desc
SQL 2017 or newer:
select page0.serial, security, typelaw.typename, dept, vendorco, page0.conname, status, contno,
String_AGG(Keyplayers.contactname,', ') as KeyPlayers
from page0 inner join typelaw on typelaw.serial = page0.typelaw
left outer join keyplayers on keyplayers.serial = page0.serial
group by page0.serial, security, typelaw.typename, dept, vendorco, page0.conname, status, contno
order by page0.conname desc
Calculate Age
It might be desirable to calculate an age of a person. The following SQL function can calculate this. (Assumes that dob and dod are on the same table of a page that belongs to a flexbase.)
Create FUNCTION [dbo].[CalculateAge](
@serial int
) RETURNS int
BEGIN
--declare @serial int = 1
DECLARE @result int, @DOB datetime, @END datetime
select @DOB = isnull(DOb, getdate()) from page1 where serial = @serial
select @END = isnull(DOD, getdate()) from page1 where serial = @serial
Select @result = (CONVERT(int, CONVERT(varchar, @END, 112)) - CONVERT(int, CONVERT(varchar, @DOB, 112)))/10000
RETURN @result
To use, you'd something like:
Select [dbo].[getage](serial#)
Where serial# is the serial number of the page in question.
Special WorkFlow Variable to get the whofor (aka ticklernames) for Calendar
When you have a calendar entry displayed on the screen, you may need to get at all the whofor list that is currently on screen.
WorkFlow from a calendar item has a special variable called <<Var.WhoForList>> available after 11/29/2023 build. This variable is a comma separated list of whofor list that is in memory before the calendar is saved. You can use the <<Var.WhoForList>> to obtain information such as the email from the user_Profile.
Example: Get a comma separated list of emails. (Using SQL2014 or lower)
<<Sql(SELECT STUFF((SELECT ',' + email FROM user_profile WHERE CHARINDEX(',' + login + ',', ',' + '<<var.WhoForList>>' + ',') > 0 FOR XML PATH('')), 1, 1, ''))>>
Example: Get a comma separated list of emails. (Using SQL2017 or better)
<<sql(select String_AGG(email,', ') from User_Profile where login in (select value from string_split('<<var.WhoForList>>',',')))>>
Example: Using SQL2017 or higher, to get the data returned with separate rows that can be used in a WorkFlow loop step to act on each one separately.
<<sql(select email from user_profile where lower(login) in (SELECT lower(value) FROM STRING_SPLIT('<<var.WhoForList>>', ',')))>>
TAPI (Phone Dialing)
LawBase does not support specific phone systems. LawBase uses TAPI which is the Microsoft standard for handling phones. If client's phone system handles TAPI correctly, it should work. If not, it won’t.
You can test your TAPI by using the executable Tapidialer.exe located in the main LawBase directory from a windows command prompt:
Tapidialer "3033204420" "Drew"
Tapidialer.exe uses the TAPI standard to attempt to dial. The quote marks and the 2nd parameter are required as is a user name. The name isn't important for testing but does need to be there.
For troubleshooting, view this website:
LBURL (Hyperlink to internal LawBase items)
LBURL is a URL protocol handler that allows hyperlinks to launch various items in LawBase. Some examples are:
Example | Explanation |
lawbase:caseserial=123 | Open file with serial # of 123 |
lawbase:caseserial=123^commonitem(notes) | Open file serial # 123 on the notes tab |
lawbase:linkserial=10^23[^Focus=LName] | Open page and serial for whatever linkserial is listed. Optionally set the cursor focus on the LName field |
lawbase:smartfolder=123 | Go to a smartfolder with serial 123 |
lawbase:commonitem(calendar)=5 | Open a common item of (type) with serial 5 |
lawbase:commonitem(calendar:file)=5 | Open the common item 5 and the file behind it |
lawbase:Favorite=7 | Launch a favorite with serial 7 |
lawbase:search=page0.status='open'_page0.atty='JIM' | Run a search with provided fields and values. Separate each individual search item with an underbar (_) |
Focus a SmartFolder in WorkFlow
Use an executable WorkFlow step. Put LBURL.exe in the program entry (might need to use the full pathname) and place lawbase:SmartFolder=100064 in the parameter field where 100064 is the serial number of the SmartFolder you want to focus. Don't use quotes in the actual entry. This can be used for any type of LBUrl allowed. For instance to open another case file, you could place lawbase:caseserial=21489 in the parameter field. Replace 21489 with the file's serial #.
WorkFlow
WorkFlow (often abbreviated as WF) is the LawBase subsystem that allows actions to occur when some trigger launches the WorkFlow. When launched inside a file all the fields from the file are available to be used. All trigger points are optional.
Trigger Points for WorkFlow
Trigger Type | When Triggered |
Program Entry | After a user has logged into LawBase successfully. |
Program Exit | When a user logs out of LawBase. |
Case Entry | When a File is pulled up for view/entry. |
Case Exit | When a File is closed. |
Screen Entry | When a screen (each screen is a tab that consists of the fields for one detail table) is activated. |
Screen Exit | Whan a screen is deactivated by a user clicking on a different tab or closes the file. |
Case Add | When a new file is created, case add runs when the new file is saved. |
Case Delete | When a file is deleted. Runs prior to the deletion so that the about to be deleted information is available to the WorkFlow |
Field Changed | If a user changes the value of any field in a file, WorkFlow can be triggered to take further action. The previous (old) value of the field can be accessed using the variable :prevvalue The current value can be accessed using a standard field value of <<fieldname>> where <<fieldname>> is the actual sql name of the field. |
WorkFlow (action) Button | Buttons can be placed on any tab of a file and they simply trigger an indicated WorkFlow when pressed. |
Common Item | Common Items (Notes, Calendar, History and user defined common items) also contain Field Changed WorkFlow triggers. In addition, a WorkFlow can be attached to pressing the OK button to save/close viewing/editing of a Common Item. |
Calendar Status Change | When a calendar item's status is changed, this can trigger a WorkFlow to take actions needed. For instance, if a calendar is changed from Pending to Suspended you might want to send an email to everyone on the notification list that the item was suspended. |
WorkFlow Functions and variables
WorkFlow and some other places (like ask variables) in LawBase allow built in functions to run as part of a script. All functions are replaced by the result of the function. All variables are simply replaced by their value at the time of execution. All functions require commas between each parameter. This is a list of the functions and variables and their definitions.
Variable | Description |
:CurDate | Current date in 'MM-DD-YYYY' format |
:CurTime | Current time in 'HH:MM am/pm' format |
:CurUser | The login name of the currently logged in user |
<<LB_Username>> | The login name of the currently logged in user |
<<LB_FullName>> | The Full Name of the currently logged in user |
<<LB_Email>> | The email address of the currently logged in user |
<<fieldname>> | The information from the current file (if one exists) current tab's fieldname field. |
<<header.fieldname>> | The information from fieldname on the header (master record) of the current tab. |
<<page#.fieldname>> | A field on a different tab from the current tab. If the selected page# is a repeatable page, only the first copy of the page will be used. |
<<var.varname>> | The value of a previously defined variable in the WorkFlow. |
Function Name: 'datemath'
Description:
This function performs date arithmetic by adding or subtracting a specified number of days, business days, weeks, months, or years to a given date.
Syntax:
datemath(date, period, number)
Parameters:
date: The starting date in 'MM-DD-YYYY' or 'MM-DD-YY' format.
period: A single character indicating the type of period to be added or subtracted. Can be 'd' (days), 'w' (weeks), 'b' (business days), 'm' (months) or 'y' (years).
number: The number of periods to add or subtract. Positive values add to the date, while negative values subtract from it.
Replacement Value:
Returns a string representing the new date after the arithmetic operation, in 'MM-DD-YYYY' format.
Examples:
Add 5 days to 01-01-2023: 'datemath(01-01-2023, d, 5)' returns "01-06-2023".
Subtract 2 months from 06-15-2023: 'datemath(06-15-2023, m, -2)' returns "04-15-2023".
Function Name: 'UpperCase'
Description:
This function converts any provided text to upper case letters.
Syntax:
Uppercase(text)
Parameters:
text: The text to convert to upper case.
Replacement Value:
Returns the provided text in all uppercase letters.
Examples:
Convert 'this text' to upper case: 'uppercase(this text)' returns "THIS TEXT".
Function Name: 'LowerCase'
Description:
This function converts any provided text to lower case letters.
Syntax:
LowerCase(text)
Parameters:
text: The text to convert to lower case.
Replacement Value:
Returns the provided text in all lowercase letters.
Examples:
Convert 'This Text' to lowercase: 'lowercase(This Text)' returns "this text".
Function Name: 'TitleCase'
Description:
This function converts any provided text to Title Case letters. This means capitalize the first letter of any non-trivial words.
Syntax:
TitleCase(text)
Parameters:
text: The text to convert to title case.
Replacement Value:
Returns the provided text in Title Case format.
Examples:
Convert 'homer jay simpson' to title case: 'titlecase(homer jay simpson)' returns "Homer Jay Simpson".
Function Name: 'Substr'
Description:
This function returns the substring of a longer string.
Syntax:
Substr(text,startindex,length)
Parameters:
text: The text to get the substring from.
startindex: The position to start the index from (first character is position 1)
length: How many characters to get for the substring
Replacement Value:
Returns the substring with the requested startindex and length.
Examples:
Get the first 3 characters of 'Hello there': 'substr(Hello there,1,3)' returns "Hel".
Get the 5 characters at position 7 of 'Hello there': 'substr(Hello there,7,5)' returns "there".
Error Handling:
If 'text' is blank or 'startindex' > 'text' length or 'startindex' + 'length' > 'text' length returns "INVALID SUBSTRING"
Function Name: 'Strlen'
Description:
This function returns the length of a string.
Syntax:
strlen(text)
Parameters:
text: The text to find the length of.
Replacement Value:
Returns the length of the supplied string.
Examples:
Get the length of 'Hello there': 'strlen(Hello there)' returns "11".
Get the length of a blank string: 'strlen()' returns "0".
Function Name: 'PlainText'
Description:
This function takes a string which may be in RTF (Rich Text Format) and returns its plain text version. If the provided string is not in RTF format, it returns the provided text as is.
Syntax:
plaintext(text)
Parameters:
text: The text to turn into plain text.
Replacement Value:
Returns the plain text version of the supplied string.
Examples:
Get the plain text of '{\rtf1\ansi\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Calibri;}}{\*\generator Riched20 10.0.19041}\viewkind4\uc1 \pard\sa200\sl276\slmult1\f0\fs22\lang9 This is plain\par}': 'plaintext({\rtf1\ansi\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Calibri;}}{\*\generator Riched20 10.0.19041}\viewkind4\uc1 \pard\sa200\sl276\slmult1\f0\fs22\lang9 This is plain\par})' returns "This is plain".
Get the plain text of 'This is not rtf': 'plaintext(This is not rtf)' returns "This is not rtf".
LawBase WorkFlow variables and functions can be used singly or together or nested anywhere in a WorkFlow step where variables are allowed:
Examples:
Subtract <<var.num>> (a previously set integer value) months from <<doi>> (a date of injury date on the current screen):
DateMath(<<doi>>,m,<<var.num>>)
Find out the text length of an RTF field named <<memo>>:
Strlen(plaintext(<<memo>>))
JSON FORMAT for LawBase VAR workflow components:
You can create JSON string packages using VAR workflow component. We currently support 2 formats: Individual Item(s) and Item Lists.
To create a single item, create a var named JSONxyx
Where “JSON” is the first part of the variable name (case does not matter). The “xyz” is any user-defined descriptor used to help differentiate between JSON variables.
In the body of that VAR, declare the type of JSON component you want. In this example, we are creating an individual single name-value pair item:
item^name=favio
To create a list of name-value pairs, use the following format:
list{listname=address^itemlist=add1=1010 somewhere street^add2=apt. b2^city=somewhere^state=NC^zip=28101}list{listname=address^add1=2020 nowhere street^add2=suite 300^city=denver^state=CO^zip=80222}
Once a Json variable is used, you can use it wherever you need in standard var format like:
<<var.JSONxyz>>. If your provided information contains single quotes (') you can optionally elect to escape them in the output so that id doesn't cause problems in SQL or elsewhere. To optionally do this, simply add ".escape" to the end of the usage. <<var.JSONxyz.escape>>
NOTE: LawBase will automatically ADD new items to the collection based on the name of the VAR.
For example, if there are 2 VAR components both named, JASONxyz; the first one with the individual item and the 2nd one with the list, LawBase will add the results to a single JSON string in the correct format.
Sample Output:
{
"name": "favio",
"address": [
{
"itemlist": "add1=1010 somewhere street",
"add2": "apt. b2",
"city": "somewhere",
"state": "NC",
"zip": "28101"
},
{
"add1": "2020 nowhere street",
"add2": "suite 300",
"city": "denver",
"state": "CO",
"zip": "80222"
}
]
}
If you ever need to clear a JSON variable, use a VAR WorkFlow step, and set the value of a JSONname var to "clear" (without the double quotes).
Ask for multiple pieces of information in one step.
In WorkFlow variables, you can use "Input=" to ask the user for information. If you want to ask for multiple items of information you can combine {ask} variables. Here's an example:
input={ask=calc^text=input your number^IsCurrency=true^Default=0.0^AskName=var1} {ask=Memo^Text=Enter some long text^AskName=var2}
{ask=picklist^PickListName=sql(select login from user_profile where activeuser = 'Y' order by login)^Text=Who entered the notes?^default=%}
{ask=text^text=Straight Text^Default=hi there^AskName=var4}
This asks four questions. The AskName=var# tells the resulting values of each ask which variable to name to place the result in. So in this instance, the first "calc" ask will place the input results in <<var.var1>> and so on. If any AskName=var# is omitted, the result will be automatically named LB_ASK# where # is replaced by which sequential place the {ask} was in.
DateMath for first and last day of a period
The DateMath function can be used to calculate the first and last day of selected periods.
Example | Result |
datemath(08/06/2023,first,month) | 8/1/2023 |
datemath(08/06/2023,last,month) | 8/31/2023 11:59 pm |
datemath(08/06/2023,first,year) | 1/1/2023 |
datemath(08/06/2023,last,year) | 12/31/2023 11:59 pm |
datemath(08/06/2023,first,quarter) | 7/12/2023 |
datemath(08/06/2023,last,quarter) | 9/30/2023 11:59 pm |
Launch a SmartFolder (or any other combination of using LBURL with WorkFlow)
Using a WorkFlow executable step, you can tell LawBase url protocol (LBURL) to perform any of it's available actions. To do this set the Executable Program of the Exec step to LBURL.exe (Note: This may require a full path name to LBURL.exe to work depending on your system setup). In the Parameters section, place the lawbase: url definition for what you wish to do.
Examples for the Parameters:
Take the user to a specific SmartFolder (example SmartFolder with a serial of 100064)
lawbase:SmartFolder=100064
Launch the file with a serial # of 123.
lawbase:caseserial=123
Cosmetics
Cosmetics define how portions of LawBase work. These allow each firm to tailor their system to their precise needs. Cosmetics are modified in LBAdmin under the
Certainly, here's the transformed text with `||` as the delimiter:
Cosmetic Name | Explanation |
Calendar.CompleteTo | Tells LawBase the default common item type to complete calendar items. Make sure to input the mapping for Calendar Complete To within LBDesign. |
Calendar.ContinueDates | If you want continuation dates to appear when you right click on a calendar item, list the dates you want available separated by commas. (ie 3d,2w,3m,1y) Use lower case to move from duedate. Use capital letter to move from Current Date. Continuation dates allow users to quickly move a calendar item forward or backward by the amount selected. |
Calendar.SecurityOverride | When viewing calendar items make calendar security override case security. If checked and a calendar security has one setting and the case security for the linked case says has something else, use the value attached to the calendar. Unchecked means case security overrides calendar security. |
Calendar.TeamSql | If you want a "Team Button" to appear on calendar items to allow users to quickly assign the item to defined users, enter SQL to run that determines which users. Example: select atty from page0 where serial = :serial (use :serial to refer to the serial for the file that is attached to the calendar item.) |
HotDocs.CommandLine | When a HotDocs template is run, if you need any optional command line options sent, enter them here. See HotDocs help to see which command line options are available. |
HotDocs.DefaultLibrary | HotDocs Library to use if no library defined in the Typelaw of the case. (Use full path name) |
HotDocs.OfficeExt | The extension of files saved by the Hot Docs Office Link. For instance .rtf or .docx. |
HotDocs.ReportLibrary | HotDocs Library to use to find Standard Reports for all Common Items. (Use full path name) |
HotDocs.SaveDir | When told to save a HotDocs template assembly, the directory to store the result in. |
HotDocs.UseHotDocs | Check to allow HotDocs to be used in LawBase. Uncheck to turn off HotDocs ompletely. |
InstantPrint.Directory | Directory where InstantPrint Templates are located. (Use full path name) |
InstantPrint.UseInstantPrint | Check to activate InstantPrint. Uncheck to turn off InstantPrint completely. |
Logging.Directory | The Directory where Logging messages are saved. |
Logging.RetentionDays | How long (in days) are logged messages saved. Any messages older than this selection will be deleted to save space. |
Logging.UseLogging | Check to turn on Logging. Uncheck to remove Logging ability. |
Main.ChangeLook | Allow users to select skins which makes LawBase look differently? When this is unchecked the skin will default to MoneyTwins. |
Main.ChangePassword | Allow users to change their own passwords? |
Main.PreventMultipleLogins | If a user attempts to login and that user is already logged in on another machine, prevent the user from logging in again. |
Main.RecentFileSize | How many files should be kept on the recent file list? |
Main.Title | The text that appears in the Title bar of LawBase. |
Search.AllowSoundex | Allow Users to do soundex searching? |
Search.ConflictSearch | The text that appears on the Conflict Search tab. To disable this tab, set the label to 'NONE'. |
Search.ConflictWild | Precede all conflict searches with a wildcard? Unchecked means that conflict searches must begin with the search value selected. Checked means the search value can occur anywhere in the searched fields. |
Search.DisplaySearch | Allow Users to perform a search across all fields defined as CaseLink Displays on all tab in all FlexBases? |
Search.External | The text that appears on the Other Shortcut tab. To disable this tab, set the label to 'NONE'. |
Search.GlobalSearch | Allow Users to perform a search across all fields of all FlexBases? |
Search.GridAsYouType | Search as you type in the Search Grid? Checked means search results are presented when the user pauses or stops typing. Unchecked requires users to hit return to perform search. |
Search.LaunchSingleFile | Checked means if there is only one result from a search, that file is automatically opened. Unchecked requires the user to click on the file in the result list. |
Search.MostViewedSize | This is how many SmartFolders should be shown under the Most Viewed list. |
Search.QuickSearch | Enter the SQL needed to run a quicksearch. Example: select * from page0 where lname like ':Lookfor%' order by lname,fname; select * from contact0 where name like ':Lookfor%' order by name; select * from page0 where link(client:contact0.name) like ':Lookfor%' order by lname,fname |
Search.QuickSearchHover | Enter the hover text that appears above the quick search. |
Search.Reports | The text that appears on the Report tab. To disable this tab, set the label to 'NONE'. |
Search.ShowFolderCounts | When checked SmartFolders show a column with the number of items that are in the SmartFolder. Unchecked removes this column. |
Search.ShowSqlOnDoubleClick | If checked, when a user double clicks on a SmartFolder, LawBase will show the underlying SQL for the folder. Unchecked removes this feature. |
System.AddTabs | If checked when a user exits a file, an entry will be create in the underlying SQL Table for all tabs (by typelaw) that don't already have at least one item for the file. |
System.AllowMultipleFileView | Checked means allow the same file to be opened in two separate windows? Unchecked will activate the file if it is already open. |
System.CommonGridReadOnly | If checked, makes the navigational grid on the Common Item pages read only. Changes can only be made by double clicking an item. Unchecked means data can be changed directly in the grid. |
System.DefaultFont | The default font for major portions of LawBase. |
System.DeleteEmptyPages | If Checked LawBase will delete any empty pages from files when exiting a file? Empty is defined as all fields being null/blank or their default values. |
System.Dictionary | Directory where the spelling Dictionaries reside. (Use full path name) |
System.EmailSubject | When an email is requested from a common item, this is the text placed in the subject. Use the variable <<Tablename>> in your text to display the name of the common item the email initiates from. For Example: This is from <<Tablename>> |
System.ErrorReport | Check to allow LawBase to send unhandled errors back to Synaptec for diagnostic testing? |
System.ExcelDirectory | Directory where excel exports are saved by default. |
System.LaunchDir | Directory where launch buttons begin their search for files. |
System.LaunchNoExt | What document management program string to launch (e.g. imanage) if there is no extension on a launch field. (Use %1 for field value). So if you have a launch field with something like "032344" and press the launch button, since the data has no file extension, it will launch the requested program. |
System.LBShare | Check to activate LBShare to connect to the LawBase community of examples. Uncheck to turn off this ability. |
System.NavGridReadOnly | Check to make the navigational grid on repeatable pages read only? Unchecked allows users to change data directly on the navigational grid. |
System.NotesTimeSpent | Check to display the time spent in notes in hours:minutes. Unchecked means display # of minutes total. |
System.OutlookAllowDrop | Check to allow users to drop outlook emails on a file to create a note. Uncheck to prevent outlook drag and drop ability. |
System.OutlookAttachDir | The Directory where saved outlook mail attachments are saved. Leave blank to not save attachments at all. |
System.OutlookDrop | The field order to make notes when an Outlook Email is drag and dropped. (Valid words are To, Subject, Date, From, UserInput) UserInput will substitute text typed in by the user for the body of the email Add a ~ after keyword if you just want to put in the information without the title word. (i.e. Date~,From~,Subject~) |
System.OutlookSelectNoteType | Check to have the user select the NoteType when a note is created by dragging and dropping an outlook. Uncheck to simply use "EMAIL" as the NoteType. |
System.PhoneMask | A mask to indicate how TAPI (or phone) fields format their input numbers. |
System.QuerySaveDir | The default directory to save QueryBuilder (*.qry) files in Examples: %UserProfile%\\QueryFiles {APP}\\QueryFiles L:\\LawBase12\\QueryFiles |
System.TemporaryDir | The directory to save any temporary files. Leave blank to use the standard (windows defined) %Temp%. Whatever directory you use must exist and have write permissions or LawBase will revert to standard temp directory You can include :CurUser to be replaced with the logged in user. |
System.UpdateLastAccess | When checked the last access field in the header table of a file is updated when a common item is modified. Uncheck to not update this field on common item changes. |
System.UseNetworkLogin | Check to make LawBase use the Active Directory name when logging in. Uncheck to allow user input or command line options to select the login name. |
TAPI.AlternateDialer | If you want to use something other than TapiDialer.exe to make calls, enter that program here. |
TAPI.DefaultType | Default NoteType to use for Tapi created notes. |
TAPI.DefaultMemo | Default Memo Text to fill in on Tapi created notes. (<<Phone>> replaced by called number) |
TAPI.Legacy | Use the legacy tapi caller (Select this if Tapi calls don't appear to work as they did in LawBase v10.) |
TAPI.LocalAreaCodes | Local Area Code(s) (List local area code(s) with no parens. Comma delimited) |
TAPI.NotePopupTime | When do you want to popup a note entry when making/completing a TAPI call? Can be None, BeforeCall or AfterCall. |
TAPI.Prefix | Prefix numbers to prepend before dialing. (e.g. 9 to get outside line) |
TAPI.StripLocalArea | Check to strip out local area code(s) when dialing? |
TAPI.Suffix | Suffix numbers to add to end of number for dialing. |
Glueware
You can use Glueware to launch a webpage.
Description | Name it so you know what it is. |
Gcode | 1 |
Command line | Depending on your system setup you need to point to chrome.exe or msedge.exe or which ever browser executable you use. |
Parameters | Fill in the url as needed. Here's an example: http://spointweb/LB/Lists/Issues_list/DispForm.aspx?ID=<<serial>> This is url for a sharepoint page where the ID is the same as the serial number of the case. |
Security | You can leave this empty. |
Icon | Grab a .jpg or .png to put an image on the button |
Ask {ask} Variables in HotDocs Reports, LawBase WorkFlows, InstantPrint, and LawBase Dashboards
When a user queries about ask variables this FAQ explains them.
Q: What are Ask Variables?
A: Ask Variables are placeholders used in LawBase to gather user input for constructing queries and other input. The {ask} section is replaced by user-supplied data. The sections are divided by carets (^) and instruct the application how to request the input.
Q: How do Ask Variables work?
A: Ask Variables begin by specifying the field type, the prompt text (Text), and the initial (Default) value. The default section is optional but helpful to indicate what might be used in the ask. When the user inputs data, it replaces the Ask Variable section in the query. For example, in a SQL statement, you can use Ask Variables like {ask=date^Text=Enter Start Date^Default=DateMath(:CurDate,w,-2)}.
Q: What does the {ask=date^Text=Enter Start Date^Default=DateMath(:CurDate,w,-2)} section do?
A: This Ask Variable instructs the application to input a date with a prompt of "Enter Start Date" The initial value is set to the current date minus two weeks. This input is used in the query to find records where the due date is greater than or equal to the user-supplied date.
Q: How do I ask the user for a date with no time element associated with it?
A: To ask for a date with no time, use {ask=date^Text=Enter Start Date^notime^default=DateMath(:CurDate,w,-2)}.
Q: What are the supported field types for Ask Variables?
A: Ask Variables support various field types, including:
Checkbox
Input Y or N depending on if the check box is checked or not.
Date
Input a date. Allows a calendar to be used to select the date.
Memo
A long Text variable.
Multiselect
Select zero or multiple items from a provided possibility list.
PickList
Select one item from a system defined picklist. Can also use SQL to define possible selections.
RadioEdit
Select one item from an on screen set of possible selections.
Text
Simple text input.
Q: How can I use Ask Variables with Checkbox fields?
A: Example: {ask=check^Text=Use this entry^default=Y}. Checkbox returns Y if checked and N if not.
Q: How do I use Ask Variables with Date fields?
A: You can use Date Ask Variables like this: {ask=date^Text=Enter Start Date^default=DateMath(:CurDate,w,-2)}. To ask for a date with no time, add ^notime to the Ask Variable.
Q: How can I utilize Ask Variables with Memo fields?
A: Example: {ask=memo^Text=If the question is too long to fit on one line, you could use an ASK with a memo<return>and code carriage returns in order<return>to display the question in multiple lines<return>^default=}. Any <return> is replaced by an actual return in the text.
Q: How do I work with Ask Variables for Multiselect fields?
A: For Multiselect, you can use an Ask Variable like this: {ask=MultiSelect^Text=Which People^Items=Ed,Sam,Frankie,Johnny,Rick,John,Billy,Tom^default=Ed,Sam,Billy}. The result is a comma-separated list of selected items. On Mulitselect the Items section can also use SQL like so:
Items=SQL(select login,fullname from user_profile where activeuser = 'Y' order by login)
Q: How can I use Ask Variables with PickList fields?
A: When using a PickList, you need to provide the pre-defined PickListName or SQL statement to populate the dropdown. Example using a named picklist: {ask=picklist^PickListName=role^Text=Pick a role. Type % to select all roles^default=%}. Example using a SQL statements to populate PickList values:
PickListName=SQL(select login,fullname from user_profile where activeuser = 'Y' order by login)
Q: How do Ask Variables work with RadioEdit fields?
A: When using RadioEdit, you must supply RadioItems as a comma-delimited list. For example: {ask=RadioEdit^Text=Which status?^RadioItems=Intake,Open,Closed^default=Open}.
RadioEdits show all their RadioItems on screen, so only use them if the number of selections is small enough to fit comfortably on screen at once. If you need more selection than will fit, switch to a PickList ask.
Q: How can I use Ask Variables with Text fields?
A: Example: select * from page0 where name like {ask=text^Text=Which case? (use % as a wildcard)}. The Ask Variable for Text allows users to input standard text data.
Q: How do Ask Variables work with Typelaw fields?
A: You can use Ask Variables with Typelaw fields by specifying a PickList or SQL statement to populate the field values. For example: {ask=PickList^PickListName=sql(select typename from typelaw where flexserial = 1 order by typename)^default=%}.