# Advanced Modules

Advanced Modules

# New Page



# Sales

AOS (Advanced Open Sales) is the first set of advanced modules. It helps manage everything after a sales opportunity, like sending quotes, creating invoices, and handling ongoing contracts. These features are available through modules like:

- Product Categories
- Products
- PDF Templates
- Quotations
- Invoices
- Contracts
- Payments
- ## Product Categories

The Product Categories module allows Users to structure Products into a hierarchical category structure. To create a Product Category record, navigate to the Product Categories module and click the 'Create Product Categories' button in the action bar.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf4XBuNwS7Q53BAbs6tQeWizNvS2MpCnr4Ycm2fMcqIvUl8GSIYe6Txq0jadawRg6UUhEBeqQwwijcmsTnryEExO3MYYE9GcMRQQS12HG5oacQp0iiP1ScYFFtPgN2vbAb0gjYE?key=B9ie91zbfoTewVFO63XPEybW)

The Parent Category field is a relationship field to another Product Categories record. If you check the 'Is Parent Category' field then this signifies that the category is the highest level. Once selected you will not be able to select a Parent Category using the related field

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXd-Zrsu4Clxu7LBAzHO4_5ZAJqdBthQmzqRWd9V41UY7KyW44Ep43ckJMDpW_PGdXu6pmpxFM3KbAKOXVWGfQ8AVP0xDm3tkR63h7T8oQ1d9s1fPcaCk8jH1R5uUlQldWaTtuiHYg?key=B9ie91zbfoTewVFO63XPEybW)

**Note:** Other features like Import, Filters, Column Chooser, Bulk Actions and Detail view Actions are similar to other modules. Refer [Leads.](https://docs.kiyocrm.com/books/kiyocrm-documentation-user-guide-api-setup-configurationkiyocrm/page/leads#bkmrk-list-view-actions)

- ## Products

You can create Product records using the Products module. Creating products allows users to select product lines when preparing Quotes using AOS. The products module allows users to specify the Products Name, Part Number, Category and Type. Additional fields for Products can be added using Admin settings.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcf2TX9LEbyU9412w97CsJDxVFlEgzV6NQf0OQ2r4wKQf9t7Q7PCIuFW9-oubs-qPUJHfy3j0HxJAAdxKDhSyziL3QajK5JF3DgY91ybJqyoazbG5vNgBQVNGF4tfT8zSzu57l10w?key=B9ie91zbfoTewVFO63XPEybW)

The module also allows users to define a Cost and Price for the product. Price is the selling price which will be used in the quoting process. A related Contact can be associated with the product. This is the point of contact with the supplier concerning this product. If you have an Image of the product then this can be uploaded within the products record. A URL to the products page on your website can also be specified.

**Note**: Other features like Import, Filters, Column Chooser, Bulk Actions and Detail view Actions are similar to other modules. Refer [Leads.](https://docs.kiyocrm.com/books/kiyocrm-documentation-user-guide-api-setup-configurationkiyocrm/page/leads#bkmrk-list-view-actions)

- ## PDF Templates

The PDF Templates module in CRM allows users to create and manage customized templates for generating PDF documents, such as quotes, invoices, contracts, and reports. These templates can include company branding, predefined layouts, and dynamic fields that pull data directly from CRM records, ensuring consistent, professional, and automated document generation. Please contact the support team for PDF template creation or updates.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeINbQrXhNlpNmUiQgshIxcjnRbPoutVAvDXg310xtAdap0j9SHCsUfoQxVj-Df6oC2pZecBQK2HuU_R9U_T5Svqg0NaLRU4vQdB1T5IoTuvjXVipupFP_EG47tS7ed5ul0IQX2mw?key=B9ie91zbfoTewVFO63XPEybW)

- ## Quotations

### Creating a Quote

You can create a Quote by going to the Quotes module and clicking 'Create Quote' from within the actions bar. The first panel allows you to specify details concerning the quote such as the Title, related Opportunity, Stage and Payment Terms. The Quote Number field is calculated automatically.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfjcVGz1AZ-RMfFxYzoTURz1eVZT2RtyOf7HE0NJpWoA6XSxcTlBS5lSb-Z-KiFZAEKYH9PeUo1vl8VdLJQNFWzvG9BLVZ-0N50FJOmNoVDHdSRp-44UR0tuZDPNPV6pGqThfGPLQ?key=B9ie91zbfoTewVFO63XPEybW)

The second panel allows you to specify who the Quote is for by relating a Company and Contact to the Quote. When you select the Company, the Billing Address and Shipping Address are dynamically pulled from the Company and populated into the fields on the Quote record.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfZ7LopqOntGgNn6HOZBcO8XGibPtSozzF8oYHTXnlANz-Dp5o5hy-gc7h6k2vhwJjY7GFMtO5AF4mGZNip4D7imtfcbylJE2qKvPf_vgZ1gej0POL5k9NP9CMhv3dVsPKiqOGiuw?key=B9ie91zbfoTewVFO63XPEybW)

The third panel allows users to specify Line Items and the Currency. A Line Item can be a Product Line or a Service Line, each with its own details such as quantity, price, and description. The panel helps organize and calculate the total amount for the quote.

To add a Product Line, click on Add Product Line button and to add Service line click on Add Service Line button.

To select a Product, you can start typing in the Product or Part Number field which will provide a list of results similar to any related field. Alternatively click the arrow button next to the Part Number field. This will display a pop-up window allowing you to select from a list of Products.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdt8ElIc1jlxiwCcny4tQeUZQVF1yXhtGAb_i5URU2nzQmGrTGsDHCaPwxdF0dbARV3D4eOI3YLRxlODwfsT1Iw4dZ8oTEH7pH_27zQPJdnyHB-LQVt7H2_H3re2DNJXHUzNKklqA?key=B9ie91zbfoTewVFO63XPEybW)

Once you have selected a Product, the List, Sale Price and Total will populate automatically. You can change the Quality, add Discounts (Percentage or Amount) and increase the Tax percentage. These will alter the Sale Price, Total Price and Total fields.

For Service Lines, you must specify the List price. This will populate the Sale Price. Tax and Discounts can be added similarly to the Product Line.

The Shipping field allows you to add a shipping cost. The Shipping Tax field allows you to add tax to this value. Once the Quote has been compiled, Click on Save to save the quote.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfk7Xq6GM7HgYidO3GLRUX2XqWyDvHFWIPN3jgDIxE5If71WHb45Y_wel1bADmqt4CzUycSgu-3uZH8twQJK3WzTXaFnuGvzCYFpTWbP6M47p6hrlhpp7sAvH0URqPUJ9-OoA4U?key=B9ie91zbfoTewVFO63XPEybW)

### Sending Quotations / Detail View Actions

To output a Quote, you can select one of the following three buttons from the Quote Detail View.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXffOdlwrCTAqjlj952GZI5SoVo8eCP7jRNrK82sNo8ANFDuR5S_jAbmNP8y8qccvuRkmok5OTpKpg1jydzMXi4ZbVw7RFqrOxnnoSKCcZcDqhQAuoteKBHa5SVpgRdO1Lv420Ef7w?key=B9ie91zbfoTewVFO63XPEybW)

AOS provides users with three methods of sending Quotes:

- **Print as PDF** – Allows you to select a template and download or save a PDF of the Quote.
- **Email PDF** – Allows you to select a template then directs you to the KiyoCRM email client 'Compose' screen. The Quote PDF will be attached to email and the email will be addressed to the related Contact of the Quote. This allows you to fill out the email body.
- **Email Quotation** – This directs you to the KiyoCRM email client 'Compose' screen. The email will be addressed to the related Contact of the Quote. There will be no attachment, and the Quote will be displayed within the body of the email.
- **Create Opportunity** -- Create Opportunity from Quotation allows users to generate a new sales opportunity directly based on the details of a quote, ensuring a smooth transition into the sales pipeline.
- **Edit, Duplicate, Delete, Find Duplicates, View Changelog** are similar to other modules (Refere leads detail view actions for reference)
- **Convert to Invoice** – With AOS you can convert Quotes to Invoices. This can be achieved by clicking the 'Convert to Invoice' button on the Quote Detail View.

This functionality will redirect users to the Edit View of an Invoice record. Fields will be populated based on your Quote counterparts and Line Items will be copied over. When you are ready to create the Invoice, click the Save button. Converting a Quote to an Invoice will set the Invoice Status of the quote to 'Invoiced'.

- **Create Contract:** As well as converting to an Invoice, AOS allows users to create a Contract based on a Quote. This can be done by clicking the 'Create Contract' button on the Quote Detail View.

This will redirect you to the Edit View of a Contract record, pulling through any appropriate fields from the Quote. This includes any Line Items on the Quote.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeiVTKDzEGnnFQ6a8W6jmwpVZkWnAqcoBk_4WhwR85m5xc1HgvQ0tbAG6JkyEq8b2Qm_irzd7Mrhe_DxkNQVJMBfyCHjW_Vdj7g9cfZTJFiKNHGIixae2UP106-_UmA7k1xU6ZheA?key=B9ie91zbfoTewVFO63XPEybW)

### Bulk Actions

In list view, select group of records by checking the checkbox, the actions are as follows:

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfS8xJ8be4SZqGpoayORGn91N6GRmzYaEVUhYCaRums0xuX-It4WfBgfD2mfcTA8BBdMi3b-jB4tehK_-_TxwETF7y33MyhdjurUlBXFY82skBDVclL_6etHVhR2u7StMlU_cu-eQ?key=B9ie91zbfoTewVFO63XPEybW)

- **Mass Update:** Allows users to update multiple quote records at once, saving time on repetitive changes.
- **Export:** Enables users to download quote data in a structured format for reporting or offline use.
- **Delete:** Lets users remove one or more quote records from the system as needed.

###   
List View Page Actions

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXe15v2PCz1Mg7FPYSZnni2RdD8HF4GaKrc09zVs-MBvrRAK0CX3Z6tubOlmFN8p2FKFHZuWuM1ifnOkmCWCSih5MZKgqYjwgBfTos4Zqd3sjav_SYHJtj-MIZRi1vMsw_ynmFYwnw?key=B9ie91zbfoTewVFO63XPEybW)

- **Import, Filter, Column Chooser functionalities** are similar to other modules. Refer Leads module [Column Chooser](https://docs.kiyocrm.com/books/kiyocrm-documentation-user-guide-api-setup-configurationkiyocrm/page/leads#bkmrk-column-chooser%3A--), [Filter](https://docs.kiyocrm.com/books/kiyocrm-documentation-user-guide-api-setup-configurationkiyocrm/page/leads#bkmrk-quick-filter%3A--) and [Import](https://docs.kiyocrm.com/books/kiyocrm-documentation-user-guide-api-setup-configurationkiyocrm/page/leads#bkmrk-list-view-actions) features.

- **Import Line Items**:-- Import Line Items feature in Quotes allows users to quickly add multiple products to a quote by uploading them from a file, streamlining the quote creation process.

Download sample file using **Download Import File Template**. Add data and upload file (.csv)

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXe7JEQzCP55lruhhQuNjuxHFefcvcyXT0g_kyW0GYgay3Z0hG4fZuH5akEKwzmE-4xjnbbLGWEJVWoHvWwiaHADF_20bTGuPKYJAF4SYUkPqaalqvKNoaEGorENDqClz-P0OWrqYw?key=B9ie91zbfoTewVFO63XPEybW)

- To sort records on the Quotes List View, click any column title which is sortable. This will sort the column either ascending or descending.
- To search for a Quotes, Use Search engine on top
- Clicking on the pencil icon Quotes list view page to the display of record edit view.

###   
  
Quotes Submodules

Click on the detailed view of a Quote to view Submodules.

**Contracts**

The Contracts submodule under Quotes links approved quotes to contract generation, allowing seamless transfer of terms, products, and pricing into a formal agreement.

Can Create a new one or select from existing records.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeQ5WtM9V4P7UQJc_oeEBRx0CQ_AvsREF59gaGDGeQwbMj5wYuZfHssAqPEViCIoLGVNgV2bZ43vpiY56yQAuthOsvZgjOu_0PgcfwUFo8npmZEV54RxdzmKdQAFWJ5iO1uye2UOw?key=B9ie91zbfoTewVFO63XPEybW)

**Invoices**

The Invoices submodule under Quotes allows users to generate invoices directly from approved quotes, carrying over all relevant billing details to streamline the payment process.

Can Create a new one or select from existing records.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfVyHPDv2K1eZjrM8yaPLDFkiuiPG8mkUr-Pya2BK7dRaylMhX87d1d7roTGYuBGKU9V5ntP5u0CBpsvDxEAstJGE23aEyOePGejJ7D6y-OqTzZr2RYmuzv6JsJcOjRYrbDIfp14w?key=B9ie91zbfoTewVFO63XPEybW)

**Projects**

The Projects submodule under Quotes links quotes to related projects, helping track the delivery of quoted products or services once the quote is accepted.

Can Create a new one or select from existing records.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeoyxM6gATPlBn-I7j54nLtTMauQyW2GkpdxOIb5xv_jyV0EcjjrgHKmUjP-nZYQzVlMbQsxn5yYtOnc9T6VOPe6FAJYNjtrDiLANdw_Ygkvi5j4s3PyPZa9yKj7KOnArhmbx39SA?key=B9ie91zbfoTewVFO63XPEybW)

