Assignee Specific Workflow

It’s no problem at all @Chr1sG. Any time in the next 2 weeks is fine. :slight_smile:

1 Like

This is an interesting idea, and I imagine it may be more common than I would think. But multiple workarounds do come to mind, and I wonder how bad they would be in use once you set them up. Some of them might also require or at least benefit from some dev work, but perhaps it would be lesser than what you or Chris are proposing.

For example if Lookups allowed referencing Comment fields, you could have the comments for multiple separate entities in a single one (separate comment fields, but reflecting the discussion in multiple related/“children” entities). You could use formulas to calculate done status of a parent task from the state of its children, and automations to do anything you need to do when status of sub-entities change, etc. Or you could use the new/upcoming Feed view to see separate Entities relating to the same Project all together. These are just a few off-the-cuff thoughts, and I know all are imperfect. I just wonder… how much consideration and testing time have you put towards what a solution would look like given current functionality? Is it a major limitation, or more of an inconvenience?

Perhaps put more clearly: what are the specific work actions and information display you want to be able to take on a single entity that you currently cannot achieve satisfactorily in a parent-child (e.g. task/subtask) workflow? Overall done status display seems like it could be achieved fairly easily based on related entities. Collected comments doesn’t seem possible, but maybe Feed View could help with that? For splitting work, you could have an Automation generate a new child entity whenever an Assignee is added, so auto-work splitting. You could move between overall statuses (e.g. Kanban) based on collected status of children (when all are in state “completed”, the parent task gets moved to “completed”). Etc. Note that I haven’t tested all these, so it’s possible I’m forgetting some limitation that makes one of these not actually possible, in which case the question then is whether solving that issue would be easier or more broadly useful than an assignee-specific workflow feature.

As for accessibility and intuitiveness to non-tech users, I’ll grant my perspective is limited here (I’m more techie than average). But it seems to me if the idea of “collections” of related entities in Fibery doesn’t make sense to anyone using it, then… their use is going to be pretty limited anyway, regardless of this specific use case. Collections as a way to understand connected items, and to for example access your specific piece of work, would seem to me to be… reasonably intuitive? Basically no different than a list of tasks, where someone would look for the one assigned to them (you could display the assignee in the collection of related sub-tasks).

All that said, I don’t want to give the impression that you shouldn’t ask for such a feature! I’m more just not quite seeing how important it is, and wondering if more detail and specifics on the problems with the existing solutions might help me better understand and perhaps even upvote it myself. :slight_smile:

Interesting comments @Oshyan. Thanks for sharing them.

The question in my mind is, is it desirable to reduce complexity for a user? What value do we place on that? For me, the value of that is high.

One the the biggest challenges I’ve found in rolling out Fibery is having things that seem to be quite simple to me, be understood and followed by our non-tech users. This is not only initially, in the learning phase, but also when trying to find things in Fibery and manage work in general.

So I start with the premise that one of the main goals of software development is to hide complexity from the user. This may not always be the ultimate goal, but it forms a nice premise in the context of this discussion.

So if we can agree that reducing complexity for a user, without hampering functionality, is a high value goal, as is anything that supports ease of clarity, conservation of human energy and respect for the limited amount of awareness people have with which to focus, then the only question left is whether this feature can achieve that outcome.

Work is often organic. Many times, work is not planned out first and then executed. It can start small and then grow. Prior to requiring multiple entities, many times a single entity will suffice and it’s surprising how far that can go and how much work a single entity can effectively hold. In instances where a single entity would suffice, if 6 people are collaborating and wish for their own workflows, using the task/sub-task solution would require 7 entities.

So the question then is a question of 1 entity versus 7. It’s simple to see and acknowledge that it is more complex to navigate 7 entities than 1.

Mouse clicks consume human energy. Navigating 1 entity requires far fewer mouse clicks than to navigate 7.

Multiply this across 100 such units of work and you have 700 entities to search through and deal with, rather than 100.

I think it’s fair to say that where structural requirements are met and all other elements remain equal, 1 entity is preferable to 7. Dealing with unnecessary complexity leaches human energy and creates focus-friction.

The chronological order of comments and other events matter. That is lost with the 7 entity task/sub-task solution.

A meaningful question might also be, from a user’s standpoint, what is the downside to implementing this solution? I have trouble conceptualizing one.

1 Like

Oh I’m not arguing that it wouldn’t be beneficial. But of course, as I’m sure you know, dev time and other resources are limited. So I was just trying to better understand the details of your need and use case, as well as whether other existing approaches or less single-focus development work could meet enough of your needs to make a decent impact for your users. Understanding your need allows me to also decide whether it’s something I to need and therefore should support directly! :grin:

Got it, thanks for your clarification @Oshyan.

I’m not sure how to add detail to the use case. It’s simply that any time an entity has more than one user assigned to it, the user isn’t able to have a workflow to organize and manage their own work.

If I am collaborating on a particular entity and I reach out to a graphic designer for a quote and I’m waiting to hear back from them, I want to be able to add a comment saying, “Requested quote” and then put that entity in a “Waiting On” column on my “Assigned to Me” board. I’m currently unable to do that without changing the state to Waiting On for all users, so I’m left with no Workflow available to me to manage my own work.

