Hello community,

 

I have developed a service in Creatio that will be called from third parties. The service is called successfully in postman but programmatically it doesn't work. The authentication works fine and returns status code 200 and the BPMCSRF cookie. When the third party tries to call the service it gives the following message "401 - Unauthorized: Access is denied due to invalid credentials."  How can we investigate this issue? Does Creatio offer a logging option so we can investigate the request and response or is there something else that we have forgotten during the implementation of this service?

Like 0

Like

1 comments

Hello community!

I need to set fields required based in values of a lookup at client side.

I was trying to test how isRequired works in attributes , but I found that the only way to work with it, is declaring the explicit value to True or False.

Tried to use a virtual column, and a method function, but it behaves weird.  

Here are my examples:

and this how it looks on screen:

 

It's showing the "Enter a Value" warning but they are supposed not to be required (* is missing).

 

Is there any way to workaround with this?

 

Thank you for your help.

Like 0

Like

3 comments
Best reply

Cesar Jaramillo,

Let's see what method of making fields required* dynamically actually works good – it is using rules/businessRules.

You can create a rule for your field, the condition can be any value of the page and its related lookups.

Like here:

But if you have to do this for several fields, it will take much time to set them for each field. 

And if there are many conditions or they are too complex, "businessRules" abilities can be not enough.

But we can set an attribute (boolean) to be a condition for each of these rules, like here:



The attribute value can be changed dynamically using "methods".

 

So here's what i'd advise you to do:



In my example the fields "Email" and "Preferred language" become required, if the contact Type is "Customer" and the "Owner" field is not empty.

1. Add an attribute of type BOOLEAN

attributes: {
	"FullInfoRequired": {
		"dataValueType": Terrasoft.DataValueType.BOOLEAN,
		"dependencies": [
			{
				"columns": ["Owner", "Type"],
				"methodName": "setFullInfoRequired"
			}
		]
	}
},

Each time any of the columns ("Owner" or "Type") is changed, the method "setFullInfoRequired" is called.

2. Add the method

setFullInfoRequired: function() {
	var type = this.get("Type");
	// ContactType.Client is a GUID for "Customer" type
	if (type.value === confConsts.ContactType.Client && this.get("Owner")) {
		this.set("FullInfoRequired", true);
	}
	else this.set("FullInfoRequired", false);
}

To set the attribute on page loading, immediately after the page loaded its data, you should also call this function in "onEntityInitialized":

onEntityInitialized: function() {
	this.callParent(arguments);
	this.setFullInfoRequired();
}

3. Add the rules using Page designer, as in my 2nd screenshot, for each field that should become required.

 

If the conditions are simple, just use businessRules as in the 1st screenshot.

 

Hello Cesar,

 

The isRequired attribute that uses the value that method returns works correctly in my local app (using bindTo: {"method name here"}). It seems that there is either some other custom logic related to these columns in the ContactPageV2 or maybe custom CSS that hides these * symbol. You need to look through all the logic related to these columns where you need to have the * symbol.

 

Best regards,

Oscar

Oscar Dylan,

Hi Oscar,  In my case, when the method returns True it works fine, but when it returns False, the * is gone, but the warning remains and it doesn't allow to save.  In what version did you try it?

Thanks!

Cesar Jaramillo,

Let's see what method of making fields required* dynamically actually works good – it is using rules/businessRules.

You can create a rule for your field, the condition can be any value of the page and its related lookups.

Like here:

But if you have to do this for several fields, it will take much time to set them for each field. 

And if there are many conditions or they are too complex, "businessRules" abilities can be not enough.

But we can set an attribute (boolean) to be a condition for each of these rules, like here:



The attribute value can be changed dynamically using "methods".

 

So here's what i'd advise you to do:



In my example the fields "Email" and "Preferred language" become required, if the contact Type is "Customer" and the "Owner" field is not empty.

1. Add an attribute of type BOOLEAN

attributes: {
	"FullInfoRequired": {
		"dataValueType": Terrasoft.DataValueType.BOOLEAN,
		"dependencies": [
			{
				"columns": ["Owner", "Type"],
				"methodName": "setFullInfoRequired"
			}
		]
	}
},

Each time any of the columns ("Owner" or "Type") is changed, the method "setFullInfoRequired" is called.

2. Add the method

