Business Process
Sales_Creatio

I am reading a collection of records, and would like to concatenate one of the fields from all the records into one long field. I tried using a sub-process to do the concatenation but it does not seem to pass anything back. Has anyone found a way to do this?

Like 0

Like

7 comments

Hi Heather, 

I usually do this in a script task with an ESQ, however, if you can set a field to flag the records you can do it in a process without coding. You can see this article for some details on how to loop in a process by flagging records: https://customerfx.com/article/how-to-loop-through-records-in-a-process…

The basic idea is:

  1. Create a process param that will hold the concatenated value
  2. Use a modify data to flag all the records you want to work with
  3. Now, read the flagged records
  4. Check if you got a record by checking if the Id != Guid.Empty
  5. Concatenate the value in the process param
  6. Unflag the record by using a modify data to un-set the field
  7. Loop back to #3

Make sure the maximum number of repetitions setting for the process is larger than the typical set of data you'd be working with. Anyway, hope this helps. Of course, doing it in code is pretty straight forward as well if you're interested in going that route I'd be happy to help.

Ryan

Ryan Farley,

Thanks for your response. I have been trying to get away from using loop flags because it causes all the records to be marked as "modified", which causes confusion about when the records were actually last modified by a user. Could you give me an example of how you do it with a script task? I have never worked with script tasks before.

Heather,

Here's an example that uses an EntitySchemaQuery to read all accounts with a type of Customer and creates a comma delimited string of the account names. When done, it puts the value in a process parameter named TextParam.

var text = "";
 
var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Account");
esq.AddColumn("Name");
 
var customerFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Type.Name", "Customer");
esq.Filters.Add(customerFilter);
 
var accounts = esq.GetEntityCollection(UserConnection);
foreach (var account in accounts)
{
	var name = account.GetTypedColumnValue<string>("Name");
	text += name + ", ";
}
text = text.Trim().TrimEnd(',');
 
Set("TextParam", text);
return true;

Hope this helps get you started.

Ryan

Ryan Farley,

Thanks so much, I was able to get that to work. Do you happen to know how to get the value from a non-Typed column? I'm assuming you have to get the GUID and then do a separate lookup from that table?

Heather,

If I am understanding you correctly, you can do that all in the same query. For example, in the example I posted, let's say you want to get the Account Owner's email address (Owner is a lookup to contact). I would add a column like this:

esq.AddColumn("Owner.Email");

Then, I could read that from the results like this (the dots are replaced with underscores):

var ownerEmail = account.GetTypedColumnValue<string>("Owner_Email");

You can go through many object relationships like this, for example Owner.City.Name, etc.

Ryan

 

Ryan Farley,

Thank you for all your help so far. I will check out the method you suggest. I got this almost working using a different method and I'm wondering if you can help with the last step. I just need to get the value of the record that I want to filter on in my script. I have tried a number of different syntax but just keep getting errors. I'm tryin gto get the UsrContact, which is a Contact Lookup record, and add that value to my SQL as the "user". I have tried it as a Guid and a string and get different errors depending on what way I do it.

 

var text = "";

var user = Get<string>("UsrContact");

var sql = "select case when cc.Name is null then ' ' else cc.Name end, "+ 

                 "case when org.Name is null then ' ' else org.Name end, "+ 

                 "case when cc.Phone is null then ' ' else cc.Phone end, "+ 

                 "case when cc.MobilePhone is null then ' ' else cc.MobilePhone end, "+ 

                 "case when freq.Name is null then ' ' else freq.Name end, "+ 

                 "case when rm. UsrLastCPIContact is null then ' ' else rm.UsrLastCPIContact end "+

            "from kwlcustomerMatrix rm "+ 

            "left outer join Contact cc on rm.KwlRCustomerContact1Id=cc.ID "+ 

            "left outer join Account org on rm.KwlCMAccountId=org.ID "+

            "left outer join KwlFrequency freq on rm.KwlExpectedMinFrequencyId=freq.ID "+

            "where rm.KwlROurcontact1Id='"+user+"'";

