Question

I've recently moved a package I'm developing to a new (more updated) environment (7.14.2) and when I try to open the section wizard it locks up.

 

When I check my developer console I see that it triest to access http://localhost/0/rest/SectionService/GetSectionTypes and http://localhost/0/rest/SectionService/GetGeneralAndSspSections but gets a 404 in return.

 

Any idea why this would not be working?

 

Like

7 comments
Best reply

For anyone stumbling upon this later. The Terrasoft.Configuration solution in 7.14 contains extra packages out of the box that I had deleted before setting up git and cloning my own code. This had caused the problem.

I fixed it by copying just the package code into the existing Configuration solution's Pkg folder.

It's hard to say due to lack of information. The correct way of transferring a package between different versions is upgrading the dev application, then transferring the package. The upgrading and the transferring should not throw any exceptions. If they threw, please save installation/upgrade log and restore the application database from backup. 

Hi Eugene,

The package was transferred using git. 

The exception also happens when I open the wizard on any unmodified pages. 

The problem seems to be getting worse though, so I will recreate the environment again.

Is there anything special I am supposed to do to enable the /0/rest endpoint?

Hmmm, something else must be going on. I have set up a completely new environment and I can't even log in anymore. It gives a 404 when trying to locate the AuthService.svc.

Jonas Van der Aa,

Please restore the application from backup and It should work if it worked before. Please use transferring changes via packages (right click on a package -> export package, installed applications -> install from file). This way the system will control the installation. If you use GIT then you have to control everything and resolve all conflicts on your own.

Hello Eugene,

I have tried this, but now the package does not export to the file system so I cannot work on it and submit my changes to git.

I don't have a problem manually resolving the conflicts, if only the software would tell me what they are. The endpoint I mentioned in my original point is an OOB endpoint that suddenly stops working after I import the package from disk (after git clone).

Jonas Van der Aa,

If you work with GIT and in the file system then you have to control everything on your own. The system will not tell where an issue is. 

A version control system such as GIT or SVN can be used only for transferring changes between dev environments that certainly should be on the same version.

If you're transferring the package to a pre-production or to a production application, then please use package import/export functionality without development in the file system.

As for now, please restore the application from the backup that was created when the application worked properly, then disable development in the file system, make sure that it's possible to make changes in the package and compile the system. Then please feel free to enable the development in the file system again. 

For anyone stumbling upon this later. The Terrasoft.Configuration solution in 7.14 contains extra packages out of the box that I had deleted before setting up git and cloning my own code. This had caused the problem.

I fixed it by copying just the package code into the existing Configuration solution's Pkg folder.

Log in or register to comment
Question

Hi,

In my object "Case" i created a new value ofthe type integer that was suposed to beused to calculate de average from all records, but by default the value is 0 wich will afect the result, is there any way to make that value "NULL"?

Thanks,

Best Regards,

Nuno Gonçalves

Like

3 comments

Dear Nuno,

If you need to store NULL value and calculations result in a field - use "String" data type field and use convertions from integer to string and vise versa. As a result you will be able to store integers and NULL in such a field. Here is an article regarding convertion from String to Integer (from our Community) and from Integer to String (from Stack Overflow).

Best regards,

Oscar

Oscar Dylan,

This is not an acceptable response because the String field allows non-numeric answers that generate errors when parsed to numbers.  The only reliable work around is to add a boolean field that the user can check to indicate that a zero is really the answer, which is ridiculous.

This is the community article I wrote on parsing a String to an Integer:

https://community.bpmonline.com/articles/how-convert-string-integer

Janine White,

There is no such a data type accept of string data type that allows storing NULL (not empty value but NULL) and integer values in it. Also I was referring to your community post when answering this question (you can simply check it if you click on "Sting to Integer" text in my previous reply).

Log in or register to comment
Question

Hi,

We are using the last Modified value as a filter on our dashboards and notifications as a method to provide visibility of cases that have not been updated in x days. This is to ensure that our support reps are updating the cases on a regular basis.

What I have found is that not all actions cause this value to be updated. For example, sending an email or recording a call activity, does not update the value. These types of actions do not always require the status to be changed and this then means the visibility of activity is not accurate.

Am I doing something wrong in the method used to identify cases that are not being updated regularly enough or is this a feature request to make such activities update this date/time value?

thanks

 

Mark

Like

5 comments

Hello Mark,