Quite often the entity workflow doesn’t get used much at all, as all it can do is sit in an In Progress state.

I simply want to be able to organize my work on my Assigned to Me board without affecting other users.

Hope that helps to clarify and I appreciate your input. :+1:

1 Like

Gotcha, yeah I think I understand. It just appears to be a difference of opinion/preference then, I think. Because reading your description of how you want it to work, I actually feel very differently from you and would prefer for my own parts of the work to be in separate tasks/dedicated entities, and related back to a parent. :smile: What you’re describing sounds kind of unconventional to me, but it may well be a feature of other tools I’m not aware of. But in any case it appears to just not be a way of working that “clicks” for me. I hope you find an approach that feels comfortable for you and your team, whether with existing functionality, or changes the Fibery team makes. :slight_smile:

1 Like

After reading this discussion (with interest) I find myself able to see pros and cons for the various approaches/mental models being articulated.

Putting aside any tool being used, I do think that it actually seems reasonable to assume that if a task needs to be at different stages for different people, then it must implicitly consist of separate subtasks (be they parallel or sequential).
However, the separation of these subtasks as different ‘things’ (I’m avoiding using the word ‘entity’ to keep my thinking tool-agnostic) will lead to fragmentation, resulting in a loss of insight/coherence between them, as well as introducing extra work (mental and physical).

I don’t think there is a simple solution, but given how strong Fibery is/can be in terms of connectivity, it feels like it might be wise to choose to reap the value that comes from sub-dividing a task (separate workflows, and maybe more) so long as there is some clever, behind-the-scenes magic that maintains coherence, and minimises friction.

I haven’t yet worked out how best to do this, and different solutions are probably needed for different use cases, but off the top of my head, I could think of a few things to consider:

A ‘Split into subtasks’ button, that creates set of sub-tasks (one per assignee) or maybe a ‘Spawn subtask’ that creates a single, new subtask for the button presser.
Alternatively, a ‘Divide task’ that converts one task into many (resulting in peer tasks without parents).

Note: on a tangent, it might be worth thinking about whether there needs to be consideration of dependencies (i e. Does subtask A block subtask b?)

The key of course is to maintain some kind of relationship between the original and all the new (sub-)tasks. As long as relations exist, (sub-)tasks could have an automatic synchronisation mechanism, so that edits to relevant fields (e.g. rich text, status, comments, etc.) are reflected/aggregated where necessary in the parent/peer tasks.
Maybe the related tasks also need to have a rich-text field (+ others?) that is not to be synchronised?

Also, potentially there need to be buttons/automations to re-combine tasks if/when the division is no longer necessary.

Anyway, this is just mental spitballing, and some bits of this are harder to implement in Fibery right now than others, but I’m very happy to gather more feedback and even experiment with trying out ideas.

FWIW, the final implementation of ‘blocks’ will probably support ‘transclusion’ type behaviours, so I am quietly optimistic that the maintenance of coherence between objects will get easier and easier over time :slightly_smiling_face:

1 Like

This. 100% this. I was basically trying to articulate a similar view, but perhaps not doing it as succinctly or clearly. :smile: My hope is that the seemingly-logical (to me) splitting of tasks into separately tracked things can be done but avoid most of the downsides: keep it intuitive, reflect changes into a parent entity, and perhaps at the end roll it all up into the parent entity (destroy children but preserve work notes back into parent somehow). A fuller articulation of the downsides of the splitting approach would help inform possible solutions.

As one example of a know problem here, getting comments together in one place seems interesting to think about. I don’t know that the contents of Comment Fields can be operated on in formulae at present, likewise Rich Text. But I can imagine something like concatenating all Comments from Child Entities into a single Rich Text, with e.g. labeling and dates for each, so you’d have a single Comments stream but still have it delineated what is what. I previously proposed a “Conversation Field/View” and some interesting discussion resulted. If such a view existed, it would be ideal to be able to pass it “messages” via scripting, so that you could end up with a nicely formatted and consistent result for a situation like this. Likewise just spitballing here. :wink:

Twist is a direct messaging app that competes with Slack in the marketplace.

They’ve managed to carve out a nice niche and provide a solid product that solves one of the main issues many people have with Slack and other direct messaging platforms; that being getting caught up in the midst of immediate chat communications and not keeping things clean, organized and structured.

I believe that Twist’s main competitive advantage, setting them apart from all other direct messaging platforms, is the implementation of the feature I’m requesting in this thread.

Each user in Twist is able to have their own independent state on the same chat thread in their Inbox.

One user can have the thread as “Active” while another has it as “Done.” So simple, yet so powerful.

This isn’t possible in Slack. In Slack, each user can’t have a state on a threaded discussion. This makes it far more difficult for users to organize and manage chat threads effectively.

I thought to share this here, as I really do believe this feature has many advantages.

2 Likes

Another product that offers assignee specific workflows.

