Hello, is there a way to filter an activity dashboard metric by distinct values? 

Like 0

Like

4 comments
Best reply

Hello,

The only available option in this case would be to use a pivot table instead.  

Hello!

Thank you for your question.

It sounds like you are referring to adding a dashboard to a record page, and having it filter data based on the current record (e.g., showing only activities related to the specific record you are viewing).

Yes, this is possible in Creatio.

To do this, you need to add a filter to the dashboard widget, so that it displays only data related to the current record.

 We’ve attached a screenshot that shows where and how you can configure this filter.

Please let us know if this answers your questions!

Valeriia Ripnevska,

Hello, thank you for the response.

I'm actually referring to the Classic UI. What you suggested will filter for a specific record but that isn't what I'm after. 

In Classic UI if I select the Activities section, there is a dashboards tab within that section.  Inside one of these dashboards I want to use the metric widget to count unique values. 

For instance, it may show one client name multiple times because many activities exist for that client (phone calls, emails, texts etc), however I want it to count the client only once as a unique value. I can filter the type of activity to only (phone call) for example but there still could be many phone calls for one client so I will see the client appear in the count multiple times.

 Another way to think about it, is that in excel I would use =unique - https://support.microsoft.com/en-us/office/unique-function-c5ab87fd-30a3-4ce9-9d1a-40204fb85e1e or conditional formatting to remove duplicate values, I want to apply the same logic to a creato metric widget in a dashboard.

Hello,

The only available option in this case would be to use a pivot table instead.  

Got it, thank you. Ultimately I wanted it as a Metric but this will suffice.

Show all comments

Hello community

on the release notes for 8.2.2 version is described the new feature

Save data without closing the page. You can now let users stay on the page after they save a new record. The functionality is available for full-sized form pages.

I can't find it, could you direct me?

Like 0

Like

3 comments
Best reply

That is a property that shows for the save data button

Ryan

That is a property that shows for the save data button

Ryan

thanks!

Hi Ryan,

This setting works as expected in the cloud environment, but not in my local environment.

Do you have any suggestions?

Show all comments

I need to set a business process parameter C (integer) as the ceiling of A/B (both integer parameters).

I tried using the following formula:

