Hi Team,

 

I am not able to add detail (Education) record in the new section record, please see the error it is displaying on the console. 

 

I have tried compiling the system, but it didn't work.

However I am able to create records in the detail in already created records of the section.

 

Please help me in resolving this.

 

Many thanks!

Like 0

Like

1 comments

Hello Akshit,

 

Could you please contact our support team in order to investigate your problem?

Please send us an email at support@creatio.com

 

Thank you,

Artem.

Show all comments

Hi community,

is it possible to call a procedure inside a script block in a business process ?

A postgres function can't contains commit statements.

A postgres procedure can contains commit statements.

I need to call a postgres procedure.

Like 0

Like

4 comments

Hi Stefano,



This is how we call postgres function with parameter from process script:



Guid usrRecordId = Get<Guid>("UsrRecordId");

StoredProcedure storedProcedure = new StoredProcedure(UserConnection, "UsrSetOpportunityRights")

    .WithParameter("RecordId", usrRecordId)  as StoredProcedure;

storedProcedure.Execute();

Vladimir Sokolov,

Hi Vladimir,

I know this way, but it doesn't work with procedure.

Stefano Bassoli,

 

Hi,

 

The problem here is that the StoredProcedure class calls not stored procedures, but functions and it's so because of the fact that PostgreSQL supports stored procedures starting from 11 version. Currently there is no way to call a PostgreSQL procedure from a business process.

 

Best regards,

Oscar

As I understand, function is performed as one transaction. And if error appears, rollback will cancel all actions.

Show all comments

Hi Team,

 

Please see the below screenshot : 

System users will come top to down while filling the form but since primary manager and secondary manager fields are required, they can't create record in Qualification and Awards detail first without filling the Primary manager and secondary manager fields.

 

How can we correct this that keeping the primary manager and secondary stakeholder required, it shouldn't restrict the user to create records in the details?

 

Many thanks!

 

 

 

Like 0

Like

2 comments

We usualy make such field required on specific stages. So, it is possible to fill the details, but not possible to save in next stage until the fields are filled in

Hello Akshit, 

 

It's not possible to proceed with adding data to details on the record page before filling in the required fields on this page, it's expected behavior and as of now it cannot be changed with basic system tools. 

 

As mentioned by Vladimir, there is a workaround to make the fields required only on the specific stage of the record, so users will be able to fill in the details with data on the previous stage and on the next stage the fields will be required. 

Please find more information about this functionality in the article below and connected articles:

https://academy.creatio.com/docs/user/bpm_tools/dynamic_case_setup/case…



Best regards, 

Anastasiia

Show all comments

Hi community,

the feedback case page (021/0/Nui/Feedback.aspx?vm=FeedbackModule&token=138ce645-68ad-48ee-a24b-b7fa7ed2822d&schemaName=CaseRatingFeedbackPage) appears always in english, on my creatio instance.

There are the localization strings in the client schema "CaseRatingFeedbackPage"

What am I doing wrong?

 

Like 0

Like

6 comments

Hello Stefano,

 

The feedback page is using your web browser settings to choose the appropriate language.

For example, if the browser language is set to English - the feedback page will be in English, if the user uses Russian - the page will open up in Russian, and so on.

 

Thank you,

Artem.

thank you Artem

Artem,

How does the URL of the feedback page is generated, I'm referring to the root URL (mysite.creatio.com/0)



I have set a system setting "SiteURL" to "mysitegateway.creatio.com" but it takes mysite.creatio.com in the smiley links.



But mysitegateway.creatio.com is configured using a proxy server for on-premise setup.





Best regards,

Bhoobalan Palanivelu.

hi Bhoobalan

check the PortalSiteUrl system settings value

 

Stefano Bassoli,

It's empty.

Does this PortalSiteUrl have to be populated as well, same as the "SiteURL" value?



Best regards,

Bhoobalan Palanivelu.

Bhoobalan Palanivelu,

You have to compile both field with

https://mysitegateway.creatio.com/0

Show all comments

Hi Team 

 

