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 0

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).

Show all comments

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 0

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

Show all comments

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 0

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.

Show all comments

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 0

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

Show all comments

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 0

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

Show all comments

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 0

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;
	}
}

 

Show all comments

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 0

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

Show all comments

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 0

Like

1 comments

Dear Judy,

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

Best regards,

Angela

Show all comments

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 0

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

 

Show all comments

Hello community



I am working with a business process using the process element [Call Web Service].

The web service configuration and the call are working correctly.

The JSON response is similar to:

{

"$ totalResults": 2,

"$ startIndex": 1,

"$ itemsPerPage": 100,

"$ resources": [

     {

      "$ clave": "t6UJ9A000001",

      "$ Static_state": 200,

      "$ etag": "Yi4EmiUg3xw =",

       "Account": {

             "$ clave": "A6UJ9A0001RU",

             "$ uuid": "00000000-0000-0000-0000-000000000000",

           }

      },

      {

      "$ clave": "t6UJ9A00000B",

      "$ Static_state": 200,

"$ etag": "wMpPUtrfgdA =",

"Account": {

"$ clave": "A6UJ9A0001RX",

"$ uuid": "00000000-0000-0000-0000-000000000000",

}

}

]

}



My goal is to iterate the JSON and finally create tickets in BPM with the source information.

Using a pre-configured page I was able to determine that the parameter where the information is returned is [#WS Step.Response body #]

How can I take this value in a Script Task and process the JSON? or what is the correct procedure to do this?

Previously I should be able to take the value of the parameter [#WS Setp.Success #] to determine if the execution was successful

Thank you!

Good weekend

Like 0

Like

1 comments

get/set a parameter value in a business process script task

var parameter1 = Get<Guid>("Parameter1");

Set("Parameter2", parameter1.ToString());

var parameter2 = Get<string>("Parameter2");

get object of type UserConnection

var userConnection = Get<UserConnection>("UserConnection");

Show all comments