Tips and Tricks

Integration with Any System

You have the following options for integration with any system:

  1. Use the Call-URL action to trigger an external web service or application by calling a specified URL when certain conditions are met in TeamDesk.

  2. Use the TeamDesk REST API to interact with your database programmatically.

  3. Configure Webhooks in TeamDesk to receive real-time data from other systems as events occur.

If you need any help with integration, please consider hiring a TeamDesk Expert with API programming knowledge.

How to Display Only Part of Detail Records in the Generated Document

  1. Create an additional many-to-many relation between the master and details table with the same match condition as your existing one-to-many relation.

  2. In the details table, create a view which will filter the records you need and set it as the details view for the newly created many-to-many relation.

  3. Generate a document template with the filtered details view.

  4. Optionally, use form behavior to hide the details view you don’t need to see on the screen.

For more detailed instructions, visit the TeamDesk blog post.

How to Enable New UI for All Users

You can enable the new UI for all users in Labs.

How to Get Key Column Value of Created Record

If you’ve created a new record using the Record Create action linked to a trigger or custom button, you might need to know the key column value for the newly created record.

For example, you have a Master and Child table with a one-to-many relation to the Master table. You have two options to capture the Child record’s key column value in the Master record:

  1. You’ll need to add a many-to-one reference column from the Master table to the Child table to store the Child’s key column value. After that, add a Record Update action to the same trigger or custom button that creates the Child record and use the ParentKey function in the update action assignments to fill the single reference column with the corresponding value.

  2. In the Child table, create a record change trigger for adding a new record and link a Record Update action to it. The Record Update action will update the Master record using the corresponding reference column to the Master record and assign the key column value to the Master column you need.

How to Convert Address to Location

You can use the Google Geocoding API for that.

Create a Call-URL action using the GET method with the following URL:

https://maps.googleapis.com/maps/api/geocode/xml?key=<%Var[My google API key]%>&address=<%[My address]%>

Then assign the following formula:

ToLocation(Response("/GeocodeResponse/result/geometry/location/lat") & ", " & Response("/GeocodeResponse/result/geometry/location/lng"))

to your location column.

How to Convert Location to Address

To translate a location on the map into a human-readable address (reverse geocoding), you’ll need to use the Google Geocoding API.

Create a Call-URL action using the GET method with the following URL:

https://maps.googleapis.com/maps/api/geocode/json?latlng=<%[My Location]%>&key=<%Var[My google API key]%>

Then assign the values you need using the action assignments section.

How to Delete File from File Attachment Column

To delete a file from the File Attachment column, you can use the Record Update action. Create a record update action and assign 'null' to the file attachment column you need to clear using the assignments section. You will need to link that action to a trigger or custom button in order to make it work.

How to Assign/Upload File to File Attachment Column

You can use the Record Create or Record Update action with corresponding assignments for that.

There are two options:

  1. Assign another file attachment column: You can use a simple attachment column reference like [File Attachment Column] as your "From" formula. The system will copy the attachment from one column to another.
  2. Assign a Formula-URL column to the file attachment column: In this case, the system will download the file using the URL returned by the formula column specified in the "From" part and assign it to the attachment column specified in the "To" part of the action assignment.

How to Fix "Cyclic Execution of Trigger" Error

To fix the "Cyclic execution of trigger" error, review the trigger’s linked actions and uncheck the "Execute Triggers" option for the action to break the cycle. Alternatively, you may modify the trigger filter condition to avoid trigger activation after the linked actions are executed.

How to Fix "Column or Formula Creates Cyclic Reference" Error

Lookups, summaries, and formulas do not store their values; they are calculated on the fly.

To calculate the value of a column, the system has to check whether the master record is available. This check involves table access rules and match conditions. Since the column is involved in match conditions, the system has to calculate its value, which invokes another master record check. This process repeats, potentially creating an infinite loop.

Another situation where you may encounter a "cyclic reference error" is when a formula contains a lookup to the same formula, or when a summary column calculates a function (e.g., Total) over the same summary column.

Diagram of Database

Currently, it’s not publicly available because we’re not satisfied with its cumbersome look so far. If you’re interested, you can check it by manually opening the schemadump.aspx page in your browser URL.

https://www.teamdesk.net/secure/db/<app-id>/setup/schemadump.aspx