## Invoices

**Creating Invoice**

Creating an Invoice record is very similar to creating a Quote record. You can create an Invoice by going to the Invoices module and clicking 'Create Invoice' from within the actions bar. The first panel allows you to specify details about the Invoice such as Status and Due Date.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfv18lkGP1k9quLdY6_9fFfjtS3mBFqykbI8QEHIuG5E7p746tzQ5TmBuVT3QbZy2a_2Ga3IwHPsP9ijGS55xGjjtzHH3PrJVJuU5_daZV_-ejc13hTKNm33iAApIDi5ottkQ-7?key=B9ie91zbfoTewVFO63XPEybW)

The second panel allows you to specify who the Invoice is for by relating a Company and Contact to the Invoice. When you select the Company, the Billing Address and Shipping Address are dynamically pulled from the Account and populated into the fields on the Invoice record.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfilK0CAwUzDDTaDl5AyecD7BBjy-VCvkWdJiFSK80rxkpKCV7gKyVAIDnYytIMSM2bLyVHHnLzxIYXgrnRUESqzkLgvw1Jrs4NWrFY35bmhn2wV1FePtgc-Ta0YPe_zwHQKS5MLw?key=B9ie91zbfoTewVFO63XPEybW)

  
The third panel allows users to specify Line Items and the Currency. A Line Item can be a Product Line or a Service Line, each with its own details such as quantity, price, and description. The panel helps organize and calculate the total amount for the quote.

To add a Product Line, click on Add Product Line button and to add Service line click on Add Service Line button.

To select a Product, you can start typing in the Product or Part Number field which will provide a list of results similar to any related field. Alternatively click the arrow button next to the Part Number field. This will display a pop-up window allowing you to select from a list of Products.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdNqwXzVI8YhFpqh2JincFR4j9wjAmaCziloRPFGYdQsVgDCThrSYSLULCL6rO4A0DgsIMAbsdPlEXi3ScqzWOAgHiWrETE2L8C05PhQi_me6Pw94JGPV6arMLmmg_xA-nMcj4aaQ?key=B9ie91zbfoTewVFO63XPEybW)

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcMHh1SK2NqQ1YoFrubU6OBPYAYXU9S0drhuZSRa4kJxa8wZ8s3RjRT2KlCXXFcagiuh5FEUTG8C8_cWhWPl8BgqWDYG5RBh8GQSYv7QI90wwLrzaZLgNucuDM0AyaiRvGMxqb7Qw?key=B9ie91zbfoTewVFO63XPEybW)

Once you have selected a Product, the List, Sale Price and Total will populate automatically. You can change the Quality, add Discounts (Percentage or Amount) and increase the Tax percentage. These will alter the Sale Price, Total Price and Total fields.

### Sending Invoices / Detail View Actions

To output an Invoice you can select one of the following three buttons from the Invoice Detail View.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdbL79SQJoP3oo_y6yCxCgINaIMQKQAtFVRQ3TAT5RdR_GTLtttHUHmA2vlLZ3qZunLLTxtv3tJ8u5YjpoJ_kJv99jALcZ1EMO43qbBOEiNzeZUjQ8YFl16QDYnuScDxXnU_izLtA?key=B9ie91zbfoTewVFO63XPEybW)

AOS provides users with three methods of sending Invoices:

- **Print as PDF** – Allows users to select a template and download or save a PDF of the Invoice.
- **Email PDF** – Allows users to select a template then directs you to the KiyoCRM email client 'Compose' screen. The Invoice PDF will be attached to email and the email will be addressed to the related Contact of the Invoice. This allows the user to fill out the email body.
- **Email Invoice** – This directs you to the KiyoCRM email client 'Compose' screen. The email will be addressed to the related Contact of the Invoice. There will be no attachment, and the Invoice will be displayed within the body of the email.
- **Edit, Duplicate, Delete, Find Duplicates, View Changelog** are similar to other modules (Refer leads [detail view actions](https://docs.kiyocrm.com/books/kiyocrm-documentation-user-guide-api-setup-configurationkiyocrm/page/leads#bkmrk-leads-detail-view-ac) for reference)

### Bulk Actions

In list view, select group of records by checking the checkbox, the actions are as follows:

- **Mass Update**: Allows users to update multiple invoice records at once, saving time on repetitive changes.
- **Export:** Enables users to download invoice data in a structured format for reporting or offline use.
- **Delete**: Lets users remove one or more invoice records from the system as needed.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcLDMsPOCwgT9-vui8zk2AQLrolJRDIEDk_LbkNXdOJnjs8F-awazXFMJze114k-JWDQcgIzpGMDuC1k58erepkucq-Rv_viio6uAGNCC6WuXXGYKHma6bLk9EBHyqzDm7AyD9wuQ?key=B9ie91zbfoTewVFO63XPEybW)

###   
  
  
List View Page Actions

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf-q8Cwt2W6r4EjOIz8vp7a97IF5yIDx4wELiF6CbOpQ8bGZqZ2KnyynjmxI05ZtncxkHLCy_aQTADxEGWd5FjTDeVMiL2gcBGlqcitpMVFi2-D7a3pP_85QyaKaOK2uXIDrK6-8g?key=B9ie91zbfoTewVFO63XPEybW)

- **Import, Filter, Column Chooser functionalities** are similar to other modules. (Refer Leads module Actions)
- **Import Line Items:**-- Import Line Items feature in Quotes allows users to quickly add multiple products to a quote by uploading them from a file, streamlining the quote creation process.
- Download sample file using **Download Import File Template**. Add data and upload file (.csv)

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXe7JEQzCP55lruhhQuNjuxHFefcvcyXT0g_kyW0GYgay3Z0hG4fZuH5akEKwzmE-4xjnbbLGWEJVWoHvWwiaHADF_20bTGuPKYJAF4SYUkPqaalqvKNoaEGorENDqClz-P0OWrqYw?key=B9ie91zbfoTewVFO63XPEybW)

- To sort records on the Invoices List View, click any column title which is sortable. This will sort the column either ascending or descending.
- To search for a Invoice, Use Search engine on top
- Clicking on the pencil icon Invoices list view page to the display of record edit view.

### Invoice Submodules

Click on the detailed view of an Invoice to view Submodules.

**Quotes**

The Quotes submodule under Invoices links each invoice to its original quote, ensuring accurate billing based on agreed items, pricing, and terms.

Can create a new or select from existing records.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXftUPymKbfZGjQa9E2nskNcmbvyBp3h_rd_05XIavL6ttTD_R7ff4-lW_rH_qSDZW2YCzcQ1EB8sh4IkQwOQBIiN6IQDU_CQZuYKgK2mHWV9whS_Cwpfh-pSZkKY9di-6kYLpRj3A?key=B9ie91zbfoTewVFO63XPEybW)

**Payments**

The Payments submodule under Invoices manages and tracks payment details like amount, date, and method. In KiyoCRM, whenever an invoice is created or updated, a corresponding payment record is automatically generated or refreshed. A Razor pay payment link is sent to the customer via SMS. For every partial payment, the system creates a new payment record for the remaining amount and sends an updated Razor pay link to the customer, ensuring accurate tracking until full payment is received.

Can create a new or select from existing records.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeZ1Znh0SVPk6_VtsFKv9Saoz-F4XBcswRAu9uLK_-sIZNrLFih1JJG0ts7j0fBiqrI7sqmyMqtQ9SBuHhy9AigEvsrpWnRognQKCSNOWVwRrB_zF-NYdz6u57rCxyjRhFSwVwv1g?key=B9ie91zbfoTewVFO63XPEybW)

## Contracts

AOS allows users to create Contracts using the Contracts module.

When the Contract is created the Renewal Reminder Date will populate automatically based on the amount of days specified in the AOS Settings in Admin. A Call will be scheduled and assigned to the Contract Manager for this date.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfzkSgiJFn_o6AprCbr7UiVj0mmOzpZYti5q52Rcumj_Fg7RlUT2m_JCEmw27pOvoJUQQ3TJ7s5pKKFvtA028Jb_R6xjGZD32wRjWyqZ5H9ky9WxYwJ6XbeidVWjs23fwSlN9g6jQ?key=B9ie91zbfoTewVFO63XPEybW)

AOS allows users to add Line Items for Contracts. This is completed in the same way as Quotes. Please refer to the Quotes section for details on how to create Line Items.

The Second panel shows the Line items section.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXffzu080xP4QeYwJFU6eZyhpppsJmZe4G6IagNOaady4sMSWhS5iBXa1fnF-HakpBsHYErNa_8_GjGII-ksYD_G4uHCx9uBxg7S_Mkamqxq5FSZS4BjLrf9EcvnUh5rTCM5r90PcA?key=B9ie91zbfoTewVFO63XPEybW)

### Contracts List View Actions

Import, Column Chooser, Filter, My Filters, Favorites are Similar to other modules actions. Refer Leads module.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeVhq5Mr4r6ieDy6QWmj1YlK8F3WDDj4Ioy0KHYSCtEhHd_u3kBYr-n4ZslK5Q7_PQIZyJ6mvy1UhcAZMfUdp3eRx0WKCIuPdEq4fMORgqybFLFwBTZdMrId5STkpqvIe1pDU5sQg?key=B9ie91zbfoTewVFO63XPEybW)

- To sort records on the Contracts List View, click any column title which is sortable. This will sort the column either ascending or descending.
- To search for a Contracts, Use Search engine on top
- Clicking on the pencil icon Contracts list view page to the display of record edit view.

### Bulk Actions

In list view, select group of records by checking the checkbox, the actions are as follows:

- **Mass Update**: Allows users to update multiple invoice records at once, saving time on repetitive changes.
- **Export**: Enables users to download invoice data in a structured format for reporting or offline use.
- **Delete**: Lets users remove one or more invoice records from the system as needed.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdRc1dmhE5FN1mlHomE8tTCnYWonCXrAv57g95PGnJh3HVRoBccdj4d4OJKfdPrVgoZJnv-4tj_T_kKSXom5uyrhGUasIu5bmoH8F0Wsp-3_tm09rglhS-P9prnNKPgfuhOTYaJSg?key=B9ie91zbfoTewVFO63XPEybW)

###   
  
Detail View Actions

Refer Quotes module for Edit, Duplicate, Delete, Find Duplicates, Print as PDF, Email PDF, View Changelog Log functionalities similar to quotes.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfFhI0YNeJFoQmsYKkxgXr6bn6hmiv5FmkeUDWC8TG64NbMItpjDRodhv0JstxLRFs8LtgVabFR-GJ-XpWfO0eaZoKG8hOIUxndOrp69BE9wJ55V6s6AzeTtMqrb41uPZUHPgBgjg?key=B9ie91zbfoTewVFO63XPEybW)

### Contracts Submodules

Click on the detailed view of a Contract to view Submodules.

**Documents**

Allows users to upload, manage, and associate relevant documents with contract records for easy reference and compliance.

Can create a new one or select from existing records.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeZHQJJOTterPlq3v6ZR4sQChMzea_nkm5aqNDIHeuF_nJ4iaDxBoS_ODzf2fQ4zc0MuiWtBNsGxXB91_3JLqQs1BU824hMbgPVCaOxHdo4sOqlFAWDxxSZY50N72wB27W4hNuK7Q?key=B9ie91zbfoTewVFO63XPEybW)

**Quotes**

Enables users to create, manage, and link sales quotes to contracts, supporting pricing, product details, and customer terms for streamlined contract generation.

Can create a new one or select from existing records.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfcqJGCtT23AcD0Gv2O2jAe6pIMXYbzoUmpoGHCnRi8DFOPyasZeBbMfpj4z01sm5rJe-_uk2wyy1TGv0xjbHEZ1gwob-JJxNvMNyOfZSKxdIP39zueWSXhnC_DqBbgnlx4cpC3AA?key=B9ie91zbfoTewVFO63XPEybW)

## Payments

The Payments module in CRM enables users to record, track, and manage customer payment transactions efficiently. It links payments to related invoices, contracts, and customer records, ensuring transparency and accuracy in financial tracking. The module supports multiple payment methods, partial or full payments, and provides a clear overview of outstanding balances and payment history based on Invoice. This helps sales and finance teams monitor cash flow, follow up on overdue payments, and maintain strong customer relationships through timely financial interactions.

### List View Page Actions

- **View Payments**: Displays a list of all recorded payments with details like amount, status, payment method, and linked invoices for easy tracking and management.
- **Import Payments**: Allows users to bulk upload payment records using a CSV file, streamlining data entry and ensuring efficient payment tracking.
- **Filters, Column Chooser, Favorites functionalities** similar to other modules. Refer Leads module.
- To sort records on the Payments List View, click any column title which is sortable. This will sort the column either ascending or descending.
- To search for a Payment, Use Search engine on top
- Clicking on the pencil icon Payments list view page to the display of record edit view.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdv14H4_SSq7FpdCQes6rRoPikEUCzEl9567pWXU8W9GdLWiffp_8F3ZroorypDafengyHTKuVZiMAdNiNGAR2kHrWlmX0L4aBK4yQNfL_ej2Hn20X_sUrol4a9jfDmjcwIJAXP?key=B9ie91zbfoTewVFO63XPEybW)

