Skip navigation
All Places > Getting Started > Blog > 2015 > February
2015

Nintex Runtime error handling

Posted by pandeyk Feb 27, 2015

Nintex do have custom actions  available to handle the runtime error in workflows actions and its often choose which one to use based on whether or not they have error handling, It looks  like 32 of the actions have error handling with around 90 not having error handling .

 

We can also write appropriate  custom error message for most of the available actions in the workflows and it  could be anything based on actions

  1. e.g 

 

  • Server is busy or not responding due to network issue
  • Unauthorized users  credential. 
  • Runtime execution error date not responding

 

Importantly Nintex does not have error handling capability available its limitation of Nintex workflow product.  But I would suggest you use “system defined error and action name “

 

Action

Error details

Copy to file
  share  action

  • File cannot be
      copy because copy action not configured to missing variable name
  • Network name
      cannot be found." OR "Failed to copy item to a file share 

Users name and
  UAD action error

  • Multiple
      connections to a server or shared resource by the same user using more than
      one user name, are not allowed
  • Current credential
      being used by another resource

Convert a
  Document 

  • Error converting
      document. Conversion jobs did not complete. 1 jobs failed. 0 jobs
      cancelled"
  • Document
       conversion action not configured
  • Variable value
      null or missing

Inline Function
  error

  • Error retrieving
      context data. Error executing inline function.
  • Check that the
      correct arguments have been passed to the function”

 

database
  connection

  • System.Transactions.TransactionException:
      The operation is not valid for the state of the transaction
  • Network does not
      response connection error

 

We are expecting Nintex  product team will  come up with details perty soon for delivering such a great product and we are hoping Nintex will resolve  all bugs and limitations. and improve improved vesrion soon.

Excel Export help needed

Posted by mzotman Feb 26, 2015


I had a request to use workflow to export data that will be select by Query List Action.

Does anybody knows how to do that?

 

Thanks,

 

Mike

Hello Everyone,

 

Recently we had a requirement where client wanted to have the SharePoint Lookup Field editable in Nintex Form.

We can up with an approach to open the List NewForm.aspx via a link in the Nintex Form and let user add new data. Once the user adds the new record and clicks submit, the Look Field on Nintex Form is re-populated and the last added data is selected by default.

 

Here is the approach we took.

 

Step 1: Update the UI

  1. Add a Rich text field on Nintex for beside the Lookup Field
  2. Add the HTML Source as below

 

<a class="ms-addnew nf-repeater-addrow-link" href="javascript:AddNewLookupItem(”/Lists/CustomList/NewForm.aspx”);">[Add New Item]</a>

 

Step 2: Update the Script in background

 

As we had a custom master page, we referred the custom JavaScript inside it as it had more functionality related to other stuff as well.

But you can try to use the Nintex Form Settings from the ribbon bar. I find REST Api easy to develop and also the same file can be used anywhere else with small changes.

 

File Name : Custom.js, the file can be stored on SharePoint

 

Function called when link in the form is clicked

function AddNewLookupItem( newFormUrl)

{

    if ( SP.ClientContext )

    {

        var siteUrl = SP.ClientContext.get_current().get_url();

//can use _spPageContextInfo.webAbsoluteUrl instead

       

var options = SP.UI.$create_DialogOptions();

 

        options = {

            url: siteUrl + newFormUrl,

            dialogReturnValueCallback: OnPopUpClose

        };

 

        SP.UI.ModalDialog.showModalDialog( options );

    }

}

 

 

Function called with the form is closed

function OnPopUpClose( result, returnValue )

{

    if ( result == SP.UI.DialogResult.OK )

    {

        FillLookupData();

    }

}

 

 

Function called with the Form is closed and the lookup needs to be refreshed.

Note: I used the formcontrolid attribute to find the lookup field here as the id for a control changes every time when the form is loaded and I did not find any other way to uniquely identify each control.

 

You can also change the query as per your custom requirement, like to filter on some other conditions.

 

