Hi everyone, 

I'd like to automate a data Import from a FTP server using a business process, without downloading the file locally.

I also found this article (https://community.creatio.com/questions/how-automate-imports-ftp-locati…) , but the links have either been removed or deleted.

I would like to know whether it is possible to use C# code in a Script Task to store the data stream in RAM and eventually recover the data to import. 

Is it reasonable for a cloud- stored enviroment to handle this kind of process with CSV files of approx. 2 MB?

Like 1

Like

3 comments

Hi Federica, 

 

Actually you are still capable to use OData with business task to achieve required implementation. You don't need to use Scheduler for this, so disregard these deleted links, I will give you fresh one , please take a look on the actual OData 4 link with guide how to set up the integration: 

 

https://documenter.getpostman.com/view/10204500/SztHX5Qb?version=latest

 

Please also check out this link from Marketplace where you may find another solution for you task: 

 

https://marketplace.creatio.com/app/file-manager-creatio

 

here you may set up key features of needed requirements, so you can make "One click" implementation and it might be much easier for you.

 

Best Regards, 

 

Bogdan L. 

The .NET FtpWebRequest class can download a file to an in-memory stream (without actually saving the file anywhere) that you can then process from the stream. This could be used from a ScriptTask in a process etc

FtpWebRequest request =
    (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/path/file.txt");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.DownloadFile;
 
using (Stream stream = request.GetResponse().GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
    while (!reader.EndOfStream)
    {
        string line = reader.ReadLine();
        // process the line as needed
    }
}

Ryan

Ryan Farley,

That's the script I'm running at the moment and it works!

Show all comments

Hi Community,

 

We are registering case from incoming email, we wanted to know the following:

 

1. Aside from Case Source which is "Email", how we will know that this case record is created from incoming email?

2. How we will know which mailbox this case record came from? Since we specified two mailbox in "List of mailboxes for case registration" lookup.

 

Thanks

 

Like 0

Like

3 comments

Hello,

 

Thank you for your message!

 

Case Source is the only way to find out whether a record is created from the incoming email. Also, the email gets linked to the case at once.

 

As for your second question, the mailbox can be seen in the tab "Processing". It's also possible to set a separate case category for each mailbox.

 

Kind regards,

Anastasiia

Anastasiia Lazurenko,

 

Thank you for your reply, there is no "Processing" field in Case table.

Hi,

 

Thank you for your message.

 

I'm sorry my explanation was not clear enough. For example, you receive an email. A new case is registered based upon this email. Once you open the case, you can find this first email received in the "Processing tab". The email address the request was sent to can be seen there.

 

There is no information stored in the case table regarding the email it was registered from. Usually, the category field defines the mailbox this case came from.

 

Hopefully, it's clear now, but please get back if you have any further questions.

 

Regards,

Anastasiia

Show all comments

Hi support 

I've installed the addon https://marketplace.creatio.com/template/marketing-record-types-timeline on a instance of creatio with Contact center + Marketing module

In the timeline account section anything appear, in the browser console appear the attached error.

How can I solve this issue ?

 

Like 1

Like

1 comments

Hi Stefano!



We reviewed this add-on and could reproduce the issue. To fix it, change the timeline filter settings once.

Show all comments

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