### Creating Payments

When Invoice is created, a payment record is generated initially and later updated manually. Initial payment record will be created, later on need to update manually.

Note: Name filed will generate automatically or we can mention manually.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfu0vLZnB0wkyUF1V_3MJMVMwP8rr1-cV2NrF2PDjVg2TLEr2QRcSsTYsTuwYZ9TlpXBm7wOgd1jDZZEcQrVtvaC0aexnDlXHVzpZVkjCsiHiOx8oh28Qe1XhK--p8uon94KSHpXw?key=B9ie91zbfoTewVFO63XPEybW)

Enables users to record and manage customer payments, link them to invoices, and track status, amount, and method for accurate financial reporting.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcj8OvlQwybzXTK1qsYDYqBgHu9ddnXwVhAOVMUjaXLp4Mb8LODPY45GeFWoUwwclA_iv1AFEFbYSutbJTVeDJE8KtlU6MLrZ-vC5o9y9GF0ytNukEQ_tf5t3geGurYTithJdKpvg?key=B9ie91zbfoTewVFO63XPEybW)

When Razor pay is selected as the payment gateway, the Razor pay details panel is enabled. Upon saving, a Razorpay payment link is automatically sent to the contact associated with the linked invoice.

If customer paid through the link and response will be updated in payment as well as in Invoice record.

### Detail View Actions

- **Edit, Duplicate, Delete, Find Duplicates, View Changelog** functionalities are similar to other modules. Refer Leads module [Detail view actions.](https://docs.kiyocrm.com/books/kiyocrm-documentation-user-guide-api-setup-configurationkiyocrm/page/leads#bkmrk-leads-detail-view-ac)

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdm9qGvVircL0pq7nCTDVOTkGeIOKTFV1s3HdRKit8S6mqA2tr9PHoGEylW-FzLjo-TWjS_1vU8H5Jww1IYp80E6Jy0s6Os0nWyFBvT5cvHXUOicYH6vyiy1YhCJW7ArPTnOAxTmA?key=B9ie91zbfoTewVFO63XPEybW)

### Payments Submodules

Click on the detailed view of a Contract to view Submodules

**Security groups**

Control access to payment records by assigning user roles and permissions, ensuring data security and proper authorization.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfZuawEI48H8nZuhSIDY8i6n7M9j6M2TFOkxFk-6_Urh-QfhP1QNzU365T3UQkdMvnKdRSUpR-BWelyhA-YKAIGKij7Ur9gHV2oCdQlD65FYTCK0B_inZsYm-KCd6b6_t-TVCWn5w?key=B9ie91zbfoTewVFO63XPEybW)

# PDF Templates

This module allows you to create document templates. In the future, based on these templates, PDF documents or emails can be created, in which the necessary data from KiyoCRM will automatically be added during the merge process.

## Creating a PDF Template

1. In the module menu, select the option "Create PDF Template".
2. In the Edit Form fill in the following fields:

<div class="dlist" id="bkmrk-pdf-template%3A%C2%A0-speci"><dl><dt class="hdlist1">**PDF Template:** </dt><dd>Specify the name of the template being created.

</dd><dt class="hdlist1">**Assigned to:**</dt><dd>Please enter/ select the name of the Assigned to user of this template.

</dd><dt class="hdlist1">**Type:** </dt><dd>Here you should select the type of document to be created based on this template. By default, the system suggests creating templates for the following documents: Quotes, Invoices, Contracts, Contacts or a Lead.

</dd></dl></div>**Note:** When adding a new item to the combo box list ***pdf\_template\_type\_dom***, the name of the key to be added must match the module name. In the following example, the item **Prospects** is added to the list.  
Detailed information on adding a new element to the combo box is described in the Developer Tools page.

<dl id="bkmrk-load-sample-the-syst"><dt class="hdlist1">**Load Sample**</dt><dd>The system Quotes several options for ready-made templates, if necessary.

</dd><dt class="hdlist1">**Active**</dt><dd>An option that determines whether the current template will be offered in the list of templates when creating a document (see the section below, Creating PDF Documents Based on a Template),

</dd><dt class="hdlist1">**Page Size/ Orientation**</dt><dd>If necessary, select the size and orientation of the template page. Then default is A4 size and portrait page orientation.

</dd><dt class="hdlist1">**Inserting into a Field**</dt><dd>This option allows you to add the necessary variable to the template, which later (in the process of creating a document-based template) will be replaced with the necessary data from the KiyoCRM+

<div class="dlist"><dl><dt class="hdlist1">**To insert a variable:**</dt><dd><div class="ulist">- In the left combo box, select the module from which you want to get information.
- In the middle combo box, select the name of the field of the selected module, then the name of the necessary variable corresponding to the selected field, so it appears in the right field.
- In the text of the template, specify the place where the selected variable should be added and click the button **Insert.**

</div>The following picture shows an example of adding the variable **$aos\_invoices\_number**, which, when creating the document based on the current template, will be automatically replaced with the account number.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/EvZimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/EvZimage.png)

If it is necessary to add data in the template, for example, listing positions in the Offer or Invoice, then such data should be arranged in a table:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/6aQimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/6aQimage.png)

## Creating Headers and Footers

At the bottom of the Template Editing Form are two fields that allow you to customize the header and footer for the current template:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/iRiimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/iRiimage.png)

Footers are able to use special variables:

<div class="ulist">- **{PAGENO}**, Showing the current page number.
- **{DATE D.m.Y}**, Showing the current date in the required format

</div>#### Setting Page Parameters:

Under the header and footer there are several fields that allow you to customize different page parameters, such as the size of the indents from the page edges of the header and footer fields:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/IVvimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/IVvimage.png)

## Creating PDF documents based on a Template

1. When creating a PDF document for modules **Companies**, **Contacts** and **Leads** use the menu item **Print as PDF** from the action menu of the View module of the corresponding module:

</dd></dl></div>[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/y9vimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/y9vimage.png)

  
If several templates were created for the current module, they will be presented in the form of a list, from which you need to select the desired position:

If only one template was created for the current module, then the necessary document will be immediately created on its basis.

If you need to create several similar documents for several module entries at once, select the necessary entries in the List Form and then use the **Create Letter (PDF)** from the action menu:

Contacts:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/5IXimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/5IXimage.png)

2. When creating a PDF document for Quotes, Invoices or Contracts, use the items **Print as PDF**, **Email PDF** and **Email Invoice** from the action menu of the View module of the corresponding.

 [![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/pYrimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/pYrimage.png)

For a detailed description of this functionality, see the relevant sections of the **Sales Modules.**

## Manage PDF Templates:

- Search Templates - utilize **Filters and Advanced Filters** in the module list form.
- **Export** templates, for this, select the necessary records in the form.
- Editing or deleting information about several templates at once, use this **Mass Update** in list form.
- View detailed information about the template, to do this, click on the name of the template in the general list.
- Data editing, for the purpose or in the Form of viewing click on the button **Edit** or directly in the List Form, click the button to the left of the record being edited. You can also perform **Quick Edit**.
- To duplicate a template, in the action menu select **Duplicate**. Duplication is a convenient way to quickly create similar records; you can change the duplicated information to create a new template.
- To delete a template, click on the button **Delete**.
- You can track changes to the entered information; to do this select the button **View Changelog** in the form of viewing.

</dd></dl><dl id="bkmrk-"></dl>

# Knowledge Base

The knowledge base can be used as a structured repository of solutions coming Appeals. When a new treatment is entered into the system, the system compares the topic of the new treatment with the topics and contents of the existing Knowledge Base articles and automatically suggests options for suitable articles, which makes it possible to speed up the search for an answer to the received treatment.

## Adding an Article to the Knowlege Base

1. In the module menu, select **Add article to the knowledge base**.
2. On the page that appears, complete the following fields.:
    
    <div class="dlist"><dl><dt class="hdlist1">**Article:**</dt><dd>Specify the title of the article. The name should be as informative as possible.
    
    </dd></dl></div>

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Vw8image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Vw8image.png)

<dl id="bkmrk-status%3A-from-the-dro"><dt class="hdlist1">**Status:**</dt><dd>From the drop-down list, select the article status option: **Draft**, **Expired**, **Pending**, **Not Published**, **Published**.

</dd><dt class="hdlist1">**Article text:**</dt><dd>Enter a detailed description of the solution. If further when entering the topic of a new appeal, matches are found with the topic or text of the Knowledge Base article, then this article will be automatically offered as a possible solution.

</dd><dt class="hdlist1">**Version of the article:** </dt><dd>Specify the version of the article.

</dd><dt class="hdlist1">**Resolution:**</dt><dd>Indicate a brief solution to the question under discussion. In the future, the text of the resolution can be specified as decision incoming treatment.

</dd><dt class="hdlist1">**Author of the Article:**</dt><dd>Specify the author of the text.

</dd><dt class="hdlist1">**Approved by:**</dt><dd>Select a user of the system that approved the text of the article.

## Categories of Knowlege Base Articles

With a large number of articles, they can be grouped into different categories. Categories are created in a separate module **Knowledge Base Categories**.

When creating a category, fill in the following fields.:

<div class="dlist"><dl><dt class="hdlist1">**Category**</dt><dd>Enter a category name.

</dd><dt class="hdlist1">**Description**</dt><dd>Enter a description of the category.

</dd><dt class="hdlist1">**Created**</dt><dd>If necessary, change the user who created the category description category.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/f6Qimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/f6Qimage.png)

After creating a category, a list of articles can be added to it. To do this, use the sub-panel **Knowledge Base Article** in the Category View Form.

## Managing Articles and Knowledge Base Article Categories

- Sorting the list of records. To do this, click on the icon in the header of the column to be sorted. To reverse sort, click on the icon again.
- Editing or deleting information in several records at once, for this use Mass Update Panel. (Refer Leads module List view Actions)
- View detailed information on the entry, to do this, click on the name of the article or category in the general list.
- Data editing, for this purpose or in the Form of viewing, click on the button Correct or directly in the List Form, click the button to the left of the record being edited. You can also perform Quick Edit using icon in list form.
- Duplication of information, for this in the action menu, select **Duplicate**. Duplication is a convenient way to quickly create similar records; you can change the duplicated information to create a new record.
- Merge Duplicates, to do this, select the necessary entries in the List Form and in the action menu select the **Combine** item.
- Delete a record, to do this, click on the button **Delete**.
- Tracking changes to the entered information, to do this, click on the button **View Changelog** in the form of viewing.
- Search for information - use **Filters or Advanced Filters** in the module list form.

</dd></dl></div></dd></dl>

# WorkFlows

**Workflows** is a module for KiyoCRM allowing users to create custom workflow processes. Historically this module was called **Advanced Open Workflow (AOW)**. It allows users to trigger various system actions based on conditions from any KiyoCRM module.

## Creating a Workflow Process

You can create workflow processes by navigating to the 'Workflow' module within KiyoCRM. Click the **'Create Workflow'** button within the action bar to start creating the process. The first panel allows users to set up the workflow process.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/kxuimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/kxuimage.png)

This allows you to specify the following:

<div class="ulist" id="bkmrk-name%C2%A0%E2%80%93-any-name-you-">- **Name** – Any name you want to give to the Workflow.
- **Assigned To** - The assigned user of the Workflow process.
- **Workflow Module** – A drop down list of all the modules found within the KiyoCRM instance. This is the module the Workflow is run against. For example, when an Company is created/edited.
- **Status** – Active or Inactive. Only active processes will run, so you can use this field to deactivate a Workflow without having to delete it.
- **Run** – This controls the way the Workflow is triggered.
    
    <table class="tableblock frame-all grid-all stretch" style="width: 100%;"><colgroup><col style="width: 10.9625%;"></col><col style="width: 89.0117%;"></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**On Save**
    
    </td><td class="tableblock halign-left valign-top">The Workflow will run immediately for a given record when a save action occurs in the module specified.
    
    </td></tr><tr><td class="tableblock halign-left valign-top">**On Scheduler**
    
    </td><td class="tableblock halign-left valign-top">The Workflow will be started from the Scheduler Job **Process Workflow Tasks**, the next time the job runs, and will apply to every record in the module, restricted by the **Run on** property and by the Workflow’s conditions.
    
    </td></tr><tr><td class="tableblock halign-left valign-top">**Always**
    
    </td><td class="tableblock halign-left valign-top">The Workflow will run on both the situations described above.
    
    </td></tr></tbody></table>
- **Run On** – This specifies the selection of records for which the Workflow will be executed.
    
    <table class="tableblock frame-all grid-all stretch" style="width: 100%;"><colgroup><col style="width: 12.3802%;"></col><col style="width: 87.594%;"></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**New Records**
    
    </td><td class="tableblock halign-left valign-top">The Workflow will run only for new records being created.
    
    </td></tr><tr><td class="tableblock halign-left valign-top">**Modified Records**
    
    </td><td class="tableblock halign-left valign-top">The Workflow will run only for records that were already created and are being changed.
    
    </td></tr><tr><td class="tableblock halign-left valign-top">**All Records**
    
    </td><td class="tableblock halign-left valign-top"><div class="content"><div class="ulist">
    - For **On Save** workflows, this means the Workflow will run for both new and modified records.
    - For **On Scheduler** Workflows, this means the Workflow will go through every record in the module, even old ones that weren’t changed.
        
        When setting **On Scheduler**, **All Records** Workflows, consider that they might cause very long operations if your module has many records. These operations will run in the background, but will still consume server resources, so it’s a good idea to run them after work hours.
    
    </div></div></td></tr></tbody></table>
