Hi

 

I'm following the Kubernetes tutorial in the Academy to deploy the Exchange service:

https://academy.creatio.com/documents/administration/7-16/deploying-synchronization-service-kubernetes?document=administration#CSH_3

 

I deployed Redis database and ExchangeListener package using Helm.

When I deployed the ExchangeListener package and forwarded the local port to the host I got "Connection Refused" and the service crashed.

Any help! 

PS C:\Windows\system32> helm install --set apiVersion=apps/v1 --set env.host=exchange-listener-redis-master.default.svc.cluster.local --name creatioexchangelistener "C:\Program Files\kubernetes\exchangelistener-0.5.0.tgz"
NAME:   creatioexchangelistener
LAST DEPLOYED: Wed Jun 17 22:23:52 2020
NAMESPACE: default
STATUS: DEPLOYED
 
RESOURCES:
==> v1/ConfigMap
NAME                            DATA  AGE
creatioexchangelistener-worker  2     0s
 
==> v1/Pod(related)
NAME                           READY  STATUS             RESTARTS  AGE
creatioexchangelistener-api-0  0/1    ContainerCreating  0         0s
 
==> v1/Service
NAME                         TYPE       CLUSTER-IP    EXTERNAL-IP  PORT(S)  AGE
creatioexchangelistener-api  ClusterIP  10.96.65.102  <none>       80/TCP   0s
 
==> v1/StatefulSet
NAME                         READY  AGE
creatioexchangelistener-api  0/2    0s
 
==> v1beta1/Ingress
NAME                         CLASS   HOSTS           ADDRESS  PORTS  AGE
creatioexchangelistener-api  <none>  test.tscrm.com  80       0s
 
 
NOTES:
1. Get the application URL by running these commands:
 
PS C:\Windows\system32> kubectl port-forward creatioexchangelistener-api-0  8089:80
Forwarding from 127.0.0.1:8089 -> 80
Forwarding from [::1]:8089 -> 80
Handling connection for 8089
Handling connection for 8089
E0617 22:25:06.332296    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:06 socat[53947] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused
E0617 22:25:06.332296    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:06 socat[53948] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused
Handling connection for 8089
E0617 22:25:06.360263    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:06 socat[53949] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused
Handling connection for 8089
Handling connection for 8089
E0617 22:25:06.459266    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:06 socat[53950] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused
E0617 22:25:06.464261    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:06 socat[53951] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused
Handling connection for 8089
E0617 22:25:06.475264    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:06 socat[53952] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused
Handling connection for 8089
Handling connection for 8089
E0617 22:25:11.511131    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:11 socat[54236] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused
E0617 22:25:11.513105    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:11 socat[54237] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused
Handling connection for 8089
E0617 22:25:11.527104    9584 portforward.go:400] an error occurred forwarding 8089 -> 80: error forwarding port 80 to pod ec2e3c86d81d27efeb0ff525ce5898f1ac78a2b7c1358837c3da569965831451, uid : exit status 1: 2020/06/17 20:25:11 socat[54238] E connect(5, AF=2 127.0.0.1:80, 16): Connection refused

 

 

Thank you

Mohamed

Like 0

Like

3 comments

Hello Mohamed,

 

Seems that your 8089 has no process that listens to this port so that's why you cannot forward the listener to this port. Try running this command:

 

netstat -abn | findstr "LISTENING" | findstr "your host IP-address" | findstr "8089"

 

and check if this command shows the result.

 

Then try running

 

kubectl -n default exec -it creatioexchangelistener curl -v host_IP_address:8089

 

and let's check the result then (we will need to run kubectl describe pods creatioexchangelistener)

 

Best regards,

Oscar

Hi Oscar

Can you please provide me a YAML file to deploy the pod (Redis + Exchange Listener + Expose Service Address)?

 

Thank you

Mohamed

Mohamed Ouederni,

Hello Mohamed,

 

We don't have a separate YAML file for this proposes and Redis should be installed separately. All available .yaml files can be found in the exchangelistener-0.6.9.tgz file that is downloaded via this link 

 

http://ftp.bpmonline.com/support/downloads/Exchangelistener/exchangelis…

 

Best regards,

Oscar