Actually, that issue was a silly mistake on my part. I got this working. Thank you so much for your help in this. I will post my code in case this is useful for someone else in the future.

var text = "";
Guid user = Get&lt;Guid&gt;("UsrContactGuid");
var sql = "select case when cc.Name is null then ' ' else cc.Name end, "+ 
                 "case when org.Name is null then ' ' else org.Name end, "+ 
                 "case when cc.Phone is null then ' ' else cc.Phone end, "+ 
                 "case when cc.MobilePhone is null then ' ' else cc.MobilePhone end, "+ 
                 "case when freq.Name is null then ' ' else freq.Name end, "+ 
                 "case when rm. UsrLastCPIContact is null then ' ' else convert(varchar, rm.UsrLastCPIContact, 23) end "+ 
            "from kwlcustomerMatrix rm "+ 
            "left outer join Contact cc on rm.KwlRCustomerContact1Id=cc.ID "+ 
            "left outer join Account org on rm.KwlCMAccountId=org.ID "+
            "left outer join KwlFrequency freq on rm.KwlExpectedMinFrequencyId=freq.ID "+
            "where rm.KwlROurcontact1Id='"+user+"'"+
            "ORDER BY CASE WHEN freq.Name = 'Daily' THEN '1'"+
                          "WHEN freq.Name = 'Semi-Weekly' THEN '2'"+
                          "WHEN freq.Name = 'Weekly' THEN '3'"+
                          "WHEN freq.Name = 'Monthly' THEN '4'"+
                          "WHEN freq.Name = 'Quarterly' THEN '5'"+
                          "WHEN freq.Name = 'Semi-Annually' THEN '6'"+
                          "WHEN freq.Name = 'Annually' THEN '7'"+
                          "ELSE freq.Name END ASC";
 
 
var query = new CustomQuery(UserConnection, sql);
using (var db = UserConnection.EnsureDBConnection())
{
    using (var reader = query.ExecuteReader(db))
    {
        while (reader.Read())
        {
 
            text += "&lt;tr&gt;&lt;td&gt;"+reader.GetString(0)+"&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;"+
                        "&lt;td&gt;"+reader.GetString(1)+"&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;"+
                        "&lt;td&gt;"+reader.GetString(2)+"&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;"+
                        "&lt;td&gt;"+reader.GetString(3)+"&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;"+
                        "&lt;td&gt;"+reader.GetString(4)+"&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;"+
                        "&lt;td&gt;"+reader.GetString(5)+"&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;";
 
 
 
 
 
        }
    }
}
 
text = text.Trim().TrimEnd(',');
Set("UsrEmailContentTableRows", text);
return true;

 

Show all comments
login
Error msg during the login process
ServiceActivationException
Sales_Creatio
7.14

I am unable to login to a local instance and nothing happens when clicking the login button. 

chrome console shows that the server responded with a status of 500 

(System.ServiceModel.ServiceActivationException)

 

Headers and request body

 

All features are enabled for the machine where IIS server is deployed .

I tryied to redeploy the site application from scratch still facing the same issue.

Like 0

Like

1 comments

Hello,

 

Please contact Creatio support directly (via email support@creatio.com) to check this issue. It will be easier to help you this way!

 

Best regards,

Angela

Show all comments

When our users click on Display Data, they are required to click select more over and over again. Is there a way to increase the default number of records when using Display Data from a Dashboard?

Like 1

Like

1 comments

Hello Cricket,

 

Hope you're doing well.

 

At the moment the base logic of the application doesn't allow to show you either more or all the records after clicking on the 'Show more' button. I have informed our R&D department about this case so they could consider enhancing the following functionality in the upcoming releases.

 

Best regards,

Roman

Show all comments
7.17
Outlook
IPM.Activity
IMP.Activity

Hello Creatio !

 

We've notice a bug in 7.17 with Creatio Outlook Connector. 

