# Simple repeating tasks

**URL:** <https://community.fibery.io/t/simple-repeating-tasks/3102>\
**Category:** Fibery Showcase\
**Tags:** automations\
**Created:** [July 23, 2022, 8:59pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102 "2022-07-23T20:59:12Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Oshyan](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/oshyan/32/11431_2.png) [@Oshyan](https://community.fibery.io/u/Oshyan)\
**Post date:** [July 23, 2022, 8:59pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/1 "2022-07-23T20:59:12Z")

</div>

I just setup a very simple repeating task automation in Fibery and I thought others might find it useful, even though it’s somewhat obvious (it took me a bit of fiddling to get the formulas right, so that may be true for others).

The desired result: when I mark a task “Done”, it resets the date of that task to X days in the future, creating a simple “recurrence” of the task.

I created two new fields, one to mark whether a Task reoccurs or not (Checkbox) and one two hold a simple numeric value “Recurring Interval” for the number of days until the task “reoccurs” again. Then I created an Automation that checks when the State field is set to “Done”, and when that happens it resets State to “New”, and adds the “Recurring Interval” to the _current_ date and puts that into the Due Date field. The result is that the task is “re-used” and scheduled to be due X number of days after its completion.

Here are screenshots of the fields and automation:

 ![recurring-task-fields](https://us1.discourse-cdn.com/flex020/uploads/fibery/original/2X/e/ea6eacf5f2de0f4bbb8c56ff0f91cb181293224f.png) ![recurring-task-automation](https://us1.discourse-cdn.com/flex020/uploads/fibery/original/2X/b/bbe059049c829e2ff1b70186cd6a246e78d80eac.png)

And the simple formula I used (I may have made a mistake here, I’m still not very good with formulae, but it seems to work in my tests so far, hah):

```auto
Today() + Days([Step 1 Task].[Recurring Interval])

```

Possible improvements/extensions/adjustments you might want to consider (and should be easily able to extend the above process to do):

- Set the recurrence date to X days _from the original due date_ rather than from “today”
- Add some Comment each time the task is completed, to easily track completion date (without having to reference the Activity Log), e.g. “Task completed on X”
- Add a counter to track number of times it was completed
- Create a _new_ instance of the task, instead of re-using the same one
- Etc.

I was surprised to not see something quite like this (though I may have missed it). There is Chris’s [Repeating events](https://community.fibery.io/t/repeating-events/1915), but I believe my approach is different enough to note here (though perhaps not complicated or unobvious enough 😄).

My particular use case for this was inspired by the fact that I am seriously considering moving my entire _personal_ task management and “Personal Knowledge Management” (PKM) process and tooling into Fibery. Currently this is spread for me across as many as 7 (!) different tools, and my intention is for Fibery to replace at least 4: Quip, Obsidian, Notion, and Amazing Marvin. The above behavior, while not necessarily everyone’s preference, actually emulates one way repeating tasks can work in Amazing Marvin and some other task management tools like ToDoist, which might contrast with more Project Management-oriented tools where very often you want an individual record of every “task completion”. For me just a Comment that it was completed is enough, and sometimes even that is overkill.

Anyway, I hope someone finds this useful!

---

<div class="post-metadata">

**Author:** ![rawkode](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/rawkode/32/5317_2.png) [@rawkode](https://community.fibery.io/u/rawkode)\
**Post date:** [July 25, 2022, 5:35pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/2 "2022-07-25T17:35:14Z")

</div>

I tackled this too, only slightly differently.

I have a field called “Repeats” which is a dropdown with “Daily, Monthly, Yearly” as options and the following automation

```auto
Date(If([Step 1 Task].Repeats.Name = "Yearly",Year([Step 1 Task].[Due Date]) + 1,Year([Step 1 Task].[Due Date])),If([Step 1 Task].Repeats.Name = "Monthly",Month([Step 1 Task].[Due Date]) + 1,Month([Step 1 Task].[Due Date])),If([Step 1 Task].Repeats.Name = "Daily",Day([Step 1 Task].[Due Date]) + 1,Day([Step 1 Task].[Due Date])))

```

---

<div class="post-metadata">

**Author:** ![rawkode](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/rawkode/32/5317_2.png) [@rawkode](https://community.fibery.io/u/rawkode)\
**Post date:** [July 25, 2022, 5:35pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/3 "2022-07-25T17:35:41Z")

</div>

I really wish the formula editor would allow me to enter an actual script with assignments and such, then return a value

---

<div class="post-metadata">

**Author:** ![Chr1sG](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/chr1sg/32/3941_2.png) [@Chr1sG](https://community.fibery.io/u/Chr1sG)\
**Post date:** [July 25, 2022, 8:00pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/4 "2022-07-25T20:00:16Z")

</div>

It’s hard to see how scripting in formulas would work - what would ‘trigger’ the script?  
It’s easy to determine that a formula should be recalculated based on it’s construction, less so for a script?

---

<div class="post-metadata">

**Author:** ![rawkode](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/rawkode/32/5317_2.png) [@rawkode](https://community.fibery.io/u/rawkode)\
**Post date:** [July 25, 2022, 8:25pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/5 "2022-07-25T20:25:07Z")

</div>

True. It was just a thought because the nested if’s was tedious and cumbersome and cleaning that up would be a good thing; but perhaps that’s solving the wrong problem.

---

<div class="post-metadata">

**Author:** ![MichelleD](https://avatars.discourse-cdn.com/v4/letter/m/f9ae1b/32.png) [@MichelleD](https://community.fibery.io/u/MichelleD)\
**Post date:** [August 1, 2023, 3:57pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/6 "2023-08-01T15:57:16Z")

</div>

Thank you so much. This worked brilliantly.

---

<div class="post-metadata">

**Author:** ![Minh\_Tri\_Do\_Hang](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/minh_tri_do_hang/32/6791_2.png) [@Minh\_Tri\_Do\_Hang](https://community.fibery.io/u/Minh_Tri_Do_Hang)\
**Post date:** [August 2, 2023, 1:31am UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/7 "2023-08-02T01:31:42Z")

</div>

I’m the one using recurring a lot, especially to set remind for some transaction of mine, so I think i need to build a database for that  
I build a periodic type database for this. Sometimes, it can be after 20 days, or fixed day 20th of each month, or date range …

 ![image](https://us1.discourse-cdn.com/flex020/uploads/fibery/original/2X/4/46b13d5363213445e8a367ffbdc3a352642f5546.png)  
, and set relation to database i I wanna to auto calculate the next recurring  
 ![image](https://us1.discourse-cdn.com/flex020/uploads/fibery/original/2X/3/3ab0b08fd2d7fedae6220a1436aa17769c9a6751.png)  
Then I set an Automation to auto create new recurring transaction when Status = “Completed”  
 ![image](https://us1.discourse-cdn.com/flex020/uploads/fibery/original/2X/3/36c82553b0f1a6e81dd21c761ee7a0ff08347ee8.png)

---

<div class="post-metadata">

**Author:** ![interr0bangr](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/interr0bangr/32/8089_2.png) [@interr0bangr](https://community.fibery.io/u/interr0bangr)\
**Post date:** [January 3, 2024, 7:38am UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/8 "2024-01-03T07:38:57Z")

</div>

Has anyone found a way to schedule recurring tasks with more dynamic and contextual dates?

I have things I want to schedule every month, but always on the “second” Monday, or the “last” Friday, similar to how Google Calendar allows you to schedule things.

I care less about the exact numerical day and more about that they occur on a specific day of the week. Simply setting things to occur every 30 days will quickly get them misaligned since some months have more/less days.

 ![googlecalendar_recurringevent](https://us1.discourse-cdn.com/flex020/uploads/fibery/original/2X/b/b9a71f60829fb63e355bef1f768587846b067cbe.jpeg)

---

<div class="post-metadata">

**Author:** ![Chr1sG](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/chr1sg/32/3941_2.png) [@Chr1sG](https://community.fibery.io/u/Chr1sG)\
**Post date:** [January 3, 2024, 12:51pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/9 "2024-01-03T12:51:53Z")

</div>

> [@interr0bangr](#):
>
> a way to schedule recurring tasks

Do you mean that you want the creation of Task entities to occur on a specific schedule?  
Or do you mean that you want to have created a set of Task entities each with a specific date (due date?) that follows a specific pattern?

---

<div class="post-metadata">

**Author:** ![interr0bangr](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/interr0bangr/32/8089_2.png) [@interr0bangr](https://community.fibery.io/u/interr0bangr)\
**Post date:** [January 3, 2024, 7:48pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/10 "2024-01-03T19:48:08Z")

</div>

> [@Chr1sG](#):
>
> Do you mean that you want the creation of Task entities to occur on a specific schedule?  
> Or do you mean that you want to have created a set of Task entities each with a specific date (due date?) that follows a specific pattern?

Ideally, an automation rule would create a new record of an entity with DateRange field that is set to the same Monday - Sunday cadence each month, but since the “Day Number” of those days will be different each month, I’m struggling with the formula.

Here’s some screenshots of what I’m trying to do if it helps:

I’ve manually created the sample tickets here to help illustrate what I’d like, but ideally the automation would create the “Feb 2024” ticket on Feb 1 and the “Mar 2024” ticket on Mar 1, etc, etc.

 ![RecurringTask](https://us1.discourse-cdn.com/flex020/uploads/fibery/original/2X/6/6f76dd3bd9f0d86a734a27fb8408e2e28097cb19.jpeg)

 ![Fibery-Databases-Fibery](https://us1.discourse-cdn.com/flex020/uploads/fibery/original/2X/f/f121bf5e9ccb26fe32f3ec1cfa5b66e9cb22dc42.jpeg)

---

<div class="post-metadata">

**Author:** ![Chr1sG](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/chr1sg/32/3941_2.png) [@Chr1sG](https://community.fibery.io/u/Chr1sG)\
**Post date:** [January 3, 2024, 8:18pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/11 "2024-01-03T20:18:43Z")

</div>

Try this as your formula for updating the Period date range:

```auto
DateRange(
  Today() +
    Days(
      If(WeekDayName(Today()) = "Monday", 7,
        If(WeekDayName(Today()) = "Tuesday", 13,
          If(WeekDayName(Today()) = "Wednesday", 12,
            If(WeekDayName(Today()) = "Thursday", 11,
              If(WeekDayName(Today()) = "Friday", 10,
                If(WeekDayName(Today()) = "Satuday", 9, 8))))))
    ),
  Today() +
    Days(
      If(WeekDayName(Today()) = "Monday", 13,
        If(WeekDayName(Today()) = "Tuesday", 19,
          If(WeekDayName(Today()) = "Wednesday", 18,
            If(WeekDayName(Today()) = "Thursday", 17,
              If(WeekDayName(Today()) = "Friday", 16,
                If(WeekDayName(Today()) = "Satuday", 15, 14))))))
    )
)

```

As long as the automation always runs on the first of the month, you should get the dates you need.  
Let us all know how you get on 🙂

---

<div class="post-metadata">

**Author:** ![interr0bangr](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/interr0bangr/32/8089_2.png) [@interr0bangr](https://community.fibery.io/u/interr0bangr)\
**Post date:** [January 3, 2024, 8:59pm UTC](https://community.fibery.io/t/simple-repeating-tasks/3102/12 "2024-01-03T20:59:26Z")

</div>

Perfect, thanks @Chr1sG, appreciate your wizardry with all these date formulas I keep throwing your way!

Now that I see how you’ve done this, I understand things a bit better and should be able to adjust and repurpose your logic for other situations that may be similar.