RoundUp([#A#]/[#B#]) 

but when trying to save I receive this error:

Formula value error: No applicable method 'Ceiling' exists in type 'Math' (at index 5).

Is there anything I need to include in my business process to be able to use the RoundUp function? I already tried RoundOff and it returns the same error.

Like 1

Like

1 comments

Hello, 

 

In versions 7.17.3 and 7.17.4, to resolve the error, it is necessary to disable the feature Feature-UseTypeCastExpressionValidationInProcess by adding the following line to the application's \Terrasoft.WebApp\web.config file:

xml

<add key="Feature-UseTypeCastExpressionValidationInProcess" value="false" />

As an alternative solution, the issue can also be resolved by explicitly specifying data type casting in the formula.

Conversions that may lead to precision loss—for example, the error message “An error occurred in the formula: Cannot convert type 'Double' to 'Int32'”—must be handled explicitly through proper type casting.

 

Thank you !

Show all comments

Hi.  

Is it possible in Creatio to create a form that creates and sends a formatted email?

We want to create a form in Creatio to collect data.  Our sales reps will fill this out, using pick lists, radio buttons, and freeform text.  Then they will "submit" that form and Creatio will format the data in the email body (similar to code below) and send it off.

Any suggestions, info, or pointers you may have is appreciated.

Thanks!
Rob

Sales Rep:    Oswald Cobblepot
Customer:     Dupont
Opportunity:  Dupont #1234
Industry:     Chemical - Other
Vertical:     Chemical
Sub-Vertical: free form text here (75 chars)
Type:         Contract renewal
Holder:       free form text here (75 chars)
Tons:         <500
Truckloads:   1K to 1.5K
Like 0

Like

1 comments

Hello!

Yes, what you're describing is fully achievable in Creatio using a simple business process.

Here’s how it works:

We can create a form inside Creatio (as a section or a page) with the necessary fields: dropdowns, radio buttons, and free-text inputs.

When your sales reps click "Submit", a business process is triggered.

This process will:

  1. Read the entered data from the form.
     
  2. Format the data into a structured email body (for example, using a table or plain text with labels).
     
  3. Send the email to the defined recipient, using Email element. The email body can include HTML for styling if needed.

As an alternative, you can also create a printable form (a printable report template). This report can then be reused within a business process and sent as an attachment in the email - for example, as a structured summary of the submitted data.

Show all comments

 

Hi,

 

One of our objets has started as a lookup, but over time it evolved and we now want it to behave as a regular entity. For example, a page was created to display and manage the contents and we want the business to be able to edit its contents.

Saving changes is now blocked by the business people not having the "CanManageLookup" permission. We don't want to grant that permission to the users, but rather remove the limitation from the object.

How can we achieve this?

Kind regards,

Koen Bonnet

Like 0

Like

1 comments

You'd basically change the Parent of the object from BaseLookup to BaseEntity. However, doing that will have the following impact: BaseLookup gives the object Name and Description, BaseEntity does not have those. This could break a lot of things with the page and also with data in records already saved.

I've not tested making this change, so definitely try this out in a test or dev system before attempting any of this in prod. What I would probably do, before you make the change from BaseLookup to BaseEntity, first create new custom Name and Description columns, for example UsrName, etc (assuming these are being used). Then migrate all data from the lookup columns Name & Description to the new custom UsrName & UsrDescription. Then change the page to map to these new custom fields. Then, change the parent of the object to BaseEntity.

Maybe there is some way to override the check for CanManageLookups for your one object as an exception, but I've never looked into that. I assume you'd need to go the route outlined above.

Ryan

Show all comments

Hello community,

We have a business process with this starting condition. MailboxSyncSettings = Guid

 We would like no to hardcode this starting condition, for this reason we have added parameter in the Process which is linked with a System Setting.

If we change the starting conditon, it wont trigger

Is there any workaround for this?

Sasor

Like 0

Like

1 comments

Hmm. Not sure that is possible. Assuming that the params aren't loaded until the process is started, but it won't start without the param being loaded. Some of the OOTB processes for cases check that after. For an example, you can see the process "Run process: Reopen case and notify assignee on receiving an answer regarding the case" that sort of works like this. It starts for any email connected to a case. Then the script task checks to see if it is from one of the incident mailboxes. However, that seems like a bad approach, adding the overhead of a process triggering for every single email (the difference of the OOTB one above is that it's only for emails already connected to cases). Might be a better approach to use an EntityEventListener. If you wanted to keep the ease of using a process to do the main work, you could have the listener code flag the email, then that flag is what really triggers the process.

Show all comments

Hi.  

I am following up on a thread I posted earlier which seems to have withered -- I am looking for an alternate path.    (Link to original thread is below)

Is there a "No Code" way to add to the email headers that Creatio generates? 

I know there is a way to code the email, but we have so many processes that send out emails, I will have to hire a developer to do this.   (Code is included below for reference, you can see there the header I need to add to the outbound emails)

If we could add "X-Auto-Response-Suppress: All" to the header, we would eliminate most if not all "out of office" responses we get back.

Thanks
Rob

var message = new Terrasoft.Mail.Sender.EmailMessage
{
	// Sender email address.
	From = "Sender@email.com",
	// Recipient email addresses.
	To = new List&lt;string&gt;{ "first@recepient.co", "second@recepient.co" },
	// Copy optional
	Cc = new List&lt;string&gt;{ "first@recepient.co", "second@recepient.co" },
	// Hidden copy optional
	Bcc = new List&lt;string&gt;{ "first@recepient.co", "second@recepient.co" },
	Subject = "Message subject",
	// Email body.
	Body = "Body",
	// Priority, Terrasoft.Mail.Sender.EmailPriority enumeration values.
	Priority = Terrasoft.Mail.Sender.EmailPriority.Normal,
	// Headers you want to add to your email
	HeaderProperties = new List&lt;Mail.Sender.EmailMessageHeader&gt;
	{
		new Mail.Sender.EmailMessageHeader
		{
			Name = "X-Auto-Response-Suppress",
			Value = "All"
		}
	}
};

https://community.creatio.com/questions/add-email-header-x-auto-response-suppress-all

Like 0

Like

2 comments
Best reply

If you used the code approach, you could make a generic process you'd use as a subprocess. Any process that needed to send email could use that one process. However, you'd lose the ability for an easy designer for composing the email in the process and would have to send HTML to the subprocess to use as the body (not an issue with the subprocess route specifically, but an issue with using code to send the email). 

If it worked for you, you could create the emails themselves as message templates. The subprocess would need to process that template as well to generate the body. At leas that way you could use an easy designer to create the messages instead of just forming the HTML.

Ryan

Does not appear to be possible without code. The send email process element doesn't expose any properties for the header. 

If you used the code approach, you could make a generic process you'd use as a subprocess. Any process that needed to send email could use that one process. However, you'd lose the ability for an easy designer for composing the email in the process and would have to send HTML to the subprocess to use as the body (not an issue with the subprocess route specifically, but an issue with using code to send the email). 

If it worked for you, you could create the emails themselves as message templates. The subprocess would need to process that template as well to generate the body. At leas that way you could use an easy designer to create the messages instead of just forming the HTML.

Ryan

Show all comments

Hi Community,

I’m running multiple processes using subprocesses. In the business process, there’s an element where I can retrieve the values for the total processes, completed processes, and terminated processes. However, these values are always showing as 0, even though there are completed processes.

Is there something wrong with my configuration below?

 

element parameter


 

subprocessnotificationprocess logpush notif

Like 0

Like

1 comments

That works for me, but it does require not running the subprocesses in the background (which I can see from your screenshot that you're not)

Show all comments

Currently, if I set a campaign with emails, it excludes weekends. Is there a setting where I can exclude this blackout period? I want to be able to include weekends for campaigns.

Like 0

Like

1 comments

Hello,

Thanks for your question!

By default, campaigns in Creatio do not have a built-in restriction on running over weekends — they execute based on the Default campaign execution frequency setting (e.g., every X minutes or hours). However, if you're noticing that emails aren’t being sent during weekends, a few things could be affecting this:

-Trigger emails used in campaigns may have a configured delivery window that excludes weekends. It's worth checking their delivery settings.

 

-If your environment is hosted in the cloud, there's a chance the issue is related to site inactivity. When there is no user activity (which can be typical over weekends), the site may go into sleep mode to conserve resources — and that can prevent campaigns from executing.

If you're still experiencing this behavior, we recommend submitting a support case with remote access enabled.

Show all comments

Hi Community,

I am reading a file using Process file system action. I have to send the base64 format of the file to an external api. How can I do that conversion using the script task?

Any code/resource would be really helpful. TIA

Like 0

Like

1 comments

Hello, 

To convert a file read via the "Process file" system action into a Base64 string within a business process, you will use a Script Task. This allows you to perform the conversion using C# and then pass the resulting string to an external API.

var files = context.Process.FindFlowElementByName("ObjectFileProcessingUserTask1")  
  .GetPropertyValue("ObjectFiles") as ICompositeObjectList<ICompositeObject>;

if (files != null)   
{  
  foreach(var file in files)   
  {  
      if(file.TryGetValue<EntityFileLocator>("File", out EntityFileLocator fileLocator))   
      {  
          IFile fileItem = UserConnection.GetFile(fileLocator); // This now works due to the 'using' directives [11]  
          using (System.IO.Stream stream = fileItem.Read())   
          {  
              using (var memoryStream = new System.IO.MemoryStream())  
              {  
                  stream.CopyTo(memoryStream);  
                  byte[] content = memoryStream.ToArray();  
                  var encodedContent = Convert.ToBase64String(content);  
                  Set<string>("EncodedFile", encodedContent);  
              }  
          }  
      }  
  }  
}

return true;

In the Methods tab, add the following to the Usings list:

  • Terrasoft.File
  • Terrasoft.File.Abstractions
     

     

Show all comments