I want to export creatio contacts data on a daily basis to specific location

I am taking approach of using BPM tools to create a process where I can read the contact data, convert them all in uppercase and then export it to specific location. 

I don't know how to export data after converting them to uppercase

Like 0

Like

4 comments

The latest version of the Excel reports add-on in the marketplace has a process element to generate excel files. https://marketplace.creatio.com/app/excel-reports-builder-creatio

You could possibly use that in a process and then attach it a record or email it somewhere to include the data you want to export. Not sure if that would help you accomplish the task or not, but wanted to mention that as a no code approach to generate an Excel file as an "export". 

However, you could also read the data from Creatio via OData and write it to files somewhere as well.

Ryan

The API is very powerful as well. There is also a product called Starfish that can work. Depends on your level of expertise. We use both.

Is it possible to make automated process to export contact data on a daily basis without using marketplace products?

 

Ryan Farley,

After reading the description and installation part of Excel reports add-on in the marketplace, I came to know that this product will provide analysis reports in Excel file. Is there a way to have process element in process designer which directly takes data and export it in specific location?

Show all comments

Hi All,

 

We are trying to insert data in a datetime field in contact table from database via API. But the time shown in Creatio is different from the database. For example - one record shows as 2024-01-15 16:54:48.000 in the database whereas in Creatio it shows as 1/15/2024 10:54 AM. We are in central timezone and user profile is set to central timezone. How can we correct this?

 

Thanks

Like 1

Like

1 comments

Hello!

 

Actually it occurs because all dates savings in DB in UTC time zone and only then converting to users according their timezone settings. But when you making API request it returns date same as in DB. There is no possibility to change this behavior at this moment.

Show all comments

Hello Community,

I added an expanse list like below:

I find the Apply column quite wide, and I want to narrow it down, but I can’t do it through the interface (perhaps the width has hit the minimum column width). I have also gone into the source and adjusted the parameters, but it still has no effect. Anyone with experience, please help me. Thanks very much

File attachments
Like 0

Like

2 comments
Best reply

Hi,

 

Unfortunately, the current version does not allow for changing the minimum column width. We have not received similar requests before, which is why the implementation of this functionality was not considered. Based on your request, I will create a suggestion for implementation, and we will collect user feedback to assess the possibility of adding this functionality in future versions. 

 

Please stay tuned for updates, and thank you for helping us improve our products!

Hi,

 

Unfortunately, the current version does not allow for changing the minimum column width. We have not received similar requests before, which is why the implementation of this functionality was not considered. Based on your request, I will create a suggestion for implementation, and we will collect user feedback to assess the possibility of adding this functionality in future versions. 

 

Please stay tuned for updates, and thank you for helping us improve our products!

Sergii Zhmurko,

Thanks very much

Show all comments

Hello community

 

I would like to monitor the progress of the "Generate all schema" request,

While for the "compile all" request I can monitor the progress by checking the build.log file in c:\windows\temp, the "generate all schemas" does not loggine anything.

 

Do you have suggestions?

Like 0

Like

1 comments

Hello!
 

Indeed, we do not log this anywhere, as it’s handled at the database level. We’ll create a task for the R&D team to consider implementing this in future updates.


Thank you for helping make Creatio better!

Regards,

Orkhan

Show all comments

Hi, I've searched and found this post - https://community.creatio.com/questions/how-can-i-manage-my-sale-teams-kpi-creatio-sale which was in March 2022, over 2 years ago "As for target KPI, at the moment there is no corresponding functionality to setup constant numbers in Dashboard section. Our R&D team works on implementing such tool in future releases."

 

Is there any update on this? 

 

It would be very, very beneficial to be able to set a target/constant number to compare against for a variety of metrics. Such as Total Number of Calls / Target Number and I get a percentage or Total Number of Appointments / Target Number and get a percentage. 

 

I know that you can manually do this with a gauge but it doesn't provide a percentage and is very limited.

Like 0

Like

1 comments

You can do this using the format options for a metric. Steps are: 

  1. Set up a metric that would return no results (like Contact where Id is not filled in)
  2. Click the format options. Enter your static number in the Text field. If this is a Freedom UI metric, change Text Position to before and after value

The end result: 