Show all comments

Hello

I'm deploying Creatio Exchange Listener for my developing environment. 

I'm following this academy guide:

https://academy.creatio.com/documents/administration/7-16/deploying-synchronization-service-docker?document=administration#CSH_4

I got this error message when I created the listener container:

PS C:\Users\medouederni-pc> docker run -p 8808:80 --env ExchangeListenerRedisHost=172.17.0.2 --env ExchangeListenerRedisDatabase=0 --env PodName=CreatioExchangeListener  --name CreatioExchangeListener bpmonline/exchangelistener:0.5.0                                                                                                                               Unable to find image 'bpmonline/exchangelistener:0.5.0' locally
0.5.0: Pulling from bpmonline/exchangelistener
804555ee0376: Pull complete                                                                                                                                                         970251047358: Pull complete                                                                                                                                                         f3d4c41a4fd1: Pull complete                                                                                                                                                         1cccda79a5f9: Pull complete                                                                                                                                                         a02b6037fa5e: Pull complete                                                                                                                                                         5a51c6fa0bad: Pull complete                                                                                                                                                         Digest: sha256:bb4e356161faade8783fbb86a820f96b837222a11dce7311617b4236777c49c4
Status: Downloaded newer image for bpmonline/exchangelistener:0.5.0
log4net:ERROR Could not create Appender [ExchangeListenerGelfAmqpAppender] of type [Gelf4Net.Appender.GelfAmqpAppender, Gelf4Net.AmqpAppender]. Reported error follows.
RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address
   at System.Net.Dns.InternalGetHostByName(String hostName)
   at System.Net.Dns.ResolveCallback(Object context)