I am 100 percents sure that you've set display options in such a way that only "Modified on" date directly from "Case" object declares the resulted list. And you were right when saying that new calls or emails or feed notification will not update case record. It happens since those actions are inserts to other system objects. Here is the screenshot of display options conditions that includes - new emails, new calls and new notifications on cases http://prntscr.com/nr25fv. The only thing you need to do is to adjust needed date to this filter ( and also change all time conditions from "Modified on" to "Created on" since new records are created like new calls or emails). If you create a filter in such a way http://prntscr.com/nr2fps it will only include modifications of fields present on the case record page (like SLA or Account or Resolution time), but it won't take into a count new emails or calls. But with the help of my filter you will be able to see more changes applied to case record.

Best regards,

Oscar

Oscar Dylan,

Hi Oscar,

Thanks so much for your reply. I will give this a test tomorrow, but it looks like this will achieve what is required!

Mark

Hi Oscar,

Sorry, but I wondered if you could assist with the date logic, as I am not getting the expected results I am looking for. I used your above filters, which extends the filter to the activity types I want, but the filter to create a Modified on is greater than 48 hours is not working.

I believed the use of Previous Hours or Previous Days would be the right option, but using Modified on >= Previous Days 2 does not filter in such a way. How can I apply such a filter?

The screenshot here shows the configuration, where the first section appears to work, but the other 2 do not.

 

thanks

Mark

Mark Roberts,

Please change "Modified On" to "Created On" in those two other blocks. We create new records in those object, not updating them and that's why we don't get any results from those two other blocks in this filter. I've mentioned it in my first reply, please double check it.

Best regards,

Oscar

Hi Oscar,

Apologies, I missed that aspect from your reply.

I have created the following query, but again this does not work, where this needs to be an AND statement, as I am looking for cases with NO activity on either email, status, call etc. for more than 48 hours (2 days). This is to allow us to get visibility of cases which are not being actioned regularly enough.

My expectation is this should work.

Mark

Log in or register to comment
Question

Hi,

 

Am I able to send an email to all users that exist within the one user group (organisational role):

 

 

 

 

 

 

 

 

 

 

I have created the following process and need to update the 'To' field:

 

 

 

 

 

Like

2 comments

Hello,

Unfortunately, you wouldn't be able to put "Functional role" as a value of "To" field of the "Send Email" process element using user tools. Our R&D team already working on adding this functionality, there is no ETA yet, however. You may build your process analogically to the "Send email to case group" base process that sends email to a group of people using script task.

Here is also another solution that can fit your needs: you can specify one recipient in "To" field in the business process "Send email" element and on mail-server side you can setup filters which will transfer notification emails to some specific folder and then mail-server can transfer all emails sent to this folder to other mailboxes. And it will fit your business target. But I will notify our R&D team about your request and ask them to raise the priority of the problem.

Best regards,

Oscar

1) Create a section to maintain a temporary contact list.

2) Add the contacts to the temporary list.

3) Loop through the list, deleting a contact from the temporary list after you email them.

Log in or register to comment
Question

Hi,

Is there a way to package an anonymus webservice created using the guide from the academy?

https://academy.bpmonline.com/documents/technic-sdk/7-13/creating-anony…

I need to have a public endpoint to integrate with a texting app that notifies of messages realtime, but the endpoint cant have authentication. Is there any other way to expose a public endpoint?

 

Regards,

Luciano

Like

5 comments

Hello Luciano,

Basically, to implement the anonymous webservice you should simply follow the instructions from the article that you sent. Anonymous webservice concept means that authentication is not a required step to interact with this service.
Also, if you use onsite version of bpm'online, don`t forget to register the service (there is an explanation how to do it in the article).
In case your site is located in cloud you should email support@bpmonline.com so the support team will help you with registration.

Best regards,
Alex

Alex_Tim,

Thank you for the answer, so the the package only contains the webservice class, the svc creation and .config changes are done by support, right?

Edit:

Additionally if also want to package this to make it available on the store, how would it work? do every customer that's bpm hosted needs to email support to get the webservice registered?

Regards,

Luciano

Luciano De Munno,

Hello, yes, you can create the webservice class in any package that you want.
Svc creation and changes in config should be done by support team. 

You can upload the package to the marketplace, but since changes should also be made in .config and svc files every customer will need to email support to register the webservice.

Best regards,
Alex

Alex_Tim,

Hi, do you know fi it's possible to use POST o r PUT instead of GET? whenever i put 

WebInvoke(Method = "POST") i keep getting 403

