Hi community!

 

Our customer wants to import campaigns with participants of an old system to keep that data as history.

I managed to import the campaigns (see Can't import campaigns | Community Creatio), but I can't import the participants.

The import tells me that the field 'current step' is mandatory. Is there any way to work around this or a fixed value that I can use? My problem is that the old campaigns do not have a single step, because they just act like an empty container and the participation should be used as criteria for building marketing segments in the future.

 

Thanks and BR,

Robert

Like 0

Like

2 comments
Best reply

Hello Robert,

 

If possible, I would suggest filling the field of CampaignParticipant table

 

1) The following script will add one empty CampaignItem record (which is current step) for each campaign:

 

Insert into "CampaignItem" ("CampaignId") (select "Id" from "Campaign") 

 

2) Then you can set the name for all those records if you want:

update "CampaignItem" set "Name" = 'test' where "Name" = ''

 

3) The next script will set the CampaignItemId (if it is null) of the CampaignParticipant to any that is available in the corresponding campaign (There will always be at least one since in the first script we added one for each):



update "CampaignParticipant" set "CampaignItemId" = (select "Id" from "CampaignItem" where "CampaignItem"."CampaignId" = "CampaignParticipant"."CampaignId" limit 1) where "CampaignItemId" is null

 

That last script will only modify the participants who do not already have current step specified. 

 

If you know that there are campaign items for each campaign then you can skip the first and second scripts.

 

Hope it helps!

 

Best regards,

Max,

Hello Robert,

 

If possible, I would suggest filling the field of CampaignParticipant table

 

1) The following script will add one empty CampaignItem record (which is current step) for each campaign:

 

Insert into "CampaignItem" ("CampaignId") (select "Id" from "Campaign") 

 

2) Then you can set the name for all those records if you want:

update "CampaignItem" set "Name" = 'test' where "Name" = ''

 

3) The next script will set the CampaignItemId (if it is null) of the CampaignParticipant to any that is available in the corresponding campaign (There will always be at least one since in the first script we added one for each):



update "CampaignParticipant" set "CampaignItemId" = (select "Id" from "CampaignItem" where "CampaignItem"."CampaignId" = "CampaignParticipant"."CampaignId" limit 1) where "CampaignItemId" is null

 

That last script will only modify the participants who do not already have current step specified. 

 

If you know that there are campaign items for each campaign then you can skip the first and second scripts.

 

Hope it helps!

 

Best regards,

Max,

Max,

Hi Max,

 

thanks, that worked like a charm! I executed scripts 1 and 2 and then imported the participants with reference to the newly created step (I have deleted the participant table before to have a fresh start).

 

Many thanks and best regards,

Robert

Show all comments

Hi Community,

 

We are unable to delete records "used in another process". We tried both "Delete connected records also" and "Do not deleted connected records" but it is just going over and over again to another page where you are asked again to choose between the two options.

 

Thank you

Like 0

Like

3 comments

Dear Fulgen,



Please, create a ticket for technical support mentioning the name of your instance and providing external access to it.



Thank you in advance,

Ivanna.

Hi,

 

did you find a solution for this?

 

We are having the same problem and would really need a solution!

 

Thanks and br,

Robert

Ivanna Yatsura,

 

This is in our on premise system, could you provide the solution please, We will execute it ion our on premise system.

Show all comments

Hello Team, 

Any ones know if we can add details in to a section (BaseSectionPageV2)?

Like 0

Like

1 comments

Hello Federico,



Unfortunately, you can't add details into a section BaseSectionPageV2, due to the basic logic of the application.



Best regards,

Bogdan

Show all comments

Hi Community!

 

I tried to import into the campaign table, but it doesn't work as expected.

I can see them in the campaign list, but when I open one of the imported records, the page is messed up (see screenshot 2021-09-17 15_31_03-Window.png).

The dev tools show errors as seen in screenshot Console Errors.png

 

I imported the following columns:

  • Name
  • Status (as finished)
  • Startmode (manual)
  • Endmode (manual)
  • Owner

The import log showed the following error on every row, but the records were created none-the-less:

Row 51: Error reading JObject from JsonReader. Path '', line 0, position 0.

 

Any thoughts on what went wrong and how to import campaigns properly? Am I missing some fields? Do I have to create other records in related tables?

 

Thanks,

Robert

 

Like 0

Like

5 comments
Best reply

So I got this working...kind of.

 