--- End of stack trace from previous location where exception was thrown ---
   at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult)
   at System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult)
   at System.Net.Dns.<>c.<GetHostAddressesAsync>b__25_1(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
   at RabbitMQ.Client.TcpClientAdapter.ConnectAsync(String host, Int32 port)
   at RabbitMQ.Client.Impl.TaskExtensions.TimeoutAfter(Task task, Int32 millisecondsTimeout)
   at RabbitMQ.Client.Impl.SocketFrameHandler.Connect(ITcpClient socket, AmqpTcpEndpoint endpoint, Int32 timeout)
   --- End of inner exception stack trace ---
   at RabbitMQ.Client.EndpointResolverExtensions.SelectOne[T](IEndpointResolver resolver, Func`2 selector)
   at RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(IEndpointResolver endpoints)
   at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)
   --- End of inner exception stack trace ---
   at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)
   at Gelf4Net.Appender.GelfAmqpAppender.InitializeConnectionFactory()
   at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR Appender named [ExchangeListenerGelfAmqpAppender] not found.
Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.

 

I tested the service and its working:

{
  "ServiceStatus": "Started",
  "version": "0.5.0",
  "connections": {}
}

I made the creatio configuration side:

https://academy.creatio.com/documents/administration/7-16/set-exchange-listener-service-side-creatio?document=administration#CSH_5 

Now, I can send emails but when I try to sync the mailbox I got this error:

[ExchangeListener.Subscription.ServiceFactory] 2020-06-16 11:57:47,885 [39] INFO : [18e30f9f-a1e7-4718-9cd1-e16577924fa2] End processing EmailMessage with id '31'.
[ExchangeListener.DataSend.EventDataSender] 2020-06-16 11:57:47,886 [39] DEBUG:  EventDataSender sending request to http://localhost:7700/0/ServiceModel/ExchangeListenerService.svc/ProcessFullEmail
[ExchangeListener.Email.Events.EmailEventProcessor] 2020-06-16 11:57:47,890 [42] ERROR: [18e30f9f-a1e7-4718-9cd1-e16577924fa2] [06/16/2020 11:57:47] Mailbox creatio123456789@gmail.com: error sending emails ['<71fe88dc-0198-4eca-8cc9-a8771976b3ab@gmail.com>' in folder ,'<71fe88dc-0198-4eca-8cc9-a8771976b3ab@gmail.com>' in folder ] to http://localhost:7700/0/ServiceModel/ExchangeListenerService.svc/NewEmail.
System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: Couldn't connect to server
   at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error)
   at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at ExchangeListener.DataSend.EventClient.PostAsync(String requestUri, HttpContent content) in /src/src/ExchangeListener/DataSend/EventClient.cs:line 42
   at ExchangeListener.DataSend.EventDataSender.Send(String url, Object data) in /src/src/ExchangeListener/DataSend/EventDataSender.cs:line 85
   at ExchangeListener.DataSend.EventDataSender.SendEmail(Object data, SynchronizationCredentials credentials) in /src/src/ExchangeListener/DataSend/EventDataSender.cs:line 95
   at ExchangeListener.Email.Events.BaseEventProcessor.SendRequestObject(Object requstDtoObject, SynchronizationCredentials credentials) in /src/src/ExchangeListener/Email/Events/BaseEventProcessor.cs:line 149
   at ExchangeListener.Email.Events.EmailEventProcessor.SendEmailMessagesToBpm(List`1 messages, SynchronizationCredentials credentials) in /src/src/ExchangeListener/Email/Events/EmailEventProcessor.cs:line 66
[ExchangeListener.Imap.Subscription.ResentEmailsSynchronization] 2020-06-16 11:57:47,892 [39] INFO : [18e30f9f-a1e7-4718-9cd1-e16577924fa2] Email ids sended to bpm.
[ExchangeListener.Imap.Subscription.ResentEmailsSynchronization] 2020-06-16 11:57:47,892 [39] INFO : [18e30f9f-a1e7-4718-9cd1-e16577924fa2] Synchronization session for creatio123456789@gmail.com ended.

 

Thank you

Mohamed

Like 1

Like

4 comments

Hello Mohamed,

 

This is strange that your Exchange service returns this:

{
  "ServiceStatus": "Started",
  "version": "0.5.0",
  "connections": {}
}

even after the mailbox was used for emails sending. Please go to the mailbox settings and apply any changes there and see if you see something similar to this after that:

So you see the record about your mailbox there. Or try re-adding your mailbox to the app from scratch.

 

The error message you receive states that ExcahgneListener services couldn't establish the connection to the mail server. Please use this command:

 

ping mail_server_ip_address

 

from the ExchangeListener server so to test the connectivity. Also please check if the "The URL of the Exchange event processing service in Creatio" system setting has the value of https://mycreatio.com/0/ServiceModel/ExchangeListenerService.svc/NewEmail.

 

I've deployed the service on my end using the Academy instructions and everything is working properly so it should work as expected on your end and the problem can be in the connection between the email server and the ExchagneListener service.

 

Best regards,

Oscar

Dear Oscar Dylan,

 

Problem solved! It was a networking issue in Docker for Windows.

 

For everyone who may have this issue, you have to use host.docker.internal variable as your host IP address.

More information: https://docs.docker.com/docker-for-windows/networking/

Hi Mohamed,

 

I am running into the same issue for an on-prem dev image.  You indicated the issue was resolved via "For everyone who may have this issue, you have to use host.docker.internal variable as your host IP address."  Could you elaborate on that?  I read the article on docker for windows networking but wasn't clear on how you implemented the resolution.  Thanks so much :)

 

Update - never mind. Figured it out.  Using host.docker.internal in place of localhost in all cases. This resolves everything and ExchangeListener is working for both syncing and sending.  Thanks!!  :)

Hi Mohamed,

Can you help me with following questions:

Did you use OS setup file or pull request for installing Redis?

How did you set up redis host address?

Where exactly we use "host.docker.internal" variable. The link you shared doesnt seem to work.

 

Thank you

Gokul

Show all comments

Dear mates,

Is it possible to always display emails CC when the page email open ?

Without having to click on the CC button ?

https://prnt.sc/spzdzd

Thanks,

Nicolas

Like 0

Like

2 comments

Hello Nicolas, 