Replace "app-id" with your database number.

Lookup Column and Many-to-Many Relation

There is no way to create a lookup column for a many-to-many relation because there can be multiple matching records on both sides of the relation. Instead of a lookup column, which extracts a column value from the master table in a one-to-many relation, you can use a summary column with the aggregate function Min, Max, or Index for many-to-many relations. The Index aggregate function allows you to extract the value from a particular related record.

Sorting or Grouping by Date in a Text Column

There is no way to sort or group records correctly if you have a date in a text column. You should convert the text value to a date and sort or group by that newly created column instead. You have the following date grouping options in reports/views:

If you need to display your date in a specific format on the screen, consider creating a Formula-Text column for that and use the Format function for date conversion to text.

How to Update a Column Value in Another Table

First of all, your current table and the table you need to update column values in should be linked with a relation. If they are linked with a one-to-many relation and you wish to update a column in the master (one) table from the child (many) table, then you’ll need to use a record update action on the child table reference column for that. If you wish to update the child (many) records from the master (one) record, or in the case of a many-to-many relation, you’ll need to use a record update action on the recordset column. If you don’t have a recordset column, you’ll need to create a new one that will return the records you wish to update.

You may link that record update action to a trigger or custom button, depending on your particular needs.

Your text is well-written, but here’s a slightly refined version for clarity and consistency:

How to Backup All Table Data with File Attachments

To create a full backup of your data, including file attachments, use the TeamDesk Backup and Restore Tools.

  1. Download the tdbackupwin.zip file and save it locally on your computer.
  2. Extract the files to a folder, such as tdbackupwin.
  3. Open the folder and double-click tdbackupwin to launch the tool.
  4. Enter your account information and specify the folder where the database backup will be stored.
  5. Click Start to begin the backup process.

How to Include Multi-Reference Column Content in Document Template with Additional Columns and in Table Format

In general, you’ll need to use the multi-reference column link table for that. You’ll need to perform the following steps:

  1. Open the link table and add the necessary lookup columns using the relation to the referred table.
  2. In the link table, create a table view with the columns you need to display in your document template.
  3. Set the newly created table view as the details view for the relation between your main table and the link table.
  4. You can hide details from the screen with the help of form behavior in the main table if needed.
  5. Generate a blank document template in your main table and copy/paste the corresponding details table into your document template.

By performing these steps, you’ll be able to display the content of a multi-reference column in the form of a table with additional columns from the referred table.

How to Add an Image to the Document Template

The document template is a regular Word file with mail-merge placeholders, so you can use Microsoft Word to edit it, inserting images as needed and styling it as you like.

When you embed an image stored in a column of the File Attachment type or URL type, please ensure that the Image or Signature type is activated in the File Attachment column settings, or that the Image option is chosen in the Display as field in the URL column settings.

How to Backup and Restore Database Settings/Schema

There is no way to directly backup or restore database settings.

If you need to do that, please consider creating a database copy instead.

If you need to create a copy of a database and move it to another domain, create the database copy and then contact TeamDesk support, so they can move it to the desired domain.

How to Upload Multiple Files/Documents/Images into a File Attachment Column

A single File Attachment column can store only one file.

If you need to store multiple files, you have two options:

  1. Create several File Attachment columns.
  2. Create a details table with a single File Attachment column and a many-to-one reference to the parent table, allowing you to store an unlimited number of related files/documents/images.

How to Combine Multiple Email Addresses into a Single Value

First of all, the E-mail Alert Action allows you to specify several columns for the To, CC, and BCC fields.

If it’s absolutely necessary to merge several emails into a single value, consider creating a Formula E-mail column and use the following formula:

List(";", [email1], [email2], "john.doe@email.com", If([Status]="Closed", [email3]))

The List function will automatically ignore null values.

If you need to consolidate email addresses from detail/related records, consider creating a summary concatenate column for that.

Database Limits

All TeamDesk Editions allow the following:

How to Display Only Totals in a View

If you need to display only total values in a view or report, you should use a summary view or headline view instead.

How to Change a View Name to Include a Column Value

Unfortunately, it’s not possible. The view name is a constant text value that cannot be calculated dynamically.

How to Restore Deleted Data or Settings