We are trying to generate notification Using Academy Article as everything shows successful but no notification was generated

 

https://academy.creatio.com/documents/technic-bpms/7-11/how-set-push-notifications-mobile-application-users

 

 

For Approval we tried adding section to mobile but nothing was found in section

 

 

 

These are only option available can anyone suggest some workaround over this

 

Thank You So Much

 

Like 0

Like

5 comments
Best reply

Hello Braj,

 

I'll share here the answer that I provided regarding the approvals case so the community has access to this information as well.



In order to be able to use approvals in the mobile app you would need to follow these steps:



1) You need to run the 3 scripts that will be at the end of the message. This will enable some features needed for this functionality.



2) Then you need to flush (clear) the cache of the Redis server and restart the pool application of the site. 



3) Before adding the approval detail to a section in the Mobile application wizard, you need to make sure that approvals are enabled for this section in the main Creatio site. In order to do that, you need to open the Section wizard at the desired section, and you will see the possibility to enable approvals for this section.



4) Then you can open the Mobile application wizard and open the desired workplace. There you can open the desired section,  select "Details setup" and click on "New detail". There you will be able to select the Type, and here is where you can select the approval that you desire.



After that you can log out and log in at the mobile app, and verify the changes.

 

DECLARE @featureCode varchar(max) = 'UseMobileApprovals',

 @featureId uniqueidentifier;

set @featureId = (select top 1 Id from Feature where Code = @featureCode);

IF @featureId is null

BEGIN

 insert into Feature

  (Name, Code)

 values

  (@featureCode, @featureCode);

 set @featureId = (select top 1 Id from Feature where Code = @featureCode);

END;

delete from AdminUnitFeatureState where FeatureId = @featureId;

insert into AdminUnitFeatureState

 (SysAdminUnitId, FeatureState, FeatureId)

values

 ('A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, @featureId);

 

DECLARE @featureCode varchar(max) = 'UseMobileApprovalPushNotifications',

 @featureId uniqueidentifier;

set @featureId = (select top 1 Id from Feature where Code = @featureCode);

IF @featureId is null

BEGIN

 insert into Feature

  (Name, Code)

 values

  (@featureCode, @featureCode);

 set @featureId = (select top 1 Id from Feature where Code = @featureCode);

END;

delete from AdminUnitFeatureState where FeatureId = @featureId;

insert into AdminUnitFeatureState

 (SysAdminUnitId, FeatureState, FeatureId)

values

 ('A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, @featureId);

 

DECLARE @featureCode varchar(max) = 'UseMobileFlutterApprovals',

 @featureId uniqueidentifier;

set @featureId = (select top 1 Id from Feature where Code = @featureCode);

IF @featureId is null

BEGIN

 insert into Feature

  (Name, Code)

 values

  (@featureCode, @featureCode);

 set @featureId = (select top 1 Id from Feature where Code = @featureCode);

END;

delete from AdminUnitFeatureState where FeatureId = @featureId;

insert into AdminUnitFeatureState

 (SysAdminUnitId, FeatureState, FeatureId)

values

 ('A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, @featureId);

 

Best regards,

Dariy

 

 

Hello,

 

We have already a corresponding case from you for our support team. 

 

We will update you there.

 

Best regards,

Bogdan

Bogdan,

Hi Bogdan,

 

It has been 20 days.

Please do check over this as client is escalating this

 

Thank You

Braj Raj singh Kushwaha,

 

hope this finds you well.

 

Unfortunately, we are unable to investigate this issue without having access to the instance. We have requested external access from you but never heard back. Kindly get back to us with the external access provided so that we could look into this.

 

Best regards,

Anastasiia

Hello Braj,

 

the notifications weren't working because the feature UseMobilePushNotifications wasn't enabled. After activating it, I have tested the business process and I could succesfully receive a push notification.

 

Best regards,

Dariy

Hello Braj,

 

I'll share here the answer that I provided regarding the approvals case so the community has access to this information as well.



In order to be able to use approvals in the mobile app you would need to follow these steps:



1) You need to run the 3 scripts that will be at the end of the message. This will enable some features needed for this functionality.



2) Then you need to flush (clear) the cache of the Redis server and restart the pool application of the site. 



3) Before adding the approval detail to a section in the Mobile application wizard, you need to make sure that approvals are enabled for this section in the main Creatio site. In order to do that, you need to open the Section wizard at the desired section, and you will see the possibility to enable approvals for this section.



