Hello, I am trying to see how many emails each of our active contacts received for a month, quarter, and year. How do i generate a report that shows, contact name, the total amount of emails that they received per month per quater and per year from their timeline? i also want to break that down by email category
I have come across a case where the user wants that there are multiple hierarchy of folder in the system ,but if one level of folder does not contain any records in it ,it should not be visible in the folders list.
The user does not want to apply access rights as everyone has access to see the folders but if there is no record in a particular folder then only it should not be visible to anyone.
Can this be achieved in Creatio through customisation in the list page?
About the Contact Career entity, I would like to change the current behavior.
Our contacts can be associated with many different companies, with various career states. Currently, for a given contact, when the Primary field is checked on one record, the Current field is automatically unchecked on any record linked to a different account than the primary one.
I was not able to find the code responsible for this behavior. Is it possible to modify it?
I’m working on a business process that randomly assigns contacts as owners of new leads, but only after checking how many leads are already assigned to each contact. The goal is to ensure that each new lead is assigned to the contact who currently owns the fewest leads.
I need guidance or a solution for implementing this logic so that the system correctly identifies the contact with the lowest lead count and assigns the new lead to them.
Purpose is to distribute leads fairly and ensure every lead gets timely attention.
In a process when a new lead is created, add a Read Data element to read from the object above and sort by the open lead count in ascending order. The user read will be the one with the fewest open leads to assign the lead to.
The view could be something like this (this is for postgres and is not tested). You might need to adjust which users are included if you don't want to consider all users (maybe with a join to SysUserInRole to check if they belong to a role?)
create or replace view "UsrVwLeadOwnerCount"
as
select
con."Id",
con."CreatedById",
con."CreatedOn",
con."ModifiedById",
con."ModifiedOn",
con."ProcessListeners",
con."Id" as "UsrContactId",
coalesce(leadstat."NumLeads", 0) as "UsrOpenLeads"
from
"Contact" con
inner join "SysAdminUnit" adm
on con."Id"= adm."ContactId"and adm."SysAdminUnitTypeValue"=4
left join (
select
l."OwnerId",
count(l."Id") as "NumLeads"
from
"Lead" l
inner join "QualifyStatus" qs on l."QualifyStatusId"= qs."Id"
where
qs."IsFinal"=false
group by
l."OwnerId") as leadstat on con."Id"= leadstat."OwnerId"
where
adm."Name"not in ('Supervisor','Mandrill','SysPortalConnection')and
adm."Active"=true
(I'd possibly add another subquery for most recently assigned lead date, so you could add a secondary sort on that in case multiple users have the same open lead count).
You can implement this logic in a business process, but it cannot be done using standard elements only - a Script Task is required to correctly identify the contact with the lowest lead count.
Here is the recommended approach:
1) Use a Read Data element to retrieve all eligible contacts. Make sure it returns a collection of records.
2) Use a subprocess that runs for each item in this collection. Inside the subprocess, add another Read Data element to count how many leads are currently assigned to that specific contact (using the Owner field or your custom ownership field). Pass the result back to the parent process through process parameters.
3) In the parent process, use a Script Task to analyze the collected results and determine which contact has the lowest lead count.
4) Finally, use a Modify Data element to assign the selected contact to the new lead.
This approach ensures that the system always selects the contact with the smallest workload and distributes leads fairly.
The funnel shows all possible stages, after which it outputs data only to those fields that we filter. And it is necessary that the filtered fields are not shown, hidden or deleted. It will not be possible to get it through the observer because it comes as one monolithic object, not different fields For example hide the second and the third row.
Unfortunately, this logic can currently be implemented only through development tools. However, we have already registered an internal idea to add this functionality in future product versions.
Thank you once again for bringing this to our attention — your request helps us increase its priority and makes its implementation more likely in upcoming releases.