Unfortunately, there is no way to restore database settings. You’ll need to recreate them manually.

If you’ve deleted a database by mistake, we can easily recover it because the database is not deleted immediately.

If you’ve deleted a column, changed a column type from a physical to a formula column, deleted table data, or deleted a table, we can easily restore the table data or provide you with a snapshot in CSV format because actual data deletion is processed with some delay.

If you’ve changed table data using a multi-record custom button, incorrect data import, or a wrong default/calculate formula, we can attempt to recover your data from our backup. The system backs up all customer databases as a whole. To proceed, we will need to restore a copy of the global database on a separate server. Since this process is time and resource-consuming, we charge a one-time fee of $200.

Please let us know if you’d like us to proceed with data restoration by contacting TeamDesk Support.

How to Insert User Property Column into Email Alert Body Content

Unfortunately, it’s not possible to do this directly. As a workaround, consider creating a formula column that will return the user property value you need, and use that newly created formula column instead.

How to Control View Width on the Screen

By design, the view takes up all available width, and there is no option to control this behavior. As a workaround, you can use dbstyles.css to override it.

How to Filter with @row.id Using REST API

Please consider using the REST API Retrieve method for that. It allows you to retrieve records using the key column or the internal record ID. You can also retrieve multiple records at once by passing multiple ID/key parameters if needed.

We do not recommend using the internal record ID for filtering records using the Select method. Instead, please consider using a key column.

If it’s absolutely necessary, here is an example of how to filter records where @row.id equals 9:

RecordId() = "9"

How to Fix "Cannot Insert Duplicate Value 'NNN' into Column 'MMM'" Error

This error is related to the integrity of the key AutoNumber column. Most likely, the user imported records into that column, so the AutoNumber column’s Counter Value property should be manually updated to the proper counter value to avoid duplicates. Alternatively, you may add a prefix to the AutoNumber column’s Format property to prevent duplicates with existing values.

How to Make Groups in a View Collapsible

Unfortunately, it’s not possible at the moment. As a workaround, please consider creating a summary view or chart view and setting the view you need as the Details view. This way, you’ll be able to drill down from your grouped results.

How to Show Percent of Total in a Summary View

Unfortunately, it’s not possible to perform additional calculations on calculated columns in the summary view. As a workaround, for the specific case of "show percent of total", please consider creating a Pie or Doughnut chart view instead. You’ll see a circle divided into sectors according to your grouping, with each sector representing a proportion of the whole.

How to Unlock a Locked-Out User Account

If you’ve locked out your user account by entering an invalid password too many times, please use the "Forgot Password" link on the login page to reset your password and unblock your account.

Is TeamDesk SQL or NoSQL?

TeamDesk uses Microsoft SQL Server as the back-end database and has the capability to handle millions of records per table. You don’t have direct access to the underlying database engine, so from your standpoint, for setup and runtime operations, it doesn’t matter which particular engine we’re using.

TeamDesk Pricing

TeamDesk is a pay-as-you-go service with no long-term contracts or commitments.

Choose the edition that fits your needs:

Starter Edition - $49 per month

Team Edition - $99 per month

Enterprise Edition - $249 per month

Each TeamDesk database starts with a 14-day free trial. You can upgrade, downgrade, or cancel your subscription at any time.
Each database is billed separately unless you have the Enterprise Edition.
All editions provide the same design and runtime capabilities.

Learn more about pricing here: https://www.teamdesk.net/pricing.

What is the Difference Between a References and a Selections Section

These sections on the columns overview page represent different sides of a relation.

The References section represents the "one" side of a relation. It contains a list of reference columns with all lookup columns linked to a particular reference column. You can create a lookup column from here if you need to extract additional columns from the referred table record.

The Selections section represents the "many" side of a relation. It contains a list of related records with all summary columns and recordset columns linked to the particular relation. You can also manage related details by setting a details view to display related records and arranging the order of the related details view if needed.

How to Automatically Change a Column Value if Another Column’s Value Changes

To dynamically change a column value based on changes in another column, the recommended solution is to use the column’s Default/Calculate property to specify the recalculation formula. This allows you to add a formula that calculates the column value based on other columns in the table, so the system will automatically track these changes and recalculate the value if needed.