setFullInfoRequired: function() {
	var type = this.get("Type");
	// ContactType.Client is a GUID for "Customer" type
	if (type.value === confConsts.ContactType.Client && this.get("Owner")) {
		this.set("FullInfoRequired", true);
	}
	else this.set("FullInfoRequired", false);
}

To set the attribute on page loading, immediately after the page loaded its data, you should also call this function in "onEntityInitialized":

onEntityInitialized: function() {
	this.callParent(arguments);
	this.setFullInfoRequired();
}

3. Add the rules using Page designer, as in my 2nd screenshot, for each field that should become required.

 

If the conditions are simple, just use businessRules as in the 1st screenshot.

 

Show all comments

Hello team,

 

I have a detail call "Proof" in which I need to add custom attachment detail called "UsrProofAttachments".

 

Here are the steps I followed

1. Created an object with Parent Object as "File". Added lookup column that refers to "Proof" detail.

2. Created a detail through the wizard and configured the detail

3. Changed the parent of "UsrProofAttachments" to FileDetailV2.

Here is how my UI looks

 

The error I get in console is the following

 

{message: 'Column by path UsrProofAttachments not found in schema UsrProofAttachments.'}

 

I have seen a similar post but I am not able to find an answer.

https://community.creatio.com/questions/set-custom-detail-attachments-t…

Help would be much appreciated!

 

Edit : I added the CSS and the UI looks good. But the error is still there

Like 0

Like

3 comments

Hi Shivani,

 

Thank you for your question!

 

Regarding the mentioned error in the console, it indicates that the column was either removed from the corresponding object or renamed. We do not recommend deleting any fields, columns or objects as it may lead to unpredictable issues. If some fields are not needed anymore, you can simply change their usage mode to "none". It's hard to identify which column exactly was removed/renamed without accessing the website. Please, contact us at support@creatio.com. We will check the configuration and will try to find out the reason for this issue.

 

Best regards,

Anastasiia

Anastasiia Lazurenko,

 

I got the attachment detail working. I noticed if you name the attachment detail as <SectionName>File it works eg : CustomFile for section named Custom, UsrProofFile for section named UsrProof

Shivani Lakshman,

Hi Shivani, I have a quite similar request as yours. I need to customize the default attachment detail of Order page by adding a lookup field into the attachment detail page.

 

Since the Order's attachment has its own object OrderFile, I created a replacing object of OrderFile and added a new lookup column, say UsrAttachmentType, in the OrderFile object. Then I used this new OrderFile to create a detail through detail wizard and put Name, Description, and UsrAttachmentType columns in the detail page. Then I changed the parent object of the detail with FileDetailV2 and saved the detail.

 

After the above steps, I could use the new attachment detail to upload files as original attachment detail; but when I double click the attachment record in the detail list, it opened with the old attachment detail page with only Name and Description fields, not the new detail page I setup as above, with additional lookup field UsrAttachmentType.

 

Please advise what I shuld do? Thank you!

 

 

Show all comments

I created a harmony of data which comes from external web services. For example, I retrieved dataA for ColumnA, dataB for ColumnB, dataC for ColumnC etc. I want to INSERT this data to section object table which section page based on.



How can i bind these things?

Like 0

Like

1 comments

Hello,

 

You can create a business process in which you will fill in the required fields received from the web service.

 

Details on the academy website:

https://academy.creatio.com/docs/user/bpm_tools/process_elements_refere…

Show all comments

Hello Creatio Community,

I have e development env and a test env.

For a specific page schema, the metadata of the page differs from Dev and Test env. The nr of rows is the same , but the content isnt. Is this supposed to be correct ?

 

Like 0

Like

1 comments

Hello,

 

Please be informed that the sole fact of the schemas being a bit different is not a problem, the question is does it cause any actual issues to the performance of the site? Also, please specify if the Test env is a full copy of Dev and if so, was that schema present on the Test env before copying? Also, did you make any changes to the schemas yourself?

 

Kind regards,

Mira

Show all comments

Hello team,

What is the difference between Compile all and Generate Source Code for all schemas? 

Is there any significant difference between the two? When are the best scenarios to use each of them?

Like 0

Like

2 comments
Best reply
Full generation is needed to build links between 
configuration items. Items can be objects and schemas or 
links between packages and their dependencies.
Full generation links them.