Luciano De Munno,

Hello! Error 403 means that there is no header with a CSRF token. To make a request using ARC, you need to add a header with a valid csrf token for the current session. You can get it, for example, by taking any post request from the network chrome tab. It is also better to put a header with cookies.
Read more about CSRF in the article:https://academy.bpmonline.com/documents/technic-sdk/7-13/protection-csrf-attacks-during-integration-bpmonline

Log in or register to comment
Question

Hi Community,

we have the following problem, when we make a data load through the consumption of a "REST - WebService"

We would like to know how we could fix the "parse" error so that the execution does not fall ?. This happens when reading a JSON from the WebService.

 

 

 

Newtonsoft.Json.JsonException: Unexpected character while parsing path: 

   at Newtonsoft.Json.Linq.JsonPath.JPath.ParseMain()

   at Newtonsoft.Json.Linq.JToken.SelectToken(String path, Boolean errorWhenNoMatch)

   at Terrasoft.Services.Runtime.JsonResponseBodyParser.FillServiceParameterValues(IEnumerable`1 parameters, JToken responseToken, Dictionary`2 parameterValues)

   at Terrasoft.Services.Runtime.JsonResponseBodyParser.FillComplexArray(ServiceParameter parameter, JArray jsonArray)

   at Terrasoft.Services.Runtime.JsonResponseBodyParser.FillArrayValues(JToken token, ServiceParameter parameter, Type valueType)

   at Terrasoft.Services.Runtime.JsonResponseBodyParser.FillServiceParameterValues(IEnumerable`1 parameters, JToken responseToken, Dictionary`2 parameterValues)

   at Terrasoft.Services.Runtime.JsonResponseBodyParser.Parse(String body, Dictionary`2 dataAdapters)

   at Terrasoft.Services.Runtime.ServiceClientResponse.FillInBodyParameters(Dictionary`2 parameterValues)

   at Terrasoft.Services.Runtime.ServiceClientResponse.ParseResponse()

   at Terrasoft.Services.Runtime.ServiceClientResponse.get_ParameterValues()

   at Terrasoft.Services.WebServiceUserTaskImplementation.FillResponseParameters(IServiceClientResponse response, ProcessWebService userTask, IProcessParametersMetaInfo schema)

   at Terrasoft.Services.WebServiceUserTaskImplementation.Execute(ProcessWebService userTask, ProcessExecutingContext context)

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

Like

1 comments

Hello,

Basically, the error means that system receives an unexpected json object from web service.

If you use business process element "call web service" to make requests to external web service you should check web service settings.

In case you make a request to a web service via script task i.e. c# code, you should check your code for incorrect casts. 

Also you can simply catch requests and responses from web services via fiddler. With fiddler you are able to view headers, body and other request parameters.

Best regards,
Alex

Log in or register to comment
Question

I have a process that creates multiple orders from an Opportunity.  The orders are separated by a service location field (due to pricing and installation).  I need to filter a detail on the Order page by the service location on the order.  I tried using the filterMethod that I saw in an example, but it either doesn't filter or there is nothing returned at all.  Can anyone spot what I am doing wrong?

            "OpportunityProductDetailV2bd737a92": {
                "schemaName": "OpportunityProductDetailV2",
                "entitySchemaName": "OpportunityProductInterest",
                "filter": {
                    "detailColumn": "Opportunity",
                    "masterColumn": "Opportunity"
                }
                "filterMethod": "productLocationFilter"
            }

 

		methods: {
			productLocationFilter: function(){
				var filterGroup = new Terrasoft.createFilterGroup();
				filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.AND;
				var recordId = this.get("[Opportunity].Id");
				//var orderId = this.get("Id");
				//var serviceLocationForOrder = this.get("AtsServiceLocation").value;
				var esqOpportunity = Ext.create("Terrasoft.EntitySchemaQuery", {
					rootSchemaName: "OpportunityProductInterest"	
				});
				esqOpportunity.addColumn("Opportunity");
				esqOpportunity.addColumn("AtsLocation.AtsAccAddress", "AtsAccAddress");
				var oppFilter = esqOpportunity.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Id", recordId);
				var OppId = "";
				var LocationId = "";
				esqOpportunity.filters.add(oppFilter);
				esqOpportunity.getEntityCollection(function(result) {
					//var respString = "";
					result.collection.each(function (item) {
						//respString += "ItemID: " + item.get("Opportunity").value + ";";
						OppId = item.get("Opportunity").value;
						LocationId = item.get("AtsAccAddress").value;
					});
					//window.alert(OppId + ", " + LocationId + ";" + serviceLocationForOrder + "~" + orderId);	
				},  this);
 
				filterGroup.add("OpportunityFilter", 
					Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL, "Opportunity", OppId));
				//var locationId = this.get("AtsLocation");
				filterGroup.add("LocationFilter", 
					Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL, "AtsLocation", LocationId));
				//filterGroup.add("ServiceLocationFilter",
					//this.Terrasoft.createColumnFilterWithParameter(
						//this.Terrasoft.ComparisonType.EQUAL, "[Order.AtsServiceLocation].Id", serviceLocationForOrder));
				return filterGroup;
			}
		}

 