Apparently when you add Office 365 mailbox account in Creatio and add a Journal entry in Outlook - Creatio thinks that this is an email, and pull it to CRM as an email.

Its looks like this (see attachment).

 

I've tried to reach Creatio support with this, they told me thats an Outlook problem that Creatio pulls journal entry as an email. Funny it is.

 

Question is: will this gonna be fixed or in order to use Creatio Outlook connector we must dont use Journal in Outlook?

 

File attachments
Like 0

Like

0 comments
Show all comments
aspose
Sales_Creatio
7.17

I registered at aspose cloud, made an app.  Got the client id and secret, and put those in the settings in Creatio.  But when trying to print, get this error:

 

 

Request Error

      The server encountered an error processing the request. The exception message is 'Bad Request'. See server logs for more details. The exception stack trace is: 

         at Aspose.Words.Cloud.Sdk.RequestHandlers.ApiExceptionRequestHandler.ThrowApiException(HttpWebResponse webResponse, Stream resultStream)

   at Aspose.Words.Cloud.Sdk.RequestHandlers.ApiExceptionRequestHandler.ProcessResponse(HttpWebResponse response, Stream resultStream)

   at System.Collections.Generic.List`1.ForEach(Action`1 action)

   at Aspose.Words.Cloud.Sdk.ApiInvoker.ReadResponse(WebRequest client, Boolean binaryResponse)

   at Aspose.Words.Cloud.Sdk.ApiInvoker.InvokeInternal(String path, String method, Boolean binaryResponse, String body, Dictionary`2 headerParams, Dictionary`2 formParams, String contentType)

   at Aspose.Words.Cloud.Sdk.RequestHandlers.OAuthRequestHandler.RequestToken()

   at Aspose.Words.Cloud.Sdk.RequestHandlers.OAuthRequestHandler.ProcessUrl(String url)

   at Aspose.Words.Cloud.Sdk.ApiInvoker.<>c__DisplayClass10_0.b__0(IRequestHandler p)

   at System.Collections.Generic.List`1.ForEach(Action`1 action)

   at Aspose.Words.Cloud.Sdk.ApiInvoker.InvokeInternal(String path, String method, Boolean binaryResponse, String body, Dictionary`2 headerParams, Dictionary`2 formParams, String contentType)

   at Aspose.Words.Cloud.Sdk.WordsApi.ConvertDocument(ConvertDocumentRequest request)

   at Terrasoft.Configuration.AsposeCloudPdfConverter.Convert(Byte[] data)

   at Terrasoft.Configuration.ReportService.ReportService.GenerateMSWordReport(String urlTemplateId, String urlRecordUId, Boolean convertInPDF)

   at Terrasoft.Configuration.ReportService.ReportHelper.CreateReport(String entitySchemaUId, String reportSchemaUId, String templateId, String recordId, String reportParameters, Boolean convertInPDF)

   at Terrasoft.Configuration.ReportService.ReportService.CreateReportsList(String entitySchemaUId, String reportSchemaUId, String templateId, String[] recordIds, String reportParameters, Boolean convertInPDF)

   at SyncInvokeCreateReportsList(Object , Object[] , Object[] )

   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)

   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)

   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)

   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

Like 0

Like

3 comments
Best reply

Hi Chris,

 

Here is the feedback we received:

You need to check the values in the Creatio system settings connected to the Aspose service.

Please use the screenshot below to check whether the Aspose setting values match the respective system settings in Creatio.:

 

 

After you apply the changes, we recommend you to log out and log back into Creatio for checking the updates.

 

Hope this helps, 

Have a good day!

Hi Chris,

 

Thank you for your message.

We have forwarded your request to the responsible team.

We will get back to you with a solution as soon as we receive their feedback.

 

Have a good day!

Hi Chris,

 

Here is the feedback we received:

You need to check the values in the Creatio system settings connected to the Aspose service.

Please use the screenshot below to check whether the Aspose setting values match the respective system settings in Creatio.:

 

 

After you apply the changes, we recommend you to log out and log back into Creatio for checking the updates.

 

Hope this helps, 

Have a good day!

Thanks!  That worked.

Show all comments
FileSystemDevelopmentMode
AutogeneratedFiles
Sales_Creatio
7.16

Hi team,

Many times we encounter the error as seen in the below image: 



The above errors are encountered while building workspace in visual studio and also while installing packages. These 'duplications' seems to be coming from auto-generated files.

 

We have followed the instructions to set up file system development mode as per the documentation. Could you please let us know how to overcome this issue?

 

Thanks

Like 0

Like

2 comments

Hello Shivani,

Unfortunately, the image is corrupted and cannot be opened. Could you please resend it?

Thank you in advance!
Olga.

Hi Olga,

I am reattaching the same image 

Show all comments
openquestion
QUESTIONNAIRE
Sales_Creatio
7.17

Hi Community,

Please help me out this question

 

How do you mitigate negative reactions from end users during a product demonstration?

 

Thanks in advance

Like 0

Like

0 comments
Show all comments
FileDownload
FileApiService
Sales_Creatio
7.16

Hi team,

 

When multiple attachements are selected, we want it to get downloaded into a single folder in a given file path. Could you please let us know how to accomplish this? 

 

Thanks

Like 1

Like

2 comments

Hello Shivani,

 

Hope you're doing well.

 

As for now, there is no such functionality. I have informed our R&D department about this case so they could consider enhancing the following functionality in the upcoming releases.

 

Thank you for being interested in the Creatio application and for your ideas of further improvements!

 

Best regards,

Roman

Jasmin Hofstetter,

 

Unfortunately, we do not have an update on the matter as of now.



Best Regards,

Ivanna.

Show all comments
account
Contact
create
Sales_Creatio
7.16

Hi,

Is there a functionality to allow users to search for contacts from an account page? Currently, you can only create a new contact. (Account page -> Contacts -> '+')

 

My use case is to, first search for a contact, and if it doesn't exist, create a new one. For example, "Configuration items"

 

Thanks

Like 0

Like

2 comments

Hello,

 

There is no way to add existing contacts on this detail. The logic of application presupposes that the Account will be selected on a Contact page here http://prntscr.com/qn2vzm. After that the contact will appear on the detail on Account page.

If you still need to add the existing contacts on this detail, it will be necessary to create a new detail according to this development guide:

https://academy.creatio.com/docs/developer/front-end_development/creati…

 

Regards,

Dean

 

If you want to connect one Contact  with several Accounts you should use Job experience detail (probably with some modifications)

Show all comments
system settings
7.17
Sales_Creatio

Hello Community,

 

Could You advise which module i may replace in order to implement function which will calculate and set system variable ?

 

Best Regard,

Marcin

Like 0

Like

1 comments

Hello Marcin,

 

You need to mark this system setting as not cached (uncheck this checkbox):

And create a trigger on the database level on the SysAdminUnit table so to check if the Supervisor is logged in then the value for the setting should be modified (something like this):

CREATE TRIGGER [dbo].[SysAdmUnit_SysSettingValueTrigger]
ON [dbo].[SysAdminUnit]
AFTER UPDATE
AS
BEGIN
DECLARE @admin_unit_id as UNIQUEIDENTIFIER;
DECLARE @loggedin as BIT;
SELECT @admin_unit_id = inserted.Id FROM inserted;
SELECT @loggedin = inserted.LoggedIn FROM inserted;
IF @admin_unit_id = '7F3B869F-34F3-4F20-AB4D-7480A5FDF647' AND @loggedin = 'true'
BEGIN
UPDATE SysSettingsValue SET IntegerValue = 111 WHERE SysSettingsId = 'F8520582-8161-4F36-A88D-028D3BDEFBDE'
END
END

where:

7F3B869F-34F3-4F20-AB4D-7480A5FDF647 - is an ID for the Supervisor user in the SysAdminUnit table

111 - value for the IntegerValue column in the SysSettingsValue table

 

Best regards,

Oscar

Show all comments