- **Repeated Runs** – Workflows keep track of each individual record that they have been applied to in the past. This allows you to control whether you want the Workflow actions to run only once for each record, or repeatedly, as the Workflow is triggered again.
    
    <table class="tableblock frame-all grid-all stretch" style="width: 100%;"><colgroup><col style="width: 11.4796%;"></col><col style="width: 88.4946%;"></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Unchecked**
    
    </td><td class="tableblock halign-left valign-top">The Workflow will be blocked from running against any record that has already been handled by the current Workflow in the past.
    
    </td></tr><tr><td class="tableblock halign-left valign-top">**Checked**
    
    </td><td class="tableblock halign-left valign-top">The Workflow will run against every record, regardless of whether that record has already been handled by the current Workflow in the past.
    
    It is wise to consider whether there are enough restrictions in place so that this will not create excessive runs.  
    For example, if one of the specified Actions negates (or will lead to the negation) of one of the specified Conditions; or if the Workflow is set to target individual records (**On Save**, **New Records**, **Modified Records**).
    
    </td></tr></tbody></table>
- **Description** – useful to include a description of the process, its intended goals, and other notes to clarify what the current Workflow is all about.

</div>## Conditions

##### Adding Conditions

Once set up, you can add conditions to a workflow process using the conditions panel. This allows you to specify restrictive criteria so that only the records matching all these conditions will be affected by the Workflow’s Actions.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/F5Simage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/F5Simage.png)

To add a Condition Line, you must click **Add Condition.**

**Note:** You must select your Workflow Module on the first panel before adding a Condition Line.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/oIhimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/oIhimage.png)

You can have an unlimited amount of Condition Lines. To add another line click **Add Condition** again and it will appear. On the line you will have four fields: Field, Operator, Type and Value.

##### Field and Operator

Field is a drop down which automatically populates with all the fields found in the Workflow Module.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/moIimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/moIimage.png)

The Field selected will determine the options available for Operator and Type. If the field type is not a number or date then the operators available will be 'Equal To' or 'Not Equal To'. For number and date fields you can also choose from additional logical operators; 'Less Than', 'Greater Than' 'Less Than or Equal To' or 'Greater Than or Equal To'.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/QYqimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/QYqimage.png)

##### Condition Types

You can specify workflow processes to trigger on different condition types. These are as follows:

<div class="ulist" id="bkmrk-value-%E2%80%93-this-is-used">- **Value** – This is used to directly compare the Field to a value. The value type offered is dynamic to the field type of the Field selected. For example, if the field type is a drop down then the value field type will be the same drop-down list.

</div>[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/lDWimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/lDWimage.png)

- **Field** – This is used to action a workflow process when one field is compared to another field in the record.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/d0Gimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/d0Gimage.png)

- **Multiple** – This can be selected if the Field is a drop down/multiselect. This allows users to specify multiple values to action the workflow from.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/DyHimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/DyHimage.png)

- **Date** – This allows you to specify the record to be selected for the Workflow after/before an amount of time from either another date field or 'Now'. For example, when the start date of a call is 'Now + 10 minutes'. This can only be used when the Field is a date field. The amount of time before or after the date can be specified in Minutes, Hours, Days, Weeks or Months.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/HGrimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/HGrimage.png)

##### Removing Conditions

You can remove Condition Lines by clicking '**-**' on the left-hand side of the condition.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Oloimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Oloimage.png)

## Actions

##### Adding Actions

Actions are defined in the third panel. These specify what events should occur when the conditions have been met. You can add an Action by clicking the **Add Action** button.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Wtlimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Wtlimage.png)

This will cause the Action Line to appear.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/bt2image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/bt2image.png)

From the Action Line you can Select Action and give it a Name. The actions available are; 'Create Record', 'Modify Record' and 'Send Email'. You can specify an unlimited number of actions for each workflow process.

##### Create Record

If you select **'Create Record'** you will be prompted to select a Record Type. This is the module type of the record you are looking to create.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/9Zdimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/9Zdimage.png)

Once selected you can add fields or relationships to this record using the **Add Field** and **Add Relationship** buttons.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/TZ2image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/TZ2image.png)

When Adding fields the first drop down in the line will populate with all the fields from that module. The second drop down allows you to specify how the value for that field is going to be derived. For most cases the options are as follows:

<div class="ulist" id="bkmrk-value%C2%A0%E2%80%93-this-will-al">- **Value** – This will allow you to input the value directly using the same field type as the field selected.
- **Field** – This will make the field the same value as a field found in the Workflow Module.
- **Date** – Only selectable if the field is a date field. This will allow you to specify the value as an amount of time after/before another date field or 'Now'.

</div>[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/C6bimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/C6bimage.png)

Selecting the 'Assigned-To' field also gives you more options. As well as by value and field you can assign a user by:

<div class="ulist" id="bkmrk-round-robin%C2%A0%E2%80%93-this-w">- **Round Robin** – This will select each user in turn.
- **Least Busy** – This will select you with the least amount of records assigned to you for that module.
- **Random** – This will select a random user.

</div>For each of the above options you can choose if you want you to be selected from all users or users from a specific role. If you have the Security Suite module installed, you can additionally choose if you want you to be selected from all users from a particular Security Group or all users from a particular security group with a particular role.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Y58image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Y58image.png)

When adding relationships, you must select the related module from the drop-down list then select the record that the new record should be related to.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/hj2image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/hj2image.png)

**Note**: You must select the related module using the arrow button – The auto completion on the text field is not currently developed.

##### Modify Record

This provides the same functionality as 'Create Record' but instead of creating a new record you are modifying the record which met the conditions of the workflow process. With this action you can modify any field found within the record or you can add a relationship to another record. This is completed in the same way as 'Create Record' except you are not required to specify the Record Type.

##### Send Email

The **'Send Email'** action allows users to create workflow processes which will send an email based on an template to individuals.

**Note:** The Email will be sent from the System Email Account. It is not possible to send from emails specified in the User Profile, because Workflows sometimes run from a Scheduler job, without any user being logged on.

Using this action there are four different types of recipients.

<div class="ulist" id="bkmrk-email-%E2%80%93-this-will-se">- **Email** – This will send an email to a specific email address. You must specify the email address and the email template.

</div>[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/lKHimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/lKHimage.png)

- **Record Email** – This will send an email to the primary email address specified on the record which actioned the workflow process. This can only be used if the record has an email field such as Companies and Contacts. For this option you only need to specify the template.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Clzimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Clzimage.png)

- **User** – This will send the email to a specified Users email address. You must specify the recipient user and the template of the email.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/EN8image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/EN8image.png)

- **Related Field** – This will send an email to the primary email address specified on a related modules record. In this case you must specify the related module (From a drop down list) and the email template.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/3Ayimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/3Ayimage.png)

##### Calculate fields

If you select **'Calculate Fields'** from the Action dropdown the Calculate Fields user interface will be loaded after a second and looks like the picture below.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/pWTimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/pWTimage.png)

There is a separate page with detailed documentation of the many possibilities of **Calculated Fields** in Workflows. Refer that.

## Process Audit

Advanced OpenWorkflow allows users to audit your processes. In the Detail View of each Workflow record there is a sub-panel called **'Processed Flows'**.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/1Tmimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/1Tmimage.png)

This lists all the workflow processes which have been actioned including details on the record which actioned the flow, its status and the date it was created.

You can view this information at a higher level by clicking the **'View Process Audit'** button within the module action bar. This will show all the processes that have run for all the Workflow records.

## Examples

##### Customers To Target List

This tutorial will show you how to create a workflow process to add companies who are customers to a Target-List when the record is created or modified. Set Up

<div class="olist arabic" id="bkmrk-start-by-navigating-">1. Start by navigating to the Workflow module and clicking **'Create Workflow'** from the action bar.
2. Give your workflow a Name such as 'Populate Target List'.
3. Select **Companies** as the Workflow Module.
4. Ensure **Repeated Runs** is NOT selected, and the **Status** is **Active** (this should be done by default). Optionally you can change the **Assigned-To** and add a **Description.**

</div>##### Conditions

1. Create a new Condition Line by clicking **Add Condition.**
2. Select 'Type' from the Field drop down.
3. Keep the Operator as 'Equals To' and the Type as 'Value'.
4. From the Value drop down select 'Customer'.

Once these steps have been completed the Conditions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/oqSimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/oqSimage.png)

##### Actions

Create a new Action by clicking **Add Action**.

<div class="olist arabic" id="bkmrk-select-%27modify-recor">1. Select 'Modify Record from the Select Action drop down list.
2. Using the Name field, give the action a name such as 'Add to Target List'
3. Add a Relationship Line by clicking the **Add Relationship** button.
4. A drop down will appear above the 'Add Relationship' button. Select the relationship from this drop down box. In this case we are looking for 'Target Lists: Prospect List'
5. This will populate the rest of the line. Click the **arrow** button next to the relate field to select your target list.

</div>Once these steps have been completed your Actions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/vF1image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/vF1image.png)

## Cases Remainder

This tutorial will show you how to create a workflow process to notify the assigned user and then a particular manger user when an open Case has not been updated/modified within two days. Set Up

<div class="olist arabic" id="bkmrk-start-by-navigating--1">1. Start by navigating to the Workflow module and clicking **'Create Workflow'** from the action bar.
2. Give your workflow a Name such as 'Case Escalation'.
3. Select Cases as the Workflow Module.
4. Ensure Repeated Runs is NOT selected and the Status is Active (This should be done by default). Optionally you can change the Assigned-To and add a Description.

</div>Once these steps have been completed the first panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/1pximage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/1pximage.png)

##### Conditions

Create a new Condition Line by clicking **Add Condition**.

Select 'Date Modified' from the Field drop down.

Change the Operator to 'Less Than or Equal To' and the Type to 'Date'

From the Value fields select 'Now', '-', '2', 'Days' in order.

Once these steps have been completed the Conditions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/2gximage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/2gximage.png)

Repeat step 1.

This time select 'Status' from the Field drop down.

Keep the Operator as 'Equals To' and change the Type to 'Multiple'.

From the Value multi-select field select any values which signify an open case

Once these steps have been completed the Conditions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/vlGimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/vlGimage.png)

##### Actions

<div class="olist arabic" id="bkmrk-create-a-new-action--1">1. Create a new Action by clicking **Add Action** button.
2. Select 'Send Email' from the Select Action down-down list.
3. Give the action a Name such as 'Assigned User Reminder'
4. On the Email Line select 'Related Field' from the first drop down, 'Users: Assigned To' from the second drop down and a email template from the third drop down.

</div>Once these steps have been completed the Actions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/OzQimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/OzQimage.png)

Repeat steps 1, 2 and 3 but change the name of this action to 'Manager Escalation Email'. 2. On the Email Line select 'User' and then select you who should receive the email. Select an email template from the third drop down. 3. When you are finished click **Save** to create your workflow. Once these steps have been completed the Actions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/95qimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/95qimage.png)

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Bvlimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Bvlimage.png)

## Follow-up Web Leads

This tutorial will show you how to create a workflow process to assign web Leads to a particular user from a particular role within KiyoCRM. This user will be chosen by round robin. The workflow process will also set a follow up call for one day after the Lead is created.

**Note:** You can change the Sales role to any role found in your own system.

##### Set Up

<div class="olist arabic" id="bkmrk-start-by-navigating--2">1. Start by navigating to the Workflow module and clicking **'Create Workflow'** from the action bar.
2. Give your workflow a Name such as 'Web Lead Assignment and Follow Up'.
3. Select Leads as the Workflow Module.
4. Ensure Repeated Runs is NOT selected, and the Status is Active (This should be done by default). Optionally you can change the Assigned-To and add a Description.

</div>Once these steps have been completed the first panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/4fZimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/4fZimage.png)

##### Conditions

<div class="olist arabic" id="bkmrk-create-a-new-conditi-2">1. Create a new Condition Line by clicking **Add Condition**.
2. Select 'Lead Source' from the Field drop down.
3. Keep the Operator as 'Equals To' and the Type as 'Value'
4. From the Value drop down select our condition, 'Web Site'

</div>Once these steps have been completed the Conditions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/TY6image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/TY6image.png)

##### Actions

<div class="olist arabic" id="bkmrk-create-a-new-action--2">1. Create a new Action by clicking **Add Action**.
2. Select 'Modify Record' from the Select Action down-down list.
3. Using the Name field, give the action a name such as 'Assign to Sales'
4. Add a Field Line by clicking **Add Field**.
5. Select 'Assigned-To' from the new drop-down box that has appeared above the **Add Field** button.
6. Change the middle drop-down box from 'Value' to 'Round Robin'
7. Change the third drop down box from 'ALL Users' to 'ALL Users in Role'

</div>Once these steps have been completed the Actions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/BfWimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/BfWimage.png)