4) Then you can open the Mobile application wizard and open the desired workplace. There you can open the desired section,  select "Details setup" and click on "New detail". There you will be able to select the Type, and here is where you can select the approval that you desire.



After that you can log out and log in at the mobile app, and verify the changes.

 

DECLARE @featureCode varchar(max) = 'UseMobileApprovals',

 @featureId uniqueidentifier;

set @featureId = (select top 1 Id from Feature where Code = @featureCode);

IF @featureId is null

BEGIN

 insert into Feature

  (Name, Code)

 values

  (@featureCode, @featureCode);

 set @featureId = (select top 1 Id from Feature where Code = @featureCode);

END;

delete from AdminUnitFeatureState where FeatureId = @featureId;

insert into AdminUnitFeatureState

 (SysAdminUnitId, FeatureState, FeatureId)

values

 ('A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, @featureId);

 

DECLARE @featureCode varchar(max) = 'UseMobileApprovalPushNotifications',

 @featureId uniqueidentifier;

set @featureId = (select top 1 Id from Feature where Code = @featureCode);

IF @featureId is null

BEGIN

 insert into Feature

  (Name, Code)

 values

  (@featureCode, @featureCode);

 set @featureId = (select top 1 Id from Feature where Code = @featureCode);

END;

delete from AdminUnitFeatureState where FeatureId = @featureId;

insert into AdminUnitFeatureState

 (SysAdminUnitId, FeatureState, FeatureId)

values

 ('A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, @featureId);

 

DECLARE @featureCode varchar(max) = 'UseMobileFlutterApprovals',

 @featureId uniqueidentifier;

set @featureId = (select top 1 Id from Feature where Code = @featureCode);

IF @featureId is null

BEGIN

 insert into Feature

  (Name, Code)

 values

  (@featureCode, @featureCode);

 set @featureId = (select top 1 Id from Feature where Code = @featureCode);

END;

delete from AdminUnitFeatureState where FeatureId = @featureId;

insert into AdminUnitFeatureState

 (SysAdminUnitId, FeatureState, FeatureId)

values

 ('A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, @featureId);

 

Best regards,

Dariy

 

 

Show all comments

Hi All, 

I have a requirement to restrict the user from uploading or deleting attachments once a particular date is reached. I have tried to remove access rights for attachment object in a business process but still the user is able to upload attachments.

Like 1

Like

3 comments

Hello Balaka,

 

could you please let us know where exactly are you trying to prevent the user from uploading/deleting attachments?

 

Thank you.

Hi,

 

You can create a sub-process on the correspondent object to restrict adding new records or deleting records based on some conditions. For example here is the code I created for the AccountFile records:

 

1) Created a sub-process:

2) Specified the following code in the "Methods" tab of the subprocess:

namespace Terrasoft.Configuration
{
 
	using DataContract = Terrasoft.Nui.ServiceModel.DataContract;
	using Newtonsoft.Json;
	using Newtonsoft.Json.Linq;
	using System;
	using System.Collections.Generic;
	using System.Collections.ObjectModel;
	using System.Data;
	using System.Drawing;
	using System.Globalization;
	using System.IO;
	using System.Linq;
	using Terrasoft.Common;
	using Terrasoft.Common.Json;
	using Terrasoft.Configuration;
	using Terrasoft.Core;
	using Terrasoft.Core.Configuration;
	using Terrasoft.Core.DB;
	using Terrasoft.Core.DcmProcess;
	using Terrasoft.Core.Entities;
	using Terrasoft.Core.Factories;
	using Terrasoft.Core.Process;
	using Terrasoft.Core.Process.Configuration;
	using Terrasoft.GlobalSearch.Indexing;
	using Terrasoft.UI.WebControls.Controls;
	using Terrasoft.UI.WebControls.Utilities.Json.Converters;
 
	#region Class: AccountFile_CustomEventsProcess
 
	public partial class AccountFile_CustomEventsProcess&lt;TEntity&gt;
	{
 
		#region Methods: Public
 
		public override void OnFileSaving()
		{
 
			DateTime currentDateTime = DateTime.Now;
			var accountId = Entity.GetTypedColumnValue&lt;Guid&gt;("AccountId");
			var accountResultESQ = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Account");
			accountResultESQ.UseAdminRights = true;
			accountResultESQ.AddColumn("Id");
			accountResultESQ.AddColumn("UsrRestrictUploadDateTime");
			accountResultESQ.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", accountId);
			var accountResult = accountResultESQ.GetEntityCollection(UserConnection);
			var connectedAccountData = accountResult[0];
			connectedAccountData.UseAdminRights = true;
			DateTime restrictDateTime = connectedAccountData.GetTypedColumnValue&lt;DateTime&gt;("UsrRestrictUploadDateTime");
			int comparisonResult = DateTime.Compare(currentDateTime, restrictDateTime);
			if (comparisonResult &lt; 0)
			{
				base.OnFileSaving();
			}
			else
			{
				throw new Exception("Restricted!");
			}
		}
 
		public virtual void OnFileDeleting()
		{
			DateTime currentDateTime = DateTime.Now;
			var accountId = Entity.GetTypedColumnValue&lt;Guid&gt;("AccountId");
			var accountResultESQ = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Account");
			accountResultESQ.UseAdminRights = true;
			accountResultESQ.AddColumn("Id");
			accountResultESQ.AddColumn("UsrRestrictUploadDateTime");
			accountResultESQ.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", accountId);
			var accountResult = accountResultESQ.GetEntityCollection(UserConnection);
			var connectedAccountData = accountResult[0];
			connectedAccountData.UseAdminRights = true;
			DateTime restrictDateTime = connectedAccountData.GetTypedColumnValue&lt;DateTime&gt;("UsrRestrictUploadDateTime");
			int comparisonResult = DateTime.Compare(currentDateTime, restrictDateTime);
			if (comparisonResult &lt; 0)
			{
				base.DeleteFileUsingFileApi();
			}
			else
			{
				throw new Exception("Restricted!");
			}
		} 
 
		#endregion
 
	}
 
	#endregion
 
}

The logic in the code will compare the date\time value specified in the UsrRestrictUploadDateTime column of the main account record where the "Account attachments" detail is located, and it the current date and time is greater than the UsrRestrictUploadDateTime column value then the save and delete will fail:

As for deleting the file: custom exception doesn't work here and the standard message is returned:

Didn't figure out why, but it won't let deleting a record anyway. Also if this logic should be applied to specific users then you will also need to create an additional logic of checking if the current user (information on the user can be received from UserConnection) can or cannot add\delete files.

 

Hope it helps.

 

Best regards,

Oscar

Oleg Drobina,

 

Hi Oscar,

 

Have you found any solution? on custom, the exception doesn't work on the deletion scenario above and the standard message is returned.

Let me know if you have any solutions.

 

Regards.

Show all comments

We really need some help.

 

We were previously able to double click the card to enter the record we can no longer do this.

 

This is causing major issues for us. 

I have reached out the developer a.technologies.foundation@gmail.com a  number of times but noone is coming back to me.

I understand there was an update some months back and it stopped working since then.

Like 0

Like

2 comments

Hello Nicola,

 

Thank you for your message. 

 

Unfortunately, the Kanban view was developed by Advanced Technologies Foundation and this application is supported via GitHub:

https://github.com/Advance-Technologies-Foundation

If you have questions or encounter any issues while using the add-on, the developers of the application should be addressed.

 

Thank you for your understanding.

 

Best regards,

Anastasiia

Hello Nicola,

 

I am encountering the same issue. Did you find a solution to the problem ?

 

I would really appreciate it, thanks !

 

Best regards,

Jonathan

 

EDIT : I found a solution to the problem :

 

You must activate the mini page visualisation in the section wizard. Then, you can edit the mini page to display the important fields that you want. You should now be able to double click on the object box in the kanban view and jump to the related object !

Show all comments

Hi All,

 

I am trying to lock all the fields on a page. So I have followed the following article:

"https://academy.creatio.com/docs/developer/interface_elements/interface_control_tools/locking_edit_page_fields/overview"

I have set the value of IsModelItemsEnabled to false in methods of the edit page in following ways,

  1. setCardLockoutStatus: function() {

                    this.set("IsModelItemsEnabled", false);

                },
  2. onEntityInitialized: function(){

                    this.callParent(arguments);

                    this.set("IsModelItemsEnabled", false);

                },

But still all the fields are editable. Can anyone suggest what am I doing wrong?

Like 0

Like

2 comments
Best reply

Hi,

 

Tested on the AccountPageV2 schema and it worked properly:

 

1) Enable the feature via the database:

DECLARE @allEmpoyeeGroupName nvarchar(max) = 'All employees';
DECLARE @featureName nvarchar(max) = 'CompleteCardLockout'
DECLARE @featureStatus bit = 1;
 
IF (NOT EXISTS (SELECT NULL FROM Feature WHERE Code = @featureName))
BEGIN
  INSERT INTO Feature (Name, Description, Code, ProcessListeners) 
  VALUES (@featureName, @featureName, @featureName, 0)
END
IF(EXISTS (SELECT NULL FROM AdminUnitFeatureState 
         WHERE FeatureId = (SELECT Id FROM Feature WHERE Code = @featureName) AND
           SysAdminUnitId = (SELECT Id FROM SysAdminUnit WHERE Name = @allEmpoyeeGroupName)) )
BEGIN
  UPDATE AdminUnitFeatureState SET FeatureState = @featureStatus WHERE FeatureId = (SELECT Id FROM Feature WHERE Code = @featureName) AND
                              SysAdminUnitId = (SELECT Id FROM SysAdminUnit WHERE Name = @allEmpoyeeGroupName)
END
ELSE
BEGIN
  INSERT INTO AdminUnitFeatureState (ProcessListeners, SysAdminUnitId, FeatureState, FeatureId) VALUES 
                    (
                    0,
                    (SELECT Id FROM SysAdminUnit WHERE Name = @allEmpoyeeGroupName),
                    @featureStatus, 
                    (SELECT Id FROM Feature WHERE Code = @featureName)
                     )
END

2) In the AccountPageV2 added the following code to the diff array:

{
				"operation": "merge",
				"name": "CardContentWrapper",
				"values": {
					"generator": "DisableControlsGenerator.generatePartial"
				}
			},

3) In the AccountPageV2 added the following attribute:

"IsModelItemsEnabled": {
				dataValueType: Terrasoft.DataValueType.BOOLEAN,
				value: false
			},

4) Relogin to the app

5) Open account edit page

6) All the fields are locked

 

Best regards,

Oscar

Hi,

 

Tested on the AccountPageV2 schema and it worked properly:

 

1) Enable the feature via the database:

DECLARE @allEmpoyeeGroupName nvarchar(max) = 'All employees';
DECLARE @featureName nvarchar(max) = 'CompleteCardLockout'
DECLARE @featureStatus bit = 1;
 
IF (NOT EXISTS (SELECT NULL FROM Feature WHERE Code = @featureName))
BEGIN
  INSERT INTO Feature (Name, Description, Code, ProcessListeners) 
  VALUES (@featureName, @featureName, @featureName, 0)
END
IF(EXISTS (SELECT NULL FROM AdminUnitFeatureState 
         WHERE FeatureId = (SELECT Id FROM Feature WHERE Code = @featureName) AND
           SysAdminUnitId = (SELECT Id FROM SysAdminUnit WHERE Name = @allEmpoyeeGroupName)) )
BEGIN
  UPDATE AdminUnitFeatureState SET FeatureState = @featureStatus WHERE FeatureId = (SELECT Id FROM Feature WHERE Code = @featureName) AND
                              SysAdminUnitId = (SELECT Id FROM SysAdminUnit WHERE Name = @allEmpoyeeGroupName)
END
ELSE
BEGIN
  INSERT INTO AdminUnitFeatureState (ProcessListeners, SysAdminUnitId, FeatureState, FeatureId) VALUES 
                    (
                    0,
                    (SELECT Id FROM SysAdminUnit WHERE Name = @allEmpoyeeGroupName),
                    @featureStatus, 
                    (SELECT Id FROM Feature WHERE Code = @featureName)
                     )
END

2) In the AccountPageV2 added the following code to the diff array:

{
				"operation": "merge",
				"name": "CardContentWrapper",
				"values": {
					"generator": "DisableControlsGenerator.generatePartial"
				}
			},

3) In the AccountPageV2 added the following attribute:

"IsModelItemsEnabled": {
				dataValueType: Terrasoft.DataValueType.BOOLEAN,
				value: false
			},

4) Relogin to the app

5) Open account edit page

6) All the fields are locked

 

Best regards,

Oscar

Oscar Dylan,

 

I have tried this and able achieve my objective. Apparently what I was missing was, I have not added the code in diff array. Thank you so much for your time & effort.

 

Regards,

Sourav Kumar Samal

Show all comments

Hi  

we have Creatio Installed in our environment and confined to saving files in S3 instead of the database, now how I can get a stream of files saved in S3 inside the process script 

I used the below code when I saved the file in the Database :

ar userConnection = Get&lt;UserConnection&gt;("UserConnection");
Guid contactId = new Guid("4177bc0a-8cb1-4895-aacf-5932ed6b4cb5");
string base64String = "";
Select selectEmail = new Select(userConnection)
            .Top(1)
                .Column("Data")
            .From("ContactFile")
            .Where("ContactId").IsEqual(Column.Parameter(contactId)) as Select;
using (var dbExecutor = userConnection.EnsureDBConnection()) {
    using (IDataReader dataReader = selectEmail.ExecuteReader(dbExecutor)) {
        if (dataReader.Read()) {
            byte[] imageBytes = dataReader.GetColumnValue("Data") as byte[];
            base64String = Convert.ToBase64String(imageBytes);
        }
    }
}

can anyone help on how to get the image stream saved in S3?

 

Like 0

Like

1 comments

Hi,

 

You need to try approaches described in Stack Overflow here or in the AWS forum here.

 

Best regards,

Oscar

Show all comments

Hi, 

I'm trying to compile the code below from a package set as a a separate assembly but I'm getting the error attached even though the object mentioned on the error is part of the package. 

 

What am I missing?

 

Thanks,

Jose

 

Error:

Object exists on package

Code generating the error:

using System;

using System.Collections.Generic;

using System.Linq;

using Terrasoft.Core;

using Terrasoft.Core.Entities;

using Terrasoft.Configuration;    



public class UsrPPDRCorrespondenceHelper

{

    private UserConnection UserConnection { get; }

    

    public UsrPPDRCorrespondenceHelper(UserConnection userConnection) {

        UserConnection = userConnection;

    }

    

    public Guid GetStatus(Guid corrId) {        

        var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "UsrPPDRCorrespondence");

        esq.AddAllSchemaColumns();

        Entity queryResult = esq.GetEntity(UserConnection, corrId);

        if (!(queryResult is UsrPPDRCorrespondence corr)) {

            throw new Exception($"Unable to get Correspondence status for ID {corrId}");

        }

        if (corr.UsrStatus == null) {

            throw new Exception($"Correspondence status for ID {corrId} is empty");

        }

        return corr.UsrStatus.Id;

    }

 }

Like 0

Like

1 comments

Hi,

 

According to the error UsrPPDRCorrespondence is not located at the same folder (directory to which assembly files were exported) as the source code that is being compiled.

 

Best regards,

Oscar

Show all comments