Moving posts into an existing topic doesn't keep chronology

I just merged two topics with the ‘move to existing topic’ function and found that all the posts from the newly created redundant topic were randomly shoved into a timeline from about a year earlier and the ‘latest’ post is from Oct 2016 despite the new content coming from the last couple of months.

In the overall view on the main page it shows the poster and date from the newest posts that should be there, but the last post is actually from the previously untouched thread.

This seems buggy, but is there a solution to correctly reorder them with a command?

Not buggy – inserting year old posts in as if they are new is a terrible idea. Chronology matters.

I don’t think I’ve made myself clear or there’s a misunderstanding.

The chronology is not being kept.

So I merged a newly created topic that should’ve been part of an older topic and the posts from that new topic just got dumped somewhere in the old topic about 2 years ago.

I guess my larger point is that none of these options is “correct” so either behavior will be objected to by someone.

Pick your poison?

1 Like

But you agree that year old posts being inserted as new is a terrible idea! :slight_smile:

The opposite of that is to keep chronology so that when a duplicate topic is created by someone and merged to an established topic, the new post gets put it at the right point.

2 Likes

Could I be so bold as to run a poll?

As a forum moderator, which behaviour would you prefer to see?

  • A) Merged posts are always inserted in chronological positions
  • B) Merged posts are always placed at the end of the destination topic (existing behaviour)
  • Moderator chooses A or B depending on the topic
  • Other (please comment)

0 voters

But the existing behaviour is not B.

The existing behaviour shoves the posts in a totally random point … in my case about 200 posts back and ‘2 years ago’ despite having dates of ‘1 day ago’.

In addition to this, when listing the posts in latest or category view, the most recently dated post (which comes from the newer merged thread) is marked … but it’s actually buried in the thread way earlier.

That has to be a bug?

Did you have any weird migrations on your site? Will I be able to repro this on try.discourse.org?

Yes this forum was a perfect once-run import from phpBB. Would that make a difference?

Don’t know, but I’ll give it a run at some point. I have reproduced it on 3 forums that have come from phpBB, but not on a clean install yet.

The option to do one or the other would be lovely. I like the other way, and so does my community, so the status quo is an irritant :slight_smile:

1 Like

Just experienced this and agree that it is a difficult problem. Had two parallel discussions on exact same topic and interleaving merged list according to chronology looks like it might have worked better. Latest post to original (merged into) topic is now quite a ways up in the thread. Tradeoff hard to analyze at glance.

3 Likes

Can’t discourse provides both ways and let mod/admin choose which one to use when merging?

4 Likes

I’m looking to insert moved posts to the last post on an existing topic. Seems this is not possible, so moved posts appear out of order and are listed after the original post in the existing topic.

Merging topics maybe isn’t usually a great idea, but I’d expect the posts to be displayed chronologically.

The current way is almost like threading (the original first post and its replies, followed by the parachuted-in first post and its replies, followed by subsequent posts) and, based on my understanding at least, goes against the spirit if not the letter of the Discourse philosophy.

As it stands, closing one topic and displaying some sort of admin notice at the top of both topics, drawing attention to the other topic, might often be a better approach.

4 Likes

We’ve noticed this oddity too. I think the mental model our users have is that threads are by definition a chronological list of replies. Whether I’m replying to a new post or a post that’s months old, my reply goes at the end. Merging topics beaks that model since a portion of the thread gets inserted into the timeline at whatever point the moderator merges.

In the abstract, I can see the reasoning for the current behavior: it maintains the integrity of the conversation within the merged-in topic. But it also raises the question of why topics are merged in the first place.

In the case of our community, we want to consolidate discussion about a discrete topic in one thread. For instance, we want one topic for people to report whether or not they were admitted to Ohio State’s class of 2025. If someone starts a new thread, it’ll get merged into the official topic. The replies are often independent of other replies in the thread. Most of the time people use the “Reply” button to respond to a particular post, so it’s not quite so important that replies are close to each other on the page.

If the replies were tightly linked together, I’m not sure there would be a need to merge threads. Instead, it makes sense to reply in one thread with a link to the other. Or maybe both directions. And perhaps close one of the threads. Merging implies that the two topics overlap to a large degree. There are other (and better) tools for dealing with parallel conversations.

At any rate, I’m just adding a data point: this implementation of merging is difficult to fit into the mental model our users have and makes the feature somewhat less useful than it could be if the replies were ordered chronologically.

6 Likes

Maybe someday there could be an option in the topic’s :wrench: menu to “Sort Posts By Date”?

That way, the default remains the same, with posts merged in at the end. If an admin thinks that topic is better served by those posts being woven into the old discussion, a quick click of such an option would take care of it as needed.

17 Likes

This seems to be coming back and back, is there a feature request somewhere? I would really appreciate this.

4 Likes

There is a rake task to do this, but no trigger from the UI at the moment.

2 Likes

I had a need to use this for some email threads that were split into separate topics during import so I thought I would elaborate on this in case anyone else also needs it. You’ll need to be able to access the command line on the server running your Discourse instance.

Start by moving all the desired posts into the target topic, then get the topic ID. In the address bar you might see something like the following, where the topic ID is 24855:
/t/topic-slug/24855/9

On your server, enter the Discourse app with the following commands. You may need to clear some space if you have less than 5GB available.

cd /var/discourse
./launcher enter app

If that is successful, you can then reorder the posts by their timestamps with the following command, replacing the topic ID as appropriate.

rake posts:reorder_posts[24855]
3 Likes