In the table CampaignType, the following two records are stored:

 

235273BB-91CB-47FC-8A34-01F0002E38D4    Campaign

389EB587-52D4-4AB6-B4AD-E7E2F0D62EAC    Campaign (old)

 

The problem is that imported campaigns will default to the wrong TypeId (type "Campaign (old)").

 

However, the Type lookup cannot be selected during the import, so I fixed it by updating the imported records directly via SQL with this simple script:

update Campaign
set TypeId = '235273BB-91CB-47FC-8A34-01F0002E38D4'
where TypeId <> '235273BB-91CB-47FC-8A34-01F0002E38D4'

Hope this helps someone and I also hope Creatio fixed this issue!

 

BR,

Robert

Hello Robert,

 

You can try fixing the campaign schema object bindings by running the following script:

 

update SysModuleEntity

set TypeColumnUId = '876C6749-2C05-4861-856E-EFD51B847904'

where SysEntitySchemaUId = '1F9BB71A-EB9C-4220-A40E-9B623EACFEC8'

 

Hope it helps!

 

Best regards,

Max.

Max,

Hi Max,

 

thanks for the hint! Could you elaborate a little bit on what this script does? It's a production system so I don't want to risk too much ;)

 

Thanks,

Robert

Robert Pordes,

It will set the type for the campaigns section and should not affect the system in any negative way.

 

Best regards,

Max.

Max,

it was already set...any other tips?

Btw, manually created campaigns can be opened normally.

 

BR,

Robert

So I got this working...kind of.

 

In the table CampaignType, the following two records are stored:

 

235273BB-91CB-47FC-8A34-01F0002E38D4    Campaign

389EB587-52D4-4AB6-B4AD-E7E2F0D62EAC    Campaign (old)

 

The problem is that imported campaigns will default to the wrong TypeId (type "Campaign (old)").

 

However, the Type lookup cannot be selected during the import, so I fixed it by updating the imported records directly via SQL with this simple script:

update Campaign
set TypeId = '235273BB-91CB-47FC-8A34-01F0002E38D4'
where TypeId <> '235273BB-91CB-47FC-8A34-01F0002E38D4'

Hope this helps someone and I also hope Creatio fixed this issue!

 

BR,

Robert

Show all comments

Hello community, We have a requirement where we need to show JSON on the UI. A multiline text may not be an ideal way to show it. Would it be possible to convert the Text field into something similar to the screenshot below (this is taken from Fast Reports set up)

File attachments
Like 0

Like

3 comments

Hello Shivani,

 

Standard "Notes" field will also perfectly store JSON:

So please use it to store JSON on the UI.

 

Best regards,

Oscar

Oscar Dylan,

Thank you for your reply. Is it possible to add another "notes" field to the table and have the value displayed in a similar manner?

Shivani Lakshman,

 

You can use the standard one available in any newly created section and add it to another tab if needed (but this can be done via the schema code modification directly, this option is not available in the wizard yet, but our product R&D team actively works on adding this feature to the oob functionality).

Show all comments

Hi Team

 

I have a Requirement from client where Client want to Replicate existing base functionality for Different cases such that each case will have some changes to base but these changes should not make affect on either cases

and in case if they want to close any case in future they should be avail to do it easily without any impact on other

 

Its like we have a master package A then B,C,D

where B,C,D are depedent on A like a parent child but bot dependent on Each Other

 

And any changes made in B,C,D should not be reflected in other they all should remain same as A if no changes are made

And in near future they delete B this should not affect other and system should run smoothly 

Neither A should get any changes and anything in a should be working as they they are in A

 

Have a Brief in image please look at it.

 

Please suggest a solution if possible 

As we tried 3-4 approach but failed

 

Thank You

 

 

 

File attachments
Like 0

Like

5 comments

Hello,

 

If I understood your request correctly, in this case you just can deploy separate applications on the different servers as a copy of the instance of server A without setting the replication up. With such a configuration, you will be able to remove servers without additional actions.

 

Before the deployment you also can check the software and hardware requirements based on your product and functionality needs by using the "Requirements calculator":

https://academy.creatio.com/docs/requirements/calculator?document=studio

 

Best regards,

Roman

Roman Rak,

Yes you are correct in this scenario 

 

But this is our last hope if we didn't get any solution

 

But i want same thing to happen on same instance where i can have B,C,D configuration which have basics of A but on changing/modifying  any of these it will not impact other and can be easily shutdown in case of no use

 

