Skip navigation
All Places > Archives > Nintex Gallery > Blog
1 2 3 4 Previous Next

Nintex Gallery

52 posts

Are you sure that your Oracle applications are reaching their full potential? As the industry continues to evolve, there has never been a better time to look at your options to improve the performance of those applications. And IBM Power Systems platforms can deliver significant performance benefits. For example, IBM POWER8 systems will deliver at least 2 times per core performance, compared to MindMajix Oracle Apps DBA SPARC M7 systems, when running a real-world representative database or an ERP workload.

Savvy CIOs and CTOs know that they have a choice when selecting IT server platforms for their new workloads. Some have their familiar favorites, based upon fond memories of what they have deployed in the past. However, the platforms that survive are the ones that can adapt to changes in the market. Today, those platforms are open platforms.

The process of natural selection that Charles Darwin described can be applied to business technology trends. “Survival of the fittest” originated from Darwinian evolutionary theory to describe the process of natural selection. Given the current trends, I believe that many proprietary technologies could become endangered species.

As an example, consider the recent speculation about the future of SPARC and Solaris, outlined  here and here. Companies must embrace open platform to stay abreast of current trends and ensure success in the future.

source: IBM

The functional requirements for an automated SMF, taken in part from Freitas (1980d), are listed below roughly in order of increasingly sophisticated capability: robot language systems, product assembly, product inspection and quality control, product modification, product repair, product adjustment, product improvement; remedial action by reason of emergency or subtle hazard, robot self-replication. It is assumed in each case that the impediments to meeting these requirements (e.g., control techniques, "packaging" to withstand hostile ambient environments, etc.) will somehow be overcome. The first three functional requirements are described briefly below, followed by a general discussion of the more advanced requirements.

Robot control languages. Numerous machine languages exist for the control of semiautomated machine tools (Lindberg, 1977). These include APT (automatic programming tool) and ICAM (integrated computer aided manufacturing). McDonnell Douglas Aircraft Company has recently extended APT to MCL (manufacturing control language) in order to program a Cincinnati Milacron T3 robot to rivet sheet metal. Higher-level robot control languages, obvious requirements for advanced automated space systems, include VAL (versatile assembly language) for the Puma robot and "HELP" for the Pragmac robot (Donata and Camera, 1980). The problem of extending high-level languages from comparatively simple machine tools to more sophisticated multiaxis integrated robot systems which may be found in future automated space factories must be viewed as a top priority research item.

Product assembly. At SRI International, requirements for the five basic operations in factory assembly have been evaluated by Rosen et al. (1976). These include (1) bin picking, (2) servoing with visual feedback, (3) sensor-controlled manipulation, (4) training aids, and (5) manipulator path control.

The team has recognized the need for improved performance in bin picking of, say,assorted cast basalt and metal objects. Multiple electromagnetic end-effectors certainly could pick out just the metal casings. Variably energized end-effectors might be used to separate and select metal parts of varying magnetic susceptibility randomly arranged in a bin (i.e., aluminum vs iron vs titanium parts). But general bin picking from random parts assortments is not yet possible, though it might be essential in a fully automated SMF operation.

SRI has applied visual servoing by combining a General Electric television (100 X 100 element solid-state) camera with an air-powered bolt driver incorporated into an end effector. Three-dimensional cameras may be required for highly contoured objects fabricated in space (Agin, 1980; Yachida and Tsuji, 1980). Such cameras have already been applied to automated bin selection tasks by the Solid Photography Company in Melville, New York.

Computer-vision technology needs to be merged with discoveries from biological studies. Automatic gain control, gray-scale imaging, and feature detection must be included in computer-vision Automation Anywhere technology if robot autonomy is the goal. Parallel computer-control systems will ensure the speed of reaction and self-preservation "instincts" required for truly autonomous robots, but will require a decrease in existing computer memories both in size and access time by several orders of magnitude. Consideration should be given to associate and parallel memories to couple perceptions to the knowledge base in real time.