You simply delete container called "CC" for Email Edit Page in Section Wizard for Activity section, replace it with a CC field instead (it's available in the fields container on the left side of the page) and save the changes. 

Please see these screenshots:



Once the changes are saved, please re-login into the application and this field will be always displayed on the email page. 



Kind regards,

Roman Brown

Hello Roman,

Super ! it works.

Thank you !

Nicolas

 

 

Show all comments

Dear mates,

I would like to modifiy our timelines on differents pages.

I try to follow the guide: https://academy.creatio.com/documents/technic-sdk/7-13/timeline-tab

But i can not access the database to do the modifications.

How can we have an access to the database ?

Thanks,

Nicolas

Like 0

Like

1 comments

Hello Nicolas,

 

This method is only good for the development environments deployed on-site. Since the modifications are implemented directly in the database, they are not bound to any package. That is why the modifications will not be implemented in the database if the package with the view models and the tile view models is installed into another application. For the correct transfer of the developed functions, you need to bind the SQL-scripts that implement the corresponding modifications in the database when installing the package.

 

Best regards, 

Olga. 

Show all comments

Dear mates,

 

Is it possible to open the page call after a call ?

 

Thanks,

Nicolas

Like 0

Like

21 comments

Hello Nicolas,

 

Yes, this is possible and the sequence is as follows:

 

1) Execute this SQL query in the database of the app:

 

update Sysmodule set IsSystem = 0 where Code = 'Call'

 

2) Once done refresh the page and go to the business process designer and create a business process with the start signal that is triggered upon record modification in the "Call" object and expects changes in the "End date" field (since once the call is completed the "End date" field is filled in). Also there should be a filter that the "End date" is filled in and the "Modified by" field value is set as the "Current contact" (so to avoid collisions in process start for different users) http://prntscr.com/ssevy1.

 

3) Add an "Open edit page" process element that will open the completed call and fill in the following parameters like on the screenshot https://prnt.sc/sov1co (Record id is a unique identifier of the record from the start signal process element).

 

As a result when the process is saved each time a call is completed you will see the edit page of this call that is opened via a process and the business task is achieved.

 

Best regards,

Oscar

Oscar Dylan,



Oscar, can I ask what the IsSystem column in SysModule indicates? I assume that objects marked as IsSystem=1 don't emit object add/edit/delete event signals, is this correct? Does changing the value for IsSystem impact anything else?

 

Thanks,

Ryan

Ryan Farley,

 

If this column value is set as 1 then the object of this module cannot be displayed in the "Open edit page" process element and yes, you are correct, system objects cannot trigger signals of the process (like SysAdminUnit object that is also a system object).

 

It is not recommended to update this column value (IsSystem), but in our particular case everything works correctly after that (tested locally). It is also better to firstly update the column in some dev-app and check if other functionality related to the module we've updated works correctly and only then apply the same changes to prod.

 

Best regards,

Oscar

Oscar Dylan,

 

Oscar, thanks for the useful info. Very appreciated.

 

Ryan

Hello Oscar I did it, but for some reason the edit page doesn't opens, please see at http://prntscr.com/sox1c2, http://prntscr.com/sox1qo and http://prntscr.com/sox294, whats wrong?

 

Julio.Falcon_Nodos,

Hello Julio,

 

And can you please send the screenshot of the start signal process element?

 

Best regards,

Oscar

Hello Oscar, sure it's on http://prntscr.com/soxqdl, also I change the value of isSystem, you can check it on http://prntscr.com/soxrdl

Julio.Falcon_Nodos,

 

Thank you for the screenshots! Is this a local installation? Do you have a page displayed in the CTI panel in the "Business process tasks" tab https://prnt.sc/soxyxz?

 

Best regards,

Oscar

Oscar Dylan,

Yes, we have integrated Webitel Call Manager, if not the process must no start, and the process stays running on the edit page, but on open it

Julio.Falcon_Nodos,

 

And as for the CTI panel? Do you have the edit page schema displayed there? Can you click on it and open the edit page?

 

Best regards,

Oscar

Hello Oscar,

Thank you for answer, unfortunatly, i follow your instructions but the process is not launch

i did the SQL:

https://prnt.sc/spbs1x

Here's my process:

https://prnt.sc/spbbt0

https://prnt.sc/spbcxm

In the process log i have no record:

https://prnt.sc/spbdw7

Any idea ?

Oscar Dylan,

Hi Oscar, I don't understand you, I don't know how to edit the CTI Panel? I can edit Sections, but don't know how to do what you are asking me, please could you indicate how to did it?