Like

3 comments

Hi,

I guess the problem is in your asynchronous code. You cannot use your OpportunityId and AtsAccAddress values from esq callback in your filter since it is asynchronous - it is being called after your filter return is already finished.

Dmitriy.

Hello Timothy,

Please note on the Dmitry comment, so you should transform your code to the linear structure. 

Also check the links with examples:
https://community.bpmonline.com/articles/filtering-details-several-fiel…

https://academy.bpmonline.com/documents/technic-sdk/7-13/using-filtrati…

Best regards,
Alex

I saw that documentation yesterday, but I thought it was from the perspective of the detail instead of the page.  It is working now.  My solution is pasted below for anyone that needs it.  Thanks for the help!

methods: {
	productLocationFilter: function(response){
		var filterGroup = new Terrasoft.createFilterGroup();
		filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.AND;
		var OppId = this.get("Opportunity").value;
		var acServiceLocationId = this.get("AtsServiceLocation").value;
		//window.alert("OppId" + OppId + ", " + "acServiceLocationId" + acServiceLocationId);
		filterGroup.add("OpportunityFilter", 
			Terrasoft.createColumnFilterWithParameter(
				Terrasoft.ComparisonType.EQUAL, "Opportunity", OppId));
		filterGroup.add("LocationFilter", 
			Terrasoft.createColumnFilterWithParameter(
				Terrasoft.ComparisonType.EQUAL, "AtsLocation.AtsAccAddress", acServiceLocationId));
		return filterGroup;
	}
}

 

Log in or register to comment
Question

I am following the instructions in the academy page (https://academy.bpmonline.com/documents/technic-sdk/7-13/adding-detail-…) to create an editable list.  When I get to part 2 (Creating a Detail Schema), it says to inherit BaseGridDetailV2 base detail list schema functions, and the picture shows "Base schema - Details with list ( NUI )."  I don't see an option with the NUI in the list, but if I choose the one that is there then I get an error message "Substitution of Modules is not Allowed."  

 

These are the options I have to choose from:

 

I have looked for "BaseGrid" and "base detail list", but there are no options to choose from.  Are these instructions still up to date?

Like

2 comments

The instructions said to add a new Module, but I found that it works if I use a "Schema of the Detail View Model with List" instead.  It works fine doing it this way.

Hello Timothy,

Try to choose "Schema of the Detail View Model with List" option when adding a new module instead of "Module" options. It should help.

Best regards,
Alex

Log in or register to comment
Question

Group,

So, since upgrading to 7.13.1.769, the Windows app from the App Store no longer works.  Specifically it hangs at "Loading Structure 329 from 329".  The app for iPhone appears to still work, however the Windows App will just lock up here indefinitely.  If I close it and re-open it then hangs on "Loading".  The only thing you can do is reset the app and try again, unfortunately with the same result.

Has anyone else experienced this?

Like

1 comments

Dear Judy,

Can you please send this issue to support@bpmonline.com for further investigation? 

Best regards,
Angela

Log in or register to comment
Question

I created three new details in the Order page on a new tab.  When I add a new record it shows a list of all records in the table instead of being filtered out by the Order.  If I refresh the page, it looks fine (only showing the records associated with that Order).  I checked over the instructions online and didn't find anything obvious that could be causing it.  Does anyone have an idea what I should look at?

 

 

When I refresh the page the highlighted item goes away.

Like

1 comments

Hello Timothy,

The problem can cause overridden methods of basegriddetail, or incorrect filters. More about details and working with them you can find by following the link: https://academy.bpmonline.com/documents/technic-sdk/7-13/details-0

If you will have further questions, please attach the code to the message

Best regards,
Alex
 

Log in or register to comment