as similar people will be working on them but with little change on each of them so if i switch to other server then it will be costly as each server will cost for licenses

 

If there is some solution to this please let me know

 

Thank you

Braj Raj singh Kushwaha,



There's no need to use dedicated server for each application. 

You can run multiple applications on the same server, however you'll need to set up the apps to different ports (example A : host:80 , B: host:81, C: Host:82, etc. ) You'll also need to deploy separate database for each application. 



Please keep in mind that in this case the requirements of the server will be higher. 



Best regards,

Yurii.

 

Yurii Sokil,

 

Thank You So much For this Info

 

1. Currently we are using cloud server can creatio help us to install multiple application on that server

2. Can same user switch between those application using same credentials and license(as mutiple application will be assigned to same user)

 

 

Thank You

 

Braj Raj singh Kushwaha,





The installation of multiple applications on the same server goes the same route as simple On-site deployment. 

You need to deploy a database, set up connection strings and run the application is IIS( for .Net Framework) or Terrasoft.WebHost.dll (for  .Net Core) 

The only difference is that when you're configuring bindings for the site you need to choose dedicated port for each application( for example, there can not be two applications with address  host:80). 

For .Net Core app bindings are configured in applicationsettings.json  file which is located in root folder of the application. 



As for the same credentials - it is indeed possible to have same credentials for different environments, however it's not recommended approach from data security point of view. 



As for the licenses - it's better to ask your responsible manager about that. 



Best regards,

Yurii. 

Show all comments

Hey community,

 

I've created a business process that puts the email in a contact object in lowercase. There are 2 signals, one when a contact is created and one when an email is updated.

 

When any user creates a contact, the business process runs and puts the email in lowercase.

 

If someone other than me updates an email, for unknown reasons, the business process don't run. If I am the one updating the email, the business process runs.

 

I've created many business processes and this is the only one that does that.

 

This is not a problem in the business process itself, as it works fine when I update an email.

 

The launch rights are the same as for all my other business processes.

 