LÉZORAY Nicolas,

please make sure that telephony works, and that after the call end the End date is filled in after call ends.

Julio.Falcon_Nodos,

does the record appear at the CTI panel (https://prnt.sc/soxyxz) after the Business process start?

Daria Zigulya,

Thanks Nicolas, calls works, and I click on end button at the end. In  fact the process task to must open the edit page stays running, but not open the edit page

Julio.Falcon_Nodos,

 

Can you please email us at support@creatio.com and provide us with the link to the app where the telephony is configured and the link to the process so we could check it on our end. The simple process created on our side works perfectly with Webitel and probably the problem is with the telephony provider, but we need to check it on the environment where the issue occurs.

 

Thank you in advance!

 

Best regards,

Oscar

Daria Zigulya,

Hello Daria, yes it appear, see at 

http://prntscr.com/sq48to, but no open the call edit page, why?

Oscar Dylan,

Oscar we are using Webitel Call Manager, I will sent an email to support later, but it's the same site we have reported another details the last days where we are preparing a Webinar with Kate. Thanks

Julio.Falcon_Nodos,

Hi All, as Oscar ask to me, I create a ticket on support, thanks. As soon as I have solved the problem I could share here what0s wrong and how to solve.

Hello all, my problem, regarding not open the Call Edit page was due I have marked "Run Following elements in the background", due this the Edit page open, but in the background and I don't see it... To enable to see the page, I must uncheck this option, see at http://prntscr.com/srr3ng

Hello Oscar,

 

It works ! the call page open after a call !

 

thank you !!

Nicolas

Show all comments

Hello Creatio lovers :-)

 

I have defined to test two products with their price in different currencies (USD and CLP, represented in Chile as (USD as USD and CLP as $)

 

When I did an Opportunity, using products with prices in the defined currencies "Detail summaries for Creatio add-on" sums USD with CLP totals as the same rate,  how can I solve it?

 

Please see at http://prntscr.com/sl6l5m

 

Have I way to solve this?, "Detail summaries" offers just Total/Sum, see at http://prntscr.com/sl6ms2 and have not what in Marketplace offers, selecting base currency, for example, how can I activate this? Please see at https://marketplace.creatio.com/sites/marketplace/files/maketplace/sc2_detail_sum.png

 

Also, Creatio calculates wrong the Opportunity Total, how can we correct this? Please see at http://prntscr.com/sl6umo

 

Thanks in advance

 

Like 2

Like

3 comments

Hello Julio,

 

you need to customize a multi-currency field for the Total column in the 'Opportunity product' detail. A multi-currency field will allow you to use detail summaries in a similar way as for Orders.

 

Hello Irina, thanks, but I have no a "multi-currency field" on my opportunity detail, could you, please, explain me with more details as we can solve this?

Hello Julio,



To set up the multi-currency field, use the following Development Guide instruction: https://academy.creatio.com/documents/technic-sdk/7-16/how-add-multi-currency-field

Hope it helps.

Have a good forthcoming weekend!

Show all comments

I am getting this on 7.15.2 when I try to compile after updating the package.

I have .net 4.8 installed on that iis server.

 

2020-05-15 16:16:08,286 [220] ERROR IIS APPPOOL\test-bpm.tmf.org Build BuildInternal - An error occured while running dotnet cli

System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified

   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

   at Terrasoft.Core.Compilation.ProjectBuilder.BuildInternal(String projectFilePath, String tempPath, BuildCommandParameters parameters)

Like 1

Like

1 comments

Hi,

 

This issue occurs when .NET Core SDK 2.2.300 is not installed on the server. After it is installed restore the server and try to compile site again. Make sure that all components are installed before installing Creatio: https://academy.creatio.com/documents/administration/7-15/installing-creatio#XREF_45275_bpm_online_on_site

 

Best regards,

Angela

Show all comments

Hi,

I am getting an issue while setup an excel report add on in development instance.

I installed the package from the market place. The package URL is as follows:



Package  URL : https://marketplace.creatio.com/app/excel-reports-builder-creatio



I am following all steps mentioned in the reference document as given below.

 

image.png



But the added Section is not displaying in the workstation.



Please help to fix this issue.

 

Like 0

Like

3 comments

Hi,

 

first, logout and login to the application again. If the issue persists, try to add first any basic section to the workplace and after that the 'Excel reports' section. 

Same issue - did you get this resolved?

Hi Julian,

 

Unfortunately, we couldn't reproduce the issue on the base product to submit it to the responsible team. Please provide any additional details to reproduce this issue.

Note that after successful add-on installation you need to logout and login to the Creatio again. It helps to apply all changes from the package.

 

Thank you.

Show all comments

Hi ,

 

I need help in changing Period Filter in Invoice Section and add Current Quarter ,Current Year in the dropdown.

 

Thank you.

File attachments
Like 0

Like

3 comments
Best reply

Dear Sushma,

 

In order to implement the required functionality please do the following:

1. Add a module that would be exactly the same as FixedFilterViewV2 (copy all the code except the name in define, localizable strings and images), e.g. UsrFixedFilterViewV2 https://prnt.sc/shwown .

 

2. In this module, modify the “getPeriodFixedButtonsViewConfig” function by adding the following code https://prnt.sc/shwpwh :

 

                    // new menu items

                    {

                    className: "Terrasoft.MenuItem",

                    caption: usrResources.localizableStrings.CurrentQuarter,

                    click: {bindTo: "setPeriod"},

                    tag: filterName + "_CurrentQuarter"

                },  {

                    className: "Terrasoft.MenuItem",

                    caption: usrResources.localizableStrings.CurrentYear,

                    click: {bindTo: "setPeriod"},

                    tag: filterName + "_CurrentYear"

                }]

                                                                         