Each task has its own workflow state and each user has their own workflow state for each task also.

So great for fast and easy collaboration on a single item.

Thanks for the heads up. Out of curiosity, is your personal use case covered by non-forking state transitions? i.e. an item can move forwards (or backwards) through a list of states - there are no choices to be made for the next state.

1 Like

I just discovered this thread and you are actually talking about a few things I’ve mentioned before.

First, re: your original request:

I’m not sure if you exactly mean what it sounds like, but “each user getting an entity in a stage of a workflow” where the entity passes along to a specific user upon one completing a previous stage is typical for process management apps like Pipefy, and I think that would be great to have more built out in Fibery as well, per some earlier requests I’ve had:

Here though it sounds like you are simple requesting that each assignee can have their own state of an entity. I wanted to point this out as you mention the app Twist, and I have talked a lot about how some stuff in Twist - although not this feature - would be very useful around improving chats and comments, so I’m glad you mentioned it.

Here I talk about how Twist handles well some of @mdubakov 's vision for conversations in Fibery:

And a great feature of Twist I’ve requested is the ability to comment when you resolve or “close” an entity, it really gives context to what was actually done in an entity to finish it, instead of just clicking “done” and then leaving teammates guessing as to the final step to get something done:

Hope you might find some of that useful, thanks!

1 Like

No. That doesn’t relate to our use case @Chr1sG.

When it comes to workflows, currently in Fibery, there is no way for assignees to manage their own relationship with an entity. Instead, they are forced into the same relationship as all other assignees.

If an entity has John, Stacey and Steve assigned to it, John, Stacey and Steve are all forced into matching workflow states. This is disconnected from the reality of work.

In reality, John might be “Waiting on” feedback from an outside source, while Steve has “Completed” his part and Stacey has hers “In progress”.

It’s easy to say, just create separate entities for each assignee and link them this way or that. This eliminates the ability to truly collaborate. It also doesn’t acknowledge the unnecessary complexity and disconnection that can cause to the work.

It means there is no longer a central entity with an easy to scan, chronological order of activity. It means there is no real collaboration on an entity, but rather, isolated silos of work. The work becomes more disconnected, rather than more centralized, easily visible and more connected.

The ability to have an assignee specific workflow means that everyone can be more connected, they can work together in the same place, rather than separately. Everything becomes simpler and more centralized. There’s only one place to look, rather than 3.

I hope that helps to clarify.

2 Likes

I don’t think what you were referring is the same @B_Sp.

I think what you’re referring to in relation to moving items through a process could be easily achieved using Fibery automations. We do that with some of our processes.

On a side note, one thing we’ve also done is to create a super long workflows and then split it into different views, so when someone moves an entity into the right most column of one view, it automatically appears on the left most column in another view. No automations needed.

Anyway, I think my comments to @Chr1sG above should clarify what I was referring to more clearly. I thought I was clear in the original video at the top and subsequent comments, but maybe not.

Sorry @webinit I didn’t make myself clear. What I meant was: do any of your users need a workflow that has multiple possible paths? In other words, from state A, it is possible to go to B or C, and from B it is possible to go back to A or onwards to D, etc.?
Or is it acceptable for the flow to just be A → B → C → D?

Also, when there are user specific workflows, are the states the same for all users? Or is it possible that John needs Open → In Progress → Done but Stacey needs Pending → Active → Archived ?

1 Like

I’m not certain I’m clear on your question @Chr1sG. At the moment we transition between states either manually or using automations. There’s nothing to stop us in any workflow from moving a card from A to C or D and back to B or A again. That’s fully possible and we do do that, both manually and through automations. I can show you an example at some stage if needed.

So far, for us, when dealing with a single entity, everyone just needs the same workflow. I’ve not come across a situation yet where variance in that is needed.

Got it.
I know that our current workflow allows this, I just wasn’t sure if your processes meant such transitions actually happened.

Ok great. I might have an idea for a workaround that would help you. Will post something later.

2 Likes

Here’s what I would suggest for implementing an ‘assignee specific workflow’ for @webinit’s use case:

Create a database called ‘Assignee state’ which has three fields:

  • workflow field (State) with whatever values you like
  • relation to one User
  • relation to one Task

    (I’ve used a formula field for the Name, but it’s not that important)

Create a pair of automations in the Task DB that will create/unlink Assignee states, whenever an Assignee is added/removed to/from a Task:


(the formula is: [Step 1 Task].[Assignee states].Filter(User != [Step 1 unlinked User]))

Create an automation in the Assignee state DB that will delete the entity if it becomes detached from a Task (or a User):

Now, for each Task you will see a set of states for each Assignee, and because fields can now be edited inline, the State can be updated without leaving the Task entity view.

firefox_N1KmUMWtUc

Also, you can have a board view (of Assignee state cards) which represents Task progress per Assignees:

firefox_pxZvURq5k6

Is this useful?

3 Likes

Thanks @Chr1sG!

I appreciate the attention you’ve given to this.

Looks like a great workaround.

I can see other applications for it also.

Will get my hands dirty with it and see how the team responds.

Thank you!