function FillLookupData ()

{

    var selectControl = $( "select[formcontrolid^='a3fe57d1-aa75-494c-adcb-693ff4804e10']" );

 

    var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/getByTitle(Custom List')/items?$orderby=Title";

 

    // execute AJAX request

    $.ajax( {

        url: requestUri,

        type: "GET",

        headers: { "ACCEPT": "application/json;odata=verbose" },

        success: function ( data )

        {

            selectControl.find( 'option' ).remove();

            selectControl.append( "<option value='0' >Please select a value...</option>" );

 

            if ( data.d.results.length > 0 )

            {

                $.each( data.d.results, function ( index, item )

                {

                    var isExist = $( "select[formcontrolid^='a3fe57d1-aa75-494c-adcb-693ff4804e10'] options" ).filter( '[value="' + item.Id + '"]' ).length > 0 ? true : false;

 

                    if ( !isExist )

                        selectControl.append( "<option value='" + item.Id + "' >" + item.Title + "</option>" );

                } );

            }

 

            var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/getByTitle(Custom List')/items?$select=Id&$orderby=Id%20desc&$top=1";

 

            // execute AJAX request

            $.ajax( {

                url: requestUri,

                type: "GET",

                headers: { "ACCEPT": "application/json;odata=verbose" },

                success: function ( data )

                {

                    if ( data.d.results.length > 0 )

                    {

                        $( "select[formcontrolid^='a3fe57d1-aa75-494c-adcb-693ff4804e10'] option" ).removeAttr( 'selected' ).filter( '[value=' + data.d.results[0].Id + ']' ).attr( 'selected', 'selected' );

                    }

                },

                error: function ()

                {

                    alert( "Failed to load Lookup Items" );

                }

            } );

 

        },

        error: function ()

        {

            alert( " Failed to load Lookup Items" );

        }

    } );

}

 

 

 

I hope this will help someone. If there are any better suggestions you can add them to the thread.

 

Thanks,

Nutan

christopheraucq

Delegation in O365

Posted by christopheraucq Champion Feb 26, 2015

The action Assign Flexi Task is under development for O365.

Recently, the Task Outcome for Assign a Task was released.

The Delegation of a Task becomes then more intuitive.

Here is how I have implemented it.

 

1. Let's create a new Site column for the Task Outcome.

Go to Site Settings of your Site Collection and under Web Designer Galleries, click Site columns

Click Create and name it like you wish. I have name it Task Outcome Approve.

For The type of information, tick Task Outcome.

For Group, the best practice is to create a New group to store your customized columns. I have name it My Company.

For Type each choice on a separate line: add

Approved

Rejected

Delegated

Remove the Default value

Click OK

 

2. Add a new Site column DelegatedTo to the Workflow Approve content type.

In my case, I have create a column of type Person or Group but it can be a lookup column from a list containing the names of the Person

For Group, select the Group you justhave created.

Click OK

 

3. Create a new Site Content Type.

Go to Site Settings of your Site Collection and under Web Designer Galleries, click Site content types.

Click Create and name it like you wish. I have name it Worklow Approve.

For the Select parent content type from, select List Content Types.

For the Parent Content Type, select Workflow Task (SharePoint 2013)

For Group, create a New group to store your customized Content Type. I have name it My Company

Click OK

 

4. Add both Site columns to the Workflow Approve content type.

Click Add from existing site columns

Select columns from: Name of your customized group

In Available columns, select Task Outcome Approve and DelegatedTo and click Add.

Click OK.

 

Now, we need to customize the Workflow Task list but it does not exist yet.

So, let's create our Nintex Workflow.

In the Documents Library or any other Library/List you want, open the ribbon and click Nintex Workflow.

Do not add any action, just save it.

 

5. Add the new Content Type to the Workflow Tasks list used by your Nintex Workflow.

In the Quick launch, under Recent, click Workflow Tasks.

Go to the List Settings.

If you do not see the Content Types, click Advanced Settings. For Allow management of content types? Tick Yes

Click Add from existing site content types

From Select site content types from: select the new group you should have created. In my case, it is My Company

From Available Site Content Types, select Workflow Approve

Click Add and then OK.

 

Now, we need to make sure that there is only one content type displayed.

Click Change new button order and default content type

For the Task content type, uncheck Visible.

Click OK

And we need to make sure that the default Task Outcome is hidden.

Click you content type Workflow Approve.

Click Task Outcome

Tick Hidden

Click OK

 

6. Add the Assign a Task action

Open your newly created Nintex Workflow
Insert the Assign a Task action and click Configure.

Participant: Name of the assignee

Task Title, Description: What you want

Due Date: Left empty

Related Item: Keep Current item

Task Outcomes: Click Use existing predefined content type

Content Type: Select Workflow Approve

Field: Select Task Outcome Approve

For the remaining fields, you can let the defaults for this purpose

Click OK and you can see the three possible ouctomes for the Task.

 

31/03/2016 I have attached a js file with the code to validate the Delegated person.

To add this code, go to the Task list, click the List ribbon, Customize List group, Form Web Parts - Default Edit Form

Add a Web Part. Media and Content - Scripty Editor. Click Add.

Click Edit Snippet, paste the code and click Insert

 

Happy Nintexing,

Christophe Raucq

When using an inline function with a special character inside the string value you may receive the following error:

 

“Error retrieving context data. Error executing inline function. Check that the correct arguments have been passed to the function”

 

This error indicates that the inline function expects arguments after a special character. This can happen due to the code behind the function. As you can see here in this example Xquery inline function which is similar to ours, arguments are separated by special characters:

 

declare function functx:trim
  ( $arg as xs:string? )  as xs:string {
   replace(replace($arg,'\s+$',''),'^\s+','')
 } ;

(NOTE: This is not the actual code used in our function)

 

In order to get the function to ignore the special characters inside the string value simply add the {TextStart} and {TextEnd} tags to your value inside the function. You will have to configure your inline function to look something like this: fn-Trim({TextStart}stringvalue{TextEnd})

 

The {TextStart} and {TextEnd} tags should ensure that the inline function does not parse your string looking for arguments and ignores the special characters.

 

Cheers,

Andrew Beals

Many of you have been bookmarking discssions, blogs posts, articles, documents, and now you want to be able to find those docs quickly. Thanks to Terri Weispfenning for asking this question!

 

There are a couple ways to find your bookmarks; from the Search bar, and also your profile.

 

Access your bookmarks from the Search Bar

1. Click on the Search icon at the top of the page, in the search window, click on Bookmarked.

2. Your recent bookmarks will be displayed. You can also click on Show all bookmarks to see all of your bookmarks.

 

 

Access your bookmarks from your profile

 

1. Open your profile, click on More in the navigation and then Bookmarks.

profile bookmarks.png

Good news for those who are familiar with the Terminate Workflow action in Nintex Workflow on premise version, and are interested to migrate to Nintex Workflow for Office 365 or already started using it. The Terminate Workflow action is available with some additional enhancement compare to the on premise version; such as the ability to terminate site workflows.

 

Terminate Workflow Instances vs Terminate Current Workflow

There are some times during designing of a workflow, that as part of workflow logic it is required to end the process, under a specific condition. For example, if the task is not approved, you can use "Terminate current workflow" to end the workflow process.

 

As you can see there is no error or problem with the workflow, and we need to terminate the process intentionally, as part of the workflow design. In this scenario it is required to use Terminate Current Workflow action.

 

But there are some situations, especially when we are in a development environment, and workflow designers are working hard to design workflow logic every day, and at the same time testing is going on. As a result of negative testing, we might end up having lots of suspended workflows. Or maybe due to some issues with the SharePoint Environment, there are workflows which are not started and are stuck for a while, or many more scenarios which the workflow is not Active anymore, and we need an automation system to terminate them.

 

  In this case, "Terminate Workflow Instances" is really useful to terminate those inactive workflows, and terminate the instances. For example, there might be a list of items which is supposed to run a workflow on every new item created. On the first day there are 1000 new items created and 100 workflows out of 1000 are suspended due to user invalid inputs, and we need to terminate those workflows and re-run the new instances with correct inputs. Therefore what we need to do, is to simply create a new Nintex workflow, put a Query List action and Query XML action to get all list items, and then using a "Loop N times" action to loop on all the items, and finally terminate workflows using "Terminate Workflow Instances" action, if they are suspended or not-started.

 

 

1.png

Important Note!!

There is an option to terminate Running (active) workflows as well, which is enabled by default. This means, it will terminate any instance of the workflow, including those which are active. If you don't need to terminate running workflows, simple turn the option off in the Action's configuration.

 

2.png

 

Good luck.

 

------------------------------------Check and  Increase Throttle Size -------------------------------------------------------------------------

PS C:\> stsadm -o getproperty -pn workflow-eventdelivery-throttle

<Property Exist="Yes" Value="15" />PS C:\>


PS C:\> stsadm -o setproperty -pn workflow-eventdelivery-throttle -pv "25"

Operation completed successfully.

 

------------------------------ Check and Increase Batch Size---------------------------------------------------------------------------

PS C:\>
PS C:\> stsadm -o getproperty -pn workitem-eventdelivery-batchsize

<Property Exist="Yes" Value="100" />PS C:\>


PS C:\> stsadm -o setproperty -pn workitem-eventdelivery-batchsize -pv "125"

Operation completed successfully.

 

PS C:\>
PS C:\> stsadm -o getproperty -pn workflow-eventdelivery-timeout

<Property Exist="Yes" Value="5" />PS C:\>


PS C:\> stsadm -o setproperty -pn workflow-eventdelivery-timeout -pv "10"

Operation completed successfully.

 

- ------------------------------------------Time Out----------------------------------------------------------------------

PS C:\> stsadm -o getproperty -pn job-workflow -url https:// Weburl

 

PS C:\> stsadm -o setproperty -pn job-workflow -pv "Every 10 minutes between 0 and 30" -url https://webapp/

 

PS C:\> stsadm -o setproperty -pn job-workflow -pv "Every 10 minutes between 0 and 30"

 

Operation completed successfully.

 

--------------------Workflow Timer Interval ------------------------------------------------------------------------------------------------------------------------

PS C:\> stsadm -o setproperty -pn job-workflow -pv "Every 10 minutes between 0 and 30" -url webapp/

 

PS C:\> stsadm -o setproperty -pn job-workflow -pv "Every 10 minutes between 0 and 30" -url https:// webapp:port

 

 

Hopefully is will resolve Nintex Workflow actions that may be affected

  • Flexi-task
  • State machine
  • Task Reminder
  • Set a variable

 

Good luck and Enjoye ...

 

  1. Open you newly created category.aspx page
  2. Open the two problematic webpart's property panel
  3. Change the view :
    1. for the proposed discussion webpart, set it to "Proposed discussion"
    2. for the other one, set it to "subject"
  4. From now, once you validate your page, you will have everything almost working, the only left problem is that you don't see the discussions according to the category of the page. let's continue.
  5. Open two instances of Sharepoint Designer 2013. One on the source site, and one on the target site. On both open category.aspx page
  6. On the target page, in all the xsltlistviewwebpart's parameterbinding, there is binding missing, you have to add it! 
  7. Almost at the end of page of your source page, locate the {CategoryID}, you will have to place it exactly at the same place on your target page.
  8. Save it.
  9. Test it & pray

Hey guys hiding the ribbon with Nintex Forms 2013  is easy  is simple and sweet.

 

  • Open Nintex form
  • Select Code

 

NWF$("#s4-ribbonrow").hide();

 

Enjoy !!!

A common scenario with workflow is that a task needs to be sent to somebody.. But how do you go about choosing who that somebody is, if they can change depending on the data being submitted? In reality you can store that information in the workflow, but this leaves you with the issue of having to edit and republish the workflow every time one of the approvers changes.

The best way to complete this function is to use a second list with your approver’s data and filter information coupled with the “Query List” action in Nintex Workflow. Now this isn’t the only thing you can use this method for. Below I’ll go through just a couple of examples and if you have any other ideas or things that’s you do let us all know in the comments J

Lookup Manager of Department.

Using the out of the box “Manager” function may not work especially if the initiator is 2 or 3 levels down, but requires the head of the department to sign off. For this, we can use the list to Store the department name with the manager for that depart. The workflow can simply query either AD or the user profile to assess what department the initiator is in to retrieve the right manager for the approval.

So above is the list of managers that we have to choose from, and their corresponding department.

Now you wouldn’t have both “Query LDAP” and “Query user Profile” you can pick either one. It could also be a case where you could use the “Execute SQL” or “Call Web service” action to retrieve the Department information from Human Resources system. Regardless of what method you use to get the initiators department, store this information to a variable. In this example I have stored it to ‘varDepartmentFromProfile‘. I have also created a second variable ‘varDepartmentFromMasterList‘.

Using the ‘Query List’ action, we can now go about getting the info.. First select the Master List (In this case it is called Department Managers), then expand the Filters and adjust the filters. To retrieve the appropriate manager, first select the column we want to filter on in the Master List (Department). Then use the operator ‘is equal to’ against the department value we pulled from LDAP/Profile/ External system etc.

At the bottom of the ‘Query List’ action select the Manager Field from the Master List as the information that we want and store this to the second variable we created ‘varDepartmentFromMasterList

Now that this is done, use the ‘varDepartmentFromMasterList‘ variable in the ‘Assignees’ field in whichever task action you are going to use.

Get Approval Manger based on Department and approval Limits

Expanding slightly on the above, add a third column to the Master List and call it ‘Approval Limit’

Now in the list you are running the workflow on, may have a total amount.. This could possibly be a requisition request, purchase order, Travel Approval form.. If I had entered into the list, let’s say a travel request for $6456.00 and I’m in the Marketing team. The Query list action will retrieve the user account ‘NW13-User04′. I can now go ahead and assign the task to that user as they have the appropriate approval limits to review my request J

 

Ok so you see where I’m going with this.. What other examples have you got? Let me know in the comments and I’ll attempt to build them out J

Nintex Workflow 2010 SDK

Posted by pandeyk Feb 21, 2015

The location has recently changed and can be found here: link to SDK. With that, you'll be able to build custom actions, inline functions, build SP deployments to publish workflows and custom actions.

To complete the upgrade from the previous version of Nintex, ensure that you still have a valid license; otherwise this upgrade will not be possible.

 

Navigate to “Add/Remove Programs” on the server hosting Nintex Workflow 2010 and remove it.

 

(This will not affect the programs functionality in SharePoint 2010)

 

Do not retract the solutions from the Solutions Management, as this will disrupt users that are currently using the product.

Once this has been done, run the new installation “setup.msi” for Nintex. When it prompts to add the solutions, select “Yes”. This will attempt to automatically upgrade the WSP’s that are currently installed on your solution.

 

Once the installation has been completed, it will show the solutions page, with the status of “Deploying (timestamp of when this was initialized)”

 

This is where I ran into an issue, although everything in the supplied upgrade document stated that this will show up as deployed after a while, it was not the case.

 

After about 25minutes, the 2 solution files were still showing as deploying, with the same timestamp as when the software installation finish. I cancelled both “deployments”, both these files now showed as deployed, but with no Last Operation Time in either.

 

How to fix this?

 

Reset IIS, Start -> Run -> iisreset

 

This will release any threads that are holding onto the WSP files.

 

Make sure that the SharePoint 2010 Administration service is running, Start -> Run -> services.msc

 

You will now need to manually upgrade the solutions files.

 

Start the SharePoint 2010 Management Shell as an Administrator.

Update-SPSolution –Identity nintexworkflow2010.wsp –LiteralPath “nintexworkflow2010.wsp” –GacDeployment 
Update-SPSolution –Identity nintexworkflow2010enterprisefeatures.wsp 
–LiteralPath “nintexworkflow2010enterprisefeatures.wsp” –GacDeployment

This will deploy your solutions correctly and add the needed DLL’s to the Global Assembly Cache.

 

 

You can also try below steps:

 

  1. Install the Nintex using Nintex setup
  2. Retract the deploy WSP
  3. Now use PowerShell scripts for installation of WSP
  4. Enable-SPFeature -Identity "NintexWorkflowAdmin" -Url "weburl"
  5. Install-SPSolution –Identity nintexworkflow2010.wsp –WebApplication "Weburl" -GACDeployment
  6. Repeat same steps for all web application you can also
    enable the features using Nintex admin section

A common request we receive is how to redirect the task list page to a specific page after completing a task from the ‘Respond to this task’ link from within the notification email.

 

The simple way to do this is to create a link inside the notification section of the action. To do this you’ll need to use the Approval URL reference and add “&Source=http://yoursite.com/” after the reference. Click on the Link button under the Insert tab and fill it out with the following configuration:

Untitled.png

The task list page will now be redirected to the selected page after the user responds to the workflow task.

Nintex Connect has an ever-growing number of articles, blog posts and other content posted by the wider community, so I'd like to highlight how you can browse through this content, and help you find what you need. If you're after something specific, then the search bar is going to be your friend , if however, you just want to browse what's out there you can do that by browsing through the Content tab on each space.

content.png

 

You can open any space, and sort by the type of content you are looking for, whether that be blog posts, documents/articles, or dicussions, you can also filter by category if it exists on that space, or by tags.

 

To make it a little simplier for you, I've included links below on how to reach specific areas. Keep in mind the articles/blog posts will only appear in the list if they have been categoried. You may find other information or articles when you browse through the site.

 

The specified item was not found.

 

Getting Started

 

Tech Blog

Our Technical Evangelists use the Tech Blog space to post tutorial content, scenarios, product release updates etc. It's a great learning resource to check out.

 

Happy Nintexing! 

Summary

How to configure a Rules to only validate if controls are visible.

 

Symptom

Nintex Forms Validation will still trigger on hidden form controls, even though the control(s) was not intended to be validated.

 

Cause

The below example shows a form with a Choice control used to show/hide a second panel. The second panel contains a Multi line text box that is required.

 

designerNew.png

A formatting rule has been created, which is applied to the panel control:

goodHideRule.png

Also, a Validation rule has been created to require data in the Multi text box:

badValidationRule.png

If the user is not required to show the second panel and tries to submit the form, they will still see the Validation error:

 

badFormPreview.png

Resolution

The Validation rule will have to trigger if the required control is visible (in this case the panel) and the Multi line text box is blank:

goodValidationRule.png

The below form will show that only the required 'Test' field is needed to submit the form and that the Mult line text box validation is ignored:

goodValidationPreview.png

My development license happened to expire and I was able to get an updated file from support. I followed the instructions Importing a license / Adding new servers   in order to update my environment with the new license but it didn't seem to take. The license updated fine in Central Admin, but my site still had the red message that the license was expired. After a long time spent to make sure everything was in place and correct, the resolution came down to an IIS Reset. Immediately after this, all sites were up and running as expected.

We had such a fantastic turn out for the January Monthly Mission, and so I wanted to ensure everyone knows how they can contribute to the Nintex community through blogging.

 

The option to blog is open to any registered members of the Nintex community on the The specified item was not found. space. You can post a blog in a few short steps:

 

1. Navigate to the The specified item was not found. space.

learnmore.png

2. Click on the Content tab.

 

content.png

3. Now you can select Write a blog post . Once you have included your content, add any applicable tags or categories, and publish the post.

blog_post.png

Filter Blog

By date: By tag: