I have a network of line features. Each lines are supposed to be connected to other line end to end at nodes. The connected lines (at nodes) may or may not have different IDs (yes there can be two lines with same ID in the same featuere). I want to make a join based on the attribute IDs available on each line. That is, I want join to happen between end to end touching lines only if there is no point (which is from a different point feature class) between them. The red pentagons on the attached figure shows those locations.
How did I get here? The black dots and the pink squares are the only points where I wanted the lines to be split on the first place. First, I used join to join to join all these line features and then used split lines at points to split them only at the points. Strangely, the line also splits at the red pentagons shows (apparently, intersection between two lines).