<div class="olist arabic" id="bkmrk-now-create-a-new-act">1. Now create a new Action by repeating step 1.
2. This time select 'Create Record' from the Select Action down-down list.
3. Using the Name field, give the action a name such as 'Create Follow Up Call'.
4. From the Record Type drop down select 'Calls'.
5. Click the **Add Field** button to add a new field:
6. Select 'Subject' from the first drop down box. Leave the second drop down box as 'Value' then type the desired subject into the text field at the end.
7. Add another field, this time selecting the 'Start Date' from the first drop down box.
8. Change the second drop down box from 'Value' to 'Date'.
9. In the third drop down box select 'Now'. In the fourth drop down box on the line select '+'.
10. In the text box type '1' and in the drop down next to it select 'Days'.
11. Add another field, this time select 'Assigned-To', 'Field', 'Assigned-To' – This will relate the assigned User of the Lead to the Call.
12. You can add any other fields that you wish to include in the call at this stage. To finish click **Save**.

</div>Once these steps have been completed the Actions panel should look like this:

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/xbrimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/xbrimage.png)

# Workflow Calculated Fields

<div id="bkmrk-"></div>In Workflows, there is a particularly powerful and complex **Action** called **Calculated Fields** which allows you to do operations on the values in the records you’re handling.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/RHsimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/RHsimage.png)

## Adding Parameters

It is possible to add parameters to the formulas by using the dropdown in the Parameters section of the Calculate Fields’s user interface. The dropdown contains all of the (basic and custom) fields which belongs to the module selected in the basic fields section.

To add a parameter, select the field from the dropdown and click **Add Parameters** After this action, a new line appears in the parameter table with the name of the field and the given identifier.

For some fields (dropdowns and multi-selects) an additional dropdown shown up where the user can select if the raw or the formatted value should be used in Calculated Fields. The raw format means the value which is stored in the database and the formatted value means the label for that database value.

To remove a parameter from the table, simply click the **'-'** in the row of the parameter. Be aware, that if you remove a parameter, all of the identifiers are recalculated, so the identifiers could change for fields!

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Djkimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Djkimage.png)

The identifier is used to reference this field when the user creates the formula. For example, all appearances of the {P0} identifier will be replaced with the Company’s name in the formula. All parameters are like {Px} where x is the sequential order of the parameter. The amount of the parameters is not limited.

## Adding Relation Parameters

Relation parameters are very similar to the regular parameters; the only difference is that the user first selects an entity which is in a one-to-one or one-to-many relationship with the actual entity.

To add a relation parameter, select the relation first, and then select the field from the connected entity and push the Add relation parameter button. After this action, a new line appears in the relation parameter table with the name of the relationship, the name of the field and the given identifier.

As for parameters for some relation parameter fields (dropdowns and multi-selects) an additional dropdown shown up where the user can select if the raw or the formatted value should be used in Calculate Fields.

To remove a relation parameter from the table, simply click on the '**-**' button in the row of the relation parameter. Be aware, that if you remove a relation parameter, all of the identifiers are recalculated, so the identifiers could change for fields!

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/6xdimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/6xdimage.png)

The identifier is used to reference this field when the user creates the formula. For example, all appearances of the {R0} identifier will be replaced with the creator user‘s username in the formula. All relation parameters are like {Rx} where x is the sequential order of the relation parameter. The amount of the relation parameters is not limited.

## Creating Formula for a Field

In the Formulas part of the user interface the user can add formulas for fields of the actual entity.

To add a formula, select a field from the dropdown first and then push the Add formula button. After this action, a new line appears in the formula table with the name of the field and with the place for the formula.

To remove a formula from the table, simply click on the '**-**' in the row of the formula.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Qnlimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Qnlimage.png)

The formula is a textbox where the user can write the formulas. The module evaluates the formula on the given time (on save, on scheduler run or both) and fills the selected field with the evaluated value.

The formula can contain any text (with full UTF-8 support), but only the function parts (functions with parameters between ‘{‘and ‘}’) are evaluated. For example, and with the parameters added in the previous sections, if we fill the formula like: Company {P0} created by username {R0}, then the description field will have the following value after save: Company My Company created by username My User (implying the Company’s name is My Company and the creator user’s username is My User).

The Calculate Fields has many built-in functions which allows the user to build complex formulas to achieve various goals. These functions are described in the next section.

## Available Functions

As it is mentioned above, all of the functions are wrapped between <span style="font-family: Lucida Console, DejaVu Sans Mono, Ubuntu Mono, Monaco, monospace;"><span style="font-size: 11.76px; white-space-collapse: preserve; background-color: rgb(248, 248, 248);">{and}</span></span> signs, and they look like `{function Name (parameter1; parameter2; …)}`. The count of the parameters is different for the different functions. The module evaluates the functions and changes them with their result in the formula.

The functions can be embedded into each other (using a result of a function as a parameter for another function) like in this example:

<div class="sect1" id="bkmrk--5"><div class="sectionbody"><div class="paragraph">  
</div><div class="literalblock"><div class="content">  
</div></div></div></div>```
{power({subtract({divide({add({multiply(10; 2)}; 12)}; 8)}; 1)}; 2)}
```

<div class="sect1" id="bkmrk--6"><div class="sectionbody"><div class="literalblock"><div class="content">  
</div></div><div class="paragraph">  
</div></div></div>This function is the formalized look of the following mathematical expression:

<div class="sect1" id="bkmrk--7"><div class="sectionbody"><div class="paragraph">  
</div><div class="literalblock"><div class="content">  
</div></div></div></div>```
((((10 * 2) + 12) / 8) – 1)2
```

<div class="sect1" id="bkmrk--8"><div class="sectionbody"><div class="literalblock"><div class="content">  
</div></div><div class="paragraph">  
</div></div></div>The functions are divided to six groups. These groups are described in the next section of the document.

### Logical Functions

Logical functions are returning true or false in the form of 1 and 0 so checkboxes typed fields can be filled with these functions. They can be also used as the logical condition for the ifThenElse function.

#### equal