To achieve sensor-controlled manipulation, somewhat greater precision Is required of robot arms than can be obtained now. Present-day Unimates (control and precision of 2.5 mm) have been used in a one-sided riveting operation using strain-gauge sensing of the rivet gun mandrel, but there is still a need for more rapid finding, insertion, and fastening by passive accommodation, servo adjustment, and search algorithms. A novel "eye-in-the-hand" adaptation for rapid assembly in space may utilize acoustic sensors. The Polaroid Corporation in 1980 applied its camera ranger to end-effectors for tool proximity sensing. The unit emits a millisecond pulse consisting of four ultrasonic frequencies (50, 53, 57, and 60 kHz). Ultrasonic techniques are potentially quite useful in air or other fluid-filled bays in nonterrestrial manufacturing facilities, especially in view of the acoustic positioning systems developed by the Jet Propulsion Laboratory for containerless melt manipulation. Under vacuum conditions when precise positioning is necessary, laser interferometry may provide the answer (Barlunann, 1980).

Regarding training aids, more sophisticated coordinate transformation programs are required to operate manipulators for diverse tasks. A possibility for the future is "show and tell," a new technique for robot training (see chapter 6). Ultimately, a robot itself could train future-generation machines through some means of "training-by-doing." A related issue - the problem of robot obsolescence - will not be trivial.

Finally, manipulator path control should be fully automated in SMF where, for example, rock melts must be transported along smoothly controlled paths (see the discussion of basalt fiber spinning in section 4.2.2). In the manufacture of bearings or fibers where high-speed trajectories are involved, manipulator halts at corners must be avoided by developing better path control strategies. In the near-term, it may be possible to extend the capabilities of the Unimate:PDP-11/40 couple. For every machine proposed for the SMF, including the starting kit extruder, it is simplest to use a coordinate system based on that machine to interact with robot manipulators continuously to redefine forbidden regions and motions. Thus, a major requirement in robot factory assembly is to specify the coordinate systems of the component machines.

Product inspection and quality control. The need for visual methods of inspection and quality control by automata must be defined for each class of SMF product envisioned. For instance, the application of electroforming on the Moon to produce thin-walled fragile shapes, aluminum ribbon extrusion, or internal milling of Shuttle tanks, definitely demands inspection and quality control. Terrestrial automated inspection systems currently are in use at General Motors, Western Electric, General Electric, Lockheed Recognition Systems, Hitachi Corporation, SRI International, and Auto-Place Corporation. A detailed synthesis of the vision requirements for each is given by Van der Brug and Naget (1979). Off-the-shelf television systems with potential for robotics applications already provide measurements to 1 part in 1000 of the height of the TV image, e.g., the EyeCom Automated Parts Measurement System manufactured by Special Data Systems, Inc. in Goleta, California. Finally, the use of fiber optics in quality control, as demonstrated by Systems now in use by Galileo Electronics, Inc., warrants further development.

Advanced functions and recommendations The needs of space manufacturing for automated product modification repair, adjustment and improvement, as well as robot adaptation to emergencies and self-replication, depend in large part on the capabilities of future automata control system and the environment in which they are applied. The hazards of space to human beings are well known, whereas the impact on robot systems is less well understood. Potential dangers include rapid pressure changes, spillage of corrosive fluids or hot melts due to vessel rupture, radiation effects from solar flares (e.g., embrittlement), anomalous orbital accelerative perturbations producing force-sensor errors, and illumination-intensity variations caused by space platform tumbling or nutation (producing visual observation problems such as shadow effects in fiber optics sensors).

Robotic intelligence must be vastly increased if these devices are largely to supplant human workers in space. This may be accomplished by deploying a versatile intelligent multipurpose robot or by developing a number of specialized, fixed-action-pattern machines. Multipurpose intelligent robots lie well beyond state-of-the-art robotics technology, yet they still are an important ultimate goal. In the interim, sophisticated fixed-action-pattern robots suitable for restricted task scenarios should be developed. The behavior of such robots would be not entirely different from that of many plants and animals endowed with very sophisticated fixed action patterns or instincts.