For example, if you need to fill the "Paid Date" column with today’s date when the "Paid" checkbox is checked, you can use the following formula in the "Paid Date" column’s Default/Calculate formula:

If([Paid], Today())

The "Default/Calculate" property formula will update its value dynamically on the edit screen during record addition or editing, as well as when corresponding dependent columns change their values through a record update action or custom button assignments. If the "Default/Calculate" formula depends on summary or lookup columns, the system will not recalculate the value when the corresponding summary or lookup values change.

Another option to recalculate a column value, if dynamic recalculation on the screen is not required, is to use a record change trigger on the corresponding column change, with a linked record update action.

In the example above, you can create a record change trigger for when a record is added or modified and the "Paid" column is modified. Use [Paid] = true as the trigger filter formula. Link a record update action to the trigger with the assignment Today() to the "Paid Date" column.

How to Know When a View is Loaded on a Dashboard or Table Detail

Dashboards and table detail views use lazy load logic for efficiency. Views are loaded separately, which increases the likelihood of retrieving cached data instead of querying the same result repeatedly. Lazy loading also helps avoid querying data for offscreen parts of the dashboard.

A callback can be registered to trigger when the view is loaded asynchronously. Inside the callback, examine the argument to determine whether it is a detail view or dashboard view and identify which one based on the element’s ID.

// dbscript.js
TD.Table.addCallback(function(context) {
  if (context.closest(".v3-dashboard__cell").length) {
    // this is the dashboard cell's view
  }
});
// dbscript-v3.js
TD.AsyncViews.addCallback(function(context) {
  if (context.closest(".v3-dashboard__cell")) {
    // this is the dashboard cell's view
  }
});

Resolving Database Structure Issues for Building Views/Reports with Repeated Data

If your table contains multiple columns referencing the same type of data—such as multiple Project reference columns—and you want to create a view or report that groups records by these references, your database structure may require adjustments. A fragmented structure like this makes building such views or reports inefficient or impossible.

Recommended Solution

To address this issue, consolidate the data by replacing multiple reference columns with a single multi-reference column. This unified approach enables you to:

By restructuring your database in this way, you can simplify reporting and ensure more flexible, scalable data management.

How to Create an Index in the Table to Improve Performance

Users cannot create an index in the table themselves.

To address performance issues, use the Performance Profiler Tool to reproduce the problem. Once the issue is captured, press the "Save and Share" button and send a link to the profiler results to TeamDesk Support.

The support team will review your profiler results and create the necessary indexes in the underlying database or suggest other options to improve database performance.

How to Send an Email Containing Specific View Data

By design, you can use a View Subscription to send view data automatically on a schedule, or use the Send button on a specific view in user mode to manually send an email containing the view data.

If you need to send view data using a custom button or trigger, note that these are executed for a specific record. To achieve this, the view you wish to send should be set as a detail view of that record. Then, you can use the Document feature to generate a document containing the detail view data and send it using an E-mail Alert action.

Where You Can Place Custom JavaScript or CSS

To apply your JavaScript code or CSS styles across the entire database, place them in your Database Resources.

The system will automatically include these files on each database page in user mode.

To use local JavaScript code or CSS styles for specific areas, you have the following options:

This way, your code/styles will only apply to the particular dashboard or record preview/edit screen.

If you plan to make REST API calls to the same database from JavaScript code, consider using the Re-use Authorization Cookie authentication method. By adding a minus sign (-) after the database ID, the system will attempt to re-use the existing TeamDesk authorization cookie to authenticate the user.

For example:

https://{YOUR_DOMAIN}/secure/api/v2/{APPID}/-/user.json

This approach prevents exposing your token or login credentials to the public, enhancing security for your API calls.

How to Upgrade to the Enterprise Edition

If you are using the Team or Starter Edition and wish to upgrade to the Enterprise Edition, please contact TeamDesk Support and provide the following information:

  1. Sub-domain Name: Specify your desired sub-domain (e.g., mysubdomain.teamdesk.net). This will serve as your Enterprise Edition URL.

  2. Account Name: Indicate the name to replace "My TeamDesk" (e.g., "My Company Name").

  3. Company Logo: Attach the image file of your company logo to be used for your Enterprise Edition account.

Once the support team has this information, they will create your Enterprise Edition account and migrate all your existing databases to the new sub-domain.

Important Notes

How to Set Up a Custom Domain for the Enterprise Edition

To use your own domain for the database’s URL instead of the teamdesk.net subdomain, follow these steps (and note the associated costs):

  1. Choose a Certificate Provider
    Select a company to acquire a secure certificate. While a CSR (Certificate Signing Request) is required to generate the certificate, you may purchase the certificate without one. TeamDesk will generate the CSR for you.

  2. Provide Information for CSR Generation
    To generate a CSR, the following details are required:

    • Domain Name: Specify the domain name you wish to use (it is recommended to use a subdomain like apps.yourdomain.com or db.yourdomain.com).
    • Additional information to include in the CSR:
      • Country/Region
      • State/Province
      • City
      • Organization
      • Organizational Unit
  3. Contact TeamDesk Support
    Submit your information to TeamDesk Support. They will create the CSR based on the provided details. This step involves a $200 initial setup fee.

  4. Obtain the Certificate
    Use the CSR to obtain a secure certificate from the provider of your choice.

  5. Send the Certificate to TeamDesk Support
    Send the certificate to TeamDesk Support. They will install it on the server and configure the domain.

  6. Update Your DNS
    Add a CNAME record in your domain’s DNS server for your custom domain, pointing to your TeamDesk Enterprise account subdomain.

Table Row and Column Colorization Missing During Printing

If table row or column colorization is missing during printing, ensure that the Background graphics option is checked in the More Settings section of your browser’s print dialog.

How to Display a User-Friendly Name Instead of Raw URL for Link Placeholders in Email Body

To display a user-friendly clickable name with a link instead of a raw URL for %AppLink%, %RecLink%, and %ViewLink% placeholders, use the following markdown or HTML code:

Markdown Example

[Click to Application](%AppLink%)  
[Click to Record](%RecLink%)  
[Click to View](%ViewLink%)  

HTML Example

<a href="%AppLink%">Click to Application</a>  
<a href="%RecLink%">Click to Record</a>  
<a href="%ViewLink%">Click to View</a>  

How to Get Rid of "On Behalf Of" in Email Messages Sent from Your Email Address

If you are sending emails from your own email address and see messages like "notify@teamdesk.net on behalf of your email address", you need to authorize TeamDesk servers to send emails on behalf of your domain.

Steps to Authorize

  1. For Databases on the US Server
    Add the following directive to your domain’s SPF record to authorize TeamDesk servers:

    include:teamdesk.net
    

    For dbFLEX Customers, add this instead:

    include:dbflex.net
    
  2. For Databases on the EU Server
    To authenticate your database with SendGrid, contact TeamDesk Support. They will provide the necessary instructions.

Important Notes

Console Tool for Transferring Data to and from the Database via REST API

You can download the latest version of the console tool from the TeamDesk Support Portal.

Usage:

td [command] [options]

Options:

Commands:

Perform Data Backup Using REST API

Usage:

td backup <url> [options]

Arguments:

Options:

CSV Options:

Perform Data Restore Using REST API

Usage:

td restore <url> [options]

Arguments:

Options:

CSV Options:

Retrieve Data Using REST API

Usage:

td export <url> [options]

Arguments:

Options:

Import CSV File Using REST API

Usage:

td import <url> [options]

Arguments:

Options:

CSV Options:

How to Use Alternative Labels for Columns in a View

It is not possible to use different column names specifically for a view; the system always displays the column name as defined in the table. If you need a different column name on a view, you must rename the column itself.

For forms, you can use the Alternative Label property to override the column name on the form.

Workaround for Views

If renaming the column is not an option and you need a different name specifically for a view, consider creating a Formula column that references the original column but with a different name. For example:

[Original Column]

This newly created formula column can then be added to the view with the desired name, effectively providing an alternative label.

How to Programmatically Update the Value of a Multi-Reference Column

Directly updating the value of a Multi-Reference column is not possible because it uses a link table to store the selected values.

Solution

To update the values of a Multi-Reference column, you need to interact with the associated link table:

  1. Create Records
    Add new records to the link table to represent additional selections for the Multi-Reference column.

  2. Delete Records
    Remove records from the link table to deselect values in the Multi-Reference column.

By managing the link table records, you can effectively update the values of a Multi-Reference column programmatically.