However, this sort of thing is better (IMO) to add to a table (such as a lookup or system setting). Then just have the metric display the max from that field (which would just display that same value since there would be only one number, which would be the max). This allows you to adjust the value there, rather than edit dashboards where used.

Ryan

Show all comments

I’m currently working on establishing a two-way connection between two applications in Creatio for adding and modifying records.
 

  1. One-Way Connection: I successfully created two business processes that allow for one-way synchronization of records.
  2. Two-Way Connection Issue: However, when I attempt to set up the two-way synchronization, it leads to the creation of multiple records in an infinite loop instead of just one record being created or updated.

 

Could anyone provide guidance on how to avoid this infinite loop in a two-way connection? Any insights on best practices for implementing two-way synchronization in Creatio would also be greatly appreciated.
 

I can provide screenshots of my setup for further clarification if needed. I followed the same process for the one-way connection as shown in the attached business process screenshot.

Like 0

Like

2 comments

Good day,

The issue you're encountering is related to the number of records being passed to the subprocess. Here are some suggestions for resolving this situation:

1. Add or adjust recursion trigger conditions:
   - For instance, if the trigger is based on changes to the `Contact.Age` field, consider adding a condition to ensure the age is not empty before initiating recursion.

2. Redesign the process to avoid recursion:
   - Replace recursion with iteration: Instead of processing records one by one with recursion, you can read and process multiple records in a sequential manner, ensuring that you do not handle a new record until the current one is fully processed.
   - Consolidate changes into a single process: Rather than reacting to various changes across different processes, use one process to handle all necessary changes at once. For example, initiate triggers in a single business process (BP) with all modifications related to a specific entity, which helps in minimizing and managing recursion more effectively.

It is crucial to first review the process logic with the above suggestions, as increasing the `MaximumBackgroundRecursionDepth` parameter could lead to application performance issues, such as slowing down or exhausting server memory, which might result in application restarts or stops.

In your system, the `MaximumBackgroundRecursionDepth` parameter is currently set to 100 (default is 100). The issue arises when the number of subprocess calls exceeds this value.

To address this problem, you may need to increase the `MaximumBackgroundRecursionDepth` parameter to accommodate all records, rather than only the initial 100.

Regards,
Orkhan

You need to have some way to determine the source of a record, so if the record came from the other object, you don't send it back again. 

For records added in "Data App", you'd flag those as coming from "Data App" when adding in "Info App", so the process that syncs from "Info App" back to "Data App" knows to exclude it from sending back to "Data App", etc.

If the records need to sync updates as well, you'd want to store the original record's Id value so you know where to update. You could then use the column storing the Id to know to exclude sending it back to add.

Ryan

Show all comments

Hi community,

I’m working on a custom web service in Creatio that connects to an external PostgreSQL database deployed on Neon. My goal is to query data from this external database, acting like a custom ORM. However, I’m running into an issue with using the Npgsql package inside Creatio’s source code.

 

I’ve added the necessary references, but I keep getting the following error:

The type or namespace name 'Npgsql' could not be found (are you missing a using directive or an assembly reference?)

 

I’ve already added the Npgsql.dll to the Terrasoft.web/bin folder and modified the web.config to include a binding redirect for Npgsql. After restarting the IIS server and flushing Redis, I now get a 'System.Data.Common' assembly error.

Here’s the code I’m using:

using Npgsql;
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;
using System.Data;
using System.Collections.Generic;
using Terrasoft.Core;
using Terrasoft.Web.Common;
 
namespace Terrasoft.Configuration
{
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class PostgresService : BaseService
    {
        private string connectionString;
 
        public PostgresService()
        {
            // PostgreSQL connection string
            connectionString = "Host=your_host;Port=5432;Database=your_database;Username=your_username;Password=your_password";
        }
 
        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetData")]
        public List<Dictionary<string, object>> GetData()
        {
            var result = new List<Dictionary<string, object>>();
            try
            {
                using (var connection = new NpgsqlConnection(connectionString))
                {
                    connection.Open();
                    string sql = "SELECT * FROM users LIMIT 100";
 
                    using (var cmd = new NpgsqlCommand(sql, connection))
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var row = new Dictionary<string, object>();
                            for (int i = 0; i < reader.FieldCount; i++)
                            {
                                row.Add(reader.GetName(i), reader.GetValue(i));
                            }
                            result.Add(row);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"Error retrieving data: {ex.Message}");
            }
 
            return result;
        }
 
 
 
    }
}

 

Like 1

Like

1 comments

Hello,

 

Please revert all the changes and perform the setup in the following manner:

 

  1. 1) Deploy another website that will be used as a mediator between the custom PostgreSQL database and your local Creatio app.
  2. 2) Create an endpoint in this separate server that can be accessed either via POST\GET request and that can receive some parameters in the request body.
  3. 3) Create a code in this separate server that will communicate with the custom PostgreSQL server in some method (that will be used as an endpoint to be called).
  4. 4) Call this endpoint from the webservice in local Creatio app and get data from the database as a JSON string and then process it as you need in the local Creatio app.
Show all comments

Hi,

I've got two separate cases where a contact's phone number is displaying as [#PhoneNumber#]:


I've checked the Submitted Forms for both contacts and in each case a phone number was entered:



However, when I look at the Submitted form in table view, the phone number shows up as [#PhoneNumber#] again:


Do you know what might be causing this?

Thanks!

Like 0

Like

1 comments

Hello,

 

Unfortunately, without advanced information about your form setup, it is impossible to tell what exactly went wrong with the number registration.

You can provide the setup in the topic so other users would have a better idea of what exactly is causing the number to be rendered in such a format or create the support ticket so the Creatio employees will have a chance to research this issue.

 

Thank you for being an active part of the Creatio Community!

Show all comments

Hello,
I have a slightly urgent question on how to get Address from Account lookup
the code lookslike this
Terrasoft.sdk.Model.addBusinessRule("Activity", {

  name: "LatLongPreFilled",

  ruleType: Terrasoft.RuleTypes.Custom,

  triggeredByColumns: ["Usrcheck_in"],

  events: [

    Terrasoft.BusinessRuleEvents.ValueChanged,

    Terrasoft.BusinessRuleEvents.Save,

  ],

  executeFn: function (model, rule, column, customData, callbackConfig) {

    if (navigator.geolocation) {

      navigator.geolocation.getCurrentPosition(

        function (position) {

          model.set("Usrcheck_in_longitude", position.coords.longitude, true);

          model.set("Usrcheck_in_latitude", position.coords.latitude, true);


 

          var account = model.get("Account").get("Address");


 

          alert(account);

          Ext.callback(callbackConfig.success, callbackConfig.scope);

        },


 

        function (error) {

          alert("Geolocation failed: " + error.message);

          Ext.callback(callbackConfig.success, callbackConfig.scope);

        }

      );

    } else {

      alert("Geolocation is not supported by this browser.");

      Ext.callback(callbackConfig.success, callbackConfig.scope);

    }

  },

});


i use this: var account = model.get("Account").get("Address"); 
but when i test it, displayed on an alert it says "undefined", but this model.get("Account").get("Id"); or model.get("Account").get("Name"); works fine.
Can anyone help me out? 

Thank you.  

Like 1

Like

3 comments

Hello,

 

Please check if the Address column is present in the SyncColumns array of the Account entity in the ModelDataImportConfig array of the mobile application manifest. It seems that the column is not synced so you receive undefined in the debugger.

Oleg Drobina,


Hi Oleg,
thanks for the reply,

should i add manually on Mobile manifest file or via Mobile Application Wizard?
PS: i don't use debugger like console.log, i use javascript's alert function since i use iOS and i have no clue on how to debug mobile apps on a smartphone, especially iOS.

Yanuar Adinagoro Vishnu Saputro,

 

It can be either manually or you can add the Address column to the account edit page and the column should be added to the manifest automatically in this case.

Show all comments

Hello community,

 

I've configured an entity with a column with default value from system settings.

When I install the package I received the error the system settings used for default does not exist.

What am I doing wrong?

Like 0

Like

2 comments

Did you include the system setting (SysSettings) and the system setting value (SysSettingsValue) in the package as well?

Ryan

Ryan Farley,

Hi Ryan

Both SysSettings and SysSettingsValue are defined.

I've done some test and the problem is the missing value in the SysSettingsValue.

Show all comments