Before true machine intelligence can be applied to factories in space, the requirements for automated nonterrestrial manufacturing systems must be determined by an evaluation of the state-of-the-art in this field. A complete and updated computerized library containing abstracts of all available robotics research and applications publications, accessible through ARPANET, should be implemented to enhance automation technology transfer. Among the subject categories which should be emphasized are controls, arm/work envelopes, robot adaptability, applications, and costs. Knowledgeability in the field requires contact with finns listed below to better understand how solutions of the practical problems of today can be extrapolated to help solve those of tomorrow: Unimation, Inc.; Cincinnati Milacron; ASEA, Inc.; Prab Conveyors, Inc.; Planet Corporation; Devilbiss/Trallfa; Nordson Corporation; Binks, Inc.; Thermwood Machinery Corporation; Production Automation Corporation; AutoPlace Company; Modular Machine Company; Seiko Instruments, Inc.;Jones Oglaend Corporation; Fujitsu Fanuc Corporation; Okuma Machinery Corporation; Advanced Robotics Corporation; Hitachi Corporation;and Benson-Varian Corporation.

Hello Everyone,

 

 I have a workflow for approving invoices the respondents have three choices researching, in dispute, or approved.  When they choose researching this allows them time to discuss with  the vendor what the resolution might be and once decided I would like them to have another flexi task that only allows approve or deny to move the workflow along with the final outcome and their comments.  I need to be able to capture need to be able to capture who is researching tasks and assign another task for them until they approve it.  Can anyone help?

 

I thought I could capture it in workflow variable and assign it that way; I haven't been able to get that to work.

valensia

Sequence ID Reset Daily

Posted by valensia Aug 1, 2017

I recently ran into an issue regarding a sequence ID. The list needed an ID reset back to 1 daily. The normal item list column via default SP columns doesn't allow a reset so I created one with a little finagling. Basically in my main list that I will call Help Desk tickets, I had a workflow that would move all the items to a archive list at midnight. The next day I wanted the sequence ID to roll back to 1, to start a new day of data.

 

1. I created a list just for sequence number called SeqID. This list has 2 columns  

Custom SP list with 2 additional columns. This list is crucial to the naming convention for each entry.

Column Settings

Column Name:

Defaults to:

SeqID

1

Date

TODAY

Title

Name

 2. I then created a Site Workflow

A site workflow is connected to the list called ‘manage Seq Id List’ that resets the one entry on this list back to 1 at 3:00AM

 

3. Now on the main list that you need the ID reset to add these first 5 actions on the workflow to deal with the seqID and set to start whenever an item is created.

 

Every time a “New Item” is clicked the workflow runs and grabs the SeqID and updates the seqID list with the next ID.

Hi,

one of my customer needed to send out several tasks in parallel but they have one issue: they don't know at design time how many tasks have to be created (it depends on a user field in a list) and they need to store all the outcome of the tasks..

 

Unfortunately for Flexi Tasks there is no behaviour like "wait all replies" so I've started building a possible workaround:

 

What i need is my main list workflow and a site workflow, here's my recipe (inside the text, all the variables are written in italics in order to distinguish them from normal text).

For list workflow:

Variables:

Variables for List WF (I've used Users instead of referencing a user field, but it doesn't change anything in the logic), Missing Answers has a default value of Yes.

 

The workflow:

First, I need to split with semicolon my user field with a Regular Expression and store it in the collection variable, after that, inside a For Each I've called a webservice in /_vti_bin/nintexworkflow/workflow.asmx to start a Site Workflow (the one we're going to build later) passing some parameters like current user inside the for each, the index and Workflow Instance ID (it's available under common reference).

When executed, the workflow will then start the auxiliary site workflow for the number of user in my Users variable/field, but how to wait until all the sub-workflows are completed and how to get their outcomes?

 

After the For Each I've added a loop with exit condition based on Missing Answers variable, at the beginning of each Loop that variable is set back to False, Outcomes variable is blanked and then I have again a For Each based on my previous Collection, also this action as Stop processing based on Missing Answers.

Inside this For each, I have a Retrieve data action that checks for current workflow the item OutcomeIndex (where Index is my variable) and store the result in SingleOutcome. If SingleOutcome is not empty, I add it to the general Outcomes variable otherwise I set the MissingAnswers to true (so the ForEach will ends).

Outside the For Each (but still inside the loop) I've a Run if that checks again if Missing Answers is true and in case it pause the workflow for a proper amount of time (how frequently you want to check the answers?). At the end I log my Outcomes to show all of them.

For site workflow:

Variables:

 The three variables that needs to be shown on start form are the parameters you have to pass when starting the workflow with the web service in the list workflow.

 

The workflow:

This workflow is very simple, it has just an Assign Flexi Task assigned to Assignee variable and outcome is saved in Outcome.

After the task I have a Store Data Action that store in a workflow with instance InstanceId, in an item named OutcomeIndex (here again, the name should be the same used in the Retrieve Data action in the list workflow) and the value is obviously Outcome.

 

That's all, it may be a little bit overwhelming but it works and it's extensible if you need more information about the task (you can simply store additional items with the same logic and then you can retrieve them in the main workflow)

I'm realitively new to Nintex workflows but I wanted to pass this tip along to all the fellow newbies out there.  A tip which helped tremendously was knowing how to AND remembering to handle commas when using inline functions even when you think they might not occur.  The trick is to use a combination of {TextStart}Variable{TextEnd}.

Inline functions can cause errors when the source data contains commas. Scenarios include:

  1.   Converting a number (which contains commas) to currency using the fn-Currency function. 
    • The error was: "Error updating document. Currency function expects only 1 parameter"
    • Fix was to utilize {TextStart}Variable{TextEnd} in the equation.  This works even though the variable is acutually a number:   fn-Currency({TextStart}ExpensePTO{TextEnd})
  2. Configure Action - Update document: using a number variable containing a comma in the value
    • The error was a weird output in the newly created document
    • Fix was to utilize: fn-Replace({TextStart}Variable{TextEnd},{TextStart},{TextEnd},"")
  3. Configure Action - Update document: Standardizing Text output using a text input containing a comma
    • The error was a weird output or workflow error
    • Fix was to utilize Replace function inside the text function: fn-ToTitleCase(fn-Replace({TextStart}Variable{TextEnd},{TextStart},{TextEnd},"")

I'm sure this is old hat to many veteran Nintex Gurus...But to newbies such as myself this tid bit cost me several hours of head scratching and research to figure out.  So  when handling an output on an Update Document - Configure Action - if there is possibility of a comma which happens when sharepoint saves a number or a potential user input...be sure to use the {TextStart}Variable{TextEnd}.

cazza162

April Mission - Chopped!

Posted by cazza162 Champion Apr 27, 2017

This is a team collaboration response for the awesome April Mission: Chopped! Nintex Edition - thank you so much Rhia Wieclawek for suggesting such a challenging mission!

As I am the less creative one of the two of us, Paul Crawford and I dream-teamed it up for this months submission!  If we win the chocolate I promise we will share

We double-teamed this as follows:

Paul Crawford did the form and came up with the concept of our shipping company.

Cassy Freeman did the workflow and used all the ingredients available to us.

This is very similar to how we work in the real world too

 

The Scenario

Our form is collecting orders of kitchen goods.

 

The Workflow

When a new item is submitted using the above form, the workflow runs and looks like this:

 

The Actions

Assign Flexi Task x 2 - used to get approval of the order for both Standard and Express shipping

 

Run If x 3 -  Used to check status of item (in case anything had changed) at different stages in the workflow

Switch x 1 - Used to check the shipping type of the item to route appropriately

Wait for item Update x 2 - Used to wait for the status to be updated on the approval tasks

Update XML x 2 - used for both shipping options to update the total cost of shipping for the order

Query list x 1 - used to get the cost of the selected shipping option from a lookup list

Calculate Date x 2 - used to calculate expected delivery date based on the shipping type

 

We did find this mission tricky.  Every scenario we thought of we needed either more or less actions than we had to use.  So we just made this fit.

Hi all and thanks for the very entertaining challenge Rhia Wieclawek!  For those of you who just stumbled upon this blog without any context, Rhia devised a challenge for us to create a workflow only using a set number of actions that she specified.  See this post for her mission.

 

It certainly takes a different dimension when you’re given building blocks without requirements and have to retrofit requirements around a solution that solves something!  As Nintex can be applied to all sorts of processes, my method was to think about my favourite things in life and I stumbled across my favourite TV programme of all time: ER.

Let’s take one of their many processes and automate what happens.  The process we’re tackling is what happens when someone presents at the Emergency Department.  Of course if I was automating ER correctly, I’d have Dr Peter Benton sending more “Let’s move people!” Skype for Business messages to his team and Romano not looking up the staff roster to see who was busy, he’d just give the job to “Lizzy” regardless of her schedule.  Those of you who don’t know what I’m talking about, I highly recommend you watch an episode.  I recommend Love’s Labor Lost.

 

I’ve left the default names of the actions as is so you’ll see where I used each one.  Yes, there are many flaws in this workflow.  No, there is no way this would actually substitute for what goes on inside an emergency room with these limited actions but it was fun to try.

 

We start with the patient arriving and we need to triage them with a flexitask.  If it’s a minor issue we figure out what’s free in about 8 hours (probably the average waiting time in lots of busy places) and find a free time after then.
If the poor person is DOA then we want to immediately inform their next of kin.  We also want to see if they will approve organ donation and if they do we inform the donation team to do their thing.

 

If they present with something serious then we want to also inform their next of kin and run a whole series of tests.  I chose an X-ray and Cat Scan as some example tests.  I did wish for the parallel action block here so I could request these tests in parallel.  We wait for the results of the test(s).  I also book in with the surgeon if they require surgery.

If they go through surgery we send all the information we can compile to the surgeon.  If they don’t need surgery, they will go to the ward.  They’re also not allowed to eat for a certain time afterwards so we figure out the time they’re allowed to eat and include this with the instructions we send to the ward.

 

Once we’re done with that we also bundle up the medical notes into a nice big XML structure and send that to our medical software via email.  OK it’s not very nice getting an XML email but this could be easily replaced with a web service call. 

 

We’re done.  Now Dr Mark Greene can go and make eyes at Susan and pretend that they’re only friends.  Yeah right!

Ever needed to contact all Site Owners within SharePoint for some reason, maintenance or otherwise? It can be a difficult task if you have lot's of site collections with various owners, all managing their own sites.

 

I found this SQL script from Patrick which i'd modified (attached) to work with SharePoint 2013/2016 content DBs.

https://patrickboom.wordpress.com/2010/08/05/gathering-site-data-using-sql/

 

I also created a workflow to iterate through all of the content DBs to get the membership of the Site Owner groups within the site collections. I created a Site Workflow which is then scheduled to run when required.

 

Requirements:

You'll need a user account who can query sys.databases and your content DBs. I used a SharePoint services account and just granted the SQL serveradmin role to the account.

You'll also need nicely named Content DBs. This solution works on the assumption that your Content DB names contain the word "content" e.g. WSS_Content_IT or something.

 

1. Using the list template attached. Import the template to the list template gallery and create a new list for storing the owner information pulled from the content DBs.

2. Create a new Site workflow using Nintex and import the attached workflow.

3. Update the SQL connection string in the Execute SQL actions and set the user account to the SQL account you'd granted the serveradmin role.

4. Update the Query List action to point to the new list you'd created in Step 1. Update the filter to "Select items only when the following is true": Title is equal to SiteTitle (Workflow variable) AND Content DB is equal to ContentDB (Workflow variable). Select ID and URL fields in the Outputs and store the retrieved values in ExistingItemID and ExistingURL.

Update Query Action

Query List Outputs

5. Update the Create List Item action to create a new item in the list you created in Step 1. Add the fields, Title, Content DB, URL, Sub Webs, Owner Email Address and map them to the following Workflow variables SiteTitle, ContentDB, FullUrl, NrWebs, OwnerEmail as per the image below.

Update Create List Item Action

6. Update the Update List Item action to update items in the list you created in Step 1. Add the fields, Title, Content DB, URL, Sub Webs, Owner Email Address and map them to the following Workflow variables SiteTitle, ContentDB, FullUrl, NrWebs, OwnerEmail as per the image below.

Update the Update List Item Action

7. Save and Publish the site workflow.

8. Add a Schedule for the newly created site workflow.

 

After the initial run of the scheduled site workflow. Check the list you created in Step 1 to see if the list has been populated with the Site Owner information from the Content DBs.

 

Update (27/7/17):

To ensure we don't get any database snapshots. Modify the first execute SQL action (Get Content DBs) and add "AND source_database_id IS NULL" to the SQL query.

E.g.

select name
 from sys.databases
where (name like '%content%') AND (name <> 'Content_MySites') AND (name <> 'Content_CentralAdmin') AND (source_database_id IS NULL)

 

Update (28/08/18)

I've simplified the SQL script to collate the data from the content DBs.

Just update the Execute SQL action for Getting Site Collection data from Content DBs to the following. It can also be run directly against your content DBs. If running directly against a content DB just change {WorkflowVariable:ContentDB} to the name of your Content DB.

 

USE {WorkflowVariable:ContentDB};

WITH Owners AS(

SELECT DISTINCT W.Title, U.TP_EMAIL AS Email

FROM AllSites S

INNER JOIN GroupMembership GM ON GM.SiteId = S.Id AND S.Deleted = 0

INNER JOIN UserInfo U on U.tp_ID = GM.MemberId AND U.tp_SiteID = S.Id

INNER JOIN Groups G ON G.ID = GM.GroupId AND G.Title LIKE '%OWNER%' AND G.SiteId = S.Id

INNER JOIN AllWebs W ON W.Id = S.RootWebId AND W.SiteId = S.Id

WHERE TP_EMAIL <> '')

,

SiteCounter

AS(

SELECT SiteId, Count(*) AS NrWebs FROM AllWebs INNER JOIN AllSites ON AllSites.Id = AllWebs.SiteId AND AllSites.Deleted = 0 GROUP BY SiteId

) 

SELECT

Title,

FullUrl,

C.NrWebs,

(SELECT Email +'; '

FROM Owners O

WHERE O.Title = W.Title

FOR XML PATH('')) [OwnersEmail]

FROM AllWebs W

INNER JOIN SiteCounter C ON C.SiteId = W.SiteId

GROUP BY W.Title, W.FullUrl, C.NrWebs,ParentWebId

Having ParentWebId IS NULL

Hi, Everyone!

 

The platform our community is on will undergo some maintenance that will affect your ability to see your points awarded in a timely fashion.

 

The good news is that this will occur starting at 6pm Pacific tonight (Friday).  That's not exactly a heavy-use timeframe for the community.

 

Still, I wanted to let you know that for four hours tonight, your points will not be rewarded during the maintenance window.  They will be queue'd during the maintenance and awarded after that.

 

So, don't fret, that badge you were working on instead of going out, sleeping or wooing the cutie you met at the coffeeshop this morning, will still hit your reputation page in your profile. It's just not going to happen immediately.

 

Let's assume four hours of delayed gratification is survivable. But if by Saturday (or next week), you think you got short-changed, by all means, send me a note and I'll look into it.

Before I begin to launch my designer, I shall use my January tip ;-) and draw the workflow using the DUCERIM.

This is very helpful because you have the time to think about a generic solution.

Two points came in my mind:

  • Find the first weekday of the month as this is not a workflow action. This will be an User Defined Action (UDA)
  • This weekday should not be hard-coded in the workflow as my boss can change his mind next month and I do not want to update my workflow, so I shall create a configuration list with an additional column for the week number inside the month (1 to 3)

In the February mission, this will give an item with two values: Tuesday and 2.

 

Here is the UDA with

1 input parameter: strFirstDayOfTheWeek as Text (e.g. Tuesday)

1 output parameter: tmdtDate as Date and Time (e.g. 07/02/2017)

 

I begin to set the Today's date and then I set to a string variable the day of this date using a Build String action fn-FormatDate({WorkflowVariable:tmdtToday},"dddd")

 

Then I loop until I find the string day I am looking for.

 

And I update the Output parameter

 

In my Site workflow that will be scheduled once the first day of the month, my first action will be to Query the Configuration list to know which day I am looking for and for which week. Then I am using my UDA Action to know which day to begin to patch the Server. The input parameter is coming from my Configuration list.

 

The output will be the first Tuesday of the month.

Then I need to calculate the next Tuesday using the column in my Configuration list that contains 2 for Week# 2

 

From my begin date, I can create the entries in the Patching Server Calendar.

For that, I have a list that contains my Servers to patch with the number of days to add to the begin date.

 

I query this list and loop on it to create entries in my calendar.

Here is my Patching Server Calendar

Now if in march, my boss decides that the Servers need to be patched the first week of the month and must begin on Monday, I just need to update my Configuration list.

Happy Nintexing and thanks to Cassy Freeman for this challenging workflow.

Christophe Raucq

If you found this blog post, you were probably at the session I did with Jesse McHargue and @cassy  at InspireX!

Thanks for coming!

 

ninxselfie

 

If you'd like 100 points just for attending, post the selfie you took at the session below!

 

I'll give you a badge, too!  

 

Oooh! Aaaah!

 

 

Just post your image in the comments below! Deadline: March 1, 2017. I'll award the points/badges shortly thereafter!

Following up the February 2017 Mission, this is my approach to solve the given requirements.

 

First off to get started I create a couple of SharePoint-Lists:

  • PatchPlan
  • PatchCalendar

 

The patch-plan holds a list of all servers that need to be patched as well as the number of days after "patch-thuesday" they are supposed to be patched (PatchOffset).

The PatchCalender will actually hold all the dates for the servers to be patched.

In order to populate the PatchCalendar I create a new site-workflow. At first I'm querying the PatchPlan list get all the servers to be patched into a collection. Next up I create a collection with all the months, to later on create monthly patching dates.

So next I can loop over the collection of months and compute the second tuesdays of the month.

 

Finally I loop over the list of servers queried at the beginning and create calender-entries for each server.

 

This way - with starting the site-workflow, I can populate the calender with all the patch-dates for the given year.

Good day,

 

Thanks Cassy Freeman for this great challenge.

 

I only built a site workflow that will calculate the dates for the year but this could have been extended to using a SharePoint list and reading the data from there.  

 

My goal was to calculate the first required Tuesday's date and the rest would be easy.  I created my two collections with the split actions.   Doesn't matter what day Tuesday falls on, the furthest it can go is day 14 for the second Tuesday so I only looked at the first 14 days of the month.

And I built a collection for the months in the same way.

 

Then I performed a For Each action  inside a For Each Actions to run through the first 14 days of every month.

I did a check on every day to see if it is Tuesday and then counted the Tuesday until I got the second Tuesday. 

 

 

Once I got the second Tuesday, the rest was easy.  I used the second Tuesday's date to Create Server A,

Server A Date + 3 = Server B date (...with Date Calculations)

Server A Date + 6 = Server C date

Server A Date + 6 = Server D date

Server A Date + 7 = Server E date

Server A Date + 7 = Server F date

 

This would create all the dates required in my calendar for the year.

 

Thanks Cassy, it was good to try something different from normal work

 

Regards,

Francois Crous

Our CEO is posting an occasional blog on Nintex.com, and we're going to summarize it here.  This month, he talks about business innovation!

 

jb.jpg(by John Burton)

Everyone’s heard the story of a dominant company that lost its way by not embracing business innovation – or by going about it the wrong way.

In “Bold: How to Go Big, Create Wealth and Impact the World,” Peter H. Diamandis and Steven Kotler tell the story of Eastman Kodak. In 1996, Kodak employed 140,000 people, had a $28 billion market cap, and controlled 90 percent of the film market and 85 percent of the camera market.

But fearing that the digital camera would undercut its photographic film business, executives buried the technology, which Kodak researcher Steven Sasson had developed, in 1976.

In contrast, Fujifilm developed a three-pronged strategy in response to the anticipated rise of the digital camera – get as much money out of the film business as possible, prepare for the switch to digital and develop new business lines, according to “The last Kodak moment” in The Economist.

For many years, Hewlett-Packard was admired for innovation in refreshing its printer business. With startling frequency, it would introduce a new printer, often with more functionality at a lower price, that rendered a prior model obsolete.  Most agree that HP lost its enthusiasm for this type of innovation, which was a major factor in its overall decline.

As these stories illustrate, the biggest reason to embrace business innovation is to survive and thrive. One of the themes of those stories is grow or die. But beneath the surface is innovate or decay.

What’s the Impact of Business Innovation?

For the most part, change is uncomfortable to people and to businesses, particularly when things are going well. Yet this is the ideal time because evolving from a solid foundation is far easier than from one that is eroding.

Most companies don’t grow or innovate past a certain point. The reason?  Most companies have either a problem creating its “second act” or can’t find the enthusiasm to focus past its first success.  I view this as the blessing and curse of the installed base –immediate customer and competitive needs can easily consume all available resources.

But how do you know which strategies for business innovation to take on and which to set aside?

John provides five questions to ask to help decide on the right business innovation for your company. Visit the Nintex Blog to read "Why - and How - To Embrace Business Innovation.!"