Compilation, in addition to its main purpose also generates
source files along the /src path which are necessary when 
working with no-code elements and allow you to create an 
instance between an object and a table in the DB.
Full generation is needed to build links between 
configuration items. Items can be objects and schemas or 
links between packages and their dependencies.
Full generation links them.

Compilation, in addition to its main purpose also generates
source files along the /src path which are necessary when 
working with no-code elements and allow you to create an 
instance between an object and a table in the DB.

Владислав Киселевич,

Thank you !

Show all comments

Hello team,

What is the purpose of IsLocked column in the the SysSchema or SysPackage tables.

How does IsLocked affect 

1- Objects

2- Bussines Processes

3- Edit Page schemas

4- Packages

I couldnt find information in the academy regarding this topic.

Thank you

Like 0

Like

1 comments

Hello Petrika,

Parameter IsLocked mainly affects if you can edit the schema or the package.  Only the author of the lock can edit these elements. In the database, this author isn't mentioned and you can see only IsLocked.

The system will check the author on the other level.

Show all comments

Hi Community,

 

I wanted to implement a funtionality where a validation should happen on click of Approve button. If the valiation fails the approval should not happen.

 

To achive the above task I tried with the following approaches, on the "UsrReturns" custom object.

  1. Tried to implement "asyncValidate" on "UsrReturnsVisaPageV2", but it didn't work (Seems the approval is happening outside the context of this page). Also not sure what is the use of this page.
  2. Tried to implement validation using Entity Events Layer on the object "UsrReturnsVisa". Although it didn't approve the request, but it didn't throw the exception as well with the following code,
    if(true){
    	throw new Exception("Can not approve");
    }
    return true;
  3. Tried to implement a custom approval logic using "ApprovalDashboardItemViewModel", but I can not create a replacing schema with this.

So need a way to implement such funtionality. Any suggestions will help.

 

Thanks & Regards,

Sourav Kumar Samal

Like 0

Like

3 comments

Hello,

 

Can you please screenshot the exact button you click, clicking which should start the validation process?

 

Thank you!

 

Best regards,

Oscar

Oscar Dylan,

While clicking Approve on notification panel as shown below,

 

 

Also while clicking under DCM & from Approvals section, same error shows on the console, but popup doesn't come.

 

Regards,

Sourav

Sourav Kumar Samal,

 

this is a bad request response returned by the app and we need to see the actual response (from the "Response" tab of the request in the "Network" tab).

 

To add some logic upon approval you need to replace the "approve" method in the "VisaNotificationsSchema" module (for "reject" actions its "reject" method). You will be in the context of the approval record and you can use data from there to process further with the approval\rejection. So you need to override the logic of these two methods.

 

Best regards,

Oscar

Show all comments

Hello Creatio Community,

Section wizard keeps reloading.

Printscreen below is from the Console:

What needs to be done to open the section wizard ?

Like 0

Like

1 comments

Hello Petrika,

 

This seems to be an issue that Creatio support should take a look at.

Please contact us at support@creatio.com

 

Thank you!

Show all comments

Hi,

I am trying to setup a simple test Marketing Email Campaign in Creatio. 

On starting the campaign, I noticed that the marketing emails sent to the audience do not get connected to the Contact/Account records. I want it to be recorded as an email activity so that it appears in the Timeline and History tab. Is there any way to achieve this?

Like 0

Like

3 comments

Hi Nirupama,

 

There is a detail on the contact page that shows trigger emails where a contact was in the audience. It's located on the "History" tab of the contact edit page and called "Email - Bulk emails" so you can track the connection there. Unfortunately for accounts its not possible to do since there is no obvious connection between an account and the trigger email (several contacts of the same account can be in the audience of a trigger email and if using a standard detail there will be duplicated records about the same trigger email, but probably the filtration of the detail can be modified to show distinct values, but this can lead to performance issues either in the server-side and on the client-side).

 

As for displaying a trigger email in the contact timeline: you can additionally create an activity using the "Add data" element of the campaign designer and connect the activity to the contact's account using an inbuilt function.

 

Best regards,

Oscar

Oscar Dylan,

Hi Oscar, 



How about using this add-on? 

https://marketplace.creatio.com/template/marketing-record-types-timeline



Best Regards,

Jacek

 

Jacek Harlejczyk,

 

Hi Jacek,

 

Seems that it will fit Nirupama's needs perfectly. Thank you!

 

Best regards,

Oscar

Show all comments