<div class="sect1" id="bkmrk-signature-%7Bequal%28par"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{equal(parameter1;parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Determines if **parameter1** equals with **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if the two parameters are equal or 0 if not

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{equal(1; 2)} returns 0

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### notEqual

<div class="sect1" id="bkmrk-signature-%7Bnot-equal"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{not Equal(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Determines if **parameter1** not equals with **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">0 if the two parameters are equal or 1 if not

</td></tr><tr><td class="tableblock halign-left valign-top">**Example calls**

</td><td class="tableblock halign-left valign-top">{not Equal(1; 2)} returns 1

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### greaterThan

<div class="sect1" id="bkmrk-signature-%7Bgreater-t"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{greater Than(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Determines if **parameter1** greater than **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter1** greater than **parameter2**, 0 if not

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{greaterThan(3; 3)} returns 0

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### greaterThanOrEqual

<div class="sect1" id="bkmrk-signature-%7Bgreaterth"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{greaterThanOrEqual(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Determines if **parameter1** greater than or equal **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter1** greater than or equal **parameter2**, 0 if not

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{greaterThanOrEqual(3; 3)} returns 1

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### lessThan

<div class="sect1" id="bkmrk-signature-%7Blessthan%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{lessThan(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Determines if **parameter1** less than **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter1** less than **parameter2**, 0 if not

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{lessThan(3; 3)} returns 0

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### lessThanOrEqual

<div class="sect1" id="bkmrk-signature-%7Blessthano"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{lessThanOrEqual(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: can be any value of any type

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Determines if **parameter1** less than or equal **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter1** less than or equal **parameter2**, 0 if not

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{lessThanOrEqual(3; 3)} returns 1

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### empty

<div class="sect1" id="bkmrk-signature-%7Bempty%28par"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{empty(parameter)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter: text value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Determines if **parameter** is empty

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter** is empty, 0 if not

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{empty(any text)} returns 0

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### notEmpty

<div class="sect1" id="bkmrk-signature-%7Bnotempty%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{notEmpty(parameter)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter: text value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Determines if **parameter** is not empty

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter** is not empty, 0 if empty

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{notEmpty(any text)} returns 1

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### not

<div class="sect1" id="bkmrk-signature-%7Bnot%28param"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{not(parameter)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter: logical value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Negates the logical value of the **parameter**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter** is 0, 0 if **parameter** is 1

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{not(0)} returns 1

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### and

<div class="sect1" id="bkmrk-signature-%7Band%28param"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{and(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: logical value

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: logical value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Applies the AND logical operator to two logical values

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter1** and **parameter2** is 1, 0 if any parameters are 0

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{and(1; 0)} returns 0

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### or

<div class="sect1" id="bkmrk-signature-%7Bor%28parame"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{or(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: logical value

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: logical value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Applies the OR logical operator to two logical values

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">1 if **parameter1** or **parameter2** is 1, 0 if both parameters are 0

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{or(1; 0)} returns 1

</td></tr></tbody></table>

</div></div><div class="sect2">  
</div></div></div>### Text Functions

Text functions are used to manipulate text in various ways. All the functions listed here are fully supports UTF-8 texts, so special characters should not raise any problems.

#### substring

<div class="sect1" id="bkmrk-signature-%7Bsubstring"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all stretch"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{substring(text; start; length)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">text: text value

</td></tr><tr><td class="tableblock halign-left valign-top">start: decimal value

</td></tr><tr><td class="tableblock halign-left valign-top">length \[optional parameter\]: decimal value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Cuts the substring of a text field from **start**. If the **length** optional parameter is not set, then it cuts all characters until the end of the string, otherwise cuts the provided **length**. Indexing of a text’s characters starting from 0.

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Substring of the given text

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Example call**

</td><td class="tableblock halign-left valign-top">{substring(This is my text; 5)} returns is my text

</td></tr><tr><td class="tableblock halign-left valign-top">{substring(This is my text; 5; 5)} returns is my

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### length

<div class="sect1" id="bkmrk-signature-%7Blength%28pa"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{length(parameter)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter: text value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Count the characters in a text.

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The count of the characters in a text.

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{length(sample text)} returns 11

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### replace

<div class="sect1" id="bkmrk-signature-%7Breplace%28s"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">Signature

</td><td class="tableblock halign-left valign-top">{replace(search; replace; subject)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">Parameters

</td><td class="tableblock halign-left valign-top">search: text value

</td></tr><tr><td class="tableblock halign-left valign-top">replace: text value

</td></tr><tr><td class="tableblock halign-left valign-top">subject: text value

</td></tr><tr><td class="tableblock halign-left valign-top">Description

</td><td class="tableblock halign-left valign-top">Replace all occurrences of **search** to **replace** in the text **subject**.

</td></tr><tr><td class="tableblock halign-left valign-top">Returns

</td><td class="tableblock halign-left valign-top">**subject** with replaced values.

</td></tr><tr><td class="tableblock halign-left valign-top">Example call

</td><td class="tableblock halign-left valign-top">{replace(apple; orange; This is an apple tree)} returns This is an orange tree

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### position

<div class="sect1" id="bkmrk-signature-%7Bposition%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{position(subject; search)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">subject: text value

</td></tr><tr><td class="tableblock halign-left valign-top">search: text value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Find position of first occurrence of **search** in a **subject**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Numeric position of **search** in **subject** or -1 if **search** not present in **subject**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{position(Where is my text?; text)} returns 12

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### lowercase

<div class="sect1" id="bkmrk-signature-%7Blowercase"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{lowercase(parameter)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter: text value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Make text lowercase

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The lowercased text.

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{lowercase(ThIs iS a sAmPlE tExT)} returns this is a sample text

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### uppercase

<div class="sect1" id="bkmrk-signature-%7Buppercase"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{uppercase(parameter)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter: text value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Make text uppercase

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The uppercased text.

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{uppercase(ThIs iS a sAmPlE tExT)} returns THIS IS A SAMPLE TEXT

</td></tr></tbody></table>

</div></div><div class="sect2">  
</div></div></div>### Mathematical Functions

Mathematical functions are used to manipulate numbers in various ways. Several mathematical operators are implemented as functions in Calculate Fields.

#### add

<div class="sect1" id="bkmrk-signature-%7Badd%28param"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{add(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: number value

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: number value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Adds **parameter1** and **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The sum of **parameter1** and **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{add(3.12; 4.83)} returns 7.95

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### subtract

<div class="sect1" id="bkmrk-signature-%7Bsubtract%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{subtract(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: number value

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: number value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Subtracts **parameter2** from **parameter1**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The distinction of **parameter2** and **parameter1**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{subtract(8; 3)} returns 5

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### multiply

<div class="sect1" id="bkmrk-signature-%7Bmultiply%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{multiply(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: number value

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: number value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Multiplies **parameter1** and **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The product of **parameter1** and **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{multiply(2; 4)} returns 8

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### divide

<div class="sect1" id="bkmrk-signature-%7Bdivide%28pa"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{divide(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: number value

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: number value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Divides **parameter2** with **parameter1**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The division of **parameter2** and **parameter1**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{divide(8; 2)} returns 4

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### power

<div class="sect1" id="bkmrk-signature-%7Bpower%28par"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{power(parameter1; parameter2)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter1: number value

</td></tr><tr><td class="tableblock halign-left valign-top">parameter2: number value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Raises **parameter1** to the power of **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">**parameter1** raised to the power of **parameter2**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{power(2; 7)} returns 128

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### squareRoot

<div class="sect1" id="bkmrk-signature-%7Bsquareroo"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{squareRoot(parameter)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter: number value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Calculates the square root of **parameter**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The square root of **parameter**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{squareRoot(4)} returns 2

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### absolute

<div class="sect1" id="bkmrk-signature-%7Babsolute%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{absolute(parameter)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">parameter: number value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Calculates the absolute value of **parameter**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The absolute value of **parameter**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{absolute(-4)} returns 4

</td></tr></tbody></table>

</div></div><div class="sect2">  
</div></div></div>### Date functions

There are several date functions implemented in Calculate Fields, so the user can manipulate dates in many ways. Most of the functions uses a format parameter, which is used to set the result of the functions formatted as the user wants to. The options for these formats are equivalent with the PHP format parameters:

<div class="sect1" id="bkmrk-format-character-des"><div class="sectionbody"><div class="sect2"><div class="paragraph">  
</div><table class="tableblock frame-all grid-all stretch"><colgroup><col></col><col></col><col></col></colgroup><thead><tr><th class="tableblock halign-left valign-top">Format character</th><th class="tableblock halign-left valign-top">Description</th><th class="tableblock halign-left valign-top">Example returned values</th></tr></thead><tbody><tr><th class="tableblock halign-left valign-top" colspan="3">**For day**

</th></tr><tr><td class="tableblock halign-left valign-top">d

</td><td class="tableblock halign-left valign-top">Day of the month, 2 digits with leading zeros

</td><td class="tableblock halign-left valign-top">01 to 31

</td></tr><tr><td class="tableblock halign-left valign-top">D

</td><td class="tableblock halign-left valign-top">A textual representation of a day, three letters

</td><td class="tableblock halign-left valign-top">Mon through Sun

</td></tr><tr><td class="tableblock halign-left valign-top">j

</td><td class="tableblock halign-left valign-top">Day of the month without leading zeros

</td><td class="tableblock halign-left valign-top">1 to 31

</td></tr><tr><td class="tableblock halign-left valign-top">l

</td><td class="tableblock halign-left valign-top">A full textual representation of the day of the week

</td><td class="tableblock halign-left valign-top">Sunday through Saturday

</td></tr><tr><td class="tableblock halign-left valign-top">N

</td><td class="tableblock halign-left valign-top">ISO-8601 numeric representation of the day of the week

</td><td class="tableblock halign-left valign-top">1 (for Monday) through 7 (for Sunday)

</td></tr><tr><td class="tableblock halign-left valign-top">S

</td><td class="tableblock halign-left valign-top">English ordinal suffix for the day of the month, 2 characters

</td><td class="tableblock halign-left valign-top">st, nd, rd or th. Works well with j

</td></tr><tr><td class="tableblock halign-left valign-top">w

</td><td class="tableblock halign-left valign-top">Numeric representation of the day of the week

</td><td class="tableblock halign-left valign-top">0 (for Sunday) through 6 (for Saturday)

</td></tr><tr><td class="tableblock halign-left valign-top">z

</td><td class="tableblock halign-left valign-top">The day of the year (starting from 0)

</td><td class="tableblock halign-left valign-top">0 through 365

</td></tr><tr><th class="tableblock halign-left valign-top" colspan="3">**For week**

</th></tr><tr><td class="tableblock halign-left valign-top">W

</td><td class="tableblock halign-left valign-top">ISO-8601 week number of year, weeks starting on Monday

</td><td class="tableblock halign-left valign-top">42 (the 42nd week in the year)

</td></tr><tr><th class="tableblock halign-left valign-top" colspan="3">**For month**

</th></tr><tr><td class="tableblock halign-left valign-top">F

</td><td class="tableblock halign-left valign-top">A full textual representation of a month, such as January or March

</td><td class="tableblock halign-left valign-top">January through December

</td></tr><tr><td class="tableblock halign-left valign-top">m

</td><td class="tableblock halign-left valign-top">Numeric representation of a month, with leading zeros

</td><td class="tableblock halign-left valign-top">01 through 12

</td></tr><tr><td class="tableblock halign-left valign-top">M

</td><td class="tableblock halign-left valign-top">A short textual representation of a month, three letters

</td><td class="tableblock halign-left valign-top">Jan through Dec

</td></tr><tr><td class="tableblock halign-left valign-top">n

</td><td class="tableblock halign-left valign-top">Numeric representation of a month, without leading zeros

</td><td class="tableblock halign-left valign-top">1 through 12

</td></tr><tr><td class="tableblock halign-left valign-top">t

</td><td class="tableblock halign-left valign-top">Number of days in the given month

</td><td class="tableblock halign-left valign-top">28 through 31

</td></tr><tr><th class="tableblock halign-left valign-top" colspan="3">**For year**

</th></tr><tr><td class="tableblock halign-left valign-top">L

</td><td class="tableblock halign-left valign-top">Whether it’s a leap year

</td><td class="tableblock halign-left valign-top">1 if it is a leap year, 0 otherwise

</td></tr><tr><td class="tableblock halign-left valign-top">o

</td><td class="tableblock halign-left valign-top">ISO-8601 year number. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead

</td><td class="tableblock halign-left valign-top">1999 or 2003

</td></tr><tr><td class="tableblock halign-left valign-top">Y

</td><td class="tableblock halign-left valign-top">A full numeric representation of a year, 4 digits

</td><td class="tableblock halign-left valign-top">1999 or 2003

</td></tr><tr><td class="tableblock halign-left valign-top">y

</td><td class="tableblock halign-left valign-top">A two digit representation of a year

</td><td class="tableblock halign-left valign-top">99 or 03

</td></tr><tr><th class="tableblock halign-left valign-top" colspan="3">**For time**

</th></tr><tr><td class="tableblock halign-left valign-top">a

</td><td class="tableblock halign-left valign-top">Lowercase Ante meridiem and Post meridiem

</td><td class="tableblock halign-left valign-top">am or pm

</td></tr><tr><td class="tableblock halign-left valign-top">A

</td><td class="tableblock halign-left valign-top">Uppercase Ante meridiem and Post meridiem

</td><td class="tableblock halign-left valign-top">AM or PM

</td></tr><tr><td class="tableblock halign-left valign-top">B

</td><td class="tableblock halign-left valign-top">Swatch Internet time

</td><td class="tableblock halign-left valign-top">000 through 999

</td></tr><tr><td class="tableblock halign-left valign-top">g

</td><td class="tableblock halign-left valign-top">12-hour format of an hour without leading zeros

</td><td class="tableblock halign-left valign-top">1 through 12

</td></tr><tr><td class="tableblock halign-left valign-top">G

</td><td class="tableblock halign-left valign-top">24-hour format of an hour without leading zeros

</td><td class="tableblock halign-left valign-top">0 through 23

</td></tr><tr><td class="tableblock halign-left valign-top">h

</td><td class="tableblock halign-left valign-top">12-hour format of an hour with leading zeros

</td><td class="tableblock halign-left valign-top">01 through 12

</td></tr><tr><td class="tableblock halign-left valign-top">H

</td><td class="tableblock halign-left valign-top">24-hour format of an hour with leading zeros

</td><td class="tableblock halign-left valign-top">00 through 23

</td></tr><tr><td class="tableblock halign-left valign-top">i

</td><td class="tableblock halign-left valign-top">Minutes with leading zeros

</td><td class="tableblock halign-left valign-top">00 to 59

</td></tr><tr><td class="tableblock halign-left valign-top">s

</td><td class="tableblock halign-left valign-top">Seconds, with leading zeros

</td><td class="tableblock halign-left valign-top">00 through 59

</td></tr><tr><th class="tableblock halign-left valign-top" colspan="3">**For timezone**

</th></tr><tr><td class="tableblock halign-left valign-top">e

</td><td class="tableblock halign-left valign-top">Timezone identifier

</td><td class="tableblock halign-left valign-top">UTC, GMT, Atlantic/Azores

</td></tr><tr><td class="tableblock halign-left valign-top">l

</td><td class="tableblock halign-left valign-top">Whether or not the date is in daylight saving time

</td><td class="tableblock halign-left valign-top">1 if Daylight Saving Time, 0 otherwise

</td></tr><tr><td class="tableblock halign-left valign-top">O

</td><td class="tableblock halign-left valign-top">Difference to Greenwich time (GMT) in hours

</td><td class="tableblock halign-left valign-top">+0200

</td></tr><tr><td class="tableblock halign-left valign-top">P

</td><td class="tableblock halign-left valign-top">Difference to Greenwich time (GMT) with colon between hours and minutes

</td><td class="tableblock halign-left valign-top">+02:00

</td></tr><tr><td class="tableblock halign-left valign-top">T

</td><td class="tableblock halign-left valign-top">Timezone abbreviation

</td><td class="tableblock halign-left valign-top">EST, MDT

</td></tr><tr><td class="tableblock halign-left valign-top">Z

</td><td class="tableblock halign-left valign-top">Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.

</td><td class="tableblock halign-left valign-top">-43200 through 50400

</td></tr><tr><th class="tableblock halign-left valign-top" colspan="3">**For full date/time**

</th></tr><tr><td class="tableblock halign-left valign-top">c

</td><td class="tableblock halign-left valign-top">ISO 8601 date

</td><td class="tableblock halign-left valign-top">2004-02-12T15:19:21+00:00

</td></tr><tr><td class="tableblock halign-left valign-top">r

</td><td class="tableblock halign-left valign-top">RFC 2822 formatted date

</td><td class="tableblock halign-left valign-top">Thu, 21 Dec 2000 16:01:07 +0200

</td></tr><tr><td class="tableblock halign-left valign-top">U

</td><td class="tableblock halign-left valign-top">Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

</td><td class="tableblock halign-left valign-top"> </td></tr></tbody></table>

<div class="paragraph"><div class="notices note"><div class="paragraph">  
</div></div></div></div></div></div>For all functions without timestamp parameter, we assume that the current date/time is 2016.04.29. 15:08:03

#### date

<div class="sect1" id="bkmrk-signature-%7Bdate%28form"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{date(format; timestamp)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Creates a date in the given format

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">**timestamp** in the given **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{date(ymd; 2016-02-11)} returns 160211

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### now

<div class="sect1" id="bkmrk-signature-%7Bnow%28forma"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{now(format)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Creates the actual date/time in the given format

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Current date/time in the given **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{now(Y-m-d H:i:s)} returns 2016-04-29 15:08:03

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### yesterday

<div class="sect1" id="bkmrk-signature-%7Byesterday"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{yesterday(format)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Creates yesterday’s date/time in the given format

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Yesterday’s date/time in the given **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{yesterday(Y-m-d H:i:s)} returns 2016-04-28 15:08:03

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### tomorrow

<div class="sect1" id="bkmrk-signature-%7Btomorrow%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{tomorrow(format)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Creates tomorrow’s date/time in the given format

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Tomorrow’s date/time in the given **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{tomorrow(Y-m-d H:i:s)} returns 2016-04-30 15:08:03

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### datediff

<div class="sect1" id="bkmrk-signature-%7Bdatediff%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{datediff(timestamp1; timestamp2; unit)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">timestamp1: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp2: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">unit: years/months/days/hours/minutes/seconds; default: days

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Subtracts **timestamp2** from **timestamp1**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">The difference between the two dates returned in **unit**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{datediff(2016-02-01; 2016-04-22; days)} returns 81

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### addYears

<div class="sect1" id="bkmrk-signature-%7Baddyears%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{addYears(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Adds **amount** years to **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Incremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{addYears(Ymd; 2016-04-22; 1)} returns 20170422

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### addMonths

<div class="sect1" id="bkmrk-signature-%7Baddmonths"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{addMonths(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Adds **amount** months to **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Incremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{addMonths(Ymd; 2016-04-22; 1)} returns 20160522

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### addDays

<div class="sect1" id="bkmrk-signature-%7Badddays%28f"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{addDays(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Adds **amount** days to **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Incremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{addDays(Ymd; 2016-04-22; 1)} returns 20160423

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### addHours

<div class="sect1" id="bkmrk-signature-%7Baddhours%28"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{addHours(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Adds **amount** hours to **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Incremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{addHours(Ymd H:i:s; 2016-04-22 23:30; 5)} returns 20160423 04:30:00

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### addMinutes

<div class="sect1" id="bkmrk-signature-%7Baddminute"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{addMinutes(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Adds **amount** minutes to **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Incremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{addMinutes(Ymd H:i:s; 2016-04-22 22:58; 5)} returns 20160422 23:03:00

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### addSeconds

<div class="sect1" id="bkmrk-signature-%7Baddsecond"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{addSeconds(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Adds **amount** seconds to **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Incremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{addSeconds(Ymd H:i:s; 2016-04-22 22:58; 5)} returns 20160422 22:58:05

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### subtractYears

<div class="sect1" id="bkmrk-signature-%7Bsubtracty"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{subtractYears(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Subtracts **amount** years from **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Decremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{subtractYears(Ymd; 2016-04-22; 5)} returns 20110422

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### subtractMonths

<div class="sect1" id="bkmrk-signature-%7Bsubtractm"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{subtractMonths(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Subtracts **amount** months from **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Decremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{subtractMonths(Ymd; 2016-04-22; 5)} returns 20151122

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### subtractDays

<div class="sect1" id="bkmrk-signature-%7Bsubtractd"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">Signature

</td><td class="tableblock halign-left valign-top">{subtractDays(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">Parameters

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">Description

</td><td class="tableblock halign-left valign-top">Subtracts **amount** days from **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">Returns

</td><td class="tableblock halign-left valign-top">Decremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">Example call

</td><td class="tableblock halign-left valign-top">{subtractDays(Ymd; 2016-04-22; 5)} returns 20160417

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### subtractHours

<div class="sect1" id="bkmrk-signature-%7Bsubtracth"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{subtractHours(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Subtracts **mount** hours from **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Decremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{subtractHours(Ymd H:i:s; 2016-04-22 12:37; 5)} returns 20160422 07:37:00

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### subtractMinutes

<div class="sect1" id="bkmrk-signature-%7Bsubtractm-1"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{subtractMinutes(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td></tr><tr><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Subtracts **amount** minutes from **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Decremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{subtractMinutes(Ymd H:i:s; 2016-04-22 12:37; 5)} returns 20160422 12:32:00

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### subtractSeconds

<div class="sect1" id="bkmrk-signature-%7Bsubtracts"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{subtractSeconds(format; timestamp; amount)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">format: format text

</td></tr><tr><td class="tableblock halign-left valign-top">timestamp: date/time value

</td><td class="tableblock halign-left valign-top">amount: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Subtracts **amount** minutes from **timestamp**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Decremented date in **format**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{subtractSeconds(Ymd H:i:s; 2016-04-22 12:37; 5)} returns 20160422 12:36:55

</td></tr></tbody></table>

</div></div><div class="sect2">  
</div></div></div>### Control Functions

There is only one control function implemented in Calculate Fields so far, but this function ensures that the user can write very complex formulas with conditions. Since the functions can be embedded in each other, the user can write junctions with many branches.

#### ifThenElse

<div class="sect1" id="bkmrk-signature-%7Bifthenels"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{ifThenElse(condition; trueBranch; falseBranch)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="3">**Parameters**

</td><td class="tableblock halign-left valign-top">condition: logical value

</td></tr><tr><td class="tableblock halign-left valign-top">trueBranch: any expression

</td></tr><tr><td class="tableblock halign-left valign-top">falseBranch: any expression

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Selects one of the two branches depending on **condition**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">**trueBranch** if **condition** is true, **falseBranch** otherwise

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{ifThenElse(\\{equal(1; 1)}; 1 equals 1; 1 not equals 1)} returns 1 equals 1

</td></tr></tbody></table>

</div></div><div class="sect2">  
</div></div></div>### Counters

There are several counters implemented in Calculate Fields which can be used in various scenarios.

The counters sorted into two groups:

<div class="sect1" id="bkmrk-global-counters%3A%C2%A0cou"><div class="sectionbody"><div class="sect2"><div class="paragraph">  
</div><div class="olist arabic">1. **Global counters:** Counters which are incremented every time an affected formula is evaluated
2. **Daily counters:** Counters which resets every day. (Starting from 1)

</div><div class="paragraph">  
</div></div></div></div>In this chapter we assume that the counters current value is 4, so the incremented value will be 5 with the given format.

#### GlobalCounter

<div class="sect1" id="bkmrk-signature-%7Bglobalcou"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{GlobalCounter(name; numberLength)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">name: any text

</td></tr><tr><td class="tableblock halign-left valign-top">numberLength: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Increments and returns the counter for **name** with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Counter with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{GlobalCounter(myName; 4)} returns 0005

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### GlobalCounterPerUser

<div class="sect1" id="bkmrk-signature-%7Bglobalcou-1"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{GlobalCounterPerUser(name; numberLength)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">name: any text

</td></tr><tr><td class="tableblock halign-left valign-top">numberLength: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Increments and returns the counter for **name** for the user who creates the entity with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Counter with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{GlobalCounterPerUser(myName; 3)} returns 005

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### GlobalCounterPerModule

<div class="sect1" id="bkmrk-signature-%7Bglobalcou-2"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{GlobalCounterPerModule(name; numberLength)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">name: any text

</td></tr><tr><td class="tableblock halign-left valign-top">numberLength: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Increments and returns the counter for **name** for the module of the entity with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Counter with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{GlobalCounterPerModule(myName; 2)} returns 05

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### GlobalCounterPerUserPerModule

<div class="sect1" id="bkmrk-signature-%7Bglobalcou-3"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{GlobalCounterPerUserPerModule(name; numberLength)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">name: any text

</td></tr><tr><td class="tableblock halign-left valign-top">numberLength: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Increments and returns the counter for **name** for the user who creates the entity and for the module of the entity with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Counter with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{GlobalCounterPerUserPerModule(myName; 1)} returns 5

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### DailyCounter

<div class="sect1" id="bkmrk-signature-%7Bdailycoun"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{DailyCounter(name; numberLength)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">name: any text

</td></tr><tr><td class="tableblock halign-left valign-top">numberLength: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Increments and returns the counter for **name** with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Counter with length **numberLength**, or if the counter is not incremented this day then 1 with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{DailyCounter(myName; 1)} returns 5

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### DailyCounterPerUser

<div class="sect1" id="bkmrk-signature-%7Bdailycoun-1"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{DailyCounterPerUser(name; numberLength)}

</td></tr><tr><td class="tableblock halign-left valign-top">**Parameters**

</td><td class="tableblock halign-left valign-top">name: any text

</td></tr><tr><td class="tableblock halign-left valign-top">numberLength: decimal number

</td><td class="tableblock halign-left valign-top">**Description**

</td></tr><tr><td class="tableblock halign-left valign-top">Increments and returns the counter for **name** for the user who creates the entity with length **numberLength**

</td><td class="tableblock halign-left valign-top">**Returns**

</td></tr><tr><td class="tableblock halign-left valign-top">Counter with length **numberLength**, or if the counter is not incremented this day for this user then 1 with length **numberLength**

</td><td class="tableblock halign-left valign-top">**Example call**

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### DailyCounterPerModule

<div class="sect1" id="bkmrk-signature-%7Bdailycoun-2"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Signature**

</td><td class="tableblock halign-left valign-top">{DailyCounterPerModule(name; numberLength)}

</td></tr><tr><td class="tableblock halign-left valign-top" rowspan="2">**Parameters**

</td><td class="tableblock halign-left valign-top">name: any text

</td></tr><tr><td class="tableblock halign-left valign-top">numberLength: decimal number

</td></tr><tr><td class="tableblock halign-left valign-top">**Description**

</td><td class="tableblock halign-left valign-top">Increments and returns the counter for **name** for the module of the entity with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Returns**

</td><td class="tableblock halign-left valign-top">Counter with length **numberLength**, or if the counter is not incremented this day for this module then 1 with length **numberLength**

</td></tr><tr><td class="tableblock halign-left valign-top">**Example call**

</td><td class="tableblock halign-left valign-top">{DailyCounterPerModule(myName; 1)} returns 5

</td></tr></tbody></table>

</div><div class="sect3">  
</div></div></div></div>#### DailyCounterPerModule

<div class="sect1" id="bkmrk-signature-%7Bdailycoun-3"><div class="sectionbody"><div class="sect2"><div class="sect3"><table class="tableblock frame-all grid-all" style="width: 100%; height: 244.8px;"><colgroup><col style="width: 9.28571%;"></col><col style="width: 90.5952%;"></col></colgroup><tbody><tr style="height: 46.4px;"><td class="tableblock halign-left valign-top" style="height: 46.4px;">**Signature**

</td><td class="tableblock halign-left valign-top" style="height: 46.4px;">{DailyCounterPerUserPerModule(name; numberLength)}

</td></tr><tr style="height: 29.6px;"><td class="tableblock halign-left valign-top" rowspan="2" style="height: 59.2px;">**Parameters**

</td><td class="tableblock halign-left valign-top" style="height: 29.6px;">name: any text

</td></tr><tr style="height: 29.6px;"><td class="tableblock halign-left valign-top" style="height: 29.6px;">numberLength: decimal number

</td></tr><tr style="height: 46.4px;"><td class="tableblock halign-left valign-top" style="height: 46.4px;">**Description**

</td><td class="tableblock halign-left valign-top" style="height: 46.4px;">Increments and returns the counter for **name** for the user who creates the entity and for the module of the entity with length **numberLength**

</td></tr><tr style="height: 46.4px;"><td class="tableblock halign-left valign-top" style="height: 46.4px;">**Returns**

</td><td class="tableblock halign-left valign-top" style="height: 46.4px;">Counter with length **numberLength**, or if the counter is not incremented this day for the user who creates the entity and for this module then 1 with length **numberLength**

</td></tr><tr style="height: 46.4px;"><td class="tableblock halign-left valign-top" style="height: 46.4px;">**Example call**

</td><td class="tableblock halign-left valign-top" style="height: 46.4px;">{DailyCounterPerUserPerModule(myName; 1)} returns 5

</td></tr></tbody></table>

</div></div><div class="sect2">  
</div></div></div>### Example - Calculate monthly fee for an Opportunity

#### Use Case

The user would like to calculate a monthly fee of an opportunity to a custom field by dividing the amount of the opportunity by the duration.

#### Setup

Our opportunities module has a dropdown field called Duration with values: (database value in brackets) 6 months \[6\], 1 year \[12\], 2 years \[24\]. There is also a currency field called Monthly.

#### Workflow

Go to Workflow module and create a new Workflow. Set the base options like the following:

<div class="sect1" id="bkmrk-name%3A%C2%A0as-you-wish-wo"><div class="sectionbody"><div class="sect2"><div class="sect3"><div class="paragraph">  
</div><table class="tableblock frame-all grid-all"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="tableblock halign-left valign-top">**Name:** as you wish

</td><td class="tableblock halign-left valign-top">**Workflow Module:** Opportunities

</td></tr><tr><td class="tableblock halign-left valign-top">**Status:** Active

</td><td class="tableblock halign-left valign-top">**Run:** Only on save

</td></tr><tr><td class="tableblock halign-left valign-top">**Run on:** All records

</td><td class="tableblock halign-left valign-top">**Repeated runs:** checked

</td></tr></tbody></table>

<div class="paragraph">  
</div></div></div></div></div>[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Rjpimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Rjpimage.png)

We do not create any conditions, since we would like the Workflow to run on all opportunities.

Now, add an action and select Calculate Fields from the dropdown.

Then, add two fields from Opportunities as parameters. First, select Opportunity amount (amount) and add it as a parameter (it will be {P0}) then select Duration and the raw value option from the data type dropdown and add it as parameter two (it will be {P1}). There is no need to add any relational parameters for this formula.

Now, add a formula for the monthly field and fill the textbox with the following formula:

<div class="sect1" id="bkmrk--10"><div class="sectionbody"><div class="sect2"><div class="sect3"><div class="paragraph">  
</div><div class="literalblock"><div class="content">  
</div></div></div></div></div></div>```
{divide({P0}; {P1})}
```

<div class="sect1" id="bkmrk--11"><div class="sectionbody"><div class="sect2"><div class="sect3"><div class="literalblock"><div class="content">  
</div></div><div class="paragraph">  
</div></div></div></div></div>So the whole action should look like this:

<span class="image">[![ExampleCF updated1](https://docs.suitecrm.com/images/en/user/ExampleCF_updated1.png "Example Workflow")](https://docs.suitecrm.com/images/en/user/ExampleCF_updated1.png)</span>

Save the Workflow and create a new Opportunity:

<span class="image">[![ExampleCF orig2](https://docs.suitecrm.com/images/en/user/ExampleCF_orig2.png "Example Workflow")](https://docs.suitecrm.com/images/en/user/ExampleCF_orig2.png)</span>

As you can see, we did not even add the monthly field to the EditView, because we don’t want to force the user to make calculations. Save the Opportunity and check the results on the DetailView:

<span class="image">[![ExampleCF orig3](https://docs.suitecrm.com/images/en/user/ExampleCF_orig3.png "Example Workflow")](https://docs.suitecrm.com/images/en/user/ExampleCF_orig3.png)</span>

AOW Calculated Fields was contributed by [diligent technology &amp; business consulting GmbH](http://www.dtbc.eu/)

#### Removing Actions

You can remove Action Lines by clicking the '**X**' on the top right-hand side of the Action.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Gb5image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Gb5image.png)

#### Removing Fields and Relationship Lines

You can remove Field and Relationship Lines by clicking the '**-**' on the left-hand side of the Action.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Ay8image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Ay8image.png)

# Events

<div class="sticky-spacer" id="bkmrk-"><div class="sticky-wrapper is-sticky" id="bkmrk--1"><div id="bkmrk--2"></div></div></div><div id="bkmrk--3"><div id="bkmrk--4"></div></div>## Event Locations

The Locations module is used to capture the venue/site information where events are held.

#### Creating Locations

**1.** Access locations module from second side nav bar and select **'Create Location'**.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/SW0image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/SW0image.png)

**2.** This will take you to the Edit View. Enter information into the appropriate fields, all required fields are marked with a red asterisk and must be completed prior to saving.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/hnZimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/hnZimage.png)

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/3aDimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/3aDimage.png)

**3.** Once the necessary information is entered, click **Save.**

## Events

The Events module is used to capture information an particular event and send out invites to delegates. To view the Events held within the system click the **'Events'** tab on the navigation bar. This will take you to the Events List View.

#### Creating Events

**1.** You can access the Events module on the side navigation bar and select **'Create Event'**.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/yXsimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/yXsimage.png)

**2.** This will take you to the Edit View. Enter information into the appropriate fields, all required fields are marked with a red asterisk and must be completed prior to saving.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/sBhimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/sBhimage.png)

The following fields are found on the Events module:

<div id="bkmrk-name%C2%A0%E2%80%93-the-name-of-t"><div class="sect1"><div class="sectionbody"><div class="paragraph">  
</div><div class="ulist">- **Name** – The name of the event
- **Start** **Date** – The date and time of when the event starts
- **End** **Date** – The date and time of when the event ends
- **Duration** – The duration of the event. This will automatically change the end date or be altered automatically if the end date is changed.
- **Location** – This is a relationship to the **Event Locations** module.
- **Budget** – The budget for the event.
- **Email** **Invite** **Template** – The **Email Template** that will be sent to associated Delegates.
- **Accept** **Redirect** **URL** – The web page invitees should be redirected to after you accept an invite using the link provided in the **Email Template**.
- **Decline** **Redirect** **URL** – The web page invitees should be redirected to after you decline an invite using the link provided in the **Email Template**.
- **Description** – More information about the Event.
- **Assigned**-**To** – Who the assigned user is for this event. This defaults to you who creates the event.
- **Created** **By** – Which user created the event.

</div><div class="paragraph">  
</div></div></div></div>**3.** Once the necessary information is entered, click **Save**

## Adding Delegates

**1.** Navigate to the Event Detail View.

**2.** Navigate to the Delegates sub-panel found below the 'Event Details' panel.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/IASimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/IASimage.png)

**3.** Click **'Select Delegates'**. A list of options will appear.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/dL3image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/dL3image.png)

**4.** Select the appropriate option depending on who should be added to the Event.

<div id="bkmrk-target%C2%A0list%C2%A0%E2%80%93-select"><div class="sect1"><div class="sectionbody"><div class="paragraph">  
</div><div class="ulist">- **Target** **List** – Select a **Target List** of individuals to be associated to the event. All **Targets**, **Leads** and **Contacts** on this '''Target List '''will be added to the **Event**.
- **Targets** – Select **Targets** to be associated to this **Event**.
- **Contacts** – Select **Contacts** to be associated to this **Event**.
- **Leads** – Select **Leads** to be associated to this **Event**.
- **Events** – Select an **Event** to associate that **Event’s** delegates to this **Event**.

</div><div class="paragraph">  
</div></div></div></div>**5.** Once an option has been chosen a new pop-up box will appear to search and select records from the module type that was chosen.

**6.** The Delegates sub-panel will populate with the records selected.

## Sending Invites To Delegates

**1.** Navigate to the Delegates sub-panel.

**2.** Choose action **'Send Invites'**.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/hs5image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/hs5image.png)

**3.** This will send the email template selected in the 'Email Invite Template' to all Delegates who have the status 'Not Invited'

**4.** Once selected the Delegate status will automatically update to 'Invited'.

<span class="image">[![image163](https://docs.suitecrm.com/images/en/user/image163.png "Sending Invites to Delegates")](https://docs.suitecrm.com/images/en/user/image163.png)</span>

**5.** Choosing 'Resend Invites' will send invites out to all Delegates associated to the Event who have yet to respond.

## Managing Delegates Acceptance Manually

**1.** Navigate to the Delegates sub-panel.

**2.** Select the Delegates that require your 'Accept Status' to be updated.

**3.** Choose action 'Manage Acceptances'

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/iYyimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/iYyimage.png)

**4.** A list of options will appear. Select appropriate statuses:

<span class="image">[![228Acceptances](https://docs.suitecrm.com/images/en/user/228Acceptances.png "Manage Acceptances")](https://docs.suitecrm.com/images/en/user/228Acceptances.png)</span>

**5.** This will update the Delegates 'Accept Status' accordingly.

<span class="image">[![229Accepted](https://docs.suitecrm.com/images/en/user/229Accepted.png "Accept Status")](https://docs.suitecrm.com/images/en/user/229Accepted.png)</span>

Acceptance will my automatically updated if the Delegate chooses to accept using the link provided in the email template.

## Updating Delegates Status Manually

**1.** Navigate to the Delegates sub-panel.

**2.** Select the Delegates that require your attendance to be updated.

**3.** Choose action 'Manage Delegates'

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/vk4image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/vk4image.png)

**4.** A list of options will appear. Select the appropriate status; Invited, Not Invited, Attended or Not Attended.

<span class="image">[![231Manage delegates](https://docs.suitecrm.com/images/en/user/231Manage_delegates.png "Manage Delegates")](https://docs.suitecrm.com/images/en/user/231Manage_delegates.png)</span>

**5.** This will update the Delegates 'Status' accordingly.

<span class="image">[![232Updated status](https://docs.suitecrm.com/images/en/user/232Updated_status.png "Accept Status")](https://docs.suitecrm.com/images/en/user/232Updated_status.png)</span>

Acceptance will be automatically updated if the Delegate chooses to accept using the link provided in the email template.

List view Actions, Detail View Actions and Bulk actions are similar to Leads module. Refer Leads module.

# Reports

<div class="sticky-spacer" id="bkmrk-"><div class="sticky-wrapper is-sticky" id="bkmrk--1"><div id="bkmrk--2"></div></div></div><div id="bkmrk--3"><div id="bkmrk--4"></div></div>Advanced Open Reports (AOR) is the reporting module within KiyoCRM. AOR can be accessed by clicking the **'Reports'** link within the navigation menu. The reporting module allows users to report on CRM data from any module and has many features to display key information quickly.

### Creating Reports

You can access the reports module from the side nav bar and select **'Reports',** then click on **'Create Report'.**

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Zv3image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Zv3image.png)

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/zuKimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/zuKimage.png)

You will be presented with the report Edit View. To obtain a list of fields to add to the report, you have to select a module from the Report Module drop down.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/bdIimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/bdIimage.png)

##### Adding Fields

Once you have selected a Report Module, the list of fields available will display on the left panel. You can add fields to the 'Fields' section of the report by expanding the module you wish to select fields from and then drag and drop those fields into the field section.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/vE7image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/vE7image.png)

Once you have added fields to a Report, there are multiple options to configure for those fields:

<div id="bkmrk-display%C2%A0%E2%80%93-true-or-fa"><div class="sect1"><div class="sectionbody"><div class="sect2"><div class="paragraph">  
</div><div class="ulist">- **Display** – True or false option. Allows you to specify whether this field should be displayed on the report, or hidden. Users may wish to add fields to perform a function/sort/group/total but may not wish to show this on the Report.
- **Link** – True or false option. Allows you to make the field a link. Setting this option to true will hyperlink the field on the Detail View of the report, allowing you to click on the record. This will navigate you to the appropriate record. For example, linking the Opportunity Name will take you to the Detail View of that Opportunity.
- **Label** – This is the label that will be displayed for the Column/Field on the Report. You can change the label from the default to any alphanumerical value.
- **Function** - Provides five options: Count, Minimum, Maximum, Sum and Average. Allows you to perform functions on alphanumerical fields. Users may wish to calculate the average Opportunity Amount, or Count total Opportunities at a given Sales Stage.
- **Sort** – Ascending or Descending. Allows you to select whether to sort the field/column descending or ascending. This can be done for all fields.
- **Group** – True or false option. Allows you to group by this field. For example, you may wish to group by Sales Stage when reporting on an Opportunity.
- **Total** – Provides three options: Count, Sum and Average. This allows users to perform total calculations on numerical fields. This is useful for financial reporting such as the total value of all Opportunities at a given Sales Stage.

</div></div></div></div></div>##### Adding Conditions

Once you have added the fields to your Report, you can add condition lines to the Report. You can add conditions with the same procedure as adding fields. Using the drag and drop functionality, you can drag fields into the 'Conditions' area which will add the field and allow you to specify the condition for that field.

### Charts

You can add charts to Reports. Charts provide a visual representation of the Report data to you. In some scenarios, or for particular users, visual aids such as charts can assist quicker analysis and better understanding.

##### Chart Types

There are six types of charts that the user can select to display Report data. These are:

<div id="bkmrk-pie-chart-bar-chart-"><div class="sect1"><div class="sectionbody"><div class="sect2"><div class="paragraph">  
</div><div class="ulist">- **Pie Chart**
- **Bar Chart**
- **Line Chart**
- **Radar Chart**
- **Stacked Bar**
- **Grouped Bar**

</div><div class="paragraph">  
</div></div></div></div></div>To add a chart, you can click the **'Add Chart'** button, below the Conditions section within the Report Edit View.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Ybfimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Ybfimage.png)

Once you click add chart, you will be presented with the option to specify the following information:

<div id="bkmrk-title%C2%A0%E2%80%93-allows-the-u"><div class="sect1"><div class="sectionbody"><div class="sect2"><div class="paragraph">  
</div><div class="ulist">- **Title** – Allows the user to specify the title for the chart. This will show on the Detail View of the Report and also on the dashlet chart.
- **Type** – This allows the user to select from one of the six chart types detailed above.
- **X Axis** – Allows the user to select the column that should be used for the X Axis.
- **Y Axis** – Allows the user to select the column that should be used for the Y Axis.

</div><div class="paragraph">  
</div></div></div></div></div>[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/xciimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/xciimage.png)

Once you have specified the chart details, save the Report. This will display the chart on the Detail View of the Report, below the list of records returned.

## Reports Dashlets

You can display a Report within a dashlet. It is possible to view multiple Report results as you can add multiple Report dashlets and select different Reports within each dashlet. To do this, add the Reports dash let to your homepage.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/IVzimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/IVzimage.png)

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/2LDimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/2LDimage.png)

Once you have added the dashlet, you need to select the Report you wish to display within the dashlet. To do this, click the pencil icon to edit the dashlet.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/sKdimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/sKdimage.png)

This allows the user to select the Report they wish to display within the dashlet.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/ERdimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/ERdimage.png)

Once you have selected the Report, click **Save**. This will update your Reports dashlet to show the results of the Report.

For full details on adding and managing dashlets, see the Dashboard section of this user guide.

### Reports Charts Dashlets

You can specify to only select to display a chart for Report dashlets. To do this, edit your Report dashlet and select the 'Only use charts' option. This will then list all charts you have created for this Report.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/0Ypimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/0Ypimage.png)

Select a chart or multiple charts and click **Save.** This will display the results in the chart selected.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/wuoimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/wuoimage.png)

### Scheduled Reports

You can schedule reports to be automatically run and emailed to the required Contact(s). This allows users to schedule reports to be sent to Managers or Team Leads either Daily, Weekly or Monthly. To create a Scheduled Report, you can click the **'Create'** option within the Scheduled Reports Sub-panel on the Detail View of the Report. You can also select existing Scheduled Reports to relate to the Report.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/snVimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/snVimage.png)

Once you have clicked **'Create'**, there are options to set for the Scheduled Report. Give the Scheduled Report a relevant name. In this example, we will use 'Daily Opportunities Report for Managers'.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/mB2image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/mB2image.png)

You can select the 'Advanced' option for report scheduling. This will provide a cron notation style option. This is best suited for System Administrators or advanced users.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/7Xnimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/7Xnimage.png)

Once you have entered a name and selected a schedule, click **Save.**

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/Q04image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/Q04image.png)

Once you save the Scheduled Report record, this will display in the Scheduled Reports subpanel within the Detail View of the Report.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/zF9image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/zF9image.png)

You can view when the Scheduled Report last ran by viewing the 'Last Run' column/field on the sub-panel. This shows in a date/time format.

# Reschedule

<div class="sticky-spacer" id="bkmrk-"><div class="sticky-wrapper is-sticky" id="bkmrk--1"><div id="bkmrk--2"></div></div></div>## Rescheduling a Call

To reschedule a Call, you can click the 'Reschedule' button on the Detail View of a Call which has been defined as Outbound and Planned.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/FsVimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/FsVimage.png)

## Defining the Details

Clicking the Reschedule button will produce a pop up or dialogue box up. This enables users to set the date and time for the rescheduled Call.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/6gQimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/6gQimage.png)

You can also select a reason for the incomplete/unsuccessful Call from the drop-down list. Once the details have been defined, click the **'Save'** button to save the Call.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/d89image.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/d89image.png)

## Tracking History

Once Saved, the Call is rescheduled for the new date and time. you can view all Call Reschedule history by clicking the **'Reschedule'** tab on the Calls Detail View.

[![image.png](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/scaled-1680-/hHjimage.png)](https://docs.kiyocrm.com/uploads/images/gallery/2025-05/hHjimage.png)

## Altering Reasons Dropdown

System Administrator users can edit the reasons available in the Reschedule pop-up using the drop-down editor. The drop-down list used is called 'call\_reschedule\_dom'.

## Summary

In this chapter we have covered the functionality of the advanced modules. These modules have a very specific purpose - enabling users to improve processes and efficiently report on and manage data.

In the next chapter, we will cover some third-party modules which are part of the KiyoCRM product. These third-party modules provide additional functionality to you such as teams and location mapping.