3. Add a module that would be exactly the same as FixedFilterViewModelV2 (copy all the code except the name in define, localizable strings and images), e.g. UsrFixedFilterViewModelV2 https://prnt.sc/shwtvn .

 

4. In this module, modify the “setPeriod” function by adding the following code https://prnt.sc/shwumk :

 

                case "CurrentQuarter":

                    startDate = Terrasoft.startOfQuarter(startDate);

                    dueDate = Terrasoft.endOfQuarter(startDate);

                    break;

                case "CurrentYear":

                    startDate = Terrasoft.startOfYear(startDate);

                    dueDate = Terrasoft.endOfYear(startDate);

                    break;

                                                         

5. Create a new module to override QuickFilterModuleV2 https://prnt.sc/shwwcg

 

define("UsrQuickFilterModuleV2", ["QuickFilterModuleV2"], function() {

        Ext.define("Terrasoft.UsrQuickFilterModuleV2", {

            override: "Terrasoft.QuickFilterModule",

           

            getDefaultModuleConfig: function() {

                return {

                    FixedFilters: {

                        viewConfigModuleName: "UsrFixedFilterViewV2",

                        viewModelConfigModuleName: "UsrFixedFilterViewModelV2",

                        configPropertyName: "fixedFilterConfig"

                    },

                    CustomFilters: {

                        viewConfigModuleName: "CustomFilterViewV2",

                        viewModelConfigModuleName: "CustomFilterViewModelV2",

                        configPropertyName: "customFilterConfig"

                    },

                    FolderFilters: {

                        viewConfigModuleName: "FolderFilterViewV2",

                        viewModelConfigModuleName: "FolderFilterViewModelV2",

                        configPropertyName: "folderFilterConfig"

                    },

                    TagFilters: {

                        viewConfigModuleName: "TagFilterViewGeneratorV2",

                        viewModelConfigModuleName: "TagFilterViewModelGeneratorV2",

                        configPropertyName: "tagFilterConfig"

                    }

                };

            }

        });

    }

);

 

6. Add a dependency in the “InvoiceSectionV2” schema to the overridden “UsrQuickFilterModuleV2” module https://prnt.sc/shwzto :

 

define("InvoiceSectionV2", ["UsrQuickFilterModuleV2"], function(){

               return {

                              "entitySchemaName": "Invoice"

               };           

});

 

 

Best regards,

Norton

Dear Sushma,

 

In order to implement the required functionality please do the following:

1. Add a module that would be exactly the same as FixedFilterViewV2 (copy all the code except the name in define, localizable strings and images), e.g. UsrFixedFilterViewV2 https://prnt.sc/shwown .

 