I have admin rights on Creatio (I don't use the supervisor account, I have my own account with admin rights). Even if another admin updates the email address of a contact, the business process don't run.

 

Do you have any clues as to what is happening, why it is happening and how I can solve this problem?

 

Please feel free to ask for more details or screenshots if necessary.

 

EDIT :

I'm trying to update the email by editing the ContactPageV2 and the ContactMiniPageV2 directly. Here is my code but I can'tt find a way to make it work..

 

define("ContactPageV2", ["MultiChoiceMixin", "css!ClientUnit_MTF_ContactCustomCSS"], function() {
	return {
		entitySchemaName: "Contact",
		attributes: {
			"UsrInterests": {
				"dataValueType": Terrasoft.DataValueType.LOOKUP
			},
			"Email": {
				dependencies: [{
					columns: [],
					methodName: "emailToLower"
				}]
			}
		},
		/** ... */
		methods: {
			init: function() {
				this.callParent(arguments);
				this.mixins.MultiChoiceMixin.init.call(this, arguments);
				},
			emailToLower: function () {
				this.set("Email", this.get("Email").ToLowerCase());
			},
                        /** ... */

 

define("ContactMiniPage", [], function() {
	return {
		entitySchemaName: "Contact",
		attributes: {
			"Email": {
				dependencies: [{
					columns: [],
					methodName: "emailToLower"
				}]
		},
		/** ... **/
		methods: {
			emailToLower: function (){
				this.set("Email", this.get("Email").ToLowerCase());
			}
		},
                /** ... **/

 

Best regards,

 

Julien Gunther

Like 0

Like

1 comments

Hello Julien,

 

Hope you're doing well.

It would be great if you could provide the screenshots of the business process you use and the process elements settings as well.

Thank you in advance.

 

Best regards,

Roman

Show all comments

I'm calling REST api of Contact ,Account and Case management for CRUD operation. I'm calling Creatio CRM REST from WSO2 EI. It is identical the Request which is send from the Postman or Rest Client.

But it gives 302 Status for WSO2 EI calling the  Creatio REST while it gives 403 for Postman or Restclient If BPMCSRF header doesn't contain cookie value.

 

If the BPMCSRF header value contains correct cookie value from the Login request, Postman or Restclient gives 201/200 for success operation and WSO2 EI gets same 302 response.  Login API call working fine from the WSO2 EI. 

 

Sample Request from WSO2 EI

"POST /0/odata/Account HTTP/1.1[\r][\n]"

"Accept: application/json;odata=verbose[\r][\n]"

"X-Requested-With: XMLHttpRequest[\r][\n]"

"ForceUseSession: true[\r][\n]"

"Content-Type: application/json[\r][\n]"

"Content-Length: 228[\r][\n]"

"Host: 103594-crm-bundle.creatio.com[\r][\n]"

"Connection: Keep-Alive[\r][\n]"

"User-Agent: Synapse-PT-HttpComponents-NIO[\r][\n]"

"[\r][\n]"

"{"Name":"API Test","AccountId":"e6574af1-3e92-4099-958e-e798f52ee016","JobTitle":"Marketing manager","BirthDate":"0001-01-01T00:00:00Z","Phone":"","MobilePhone":"+1 213 566 34 22","Email":"test@gmail","Completeness":30,"Age":19}"

 

Sample Response from Creatio 

 

"HTTP/1.1 302 Found[\r][\n]"

"Server: nginx/1.14.1[\r][\n]"

"Date: Thu, 16 Sep 2021 06:21:05 GMT[\r][\n]"

"Content-Type: text/html; charset=utf-8[\r][\n]"

"Content-Length: 170[\r][\n]"

"Connection: keep-alive[\r][\n]"

"Cache-Control: private[\r][\n]"

"Location: /Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount[\r][\n]"

"X-AspNet-Version: 4.0.30319[\r][\n]"

"X-Powered-By: ASP.NET[\r][\n]"

"X-Frame-Options: SAMEORIGIN[\r][\n]"

"X-Content-Type-Options: nosniff[\r][\n]"

"[\r][\n]"

"Object moved[\r][\n]"

"

Object moved to here.

[\r][\n]"

"

.

Like 0

Like

7 comments

It means that you are not authenticated properly in the application (see location part  "/Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount", you were redirected to the login page). You need to check all the cookies that are passed to the OData request that you send and compare it with cookies you get in Postman + perform more tests to see which cookie set will result in a successful call.

Oscar Dylan,

If the authentication error, it should be 401 or 403 status. But here it is always redirect to login page with 302. verified the headers from Postman and client app both, those are identical. 

Anusha,

 

That is correct - the resource was found, but you need to authenticate first (once again, pay attention to the location path /Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount). The system automatically redirected you to the login location.

 In Postman you receive 200 OK to the request, but before it you receive 302 response (can check in the Postman console):

Hi Oscar,

 

Thank you very much for the information, but still I'm confused authentication approach. This is what I'm doing.

 

When I get 302 for Contact endpoint, then I perform the authentication to  auth endpoint  POST call <Creation-app-host>/ServiceModel/AuthService.svc/Login with the body [1]. Then I see cookies details in the response with BPMCSRF cookie with 200 response.  Then I send again the Contact endpoint with those auth cookies, [2]  are the headers which I send to Contact endpoint again. But still same 302 redirection is there even after successful authentication. 

 

Could you please help me on this.

--- does the above approach wrong

--- does the auth headers wrong mentioned in [2]

 

If above approach wrong, please help me to find request format from the client application to complete the successful Contact create through the  client.

 

[1] body

{

   "UserName":"xxxxxxxxx",
   "UserPassword":"xxxxxxx"
}

 

[2] . Headers

 

Accept: application/json;odata=verbose[\r][\n]"

"BPMCSRF: cvHrL0GEHYdswl1QZh8Ie.[\r][\n]"

"ForceUseSession: true[\r][\n]"

"Set-Cookie: .ASPXAUTH=F82E.... "

"Set-Cookie: BPMCSRF=cvHrL0GEHYdswl1QZh8Ie."

"Set-Cookie: BPMLOADER=zchmt5tlzildsx22zlle1wnk"

"Set-Cookie: UserName=93|117|112|101|114|118|105|115|101|114"

"Content-Type: application/json; charset=utf-8[\r][\n]"

"Content-Length: 228[\r][\n]"

"Host: 103594-crm-bundle.creatio.com[\r][\n]"

"Connection: Keep-Alive[\r][\n]"

"User-Agent: Synapse-PT-HttpComponents-NIO"

 

Hi Anusha,

 

Unfortunately you have to run test and find a way to pass the cookies to the request properly in terms of your integration. For example I have this cookie header in Postman:

 

BPMSESSIONID=xjjysy25na5ig5sqbgdyxd14; visid_incap_2180455=49BJJNmNT1uK2vo4spt1YM3yQWEAAAAAQUIPAAAAAAB7xEOk/CkixDKkf1pVpwRW; .ASPXAUTH=0129CAB95F4B3C753B6B00E3BBC7F15E9F0CF094A9209DCC541E033D963163699488F8A6AF3F3F845BABCA582CE603AD00E4AC3EE005216347F4B399235033BF60A3338158451099DEC44FE8B1920F57398E4439EE170B436C75FF3BA3BFC2C28BF8BCCB6D37261D9942F97133800DFEED491B8C8671824183CF9CD2CC20549B5BF672599D3F9CAD151E6F4C92A95C7FC888E4214039842D8B53E540D03495542D8C60B238BA9759FFAE27920E7688D35C92795D59741A8D0E5B34234C6DCC769F79A176BF63CCA190D0BEC19A8ACF3793A6522866BF14A14092474BBA68D100282CE8CB6DAB3C8041DB7544EABD759617446687311CE784129E88BE2558CE2917C790372F214D6E8D05B630B789F0D37E4EBB60E06A6B0C20FE075ED78960211A017F115D32F53B2D76E9B2AF302EC3887E47FE421CA76D246B0FCD8260B25380BED735F19C87C0545187841709C5A75B5547CDF43D52304C9D4760C8E625F7DA674A74; BPMCSRF=ulHtF40aiiRNzRWk5BMTWO; BPMLOADER=mnbxfikelfxqnnl2iz0aiobd; BPMSESSIONID=xjjysy25na5ig5sqbgdyxd14; UserName=83|117|112|101|114|118|105|115|111|114

 

And I guess all of them should be also passed to your request. This is not something that can be solved on the community, you need to test your integration authentication to find a correct way.

 

Also check if your authentication in terms of your integration is configured in the similar way to the one explained here.

Hi Oscar,

 

Thanks for the information. I will check further.

 

Thanks & Best Regards

Anusha

Show all comments

Hi Community,

 

1. Is there an OOB set up to where we can fill in default assignee for cases registered from incoming emial? or do we need to create a custom business process?

 

2. What are the business processes involved in registering cases from incoming email?

 

Thank you

Like 0

Like

2 comments

Hi Fulgen,



1. You can set us a default value for an 'Assignee' column of your object. Here is the example :



However, the object should be in the Custom package. You will not be able to set default values for the base objects.



2. The name of the business process which involved in registering cases from incoming email is Incoming email registration process



Best regards,

Bogdan

Thank you Bogdan, I need only to set default assignee for new cases registered from incoming email not the default assignee in general. Is there an OOB set up for this?

 

 

Show all comments

Hi community,

 

I must move the marketing campaigns from one package to another. The versions of my customer's CRM is the 7.17.0 and they don't have this "move to another package" option, released after the 7.17.0 update. 

 

I tried to "Export" the element and then reimport it in the apposite package but it doesn't work because it imports it in the same package even if I select the new package and I change the current package in the system settings.

 

How can I achieve this without doing the update to the newest release ? I can't do it right now for a customer's point of view but I need to export some marketing campaigns from the current package to the custom package.

 

I'm almost sure that there is a command from the clio console but how can I find which element is the marketing campaign I want to move in my packages. Should I move only one element or are there other elements directly related to this marketing campaign ? Could you help me to try to find this out ? 

 

Thanks a lot !

 

7.18.3

 

7.17.0

 

 

Like 0

Like

1 comments

Dear Jonathan,

 

As for now, there is no such OOTB functionality that will allow transferring marketing campaigns from one instance to another fully due to the way campaign elements are connected. You can try to bind them to the package but we cannot guarantee that campaign will work after transfer so we do not recommend doing it.

 

This is happening due to the fact that each system generates its own ID values for communication between campaign elements. So during migration to a new system, due to the uniqueness of these links for each campaign, conflicts arise due to which the campaign functionality can start working not properly after the migration (like in cases when the campaign contains additional elements).  On another hand, after transferring the campaign schema, you can perform correct data binding using SQL scripts. However, this is very detailed work, so the best option would be to re-create the campaign scheme in a new environment.

 

Our R&D team responsible for this functionality is already working on implementing this functionality in future releases. I will forward your case to the team in order to increase the importance of this functionality.

 

Best regards,

Roman

Show all comments