2. In this module, modify the “getPeriodFixedButtonsViewConfig” function by adding the following code https://prnt.sc/shwpwh :

 

                    // new menu items

                    {

                    className: "Terrasoft.MenuItem",

                    caption: usrResources.localizableStrings.CurrentQuarter,

                    click: {bindTo: "setPeriod"},

                    tag: filterName + "_CurrentQuarter"

                },  {

                    className: "Terrasoft.MenuItem",

                    caption: usrResources.localizableStrings.CurrentYear,

                    click: {bindTo: "setPeriod"},

                    tag: filterName + "_CurrentYear"

                }]

                                                                         

3. Add a module that would be exactly the same as FixedFilterViewModelV2 (copy all the code except the name in define, localizable strings and images), e.g. UsrFixedFilterViewModelV2 https://prnt.sc/shwtvn .

 

4. In this module, modify the “setPeriod” function by adding the following code https://prnt.sc/shwumk :

 

                case "CurrentQuarter":

                    startDate = Terrasoft.startOfQuarter(startDate);

                    dueDate = Terrasoft.endOfQuarter(startDate);

                    break;

                case "CurrentYear":

                    startDate = Terrasoft.startOfYear(startDate);

                    dueDate = Terrasoft.endOfYear(startDate);

                    break;

                                                         

5. Create a new module to override QuickFilterModuleV2 https://prnt.sc/shwwcg

 

define("UsrQuickFilterModuleV2", ["QuickFilterModuleV2"], function() {

        Ext.define("Terrasoft.UsrQuickFilterModuleV2", {

            override: "Terrasoft.QuickFilterModule",

           

            getDefaultModuleConfig: function() {

                return {

                    FixedFilters: {

                        viewConfigModuleName: "UsrFixedFilterViewV2",

                        viewModelConfigModuleName: "UsrFixedFilterViewModelV2",

                        configPropertyName: "fixedFilterConfig"

                    },

                    CustomFilters: {

                        viewConfigModuleName: "CustomFilterViewV2",

                        viewModelConfigModuleName: "CustomFilterViewModelV2",

                        configPropertyName: "customFilterConfig"

                    },

                    FolderFilters: {

                        viewConfigModuleName: "FolderFilterViewV2",

                        viewModelConfigModuleName: "FolderFilterViewModelV2",

                        configPropertyName: "folderFilterConfig"

                    },

                    TagFilters: {

                        viewConfigModuleName: "TagFilterViewGeneratorV2",

                        viewModelConfigModuleName: "TagFilterViewModelGeneratorV2",

                        configPropertyName: "tagFilterConfig"

                    }

                };

            }

        });

    }

);

 

6. Add a dependency in the “InvoiceSectionV2” schema to the overridden “UsrQuickFilterModuleV2” module https://prnt.sc/shwzto :

 

define("InvoiceSectionV2", ["UsrQuickFilterModuleV2"], function(){

               return {

                              "entitySchemaName": "Invoice"

               };           

});

 

 

Best regards,

Norton

Norton Lingard,

Thank you for detail steps along with Screenshots.

Hi guys, would this also work for filtering on dashboards? So would be a solution for custom fiscal year periods? 

Show all comments

 

 

Terrasoft.Common.InvalidObjectStateException: Column FxdChatRefId value cannot be obtained because it has not been loaded.

   at Terrasoft.Core.Entities.EntityColumnValue.get_Value()

   at Terrasoft.Core.Entities.Entity.GetTypedColumnValue[TResult](String valueName)

   at Terrasoft.Configuration.FxdChatDepartment.get_FxdChatRefId()

   at Terrasoft.Core.Process.FxdChatProcessAutoIntegrationAddOrUpdateChatDepartmentMethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessScriptTask.InternalExecute(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

 

I used to version "7.15.0.634", i don't understand the root cause.

 

Like 0

Like

1 comments

Hello Thanh, 



Please try to use "department.GetColumnValue("FxdChatRefId")" instead of "department.FxdChatRefId"

If it doesn't help, please replace "FetchPrimaryColumnFromDB" with "FetchFromDB".



Kind regards,

Roman

Show all comments